diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..124a2af
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,84 @@
+# Dependencies
+node_modules/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Build outputs
+android/app/build/
+android/build/
+android/.gradle/
+android/app/release/
+ios/build/
+ios/Pods/
+ios/*.xcworkspace/xcuserdata/
+ios/*.xcodeproj/xcuserdata/
+
+# IDE
+.vscode/
+.idea/
+*.swp
+*.swo
+*~
+
+# OS
+.DS_Store
+Thumbs.db
+
+# Git
+.git/
+.gitignore
+.gitattributes
+
+# Docker
+Dockerfile
+.dockerignore
+docker-apk-builder.sh
+
+# Documentation
+*.md
+!BBMTLib/README.md
+!BBMTLib/RECOVER.md
+!BBMTLib/NOSTR_MESSAGE_ENCRYPTION_FLOW.md
+
+# Test files
+__tests__/
+*.test.tsx
+*.test.ts
+*.spec.ts
+*.spec.tsx
+
+# CI/CD
+.github/
+.gitlab-ci.yml
+.travis.yml
+
+# Misc
+.env
+.env.local
+*.log
+build.log
+
+# Docker inline cache directory (should not be in build context)
+.docker-cache/
+
+# Already built artifacts
+*.apk
+*.aab
+*.aar
+*.jar
+*.xcframework
+BBMTLib/tss.aar
+BBMTLib/tss-sources.jar
+BBMTLib/Tss.xcframework/
+
+# Fastlane
+fastlane/report.xml
+fastlane/Preview.html
+fastlane/screenshots/
+
+# Release artifacts
+android/app-release.apk.sha256
+android/app-release.apk.sha256.asc
+android/mapping.txt
+
diff --git a/.gitignore b/.gitignore
index c7c9160..ec2b2de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -382,4 +382,8 @@ PR_SUMMARY.md
PR_README.md
# third_party
-third_party/
\ No newline at end of file
+third_party/
+
+# Docker cache
+.docker-cache/
+build.log
\ No newline at end of file
diff --git a/App.tsx b/App.tsx
index ccdc159..ae1c8b8 100644
--- a/App.tsx
+++ b/App.tsx
@@ -11,7 +11,7 @@ import LoadingScreen from './screens/LoadingScreen';
import Zeroconf, {ImplType} from 'react-native-zeroconf';
import ReactNativeBiometrics, {BiometryTypes} from 'react-native-biometrics';
import DeviceInfo from 'react-native-device-info';
-import {ThemeProvider} from './theme';
+import {ThemeProvider, useTheme} from './theme';
import {WalletProvider} from './context/WalletContext';
import {UserProvider} from './context/UserContext';
import {SafeAreaProvider} from 'react-native-safe-area-context';
@@ -31,6 +31,7 @@ import {NativeModules} from 'react-native';
import {dbg, pinRemoteIP, getPinnedRemoteIPs} from './utils';
import MobilesPairing from './screens/MobilesPairing';
import MobileNostrPairing from './screens/MobileNostrPairing';
+import {CustomHeader} from './components/Header';
// Initialize react-native-screens for Fabric compatibility
enableScreens(true);
@@ -41,6 +42,14 @@ const rnBiometrics = new ReactNativeBiometrics({allowDeviceCredentials: true});
const zeroconf = new Zeroconf();
const zeroOut = new Zeroconf();
+// Custom header components with configurable height
+const HomeHeader = (props: any) => ;
+const PSBTHeader = (props: any) => ;
+const SettingsHeader = (props: any) => ;
+const WelcomeHeader = (props: any) => ;
+const DevicesPairingHeader = (props: any) => ;
+const NostrConnectHeader = (props: any) => ;
+
const App = () => {
const [initialRoute, setInitialRoute] = useState(null);
const [isAuthenticated, setIsAuthenticated] = useState(false);
@@ -301,9 +310,13 @@ const App = () => {
isAuthenticated,
);
return (
-
-
-
+
+
+
+
+
+
+
);
}
@@ -313,15 +326,33 @@ const App = () => {
-
-
-
+
+
+
+
+ );
+};
+
+const AppContent = ({initialRoute}: {initialRoute: string | null}) => {
+ const {theme} = useTheme();
+
+ const dynamicStyles = {
+ navigationContainer: {
+ ...styles.navigationContainer,
+ backgroundColor: theme.colors.background,
+ },
+ };
+
+ return (
+
+
+
{
options={{
headerShown: true,
headerLeft: () => null,
- contentStyle: {backgroundColor: '#ffffff'},
+ headerTitle: '',
+ headerTitleAlign: 'left',
+ header: PSBTHeader,
}}
/>
{
options={{
headerShown: true,
headerLeft: () => null,
- contentStyle: {backgroundColor: '#ffffff'},
+ headerTitle: '',
+ headerTitleAlign: 'left',
+ header: HomeHeader,
}}
/>
{
component={WalletSettings}
options={{
headerShown: true,
- contentStyle: {backgroundColor: '#ffffff'},
+ header: SettingsHeader,
+ title: 'Settings',
}}
/>
{
component={MobilesPairing}
options={{
headerShown: true,
- contentStyle: {backgroundColor: '#ffffff'},
+ header: DevicesPairingHeader,
+ title: 'Devices Pairing',
}}
/>
{
component={MobileNostrPairing}
options={{
headerShown: true,
- contentStyle: {backgroundColor: '#ffffff'},
+ header: NostrConnectHeader,
+ title: 'Nostr Connect',
}}
/>
@@ -378,16 +416,13 @@ const App = () => {
-
-
-
);
};
const styles = StyleSheet.create({
navigationContainer: {
flex: 1,
- backgroundColor: '#ffffff',
+ // backgroundColor will be set dynamically based on theme
},
});
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bc801d7..9be3e18 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,161 @@
# Changelog
+## [2.1.9] - 2026-01-10
+
+### Added
+- **Modular Header Components**: New reusable header components for better code organization
+ - `HeaderPriceButton`: Standalone BTC price display component with currency selector integration
+ - `HeaderNetworkProvider`: Network and API provider information display component
+ - Improved component modularity and reusability across the app
+- **Extended Theme Color System**: Enhanced theme palette with comprehensive overlay colors
+ - New color constants: `bitcoinOrange`, `warning`, `success`, and their variants
+ - Glassmorphism overlay colors: `blackOverlay02-50`, `whiteOverlay08-30`, `primaryOverlay95`
+ - Status color overlays: `receivedOverlay15/40`, `dangerOverlay15/40`
+ - Skeleton loading colors: `skeletonGray`
+ - Better support for layered UI effects and visual depth
+- **Balance Header Controls**: New style properties for balance visibility and unit toggling
+ - `balanceHeaderControls`, `balanceEyeIcon`, `balanceUnitToggleContainer` styles
+ - Foundation for enhanced balance display controls
+
+### Changed
+- **Theme Color Consistency**: Replaced hardcoded color values with theme color constants
+ - Modal backdrops now use `theme.colors.modalBackdrop` instead of hardcoded rgba values
+ - Error boundary colors use `theme.colors.danger` and `theme.colors.white`
+ - QR Scanner components use theme colors for text, progress bars, and backgrounds
+ - Currency selector and legal modals use theme-aware backdrop colors
+- **Dark Mode Detection**: Simplified dark mode detection logic
+ - Changed from checking background color strings to simple `!== '#ffffff'` comparison
+ - More reliable and performant dark mode detection
+ - Consistent dark mode behavior across all header components
+- **Header Component Styling**: Enhanced header button and container styling
+ - Consistent use of `theme.colors.blackOverlay06` and `theme.colors.blackOverlay10` for light mode
+ - Better border and background color consistency across header elements
+ - Improved visual hierarchy with theme-aware styling
+- **Glassmorphism Effects**: Enhanced glassmorphism with new overlay color system
+ - Wallet header uses `primaryOverlay95` in light mode and `whiteOverlay15` in dark mode
+ - Consistent border colors using `whiteOverlay30` for better contrast
+ - More refined visual depth and layering effects
+
+### Fixed
+- **Color Consistency Issues**: Fixed hardcoded color values throughout components
+ - Replaced `rgba(0, 0, 0, 0.5)` with `theme.colors.modalBackdrop` in modals
+ - Replaced `#ff6b6b` with `theme.colors.danger` in error boundaries
+ - Replaced `#FFFFFF` and rgba white values with `theme.colors.white` and opacity variants
+ - Replaced `#F7931A` with `theme.colors.bitcoinOrange` in QR scanners
+- **QR Scanner Theme Support**: Improved QR scanner color consistency
+ - All text colors now use theme color constants with proper opacity
+ - Progress bars use theme colors for better visual consistency
+ - Better dark mode support across all QR scanner variants
+
+### Technical Details
+- **Component Refactoring**: Header component split into modular sub-components
+ - `HeaderPriceButton`: 216 lines of new component code
+ - `HeaderNetworkProvider`: 216 lines of new component code
+ - Better separation of concerns and component reusability
+- **Theme System**: Extended `Styles.tsx` with 30+ new color constants
+ - New overlay color system for glassmorphism effects
+ - Better type safety with TypeScript theme definitions
+- **Version Update**: Android version code bumped to 42, version name to 2.1.9
+- **Files Changed**: Multiple components updated for theme color consistency
+ - `Header.tsx`, `Styles.tsx`, `ErrorBoundary.tsx`, `CurrencySelector.tsx`
+ - `LegalModal.tsx`, `LegacyWalletModal.tsx`, `QRScanner.tsx`, `QRScanner.foss.tsx`
+
+## [2.1.8] - 2026-01-07
+
+### Added
+- **Dark Mode Support**: Complete dark mode implementation with system theme detection
+ - New theme system with light and dark themes (`theme/themes.ts`)
+ - Theme context provider with OS-based, light, and dark mode options (`theme/context.tsx`)
+ - Automatic system theme detection and persistence of user preference
+ - Dark mode optimized color palette with improved contrast and readability
+ - Support for theme mode switching in wallet settings
+- **Wallet Home UI Revamp**: Redesigned wallet home screen with enhanced visual hierarchy
+ - Improved balance container styling with dark mode support
+ - Enhanced glassmorphism effects for better visual depth
+ - Updated wallet header with better contrast and visibility
+ - Refined action button styling and positioning
+- **Enhanced Header Component**: New header system with integrated features
+ - BTC price display in header with currency selector integration
+ - Custom header components with configurable height
+ - Improved header button styling with dark mode support
+ - Better visual integration of price and currency information
+- **iOS Framework dSYM Generation**: Automated dSYM generation for crash reporting
+ - New script (`ios/scripts/generate_framework_dsyms.sh`) for generating dSYM files
+ - Automatic dSYM generation for Tss.framework and hermesvm.framework
+ - Integrated into Xcode build process for release builds
+ - Improved crash symbolication support for embedded frameworks
+- **Dark Mode Assets**: New inverted icon assets for dark mode compatibility
+ - `bold-icon-inverted.png` for dark mode header display
+ - `icon-inverted.png` for dark mode app icon variants
+
+### Changed
+- **Theme System Refactoring**: Complete theme architecture overhaul
+ - Migrated from single `theme.js` to modular theme system (`theme/` directory)
+ - Separated theme types, definitions, context, and utilities
+ - Improved type safety with TypeScript theme definitions
+ - Better theme mode management with OS default support
+- **UI Components Dark Mode Support**: All major components updated for dark mode
+ - `TransactionList` and `TransactionListSkeleton` with dark mode styling
+ - `TransactionDetailsModal` with improved dark mode contrast
+ - `TransportModeSelector` with theme-aware styling
+ - `WalletSkeleton` with dark mode loading states
+ - `QRScanner` components with dark mode support
+ - `CurrencySelector` with theme-aware UI
+ - `LegalModal` and `LegacyWalletModal` with dark mode styling
+- **Wallet Settings Theme Integration**: Theme selector in wallet settings
+ - New theme mode selector (OS Default, Light, Dark)
+ - Theme preference persistence across app sessions
+ - Legacy theme migration support
+- **Docker Build Optimizations**: Improved Docker build process
+ - Fixed working directory context in Dockerfile
+ - Better path handling for Go module downloads
+ - Improved build reliability and consistency
+
+### Fixed
+- **Loading Screen Theme Support**: Fixed loading screen background for dark mode
+- **Error Boundary Theme Integration**: Updated error boundary with theme support
+- **Cache Indicator Dark Mode**: Improved cache indicator visibility in dark mode
+- **Showcase Screen Theme Support**: Updated showcase screen with dark mode styling
+- **PSBT Screen Theme Integration**: Enhanced PSBT screen with theme-aware components
+- **Receive Modal Dark Mode**: Improved receive modal styling for dark mode
+- **Send Bitcoin Modal Theme Support**: Enhanced send modal with dark mode styling
+
+### Technical Details
+- **Theme Architecture**: New `theme/` directory structure
+ - `types.ts`: TypeScript type definitions for themes
+ - `themes.ts`: Light and dark theme definitions
+ - `context.tsx`: React context for theme management
+ - `utils.ts`: Theme utility functions
+ - `index.ts`: Theme module exports
+- **Component Updates**: 39 files changed with 2,967 insertions and 1,522 deletions
+- **Build System**: iOS Xcode project updated with dSYM generation build phase
+- **Asset Management**: New inverted icon assets for dark mode compatibility
+
+## [2.1.7] - 2026-01-05
+
+### Added
+- **Docker Build System**: Complete Docker-based build infrastructure for Android APK compilation with cross-platform support
+- **Enhanced QR Code for Send Bitcoin**: QR codes now include address type, derivation path, and network to prevent session timeouts between devices
+- **From Address Display**: Transaction details now show the source (from) address in pairing screens
+- **Watch-Only Wallet Export**: Streamlined to output descriptors only (removed xpub/tpub export)
+- **Multiple Address Display in Transactions**: Transaction details now show all recipient addresses for sent transactions and all sender addresses for received transactions
+ - Sent transactions with multiple outputs (e.g., PSBT transactions) display all recipient addresses with individual amounts
+ - Received transactions with multiple inputs display all sender addresses with the received output amount
+ - Each address shows its BTC amount and fiat equivalent
+ - Transaction list shows count indicator for multiple recipients: "To: address... (+2 more)"
+
+### Changed
+- **Docker Build System**: Moved Docker scripts to organized `docker/scripts/` directory
+- **Android Build Configuration**: Enhanced build system with Docker-specific Gradle settings and improved ProGuard rules
+
+### Fixed
+- **Nostr Transport Panic Recovery**: Enhanced panic recovery in co-signing operations with better error handling
+- **Legacy Wallet Migration Modal**: New modal appears for users with legacy wallets, advising migration to new wallet setup
+- **Network Reset on Wallet Import**: Network always resets to mainnet when importing a keyshare to ensure clean state
+- **Address Flickering Issue**: Fixed address changing/flickering after lock/unlock by making UserContext the single source of truth
+- **Session Timeout Fix for QR Code Scanning**: Fixed session timeouts when scanning send Bitcoin QR codes from second device
+- **TransactionList Loading State**: Fixed infinite "Loading..." state and network errors when restoring wallet for the first time
+
## [2.1.6] - 2025-12-31
### Added
@@ -36,43 +192,6 @@
- **client.go**: Enhanced panic recovery and error handling in Nostr publish operations
- **Error Handling**: Improved timeout and error recovery for balance checks
-## [Unreleased]
-
-### Added
-- **Legacy Wallet Migration Modal**: New modal appears for users with legacy wallets, advising migration to new wallet setup for better PSBT compatibility
- - Non-dismissible modal with friendly messaging
- - "Do not remind me again" checkbox option
- - Modal flag automatically resets on new wallet import (if wallet is legacy)
- - Standalone `LegacyWalletModal` component for reusability
-
-### Changed
-- **Network Reset on Wallet Import**: Network always resets to mainnet when importing a keyshare to ensure clean state
-- **Balance Display Styling**: Balance rows (BTC and USD) now have transparent background while maintaining tap-to-hide functionality
-- **Button Alignment**: Send and Receive buttons now vertically align with Device and Address Type buttons above for consistent spacing
-- **QR Scanner Subtitle**: Updated subtitle text to "Point camera to Sending Device QR" for clarity
-
-### Fixed
-- **Address Flickering Issue**: Fixed address changing/flickering after lock/unlock by making UserContext the single source of truth for addresses
- - UserContext now properly derives network-specific btcPub for both mainnet and testnet
- - WalletHome prioritizes userActiveAddress from UserContext over local state
- - Eliminated race conditions in address derivation
-- **Network State Management**: Improved network state consistency across the app
- - Network reset on import ensures proper address derivation
- - All contexts and providers properly synchronized with network changes
-- **Cache Clearing**: Comprehensive cache clearing on wallet setup and import screens
- - LocalCache cleared on ShowcaseScreen (import)
- - LocalCache cleared on MobilesPairing and MobileNostrPairing (setup mode only)
- - Stale btcPub removed from EncryptedStorage
- - WalletService cache cleared for fresh state
-
-### Technical Details
-- **UserContext**: Enhanced refresh() to derive separate btcPub values for mainnet and testnet
-- **WalletHome**: Updated to use UserContext as primary address source, with local state as fallback
-- **ShowcaseScreen**: Added network reset to mainnet on keyshare import using setActiveNetwork()
-- **Cache Management**: Added useEffect hooks to clear all cache on wallet setup/import screens
-- **Styles**: Updated balanceRowWithMargin to use transparent background
-- **Button Layout**: Applied flexOneMinWidthZero and partyGap styles to action buttons for consistent alignment
-
## [2.1.4] - 2025-12-30
### Added
@@ -88,8 +207,6 @@
- **Android navigation bar overlap**: Fixed bottom navigation bar overlapping system navigation on Android devices (e.g., Samsung)
- **Message delivery reliability**: Improved handling of messages sent just before subscription starts
----
-
## [2.1.3] - 2025-12-20
### Added
diff --git a/Dockerfile b/Dockerfile
index 03dcacb..e05e8e9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,71 +1,168 @@
-FROM debian:bookworm
-ARG fdroid=false
-ENV fdroid=${fdroid}
-ARG git_ref=""
-ENV git_ref=${git_ref}
-# install java, node, go, and build tools
-RUN apt update && apt install -y curl git openjdk-17-jdk unzip gcc libc-dev \
- && curl -Lo node.tar.gz https://nodejs.org/dist/v20.18.1/node-v20.18.1-linux-x64.tar.gz \
- && echo "259e5a8bf2e15ecece65bd2a47153262eda71c0b2c9700d5e703ce4951572784 node.tar.gz" | sha256sum -c - \
- && tar xzf node.tar.gz --strip-components=1 -C /usr/local/ \
- && rm node.tar.gz
-
-# install go 1.24.2 to match F-Droid srclibs
+# syntax=docker/dockerfile:1.4
+# Platform specification: linux/amd64 required for Android builds
+# On native Linux x86_64, this is a no-op (native build)
+# On macOS/ARM, this enables QEMU emulation
+# Base image can be customized via BUILD_BASE_IMAGE arg
+# Options: debian:bookworm (default, stable), ubuntu:22.04 (better QEMU support), debian:slim (smaller)
+ARG BUILD_BASE_IMAGE=debian:bookworm
+FROM --platform=linux/amd64 ${BUILD_BASE_IMAGE} AS base
+
+# Install system dependencies (this layer rarely changes)
+RUN apt update && apt install -y --no-install-recommends \
+ curl \
+ git \
+ openjdk-17-jdk \
+ unzip \
+ gcc \
+ libc-dev \
+ ca-certificates \
+ && rm -rf /var/lib/apt/lists/*
+
+# Install Node.js (cached unless Node version changes)
+RUN curl -Lo node.tar.gz https://nodejs.org/dist/v20.18.1/node-v20.18.1-linux-x64.tar.gz \
+ && echo "259e5a8bf2e15ecece65bd2a47153262eda71c0b2c9700d5e703ce4951572784 node.tar.gz" | sha256sum -c - \
+ && tar xzf node.tar.gz --strip-components=1 -C /usr/local/ \
+ && rm node.tar.gz
+
+# Install Go (cached unless Go version changes)
RUN curl -LO https://go.dev/dl/go1.24.2.linux-amd64.tar.gz \
- && tar -C /usr/local -xzf go1.24.2.linux-amd64.tar.gz \
- && rm go1.24.2.linux-amd64.tar.gz
-ENV PATH="/usr/local/go/bin:${PATH}"
+ && tar -C /usr/local -xzf go1.24.2.linux-amd64.tar.gz \
+ && rm go1.24.2.linux-amd64.tar.gz
+
+ENV PATH="/usr/local/go/bin:/usr/local/bin:${PATH}"
ENV GOROOT="/usr/local/go"
ENV GOPATH="/root/go"
+ENV PATH="/root/go/bin:${PATH}"
+# Set GOMODCACHE to use the cache mount location
+ENV GOMODCACHE="/root/go/pkg/mod"
-# install android
+# Install Android SDK (cached unless SDK version changes)
RUN curl -LO https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip \
- && unzip commandlinetools-linux-13114758_latest.zip -d /android-sdk \
- && rm commandlinetools-linux-13114758_latest.zip
+ && unzip commandlinetools-linux-13114758_latest.zip -d /android-sdk \
+ && rm commandlinetools-linux-13114758_latest.zip
ENV ANDROID_HOME="/android-sdk"
ENV ANDROID_NDK_HOME="$ANDROID_HOME/ndk/27.1.12297006"
-ENV PATH="$ANDROID_HOME/cmdline-tools/bin:$PATH"
+ENV PATH="$ANDROID_HOME/cmdline-tools/bin:${PATH}"
-RUN yes | /android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME \
+# Install Android SDK components (cached unless versions change)
+# Cache Android SDK downloads - sdkmanager stores cache in ~/.android
+# Note: On macOS with QEMU emulation, cache mounts may not persist perfectly
+# Using explicit cache ID to improve persistence across builds
+RUN --mount=type=cache,target=/root/.android,id=android-sdk-cache,sharing=shared \
+ ANDROID_SDK_ROOT=$ANDROID_HOME \
+ yes | /android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_HOME \
"platforms;android-21" "build-tools;33.0.0" "ndk;27.1.12297006"
-# install gomobile
-ENV PATH="$PATH:/root/go/bin"
-RUN go install golang.org/x/mobile/cmd/gomobile@v0.0.0-20250408133729-978277e7eaf7 \
- && gomobile init
+# Install gomobile (cached unless version changes)
+# Ensure GOPATH/bin directory exists and add to PATH for this RUN
+# Note: gomobile install may compile C code, but we disable CGO to avoid architecture issues
+RUN mkdir -p /root/go/bin \
+ && CGO_ENABLED=0 go install golang.org/x/mobile/cmd/gomobile@v0.0.0-20250408133729-978277e7eaf7 \
+ && /root/go/bin/gomobile init
-# Build Wallet
-COPY . /BoldWallet
-RUN if [ -z "$git_ref" ]; then \
- echo "Using local code"; \
-else \
- echo "Replacing from GitHub"; \
- rm -r /BoldWallet; \
- git clone https://github.com/BoldBitcoinWallet/BoldWallet.git /BoldWallet; \
- cd /BoldWallet && git checkout "$git_ref"; \
-fi
+# Build stage
+FROM base AS builder
+
+ARG fdroid=false
+ENV fdroid=${fdroid}
+ARG git_ref=""
+ENV git_ref=${git_ref}
+ARG DOCKER_HOST_OS=""
+ENV DOCKER_HOST_OS=${DOCKER_HOST_OS}
-# BoldWallet Root
WORKDIR /BoldWallet
-# conditional F-Droid build switch
-RUN if [ "$fdroid" = "true" ]; then \
- sed -i '/react-native-vision-camera/d' package.json; \
- mv /BoldWallet/components/QRScanner.foss.tsx /BoldWallet/components/QRScanner.tsx; \
- fi
-
-# npm install
-RUN npm install --build-from-source
+# Copy dependency files first for better caching
+# These layers only invalidate when dependencies change, not code
+COPY package.json package-lock.json ./
+COPY patches/ ./patches/
+
+# Install npm dependencies with cache mount (BuildKit feature)
+# Cache persists across builds, only downloads new/changed packages
+# Using npm install instead of npm ci for better compatibility
+RUN --mount=type=cache,target=/root/.npm,id=npm-cache,sharing=shared \
+ npm install --build-from-source --prefer-offline --no-audit --legacy-peer-deps
+
+# Copy Go dependency files
+COPY BBMTLib/go.mod BBMTLib/go.sum ./BBMTLib/
+
+# Download Go modules with cache mount
+# Run go mod tidy first to ensure all dependencies are resolved
+# Download all modules including transitive dependencies - cache persists across builds
+RUN --mount=type=cache,target=/root/go/pkg/mod,id=go-modules-cache,sharing=shared \
+ cd BBMTLib && \
+ go mod tidy && \
+ go mod download && \
+ # Pre-download all transitive dependencies by building (without actually building)
+ # This ensures gomobile and all its dependencies are cached
+ go list -deps -f '{{.Module.Path}}' ./tss/... 2>/dev/null | xargs -r go mod download || true
+
+# Now copy the rest of the codebase
+# This layer invalidates on code changes, but dependencies are already cached
+COPY . .
+
+# Handle git_ref if provided (clone from GitHub instead of using local code)
+RUN --mount=type=cache,target=/root/.npm,id=npm-cache,sharing=shared \
+ --mount=type=cache,target=/root/go/pkg/mod,id=go-modules-cache,sharing=shared \
+ if [ -n "$git_ref" ]; then \
+ echo "Replacing from GitHub"; \
+ rm -rf /BoldWallet/* /BoldWallet/.[!.]*; \
+ git clone https://github.com/BoldBitcoinWallet/BoldWallet.git /tmp/BoldWallet; \
+ cd /tmp/BoldWallet && git checkout "$git_ref"; \
+ cp -r /tmp/BoldWallet/* /BoldWallet/; \
+ cp -r /tmp/BoldWallet/.[!.]* /BoldWallet/ 2>/dev/null || true; \
+ rm -rf /tmp/BoldWallet; \
+ # Explicitly cd to /BoldWallet to restore working directory context \
+ cd /BoldWallet; \
+ # Reinstall dependencies after git clone (uses cache) \
+ npm install --build-from-source --prefer-offline --no-audit --legacy-peer-deps; \
+ cd /BoldWallet/BBMTLib && go mod download; \
+fi
-RUN if [ "$fdroid" = "true" ]; then \
- sed -i -e '/installReferrerVersion/,+12d' node_modules/react-native-device-info/android/build.gradle; \
- fi
+# Conditional F-Droid build modifications
+RUN --mount=type=cache,target=/root/.npm,id=npm-cache,sharing=shared \
+ if [ "$fdroid" = "true" ]; then \
+ sed -i '/react-native-vision-camera/d' package.json; \
+ mv components/QRScanner.foss.tsx components/QRScanner.tsx 2>/dev/null || true; \
+ # Reinstall after package.json change (uses cache) \
+ npm install --build-from-source --prefer-offline --no-audit --legacy-peer-deps; \
+ # Apply F-Droid patches \
+ sed -i -e '/installReferrerVersion/,+12d' node_modules/react-native-device-info/android/build.gradle 2>/dev/null || true; \
+fi
-# gomobile lib
+# Build Go library (uses cached Go modules)
+# Inlined from build.sh - optimized for Docker with cache mounts
+# Removed redundant go mod tidy/download (already done above with cache mounts)
WORKDIR /BoldWallet/BBMTLib
-RUN sh build.sh
+RUN --mount=type=cache,target=/root/go/pkg/mod,id=go-modules-cache,sharing=shared \
+ --mount=type=cache,target=/root/.cache/go-build,id=go-build-cache,sharing=shared \
+ echo "building gomobile tss lib" && \
+ # gomobile is already installed and initialized in base stage, skip redundant steps \
+ export GOFLAGS="-mod=mod" && \
+ # Build Android AAR (iOS build not needed for Android APK) \
+ /root/go/bin/gomobile bind -v -target=android -androidapi 21 github.com/BoldBitcoinWallet/BBMTLib/tss && \
+ # Copy Android artifacts to android/app/libs \
+ cp tss.aar ../android/app/libs/tss.aar && \
+ cp tss-sources.jar ../android/app/libs/tss-sources.jar
-# android release APK
+# Build Android APK (uses cached npm and Gradle dependencies)
WORKDIR /BoldWallet/android
-RUN sh release.sh
+
+# Pre-download Gradle wrapper (cached separately from build)
+# This layer only invalidates if gradle wrapper version changes, not when source code changes
+RUN --mount=type=cache,target=/root/.gradle/wrapper,id=gradle-wrapper,sharing=shared \
+ ./gradlew --version || true
+
+# Build the APK (this layer invalidates when source code changes)
+# Gradle wrapper is already downloaded, so this step is faster
+# Set DOCKER_BUILD=1 and DOCKER_HOST_OS to ensure appropriate gradle.properties are used
+RUN --mount=type=cache,target=/root/.gradle/caches,id=gradle-caches,sharing=shared \
+ --mount=type=cache,target=/root/.gradle/wrapper,id=gradle-wrapper,sharing=shared \
+ --mount=type=cache,target=/BoldWallet/android/.gradle,id=gradle-project-cache,sharing=shared \
+ DOCKER_BUILD=1 DOCKER_HOST_OS=${DOCKER_HOST_OS} bash release.sh
+
+# Keep builder as final stage for file extraction
+# APK location: /BoldWallet/android/app/build/outputs/apk/release/app-release.apk
+# Mapping location: /BoldWallet/android/app/build/outputs/mapping/release/mapping.txt
+FROM builder AS final
diff --git a/README.md b/README.md
index af04f85..d3caf75 100644
--- a/README.md
+++ b/README.md
@@ -76,6 +76,8 @@ For app screenshots and visual previews, check the [App Store listing](https://a
### 🔁 Via Auto Builder
Relies on docker (Dockerfile) - guaranteed quick way to compile and release the APK.
+**Docker scripts are located in `docker/scripts/` - see [docker/README.md](docker/README.md) for full documentation.**
+
Build the APK seamlessly following the steps:
- Optional: edit android/release.sh when needed:
```sh
diff --git a/android/app/build.gradle b/android/app/build.gradle
index c426f88..4b03dce 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -6,7 +6,10 @@ react {
autolinkLibrariesWithApp()
}
-def enableProguardInReleaseBuilds = false
+// Enable R8/ProGuard for release builds
+// Set to false if you encounter runtime issues after enabling
+// Note: Disabling this will prevent generating mapping.txt for Play Console
+def enableProguardInReleaseBuilds = true
def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'
@@ -24,8 +27,8 @@ android {
applicationId "com.boldwallet"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 39
- versionName "2.1.6"
+ versionCode 42
+ versionName "2.1.9"
missingDimensionStrategy 'react-native-camera', 'general'
missingDimensionStrategy 'react-native-arch', 'oldarch'
@@ -38,6 +41,8 @@ android {
cmake {
cppFlags "-O2"
arguments "-DANDROID_ARM_NEON=TRUE", "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x4000", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
+ // Reduce parallel jobs for C++ builds to avoid QEMU linker crashes
+ arguments "-DCMAKE_BUILD_PARALLEL_LEVEL=2"
}
}
}
@@ -83,7 +88,7 @@ android {
signingConfig signingConfigs.debug
}
release {
- shrinkResources false
+ shrinkResources enableProguardInReleaseBuilds
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
diff --git a/android/app/libs/tss.aar b/android/app/libs/tss.aar
index 9785983..0a4203f 100644
Binary files a/android/app/libs/tss.aar and b/android/app/libs/tss.aar differ
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
index 11b0257..450e037 100644
--- a/android/app/proguard-rules.pro
+++ b/android/app/proguard-rules.pro
@@ -7,4 +7,137 @@
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
-# Add any project specific keep options here:
+# React Native ProGuard Rules
+# Keep React Native classes
+-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
+-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
+-keep @com.facebook.proguard.annotations.DoNotStrip class *
+-keepclassmembers class * {
+ @com.facebook.proguard.annotations.DoNotStrip *;
+}
+
+# Keep React Native bridge
+-keep class com.facebook.react.** { *; }
+-keep class com.facebook.hermes.** { *; }
+-keep class com.facebook.jni.** { *; }
+
+# Keep native methods
+-keepclasseswithmembernames class * {
+ native ;
+}
+
+# Keep React Native modules
+-keep class com.facebook.react.bridge.** { *; }
+-keep class com.facebook.react.uimanager.** { *; }
+-keep class com.facebook.react.views.** { *; }
+-keep class com.facebook.react.modules.** { *; }
+
+# Keep React Native third-party modules
+-keep class com.reactnativecommunity.** { *; }
+-keep class org.reactnative.** { *; }
+-keep class com.swmansion.** { *; }
+-keep class com.oblador.** { *; }
+-keep class com.th3rdwave.** { *; }
+
+# Keep React Native packages (for reflection-based loading)
+-keep class * implements com.facebook.react.ReactPackage { *; }
+-keep class * extends com.facebook.react.ReactContextBaseJavaModule { *; }
+-keep class * extends com.facebook.react.uimanager.ViewManager { *; }
+
+# Keep React Native Device Info
+-keep class com.learnium.** { *; }
+
+# Keep React Native Biometrics
+-keep class com.rnbiometrics.** { *; }
+
+# Keep React Native Share
+-keep class cl.json.** { *; }
+
+# Keep React Native Document Picker
+-keep class io.github.elyx0.reactnativedocumentpicker.** { *; }
+
+# Keep React Native Gesture Handler
+-keep class com.swmansion.gesturehandler.** { *; }
+
+# Keep React Native Reanimated
+-keep class com.swmansion.reanimated.** { *; }
+
+# Keep React Native SVG
+-keep class com.horcrux.svg.** { *; }
+
+# Keep React Native Haptic Feedback
+-keep class com.mkuczera.** { *; }
+
+# Keep Barcode Scanner
+-keep class com.reactnativebarcodescanner.** { *; }
+
+# Keep TSS library (custom native module - Go bindings)
+-keep class com.boldwallet.tss.** { *; }
+-keep class github.com.BoldBitcoinWallet.BBMTLib.tss.** { *; }
+-keep class tss.** { *; }
+-keep interface tss.** { *; }
+
+# Keep custom native modules
+-keep class com.boldwallet.BBMTLibNativeModule { *; }
+-keep class com.boldwallet.BBMTLibNativePackage { *; }
+-keep class com.boldwallet.IconChangerPackage { *; }
+
+# Keep MainActivity and Application classes
+-keep class com.boldwallet.MainActivity { *; }
+-keep class com.boldwallet.MainApplication { *; }
+
+# Keep all classes in the app package (defensive)
+-keep class com.boldwallet.** { *; }
+
+# Keep Parcelable implementations
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final android.os.Parcelable$Creator CREATOR;
+}
+
+# Keep Serializable classes
+-keepclassmembers class * implements java.io.Serializable {
+ static final long serialVersionUID;
+ private static final java.io.ObjectStreamField[] serialPersistentFields;
+ private void writeObject(java.io.ObjectOutputStream);
+ private void readObject(java.io.ObjectInputStream);
+ java.lang.Object writeReplace();
+ java.lang.Object readResolve();
+}
+
+# Keep annotations
+-keepattributes *Annotation*
+-keepattributes Signature
+-keepattributes Exceptions
+-keepattributes InnerClasses
+-keepattributes EnclosingMethod
+
+# Keep line numbers for better stack traces
+-keepattributes SourceFile,LineNumberTable
+-renamesourcefileattribute SourceFile
+
+# Keep names for native methods (critical for JNI/Go bindings)
+-keepclasseswithmembernames,includedescriptorclasses class * {
+ native ;
+}
+
+# Keep classes that are referenced in native code
+-keepclasseswithmembers class * {
+ native ;
+}
+
+# Keep enum classes (often used in native bindings)
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+# Don't warn about missing classes (some may be in native code)
+-dontwarn tss.**
+-dontwarn com.boldwallet.tss.**
+-dontwarn github.com.BoldBitcoinWallet.BBMTLib.tss.**
+
+# Keep classes with @ReactMethod annotation
+-keep @com.facebook.react.bridge.ReactMethod class * { *; }
+-keepclassmembers class * {
+ @com.facebook.react.bridge.ReactMethod ;
+}
diff --git a/android/gradle.properties b/android/gradle.properties
index fdf0196..d76e551 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,9 +1,26 @@
-org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m
+# Optimized for Docker on macOS host (QEMU emulation)
+# Conservative settings to avoid QEMU linker crashes and memory issues
+# Allocate 4GB to Gradle (leaves 6GB for QEMU emulation, OS, and overhead)
+org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:MaxGCPauseMillis=200
org.gradle.parallel=true
org.gradle.caching=true
+# Use 4 workers to reduce memory pressure during C++ linking (QEMU emulation needs more headroom)
+# C++ linking is memory-intensive and can crash with too many parallel workers under QEMU
+org.gradle.workers.max=4
+# Kotlin daemon with reasonable memory allocation
+kotlin.daemon.jvmargs=-Xmx1024m -XX:MaxMetaspaceSize=512m
+kotlin.incremental=true
+# Disable configuration cache - React Native doesn't fully support it yet
+# Enabling it causes build failures with React Native tasks
+org.gradle.configuration-cache=false
+# Enable build cache for faster subsequent builds
+org.gradle.build-cache=true
android.useAndroidX=true
-reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
+# Build only ARM architectures (most Android devices are ARM)
+# x86/x86_64 cause QEMU linker crashes on macOS, and are rarely needed
+# ARM-only builds are faster and avoid QEMU emulation issues
+reactNativeArchitectures=armeabi-v7a,arm64-v8a
newArchEnabled=true
hermesEnabled=true
diff --git a/android/gradle.properties.docker-linux b/android/gradle.properties.docker-linux
new file mode 100644
index 0000000..fdb936a
--- /dev/null
+++ b/android/gradle.properties.docker-linux
@@ -0,0 +1,38 @@
+# Optimized for Docker on Linux host (native build, no QEMU emulation)
+# Can use more aggressive settings since there's no emulation overhead
+# Allocate more memory and use more parallel workers for faster builds
+
+# Memory allocation - more aggressive for native Linux Docker
+# Recommended: 6-8GB for native Linux builds
+org.gradle.jvmargs=-Xmx6144m -XX:MaxMetaspaceSize=1536m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:MaxGCPauseMillis=200
+
+org.gradle.parallel=true
+org.gradle.caching=true
+
+# Use more workers for native Linux Docker builds
+# Recommended: Number of CPU cores - 1 (e.g., 7 workers for 8-core CPU)
+org.gradle.workers.max=6
+
+# Kotlin daemon with more memory
+kotlin.daemon.jvmargs=-Xmx1536m -XX:MaxMetaspaceSize=768m
+kotlin.incremental=true
+
+# Disable configuration cache - React Native doesn't fully support it yet
+org.gradle.configuration-cache=false
+
+# Enable build cache for faster subsequent builds
+org.gradle.build-cache=true
+
+android.useAndroidX=true
+
+# Build all architectures for native Linux (no QEMU linker crashes)
+reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
+
+newArchEnabled=true
+hermesEnabled=true
+
+VisionCamera_enableCodeScanner=false
+
+# 16KB page size support
+android.enableJetifier=true
+
diff --git a/android/mapping.txt b/android/mapping.txt
new file mode 100644
index 0000000..b816cd6
--- /dev/null
+++ b/android/mapping.txt
@@ -0,0 +1,221189 @@
+# compiler: R8
+# compiler_version: 8.12.14
+# min_api: 24
+# common_typos_disable
+# {"id":"com.android.tools.r8.mapping","version":"2.2"}
+# pg_map_id: ca029bbca3b58e1ec9ed471ec65b8cea34c6cfae1c74c198cfe5d6fca6c27765
+# pg_map_hash: SHA-256 ca029bbca3b58e1ec9ed471ec65b8cea34c6cfae1c74c198cfe5d6fca6c27765
+android.app.AppComponentFactory -> android.app.AppComponentFactory:
+# {"id":"com.android.tools.r8.synthesized"}
+ void () ->
+ # {"id":"com.android.tools.r8.synthesized"}
+android.hardware.biometrics.BiometricPrompt$AuthenticationCallback -> android.hardware.biometrics.BiometricPrompt$AuthenticationCallback:
+# {"id":"com.android.tools.r8.synthesized"}
+ void () ->
+ # {"id":"com.android.tools.r8.synthesized"}
+android.support.v4.app.RemoteActionCompatParcelizer -> android.support.v4.app.RemoteActionCompatParcelizer:
+# {"id":"sourceFile","fileName":"RemoteActionCompatParcelizer.java"}
+ 1:4:void ():8:8 ->
+ 1:5:androidx.core.app.RemoteActionCompat read(androidx.versionedparcelable.VersionedParcel):10:10 -> read
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/versionedparcelable/a;)Landroidx/core/app/RemoteActionCompat;"}
+ 1:4:void write(androidx.core.app.RemoteActionCompat,androidx.versionedparcelable.VersionedParcel):14:14 -> write
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/core/app/RemoteActionCompat;Landroidx/versionedparcelable/a;)V"}
+android.support.v4.graphics.drawable.IconCompatParcelizer -> android.support.v4.graphics.drawable.IconCompatParcelizer:
+# {"id":"sourceFile","fileName":"IconCompatParcelizer.java"}
+ 1:4:void ():8:8 ->
+ 1:5:androidx.core.graphics.drawable.IconCompat read(androidx.versionedparcelable.VersionedParcel):10:10 -> read
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/versionedparcelable/a;)Landroidx/core/graphics/drawable/IconCompat;"}
+ 1:4:void write(androidx.core.graphics.drawable.IconCompat,androidx.versionedparcelable.VersionedParcel):14:14 -> write
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/core/graphics/drawable/IconCompat;Landroidx/versionedparcelable/a;)V"}
+android.view.WindowInsetsAnimation$Callback -> android.view.WindowInsetsAnimation$Callback:
+# {"id":"com.android.tools.r8.synthesized"}
+ void () ->
+ # {"id":"com.android.tools.r8.synthesized"}
+android.window.OnBackAnimationCallback -> android.window.OnBackAnimationCallback:
+# {"id":"com.android.tools.r8.synthesized"}
+ void () ->
+ # {"id":"com.android.tools.r8.synthesized"}
+android.window.OnBackInvokedCallback -> android.window.OnBackInvokedCallback:
+# {"id":"com.android.tools.r8.synthesized"}
+ void () ->
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.Api34Impl -> androidx.activity.a:
+# {"id":"sourceFile","fileName":"BackEventCompat.kt"}
+ androidx.activity.Api34Impl INSTANCE -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/a;"}
+ 1:4:void ():99:99 ->
+ 1:6:android.window.BackEvent createOnBackEvent(float,float,float,int):103:103 -> a
+ 6:10:float progress(android.window.BackEvent):106:106 -> b
+ 6:10:int swipeEdge(android.window.BackEvent):115:115 -> c
+ 6:10:float touchX(android.window.BackEvent):109:109 -> d
+ 6:10:float touchY(android.window.BackEvent):112:112 -> e
+androidx.activity.BackEventCompat -> androidx.activity.b:
+# {"id":"sourceFile","fileName":"BackEventCompat.kt"}
+ float touchX -> a
+ float touchY -> b
+ float progress -> c
+ int swipeEdge -> d
+ androidx.activity.BackEventCompat$Companion Companion -> e
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/b$a;"}
+ 1:1:void (float,float,float,int):31:31 ->
+ 2:2:void (float,float,float,int):36:36 ->
+ 3:3:void (float,float,float,int):41:41 ->
+ 4:4:void (float,float,float,int):45:45 ->
+ 5:5:void (float,float,float,int):50:50 ->
+ 6:9:void (android.window.BackEvent):55:58 ->
+ 10:10:void (android.window.BackEvent):54:54 ->
+ 1:3:float getProgress():46:46 -> a
+ 1:3:int getSwipeEdge():50:50 -> b
+ 1:40:java.lang.String toString():86:86 -> toString
+ 41:42:java.lang.String toString():87:87 -> toString
+ 43:55:java.lang.String toString():86:86 -> toString
+androidx.activity.BackEventCompat$Companion -> androidx.activity.b$a:
+# {"id":"sourceFile","fileName":"BackEventCompat.kt"}
+ 1:1:void (kotlin.jvm.internal.DefaultConstructorMarker):0:0 ->
+ 2:2:void ():90:90 ->
+androidx.activity.Cancellable -> androidx.activity.c:
+# {"id":"sourceFile","fileName":"Cancellable.kt"}
+androidx.activity.ComponentActivity -> androidx.activity.ComponentActivity:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.contextaware.ContextAwareHelper mContextAwareHelper -> mContextAwareHelper
+ # {"id":"com.android.tools.r8.residualsignature","signature":"La/a;"}
+ androidx.lifecycle.ViewModelProvider$Factory mDefaultFactory -> mDefaultFactory
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/F$b;"}
+ androidx.activity.FullyDrawnReporter mFullyDrawnReporter -> mFullyDrawnReporter
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/m;"}
+ androidx.lifecycle.LifecycleRegistry mLifecycleRegistry -> mLifecycleRegistry
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/n;"}
+ androidx.core.view.MenuHostHelper mMenuHostHelper -> mMenuHostHelper
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/core/view/y;"}
+ androidx.activity.ComponentActivity$ReportFullyDrawnExecutor mReportFullyDrawnExecutor -> mReportFullyDrawnExecutor
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/ComponentActivity$f;"}
+ androidx.savedstate.SavedStateRegistryController mSavedStateRegistryController -> mSavedStateRegistryController
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LW/c;"}
+ androidx.lifecycle.ViewModelStore mViewModelStore -> mViewModelStore
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/H;"}
+ 1:3:void ():263:263 ->
+ 4:10:void ():143:143 ->
+ 11:22:void ():144:144 ->
+ 23:29:void ():145:145 ->
+ 30:36:void ():148:148 ->
+ 37:38:void ():154:154 ->
+ 39:44:void ():156:156 ->
+ 45:56:void ():158:158 ->
+ 57:63:void ():170:170 ->
+ 64:70:void ():172:172 ->
+ 71:77:void ():244:244 ->
+ 78:84:void ():246:246 ->
+ 85:91:void ():248:248 ->
+ 92:98:void ():250:250 ->
+ 99:106:void ():252:252 ->
+ 107:108:void ():255:255 ->
+ 109:110:void ():256:256 ->
+ 111:116:void ():264:264 ->
+ 117:128:void ():273:273 ->
+ 129:140:void ():287:287 ->
+ 141:152:void ():302:302 ->
+ 153:155:void ():310:310 ->
+ 156:158:void ():311:311 ->
+ 159:172:void ():316:316 ->
+ 173:181:void ():322:322 ->
+ 182:189:void ():267:267 ->
+ 1:4:void access$001(androidx.activity.ComponentActivity):119:119 -> access$001
+ 1:3:androidx.activity.OnBackPressedDispatcher access$100(androidx.activity.ComponentActivity):119:119 -> access$100
+ 1:1:void addMenuProvider(androidx.core.view.MenuProvider):545:545 -> addMenuProvider
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/core/view/B;)V"}
+ 2:2:void addMenuProvider(androidx.core.view.MenuProvider,androidx.lifecycle.LifecycleOwner):550:550 -> addMenuProvider
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/core/view/B;Landroidx/lifecycle/m;)V"}
+ 3:3:void addMenuProvider(androidx.core.view.MenuProvider,androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$State):557:557 -> addMenuProvider
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/core/view/B;Landroidx/lifecycle/m;Landroidx/lifecycle/g$b;)V"}
+ 1:6:void addOnConfigurationChangedListener(androidx.core.util.Consumer):927:927 -> addOnConfigurationChangedListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):499:499 -> addOnContextAvailableListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(La/b;)V"}
+ 1:6:void addOnMultiWindowModeChangedListener(androidx.core.util.Consumer):1042:1042 -> addOnMultiWindowModeChangedListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void addOnNewIntentListener(androidx.core.util.Consumer):982:982 -> addOnNewIntentListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void addOnPictureInPictureModeChangedListener(androidx.core.util.Consumer):1106:1106 -> addOnPictureInPictureModeChangedListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void addOnTrimMemoryListener(androidx.core.util.Consumer):953:953 -> addOnTrimMemoryListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:4:void lambda$new$2(android.content.Context):323:323 -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity;Landroid/content/Context;)V"}
+ 5:6:void lambda$new$2(android.content.Context):323:323 -> b
+ 7:12:void lambda$new$2(android.content.Context):324:324 -> b
+ 13:18:void lambda$new$2(android.content.Context):326:326 -> b
+ 4:8:android.os.Bundle lambda$new$1():318:318 -> c
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity;)Landroid/os/Bundle;"}
+ 9:14:android.os.Bundle lambda$new$1():319:319 -> c
+ 1:5:kotlin.Unit lambda$new$0():162:162 -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity;)Lp3/u;"}
+ 1:6:androidx.activity.ComponentActivity$ReportFullyDrawnExecutor createFullyDrawnExecutor():1144:1144 -> e
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/activity/ComponentActivity$f;"}
+ 1:4:void ensureViewModelStore():612:612 -> ensureViewModelStore
+ 5:12:void ensureViewModelStore():614:614 -> ensureViewModelStore
+ 13:16:void ensureViewModelStore():617:617 -> ensureViewModelStore
+ 17:20:void ensureViewModelStore():619:619 -> ensureViewModelStore
+ 21:28:void ensureViewModelStore():620:620 -> ensureViewModelStore
+ 1:3:androidx.activity.result.ActivityResultRegistry getActivityResultRegistry():905:905 -> getActivityResultRegistry
+ 1:5:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():648:648 -> getDefaultViewModelCreationExtras
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()LT/a;"}
+ 6:11:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():649:649 -> getDefaultViewModelCreationExtras
+ 12:20:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():650:650 -> getDefaultViewModelCreationExtras
+ 21:25:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():652:652 -> getDefaultViewModelCreationExtras
+ 26:30:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():653:653 -> getDefaultViewModelCreationExtras
+ 31:46:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():654:654 -> getDefaultViewModelCreationExtras
+ 47:60:androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras():655:655 -> getDefaultViewModelCreationExtras
+ 1:4:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():628:628 -> getDefaultViewModelProviderFactory
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/lifecycle/F$b;"}
+ 5:6:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():629:629 -> getDefaultViewModelProviderFactory
+ 7:10:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():630:630 -> getDefaultViewModelProviderFactory
+ 11:31:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():632:632 -> getDefaultViewModelProviderFactory
+ 32:34:androidx.lifecycle.ViewModelProvider$Factory getDefaultViewModelProviderFactory():634:634 -> getDefaultViewModelProviderFactory
+ 1:3:androidx.activity.FullyDrawnReporter getFullyDrawnReporter():743:743 -> getFullyDrawnReporter
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/activity/m;"}
+ 1:8:java.lang.Object getLastCustomNonConfigurationInstance():432:432 -> getLastCustomNonConfigurationInstance
+ 9:13:java.lang.Object getLastCustomNonConfigurationInstance():433:433 -> getLastCustomNonConfigurationInstance
+ 1:3:androidx.lifecycle.Lifecycle getLifecycle():586:586 -> getLifecycle
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/lifecycle/g;"}
+ 1:4:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():689:689 -> getOnBackPressedDispatcher
+ 5:16:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():690:690 -> getOnBackPressedDispatcher
+ 17:28:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():714:714 -> getOnBackPressedDispatcher
+ 29:31:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():731:731 -> getOnBackPressedDispatcher
+ 1:7:androidx.savedstate.SavedStateRegistry getSavedStateRegistry():737:737 -> getSavedStateRegistry
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/savedstate/a;"}
+ 1:6:androidx.lifecycle.ViewModelStore getViewModelStore():602:602 -> getViewModelStore
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/lifecycle/H;"}
+ 7:9:androidx.lifecycle.ViewModelStore getViewModelStore():606:606 -> getViewModelStore
+ 10:12:androidx.lifecycle.ViewModelStore getViewModelStore():607:607 -> getViewModelStore
+ 13:20:androidx.lifecycle.ViewModelStore getViewModelStore():603:603 -> getViewModelStore
+ 1:11:void initializeViewTreeOwners():474:474 -> initializeViewTreeOwners
+ 12:22:void initializeViewTreeOwners():475:475 -> initializeViewTreeOwners
+ 23:33:void initializeViewTreeOwners():476:476 -> initializeViewTreeOwners
+ 34:44:void initializeViewTreeOwners():477:477 -> initializeViewTreeOwners
+ 45:56:void initializeViewTreeOwners():478:478 -> initializeViewTreeOwners
+ 1:4:void invalidateMenu():567:567 -> invalidateMenu
+ 1:8:void onActivityResult(int,int,android.content.Intent):845:845 -> onActivityResult
+ 9:12:void onActivityResult(int,int,android.content.Intent):846:846 -> onActivityResult
+ 1:8:void onBackPressed():678:678 -> onBackPressed
+ 1:3:void onConfigurationChanged(android.content.res.Configuration):917:917 -> onConfigurationChanged
+ 4:21:void onConfigurationChanged(android.content.res.Configuration):918:918 -> onConfigurationChanged
+ 22:26:void onConfigurationChanged(android.content.res.Configuration):919:919 -> onConfigurationChanged
+ 1:5:void onCreate(android.os.Bundle):357:357 -> onCreate
+ 6:10:void onCreate(android.os.Bundle):358:358 -> onCreate
+ 11:13:void onCreate(android.os.Bundle):359:359 -> onCreate
+ 14:16:void onCreate(android.os.Bundle):360:360 -> onCreate
+ 17:20:void onCreate(android.os.Bundle):361:361 -> onCreate
+ 21:24:void onCreate(android.os.Bundle):362:362 -> onCreate
+ 3:5:boolean onCreatePanelMenu(int,android.view.Menu):520:520 -> onCreatePanelMenu
+ 6:16:boolean onCreatePanelMenu(int,android.view.Menu):521:521 -> onCreatePanelMenu
+ 1:10:boolean onMenuItemSelected(int,android.view.MenuItem):528:528 -> onMenuItemSelected
+ 11:19:boolean onMenuItemSelected(int,android.view.MenuItem):532:532 -> onMenuItemSelected
+ 1:1:void onMultiWindowModeChanged(boolean):1005:1005 -> onMultiWindowModeChanged
+ 2:3:void onMultiWindowModeChanged(boolean):1008:1009 -> onMultiWindowModeChanged
+ 4:4:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1024:1024 -> onMultiWindowModeChanged
+ 5:5:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1029:1029 -> onMultiWindowModeChanged
+ 6:6:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1031:1031 -> onMultiWindowModeChanged
+ 7:8:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1033:1034 -> onMultiWindowModeChanged
+ 9:10:void onMultiWindowModeChanged(boolean,android.content.res.Configuration):1031:1032 -> onMultiWindowModeChanged
+ 1:3:void onNewIntent(android.content.Intent):972:972 -> onNewIntent
+ 4:21:void onNewIntent(android.content.Intent):973:973 -> onNewIntent
+ 22:26:void onNewIntent(android.content.Intent):974:974 -> onNewIntent
+ 1:5:void onPanelClosed(int,android.view.Menu):539:539 -> onPanelClosed
+ 6:9:void onPanelClosed(int,android.view.Menu):540:540 -> onPanelClosed
+ 1:1:void onPictureInPictureModeChanged(boolean):1065:1065 -> onPictureInPictureModeChanged
+ 2:3:void onPictureInPictureModeChanged(boolean):1070:1071 -> onPictureInPictureModeChanged
+ 4:4:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1086:1086 -> onPictureInPictureModeChanged
+ 5:5:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1091:1091 -> onPictureInPictureModeChanged
+ 6:6:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1093:1093 -> onPictureInPictureModeChanged
+ 7:8:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1096:1097 -> onPictureInPictureModeChanged
+ 9:10:void onPictureInPictureModeChanged(boolean,android.content.res.Configuration):1093:1094 -> onPictureInPictureModeChanged
+ 3:5:boolean onPreparePanel(int,android.view.View,android.view.Menu):511:511 -> onPreparePanel
+ 6:12:boolean onPreparePanel(int,android.view.View,android.view.Menu):512:512 -> onPreparePanel
+ 1:9:void onRequestPermissionsResult(int,java.lang.String[],int[]):870:870 -> onRequestPermissionsResult
+ 10:15:void onRequestPermissionsResult(int,java.lang.String[],int[]):871:871 -> onRequestPermissionsResult
+ 16:20:void onRequestPermissionsResult(int,java.lang.String[],int[]):872:872 -> onRequestPermissionsResult
+ 21:26:void onRequestPermissionsResult(int,java.lang.String[],int[]):870:870 -> onRequestPermissionsResult
+ 27:30:void onRequestPermissionsResult(int,java.lang.String[],int[]):874:874 -> onRequestPermissionsResult
+ 1:4:java.lang.Object onRetainNonConfigurationInstance():387:387 -> onRetainNonConfigurationInstance
+ 5:8:java.lang.Object onRetainNonConfigurationInstance():389:389 -> onRetainNonConfigurationInstance
+ 9:16:java.lang.Object onRetainNonConfigurationInstance():394:394 -> onRetainNonConfigurationInstance
+ 17:24:java.lang.Object onRetainNonConfigurationInstance():396:396 -> onRetainNonConfigurationInstance
+ 25:29:java.lang.Object onRetainNonConfigurationInstance():404:404 -> onRetainNonConfigurationInstance
+ 30:31:java.lang.Object onRetainNonConfigurationInstance():405:405 -> onRetainNonConfigurationInstance
+ 32:34:java.lang.Object onRetainNonConfigurationInstance():406:406 -> onRetainNonConfigurationInstance
+ 1:4:void onSaveInstanceState(android.os.Bundle):369:369 -> onSaveInstanceState
+ 5:8:void onSaveInstanceState(android.os.Bundle):370:370 -> onSaveInstanceState
+ 9:15:void onSaveInstanceState(android.os.Bundle):371:371 -> onSaveInstanceState
+ 16:18:void onSaveInstanceState(android.os.Bundle):373:373 -> onSaveInstanceState
+ 19:24:void onSaveInstanceState(android.os.Bundle):374:374 -> onSaveInstanceState
+ 1:3:void onTrimMemory(int):945:945 -> onTrimMemory
+ 4:21:void onTrimMemory(int):946:946 -> onTrimMemory
+ 22:30:void onTrimMemory(int):947:947 -> onTrimMemory
+ 1:7:android.content.Context peekAvailableContext():484:484 -> peekAvailableContext
+ 1:2:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultRegistry,androidx.activity.result.ActivityResultCallback):885:886 -> registerForActivityResult
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Lb/a;Landroidx/activity/result/ActivityResultRegistry;Landroidx/activity/result/b;)Landroidx/activity/result/c;"}
+ 3:3:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultRegistry,androidx.activity.result.ActivityResultCallback):885:885 -> registerForActivityResult
+ 4:4:androidx.activity.result.ActivityResultLauncher registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):894:894 -> registerForActivityResult
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Lb/a;Landroidx/activity/result/b;)Landroidx/activity/result/c;"}
+ 1:6:void removeMenuProvider(androidx.core.view.MenuProvider):562:562 -> removeMenuProvider
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/core/view/B;)V"}
+ 1:6:void removeOnConfigurationChangedListener(androidx.core.util.Consumer):934:934 -> removeOnConfigurationChangedListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void removeOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):505:505 -> removeOnContextAvailableListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(La/b;)V"}
+ 1:6:void removeOnMultiWindowModeChangedListener(androidx.core.util.Consumer):1049:1049 -> removeOnMultiWindowModeChangedListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void removeOnNewIntentListener(androidx.core.util.Consumer):989:989 -> removeOnNewIntentListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void removeOnPictureInPictureModeChangedListener(androidx.core.util.Consumer):1113:1113 -> removeOnPictureInPictureModeChangedListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void removeOnTrimMemoryListener(androidx.core.util.Consumer):958:958 -> removeOnTrimMemoryListener
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LF/a;)V"}
+ 1:6:void reportFullyDrawn():1119:1119 -> reportFullyDrawn
+ 7:14:void reportFullyDrawn():1120:1120 -> reportFullyDrawn
+ 15:17:void reportFullyDrawn():1124:1124 -> reportFullyDrawn
+ 18:22:void reportFullyDrawn():1134:1134 -> reportFullyDrawn
+ 23:29:void reportFullyDrawn():1136:1136 -> reportFullyDrawn
+ 30:30:void reportFullyDrawn():1137:1137 -> reportFullyDrawn
+ 1:3:void setContentView(android.view.View):445:447 -> setContentView
+ 1:1:void startActivityForResult(android.content.Intent,int):761:761 -> startActivityForResult
+ 2:2:void startActivityForResult(android.content.Intent,int,android.os.Bundle):780:780 -> startActivityForResult
+ 1:1:void startIntentSenderForResult(android.content.IntentSender,int,android.content.Intent,int,int,int):802:802 -> startIntentSenderForResult
+ 2:2:void startIntentSenderForResult(android.content.IntentSender,int,android.content.Intent,int,int,int,android.os.Bundle):824:824 -> startIntentSenderForResult
+androidx.activity.ComponentActivity$$ExternalSyntheticLambda0 -> androidx.activity.d:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity androidx.activity.ComponentActivity$$InternalSyntheticLambda$1$5dadcb51e38206f711ac33b43be9f1d0a0b44942d6cdeb5df7bcc27f4845fc40$0.f$0 -> d
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.activity.ComponentActivity):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void run():0:0 -> run
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.ComponentActivity$$ExternalSyntheticLambda1 -> androidx.activity.e:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity androidx.activity.ComponentActivity$$InternalSyntheticLambda$1$5dadcb51e38206f711ac33b43be9f1d0a0b44942d6cdeb5df7bcc27f4845fc40$1.f$0 -> d
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.activity.ComponentActivity):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:java.lang.Object invoke():0:0 -> invoke
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.ComponentActivity$$ExternalSyntheticLambda2 -> androidx.activity.f:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity androidx.activity.ComponentActivity$$InternalSyntheticLambda$1$5dadcb51e38206f711ac33b43be9f1d0a0b44942d6cdeb5df7bcc27f4845fc40$2.f$0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.activity.ComponentActivity):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:android.os.Bundle saveState():0:0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.ComponentActivity$$ExternalSyntheticLambda3 -> androidx.activity.g:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity androidx.activity.ComponentActivity$$InternalSyntheticLambda$1$5dadcb51e38206f711ac33b43be9f1d0a0b44942d6cdeb5df7bcc27f4845fc40$3.f$0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.activity.ComponentActivity):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void onContextAvailable(android.content.Context):0:0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.ComponentActivity$1 -> androidx.activity.ComponentActivity$a:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> h
+ 1:6:void (androidx.activity.ComponentActivity):172:172 ->
+ 1:2:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):181:181 -> f
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(ILb/a;Ljava/lang/Object;Landroidx/core/app/c;)V"}
+ 3:8:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):185:185 -> f
+ 9:26:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):187:187 -> f
+ 27:30:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):197:197 -> f
+ 31:46:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):200:200 -> f
+ 47:53:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):201:201 -> f
+ 54:61:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):203:203 -> f
+ 62:65:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):204:204 -> f
+ 66:72:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):205:205 -> f
+ 73:84:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):209:209 -> f
+ 85:93:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):212:212 -> f
+ 94:95:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):215:215 -> f
+ 96:99:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):218:218 -> f
+ 100:111:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):219:219 -> f
+ 112:113:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):220:220 -> f
+ 114:119:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):221:221 -> f
+ 120:123:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):224:224 -> f
+ 124:131:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):225:225 -> f
+ 132:137:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):226:226 -> f
+ 138:147:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):224:224 -> f
+ 148:166:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):228:228 -> f
+ 167:170:void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat):239:239 -> f
+androidx.activity.ComponentActivity$1$1 -> androidx.activity.ComponentActivity$a$a:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ int val$requestCode -> d
+ androidx.activity.result.contract.ActivityResultContract$SynchronousResult val$synchronousResult -> e
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lb/a$a;"}
+ androidx.activity.ComponentActivity$1 this$1 -> f
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/ComponentActivity$a;"}
+ 1:10:void (androidx.activity.ComponentActivity$1,int,androidx.activity.result.contract.ActivityResultContract$SynchronousResult):187:187 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity$a;ILb/a$a;)V"}
+ 1:14:void run():190:190 -> run
+androidx.activity.ComponentActivity$1$2 -> androidx.activity.ComponentActivity$a$b:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ int val$requestCode -> d
+ android.content.IntentSender$SendIntentException val$e -> e
+ androidx.activity.ComponentActivity$1 this$1 -> f
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/ComponentActivity$a;"}
+ 1:10:void (androidx.activity.ComponentActivity$1,int,android.content.IntentSender$SendIntentException):228:228 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity$a;ILandroid/content/IntentSender$SendIntentException;)V"}
+ 1:11:void run():231:231 -> run
+ 12:19:void run():232:232 -> run
+ 20:24:void run():233:233 -> run
+ 25:28:void run():231:231 -> run
+androidx.activity.ComponentActivity$2 -> androidx.activity.ComponentActivity$2:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> d
+ 1:6:void (androidx.activity.ComponentActivity):273:273 ->
+ 1:4:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):277:277 -> onStateChanged
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/lifecycle/g$a;)V"}
+ 5:12:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):278:278 -> onStateChanged
+ 13:20:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):279:279 -> onStateChanged
+ 21:24:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):281:281 -> onStateChanged
+androidx.activity.ComponentActivity$3 -> androidx.activity.ComponentActivity$3:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> d
+ 1:6:void (androidx.activity.ComponentActivity):287:287 ->
+ 1:4:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):291:291 -> onStateChanged
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/lifecycle/g$a;)V"}
+ 5:11:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):293:293 -> onStateChanged
+ 12:19:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):295:295 -> onStateChanged
+ 20:28:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):296:296 -> onStateChanged
+ 29:36:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):298:298 -> onStateChanged
+androidx.activity.ComponentActivity$4 -> androidx.activity.ComponentActivity$4:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> d
+ 1:6:void (androidx.activity.ComponentActivity):302:302 ->
+ 1:5:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):306:306 -> onStateChanged
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/lifecycle/g$a;)V"}
+ 6:15:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):307:307 -> onStateChanged
+androidx.activity.ComponentActivity$5 -> androidx.activity.ComponentActivity$b:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> d
+ 1:6:void (androidx.activity.ComponentActivity):690:690 ->
+ 1:10:void run():698:698 -> run
+ 11:23:void run():705:705 -> run
+ 24:24:void run():709:709 -> run
+ 25:37:void run():700:700 -> run
+ 38:38:void run():702:702 -> run
+androidx.activity.ComponentActivity$6 -> androidx.activity.ComponentActivity$6:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ androidx.activity.ComponentActivity this$0 -> d
+ 1:6:void (androidx.activity.ComponentActivity):714:714 ->
+ 1:4:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):718:718 -> onStateChanged
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/lifecycle/g$a;)V"}
+ 5:10:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):719:719 -> onStateChanged
+ 11:18:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720:720 -> onStateChanged
+ 19:22:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):721:721 -> onStateChanged
+ 23:26:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):720:720 -> onStateChanged
+androidx.activity.ComponentActivity$Api19Impl -> androidx.activity.ComponentActivity$c:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ 1:4:void cancelPendingInputEvents(android.view.View):1153:1153 -> a
+androidx.activity.ComponentActivity$Api33Impl -> androidx.activity.ComponentActivity$d:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ 1:5:android.window.OnBackInvokedDispatcher getOnBackInvokedDispatcher(android.app.Activity):1163:1163 -> a
+androidx.activity.ComponentActivity$NonConfigurationInstances -> androidx.activity.ComponentActivity$e:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ java.lang.Object custom -> a
+ androidx.lifecycle.ViewModelStore viewModelStore -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/H;"}
+ 1:4:void ():136:136 ->
+androidx.activity.ComponentActivity$ReportFullyDrawnExecutor -> androidx.activity.ComponentActivity$f:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ void viewCreated(android.view.View) -> V
+ void activityDestroyed() -> i
+androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl -> androidx.activity.ComponentActivity$g:
+# {"id":"sourceFile","fileName":"ComponentActivity.java"}
+ long mEndWatchTimeMillis -> d
+ java.lang.Runnable mRunnable -> e
+ boolean mOnDrawScheduled -> f
+ androidx.activity.ComponentActivity this$0 -> g
+ 1:5:void (androidx.activity.ComponentActivity):1202:1202 ->
+ 6:15:void (androidx.activity.ComponentActivity):1204:1204 ->
+ 16:18:void (androidx.activity.ComponentActivity):1206:1206 ->
+ 1:5:void viewCreated(android.view.View):1210:1210 -> V
+ 6:7:void viewCreated(android.view.View):1211:1211 -> V
+ 8:15:void viewCreated(android.view.View):1212:1212 -> V
+ 1:4:void lambda$execute$0():1241:1241 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity$g;)V"}
+ 5:8:void lambda$execute$0():1242:1242 -> a
+ 9:11:void lambda$execute$0():1243:1243 -> a
+ 1:2:void execute(java.lang.Runnable):1229:1229 -> execute
+ 3:12:void execute(java.lang.Runnable):1230:1230 -> execute
+ 13:16:void execute(java.lang.Runnable):1231:1231 -> execute
+ 17:26:void execute(java.lang.Runnable):1232:1232 -> execute
+ 27:30:void execute(java.lang.Runnable):1233:1233 -> execute
+ 31:34:void execute(java.lang.Runnable):1235:1235 -> execute
+ 35:43:void execute(java.lang.Runnable):1240:1240 -> execute
+ 1:13:void activityDestroyed():1218:1218 -> i
+ 14:31:void activityDestroyed():1219:1219 -> i
+ 1:5:void onDraw():1251:1251 -> onDraw
+ 6:9:void onDraw():1253:1253 -> onDraw
+ 10:11:void onDraw():1254:1254 -> onDraw
+ 12:21:void onDraw():1255:1255 -> onDraw
+ 22:23:void onDraw():1256:1256 -> onDraw
+ 24:37:void onDraw():1257:1257 -> onDraw
+ 38:47:void onDraw():1259:1259 -> onDraw
+ 48:49:void onDraw():1262:1262 -> onDraw
+ 50:63:void onDraw():1263:1263 -> onDraw
+ 1:18:void run():1273:1273 -> run
+androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl$$ExternalSyntheticLambda0 -> androidx.activity.h:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl$$InternalSyntheticLambda$2$c53eabc071e64722e49adb9056098f865b1efbeba9418cf6b2a9d204fdf5c36e$0.f$0 -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/ComponentActivity$g;"}
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.activity.ComponentActivity$ReportFullyDrawnExecutorApi16Impl):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/ComponentActivity$g;)V"}
+ 1:1:void run():0:0 -> run
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.ComponentDialog -> androidx.activity.k:
+# {"id":"sourceFile","fileName":"ComponentDialog.kt"}
+ androidx.lifecycle.LifecycleRegistry _lifecycleRegistry -> _lifecycleRegistry
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/n;"}
+ androidx.savedstate.SavedStateRegistryController savedStateRegistryController -> savedStateRegistryController
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LW/c;"}
+ 6:8:void (android.content.Context,int):42:42 ->
+ 9:16:void (android.content.Context,int):54:54 ->
+ 17:29:void (android.content.Context,int):93:93 ->
+ 1:1:void $r8$lambda$qrzmfDOyDuplJFtpJLozn3P9EZI(androidx.activity.ComponentDialog):0:0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/k;)V"}
+ 6:8:void addContentView(android.view.View,android.view.ViewGroup$LayoutParams):118:118 -> addContentView
+ 9:12:void addContentView(android.view.View,android.view.ViewGroup$LayoutParams):119:119 -> addContentView
+ 1:9:androidx.lifecycle.LifecycleRegistry getLifecycleRegistry():49:49 -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/lifecycle/n;"}
+ 10:12:androidx.lifecycle.LifecycleRegistry getLifecycleRegistry():50:50 -> b
+ 6:9:void onBackPressedDispatcher$lambda$1(androidx.activity.ComponentDialog):94:94 -> c
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/k;)V"}
+ 1:5:androidx.lifecycle.Lifecycle getLifecycle():59:59 -> getLifecycle
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/lifecycle/g;"}
+ 1:3:androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher():93:93 -> getOnBackPressedDispatcher
+ 1:7:androidx.savedstate.SavedStateRegistry getSavedStateRegistry():56:56 -> getSavedStateRegistry
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()Landroidx/savedstate/a;"}
+ 1:19:void initializeViewTreeOwners():128:128 -> initializeViewTreeOwners
+ 20:36:void initializeViewTreeOwners():129:129 -> initializeViewTreeOwners
+ 37:54:void initializeViewTreeOwners():130:130 -> initializeViewTreeOwners
+ 1:6:void onBackPressed():99:99 -> onBackPressed
+ 1:3:void onCreate(android.os.Bundle):70:70 -> onCreate
+ 4:9:void onCreate(android.os.Bundle):71:71 -> onCreate
+ 10:23:void onCreate(android.os.Bundle):72:72 -> onCreate
+ 24:28:void onCreate(android.os.Bundle):74:74 -> onCreate
+ 29:38:void onCreate(android.os.Bundle):75:75 -> onCreate
+ 1:9:android.os.Bundle onSaveInstanceState():62:62 -> onSaveInstanceState
+ 10:15:android.os.Bundle onSaveInstanceState():63:63 -> onSaveInstanceState
+ 1:3:void onStart():80:80 -> onStart
+ 4:13:void onStart():81:81 -> onStart
+ 1:10:void onStop():87:87 -> onStop
+ 11:12:void onStop():88:88 -> onStop
+ 13:16:void onStop():89:89 -> onStop
+ 1:2:void setContentView(int):103:104 -> setContentView
+ 3:4:void setContentView(android.view.View):108:109 -> setContentView
+ 5:6:void setContentView(android.view.View,android.view.ViewGroup$LayoutParams):113:114 -> setContentView
+androidx.activity.ComponentDialog$$ExternalSyntheticApiModelOutline0 -> androidx.activity.i:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ 1:1:android.window.OnBackInvokedDispatcher m(androidx.activity.ComponentDialog):0:0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/k;)Landroid/window/OnBackInvokedDispatcher;"}
+androidx.activity.ComponentDialog$$ExternalSyntheticLambda1 -> androidx.activity.j:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.ComponentDialog androidx.activity.ComponentDialog$$InternalSyntheticLambda$1$ee8f5d63c209e3a3671540ff2687ee4a361e5a69e752bc5c866fec4d9ec8b163$0.f$0 -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/k;"}
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.activity.ComponentDialog):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/k;)V"}
+ 1:1:void run():0:0 -> run
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.FullyDrawnReporter -> androidx.activity.m:
+# {"id":"sourceFile","fileName":"FullyDrawnReporter.kt"}
+ java.util.concurrent.Executor executor -> a
+ kotlin.jvm.functions.Function0 reportFullyDrawn -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LD3/a;"}
+ java.lang.Object lock -> c
+ int reporterCount -> d
+ boolean reportPosted -> e
+ boolean reportedFullyDrawn -> f
+ java.util.List onReportCallbacks -> g
+ java.lang.Runnable reportRunnable -> h
+ 11:13:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):52:52 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/util/concurrent/Executor;LD3/a;)V"}
+ 14:15:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):53:53 ->
+ 16:17:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):54:54 ->
+ 18:24:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):56:56 ->
+ 25:31:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):77:77 ->
+ 32:39:void (java.util.concurrent.Executor,kotlin.jvm.functions.Function0):79:79 ->
+ 1:1:void $r8$lambda$A0RwxxT-QIMFOsDA3Nv48auR1K4(androidx.activity.FullyDrawnReporter):0:0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/m;)V"}
+ 1:4:void fullyDrawnReported():152:152 -> b
+ 5:6:void fullyDrawnReported():153:153 -> b
+ 7:8:void fullyDrawnReported():154:154 -> b
+ 9:24:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.foldRightIndexed(java.util.List,java.lang.Object,kotlin.jvm.functions.Function3):1855:1855 -> b
+ 9:24:void fullyDrawnReported():154 -> b
+ 25:30:void fullyDrawnReported():154:154 -> b
+ 31:35:void fullyDrawnReported():155:155 -> b
+ 36:37:void fullyDrawnReported():156:156 -> b
+ 38:41:void fullyDrawnReported():152:152 -> b
+ 1:10:boolean isFullyDrawnReported():73:73 -> c
+ 6:9:void reportRunnable$lambda$2(androidx.activity.FullyDrawnReporter):80:80 -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/m;)V"}
+ 10:11:void reportRunnable$lambda$2(androidx.activity.FullyDrawnReporter):81:81 -> d
+ 12:19:void reportRunnable$lambda$2(androidx.activity.FullyDrawnReporter):82:82 -> d
+ 20:24:void reportRunnable$lambda$2(androidx.activity.FullyDrawnReporter):83:83 -> d
+ 25:30:void reportRunnable$lambda$2(androidx.activity.FullyDrawnReporter):84:84 -> d
+ 31:32:void reportRunnable$lambda$2(androidx.activity.FullyDrawnReporter):86:86 -> d
+ 33:36:void reportRunnable$lambda$2(androidx.activity.FullyDrawnReporter):80:80 -> d
+androidx.activity.FullyDrawnReporter$$ExternalSyntheticLambda0 -> androidx.activity.l:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ androidx.activity.FullyDrawnReporter androidx.activity.FullyDrawnReporter$$InternalSyntheticLambda$2$a343797b216b654af6e45b210590a59b008b0897ac1072415ad77f5c0c5544cc$0.f$0 -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/m;"}
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (androidx.activity.FullyDrawnReporter):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/m;)V"}
+ 1:1:void run():0:0 -> run
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.FullyDrawnReporterOwner -> androidx.activity.n:
+# {"id":"sourceFile","fileName":"FullyDrawnReporterOwner.kt"}
+androidx.activity.ImmLeaksCleaner -> androidx.activity.ImmLeaksCleaner:
+# {"id":"sourceFile","fileName":"ImmLeaksCleaner.java"}
+ android.app.Activity mActivity -> d
+ int sReflectedFieldsInitialized -> e
+ java.lang.reflect.Field sHField -> f
+ java.lang.reflect.Field sServedViewField -> g
+ java.lang.reflect.Field sNextServedViewField -> h
+ 1:5:void initializeReflectiveFields():103:103 -> f
+ 6:14:void initializeReflectiveFields():104:104 -> f
+ 15:17:void initializeReflectiveFields():105:105 -> f
+ 18:25:void initializeReflectiveFields():106:106 -> f
+ 26:28:void initializeReflectiveFields():107:107 -> f
+ 29:36:void initializeReflectiveFields():108:108 -> f
+ 37:39:void initializeReflectiveFields():109:109 -> f
+ 40:42:void initializeReflectiveFields():110:110 -> f
+ 1:5:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):52:52 -> onStateChanged
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/lifecycle/g$a;)V"}
+ 6:9:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):55:55 -> onStateChanged
+ 10:12:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):56:56 -> onStateChanged
+ 13:17:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):58:58 -> onStateChanged
+ 18:21:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):59:59 -> onStateChanged
+ 22:27:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):60:60 -> onStateChanged
+ 28:36:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):63:63 -> onStateChanged
+ 37:37:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):70:70 -> onStateChanged
+ 38:47:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):73:73 -> onStateChanged
+ 48:51:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):80:80 -> onStateChanged
+ 52:57:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):82:82 -> onStateChanged
+ 58:59:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):83:83 -> onStateChanged
+ 60:65:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):88:88 -> onStateChanged
+ 66:66:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):92:92 -> onStateChanged
+ 67:70:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):95:95 -> onStateChanged
+ 71:72:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):90:90 -> onStateChanged
+ 73:74:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):77:77 -> onStateChanged
+ 75:76:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):75:75 -> onStateChanged
+ 77:79:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):92:92 -> onStateChanged
+androidx.activity.OnBackPressedCallback -> androidx.activity.o:
+# {"id":"sourceFile","fileName":"OnBackPressedCallback.kt"}
+ kotlin.jvm.functions.Function0 enabledChangedCallback -> enabledChangedCallback
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LD3/a;"}
+ 1:3:void (boolean):41:41 ->
+ 4:5:boolean isEnabled():53:53 ->
+ 4:5:void (boolean):53 ->
+ 6:13:void (boolean):59:59 ->
+ 6:11:void addCancellable(androidx.activity.Cancellable):107:107 -> addCancellable
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/c;)V"}
+ 1:3:void setEnabledChangedCallback$activity_release(kotlin.jvm.functions.Function0):60:60 -> getEnabledChangedCallback$activity_release
+ 1:3:kotlin.jvm.functions.Function0 getEnabledChangedCallback$activity_release():60 -> getEnabledChangedCallback$activity_release
+ # {"id":"com.android.tools.r8.residualsignature","signature":"()LD3/a;"}
+ 1:3:boolean isEnabled():53:53 -> isEnabled
+ 1:2:void remove():67:67 -> remove
+ 3:18:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.foldRightIndexed(java.util.List,java.lang.Object,kotlin.jvm.functions.Function3):1855:1855 -> remove
+ 3:18:void remove():67 -> remove
+ 19:23:void remove():67:67 -> remove
+ 6:11:void removeCancellable(androidx.activity.Cancellable):112:112 -> removeCancellable
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/c;)V"}
+ 1:2:void setEnabled(boolean):55:55 -> setEnabled
+ 3:10:void setEnabled(boolean):56:56 -> setEnabled
+ 1:3:void setEnabledChangedCallback$activity_release(kotlin.jvm.functions.Function0):60:60 -> setEnabledChangedCallback$activity_release
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LD3/a;)V"}
+androidx.activity.OnBackPressedDispatcher -> androidx.activity.OnBackPressedDispatcher:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ java.lang.Runnable fallbackOnBackPressed -> a
+ androidx.core.util.Consumer onHasEnabledCallbacksChanged -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LF/a;"}
+ kotlin.collections.ArrayDeque onBackPressedCallbacks -> c
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lq3/h;"}
+ androidx.activity.OnBackPressedCallback inProgressCallback -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/o;"}
+ android.window.OnBackInvokedCallback onBackInvokedCallback -> e
+ android.window.OnBackInvokedDispatcher invokedDispatcher -> f
+ boolean backInvokedCallbackRegistered -> g
+ boolean hasEnabledCallbacks -> h
+ 1:1:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 ->
+ 1:1:void (java.lang.Runnable,androidx.core.util.Consumer):63 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/Runnable;LF/a;)V"}
+ 2:3:void (java.lang.Runnable,androidx.core.util.Consumer):64:65 ->
+ 4:4:void (java.lang.Runnable,androidx.core.util.Consumer):67:67 ->
+ 5:5:void (java.lang.Runnable,androidx.core.util.Consumer):125:125 ->
+ 6:6:void (java.lang.Runnable,androidx.core.util.Consumer):127:127 ->
+ 7:7:void (java.lang.Runnable,androidx.core.util.Consumer):134:134 ->
+ 8:8:void (java.lang.Runnable,androidx.core.util.Consumer):126:126 ->
+ 9:9:void (java.lang.Runnable,int,kotlin.jvm.internal.DefaultConstructorMarker):77:77 ->
+ 9:9:void (java.lang.Runnable):77 ->
+ 1:3:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 -> a
+ 1:3:androidx.activity.OnBackPressedCallback access$getInProgressCallback$p(androidx.activity.OnBackPressedDispatcher):63 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedDispatcher;)Landroidx/activity/o;"}
+ 1:3:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 -> b
+ 1:3:kotlin.collections.ArrayDeque access$getOnBackPressedCallbacks$p(androidx.activity.OnBackPressedDispatcher):63 -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedDispatcher;)Lq3/h;"}
+ 1:4:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 -> c
+ 1:4:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 -> d
+ 1:4:void access$onBackProgressed(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/b;)V"}
+ 1:4:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 -> e
+ 1:4:void access$onBackStarted(androidx.activity.OnBackPressedDispatcher,androidx.activity.BackEventCompat):63 -> e
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/b;)V"}
+ 1:3:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 -> f
+ 1:3:void access$setInProgressCallback$p(androidx.activity.OnBackPressedDispatcher,androidx.activity.OnBackPressedCallback):63 -> f
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/o;)V"}
+ 1:4:void access$onBackCancelled(androidx.activity.OnBackPressedDispatcher):63:63 -> g
+ 1:4:void access$updateEnabledCallbacks(androidx.activity.OnBackPressedDispatcher):63 -> g
+ 11:14:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):205:205 -> h
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/activity/o;)V"}
+ 15:23:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):206:206 -> h
+ 24:28:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):210:210 -> h
+ 29:31:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):209:209 -> h
+ 32:34:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):212:212 -> h
+ 35:43:void addCallback(androidx.lifecycle.LifecycleOwner,androidx.activity.OnBackPressedCallback):213:213 -> h
+ 6:10:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):170:170 -> i
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/o;)Landroidx/activity/c;"}
+ 11:15:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):171:171 -> i
+ 16:18:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):172:172 -> i
+ 19:21:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):173:173 -> i
+ 22:30:androidx.activity.Cancellable addCancellableCallback$activity_release(androidx.activity.OnBackPressedCallback):174:174 -> i
+ 1:2:void onBackCancelled():290:290 -> j
+ 3:10:void onBackCancelled():452:452 -> j
+ 11:17:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.lang.Iterable,kotlin.jvm.functions.Function1):534:534 -> j
+ 11:17:void onBackCancelled():290 -> j
+ 18:21:void onBackCancelled():454:454 -> j
+ 22:24:void onBackCancelled():455:455 -> j
+ 25:32:void onBackCancelled():291:291 -> j
+ 33:34:void onBackCancelled():290:290 -> j
+ 35:38:void onBackCancelled():293:293 -> j
+ 39:42:void onBackCancelled():295:295 -> j
+ 1:2:void onBackPressed():271:271 -> k
+ 3:10:void onBackPressed():446:446 -> k
+ 11:17:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.lang.Iterable,kotlin.jvm.functions.Function1):534:534 -> k
+ 11:17:void onBackPressed():271 -> k
+ 18:21:void onBackPressed():448:448 -> k
+ 22:24:void onBackPressed():449:449 -> k
+ 25:32:void onBackPressed():272:272 -> k
+ 33:34:void onBackPressed():271:271 -> k
+ 35:38:void onBackPressed():274:274 -> k
+ 39:42:void onBackPressed():276:276 -> k
+ 43:50:void onBackPressed():279:279 -> k
+ 1:2:void onBackProgressed(androidx.activity.BackEventCompat):251:251 -> l
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/b;)V"}
+ 3:10:void onBackProgressed(androidx.activity.BackEventCompat):440:440 -> l
+ 11:16:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.lang.Iterable,kotlin.jvm.functions.Function1):534:534 -> l
+ 11:16:void onBackProgressed(androidx.activity.BackEventCompat):251 -> l
+ 17:20:void onBackProgressed(androidx.activity.BackEventCompat):442:442 -> l
+ 21:23:void onBackProgressed(androidx.activity.BackEventCompat):443:443 -> l
+ 24:31:void onBackProgressed(androidx.activity.BackEventCompat):252:252 -> l
+ 32:35:void onBackProgressed(androidx.activity.BackEventCompat):251:251 -> l
+ 36:39:void onBackProgressed(androidx.activity.BackEventCompat):255:255 -> l
+ 1:2:void onBackStarted(androidx.activity.BackEventCompat):233:233 -> m
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/b;)V"}
+ 3:10:void onBackStarted(androidx.activity.BackEventCompat):434:434 -> m
+ 11:16:java.lang.Object kotlin.collections.CollectionsKt___CollectionsKt.lastOrNull(java.lang.Iterable,kotlin.jvm.functions.Function1):534:534 -> m
+ 11:16:void onBackStarted(androidx.activity.BackEventCompat):233 -> m
+ 17:20:void onBackStarted(androidx.activity.BackEventCompat):436:436 -> m
+ 21:23:void onBackStarted(androidx.activity.BackEventCompat):437:437 -> m
+ 24:31:void onBackStarted(androidx.activity.BackEventCompat):234:234 -> m
+ 32:33:void onBackStarted(androidx.activity.BackEventCompat):233:233 -> m
+ 34:37:void onBackStarted(androidx.activity.BackEventCompat):236:236 -> m
+ 38:41:void onBackStarted(androidx.activity.BackEventCompat):238:238 -> m
+ 6:7:void setOnBackInvokedDispatcher(android.window.OnBackInvokedDispatcher):86:86 -> n
+ 8:13:void setOnBackInvokedDispatcher(android.window.OnBackInvokedDispatcher):87:87 -> n
+ 1:2:void updateBackInvokedCallbackState(boolean):92:92 -> o
+ 3:11:void updateBackInvokedCallbackState(boolean):93:93 -> o
+ 12:15:void updateBackInvokedCallbackState(boolean):95:95 -> o
+ 16:21:void updateBackInvokedCallbackState(boolean):96:96 -> o
+ 22:26:void updateBackInvokedCallbackState(boolean):101:101 -> o
+ 27:30:void updateBackInvokedCallbackState(boolean):102:102 -> o
+ 31:35:void updateBackInvokedCallbackState(boolean):103:103 -> o
+ 36:38:void updateBackInvokedCallbackState(boolean):107:107 -> o
+ 1:2:void updateEnabledCallbacks():113:113 -> p
+ 3:7:void updateEnabledCallbacks():114:114 -> p
+ 8:14:void updateEnabledCallbacks():431:431 -> p
+ 15:30:void updateEnabledCallbacks():432:432 -> p
+ 31:37:void updateEnabledCallbacks():114:114 -> p
+ 38:41:void updateEnabledCallbacks():115:115 -> p
+ 42:52:void updateEnabledCallbacks():117:117 -> p
+ 53:58:void updateEnabledCallbacks():118:118 -> p
+ 59:62:void updateEnabledCallbacks():119:119 -> p
+androidx.activity.OnBackPressedDispatcher$1 -> androidx.activity.OnBackPressedDispatcher$a:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedDispatcher this$0 -> e
+ 6:11:void invoke(androidx.activity.BackEventCompat):128:128 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/b;)V"}
+ 1:8:java.lang.Object invoke(java.lang.Object):127:127 -> d
+androidx.activity.OnBackPressedDispatcher$2 -> androidx.activity.OnBackPressedDispatcher$b:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedDispatcher this$0 -> e
+ 6:11:void invoke(androidx.activity.BackEventCompat):129:129 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/b;)V"}
+ 1:8:java.lang.Object invoke(java.lang.Object):127:127 -> d
+androidx.activity.OnBackPressedDispatcher$3 -> androidx.activity.OnBackPressedDispatcher$c:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedDispatcher this$0 -> e
+ 1:6:void invoke():130:130 -> a
+ 1:6:java.lang.Object invoke():127:127 -> invoke
+androidx.activity.OnBackPressedDispatcher$4 -> androidx.activity.OnBackPressedDispatcher$d:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedDispatcher this$0 -> e
+ 1:6:void invoke():131:131 -> a
+ 1:6:java.lang.Object invoke():127:127 -> invoke
+androidx.activity.OnBackPressedDispatcher$5 -> androidx.activity.OnBackPressedDispatcher$e:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedDispatcher this$0 -> e
+ 1:6:void invoke():134:134 -> a
+ 1:6:java.lang.Object invoke():134:134 -> invoke
+androidx.activity.OnBackPressedDispatcher$Api33Impl -> androidx.activity.OnBackPressedDispatcher$f:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedDispatcher$Api33Impl INSTANCE -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/OnBackPressedDispatcher$f;"}
+ 1:4:void ():347:347 ->
+ 1:1:void $r8$lambda$uALQStkfKNo5swuEpG7lymZRBFs(D3.Function0):0:0 -> a
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LD3/a;)V"}
+ 6:11:android.window.OnBackInvokedCallback createOnBackInvokedCallback(kotlin.jvm.functions.Function0):369:369 -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LD3/a;)Landroid/window/OnBackInvokedCallback;"}
+ 6:9:void createOnBackInvokedCallback$lambda$0(kotlin.jvm.functions.Function0):369:369 -> c
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LD3/a;)V"}
+ 11:12:void registerOnBackInvokedCallback(java.lang.Object,int,java.lang.Object):355:355 -> d
+ 13:14:void registerOnBackInvokedCallback(java.lang.Object,int,java.lang.Object):356:356 -> d
+ 15:18:void registerOnBackInvokedCallback(java.lang.Object,int,java.lang.Object):357:357 -> d
+ 11:12:void unregisterOnBackInvokedCallback(java.lang.Object,java.lang.Object):362:362 -> e
+ 13:14:void unregisterOnBackInvokedCallback(java.lang.Object,java.lang.Object):363:363 -> e
+ 15:18:void unregisterOnBackInvokedCallback(java.lang.Object,java.lang.Object):364:364 -> e
+androidx.activity.OnBackPressedDispatcher$Api33Impl$$ExternalSyntheticLambda0 -> androidx.activity.p:
+# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}
+# {"id":"com.android.tools.r8.synthesized"}
+ kotlin.jvm.functions.Function0 androidx.activity.OnBackPressedDispatcher$Api33Impl$$InternalSyntheticLambda$1$35c2260aeedbf6f93b08831cedc09afa2ec5cd0dbc6fa2049de5d6a227260319$0.f$0 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LD3/a;"}
+ # {"id":"com.android.tools.r8.synthesized"}
+ 1:1:void (D3.Function0):0:0 ->
+ # {"id":"com.android.tools.r8.synthesized"}
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(LD3/a;)V"}
+ 1:1:void onBackInvoked():0:0 -> onBackInvoked
+ # {"id":"com.android.tools.r8.synthesized"}
+androidx.activity.OnBackPressedDispatcher$Api34Impl -> androidx.activity.OnBackPressedDispatcher$g:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedDispatcher$Api34Impl INSTANCE -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/OnBackPressedDispatcher$g;"}
+ 1:4:void ():373:373 ->
+ 21:26:android.window.OnBackInvokedCallback createOnBackAnimationCallback(kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function0,kotlin.jvm.functions.Function0):382:382 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;LD3/a;LD3/a;)Landroid/window/OnBackInvokedCallback;"}
+androidx.activity.OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1 -> androidx.activity.OnBackPressedDispatcher$g$a:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ kotlin.jvm.functions.Function1 $onBackStarted -> a
+ kotlin.jvm.functions.Function1 $onBackProgressed -> b
+ kotlin.jvm.functions.Function0 $onBackInvoked -> c
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LD3/a;"}
+ kotlin.jvm.functions.Function0 $onBackCancelled -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"LD3/a;"}
+ 9:12:void (kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function1,kotlin.jvm.functions.Function0,kotlin.jvm.functions.Function0):382:382 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;LD3/a;LD3/a;)V"}
+ 1:6:void onBackCancelled():396:396 -> onBackCancelled
+ 1:6:void onBackInvoked():392:392 -> onBackInvoked
+ 6:16:void onBackProgressed(android.window.BackEvent):388:388 -> onBackProgressed
+ 6:16:void onBackStarted(android.window.BackEvent):384:384 -> onBackStarted
+androidx.activity.OnBackPressedDispatcher$LifecycleOnBackPressedCancellable -> androidx.activity.OnBackPressedDispatcher$LifecycleOnBackPressedCancellable:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.lifecycle.Lifecycle lifecycle -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/g;"}
+ androidx.activity.OnBackPressedCallback onBackPressedCallback -> e
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/o;"}
+ androidx.activity.Cancellable currentCancellable -> f
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/c;"}
+ androidx.activity.OnBackPressedDispatcher this$0 -> g
+ 11:15:void (androidx.activity.OnBackPressedDispatcher,androidx.lifecycle.Lifecycle,androidx.activity.OnBackPressedCallback):315:315 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/g;Landroidx/activity/o;)V"}
+ 16:17:void (androidx.activity.OnBackPressedDispatcher,androidx.lifecycle.Lifecycle,androidx.activity.OnBackPressedCallback):316:316 ->
+ 18:19:void (androidx.activity.OnBackPressedDispatcher,androidx.lifecycle.Lifecycle,androidx.activity.OnBackPressedCallback):317:317 ->
+ 20:23:void (androidx.activity.OnBackPressedDispatcher,androidx.lifecycle.Lifecycle,androidx.activity.OnBackPressedCallback):322:322 ->
+ 1:5:void cancel():340:340 -> cancel
+ 6:10:void cancel():341:341 -> cancel
+ 11:18:void cancel():342:342 -> cancel
+ 19:21:void cancel():343:343 -> cancel
+ 11:14:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):329:329 -> onStateChanged
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/lifecycle/g$a;)V"}
+ 15:25:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):330:330 -> onStateChanged
+ 26:29:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):331:331 -> onStateChanged
+ 30:37:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):333:333 -> onStateChanged
+ 38:41:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):334:334 -> onStateChanged
+ 42:45:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):335:335 -> onStateChanged
+androidx.activity.OnBackPressedDispatcher$OnBackPressedCancellable -> androidx.activity.OnBackPressedDispatcher$h:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ androidx.activity.OnBackPressedCallback onBackPressedCallback -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/o;"}
+ androidx.activity.OnBackPressedDispatcher this$0 -> e
+ 6:10:void (androidx.activity.OnBackPressedDispatcher,androidx.activity.OnBackPressedCallback):300:300 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/o;)V"}
+ 11:13:void (androidx.activity.OnBackPressedDispatcher,androidx.activity.OnBackPressedCallback):301:301 ->
+ 1:11:void cancel():304:304 -> cancel
+ 12:26:void cancel():305:305 -> cancel
+ 27:31:void cancel():306:306 -> cancel
+ 32:36:void cancel():307:307 -> cancel
+ 37:41:void cancel():309:309 -> cancel
+ 42:52:void cancel():310:310 -> cancel
+ 53:58:void cancel():311:311 -> cancel
+androidx.activity.OnBackPressedDispatcher$addCallback$1 -> androidx.activity.OnBackPressedDispatcher$i:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:8:void invoke():213:213 -> b
+ 1:6:java.lang.Object invoke():213:213 -> invoke
+androidx.activity.OnBackPressedDispatcher$addCancellableCallback$1 -> androidx.activity.OnBackPressedDispatcher$j:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcher.kt"}
+ 1:8:void invoke():174:174 -> b
+ 1:6:java.lang.Object invoke():174:174 -> invoke
+androidx.activity.OnBackPressedDispatcherOwner -> androidx.activity.q:
+# {"id":"sourceFile","fileName":"OnBackPressedDispatcherOwner.kt"}
+androidx.activity.R$id -> androidx.activity.r:
+ int report_drawn -> a
+ int view_tree_on_back_pressed_dispatcher_owner -> b
+androidx.activity.ViewTreeFullyDrawnReporterOwner -> androidx.activity.s:
+# {"id":"sourceFile","fileName":"ViewTreeFullyLoadedReporterOwner.kt"}
+ 11:16:void set(android.view.View,androidx.activity.FullyDrawnReporterOwner):36:36 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroid/view/View;Landroidx/activity/n;)V"}
+androidx.activity.ViewTreeOnBackPressedDispatcherOwner -> androidx.activity.t:
+# {"id":"sourceFile","fileName":"ViewTreeOnBackPressedDispatcherOwner.kt"}
+ 11:16:void set(android.view.View,androidx.activity.OnBackPressedDispatcherOwner):38:38 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroid/view/View;Landroidx/activity/q;)V"}
+androidx.activity.contextaware.ContextAwareHelper -> a.a:
+# {"id":"sourceFile","fileName":"ContextAwareHelper.kt"}
+ java.util.Set listeners -> a
+ android.content.Context context -> b
+ 1:3:void ():33:33 ->
+ 4:11:void ():34:34 ->
+ 6:9:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):58:58 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(La/b;)V"}
+ 10:12:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):59:59 -> a
+ 13:18:void addOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):61:61 -> a
+ 2:4:void clearAvailableContext():93:93 -> b
+ 6:7:void dispatchOnContextAvailable(android.content.Context):82:82 -> c
+ 8:25:void dispatchOnContextAvailable(android.content.Context):83:83 -> c
+ 26:30:void dispatchOnContextAvailable(android.content.Context):84:84 -> c
+ 1:3:android.content.Context peekAvailableContext():47:47 -> d
+ 6:11:void removeOnContextAvailableListener(androidx.activity.contextaware.OnContextAvailableListener):72:72 -> e
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(La/b;)V"}
+androidx.activity.contextaware.OnContextAvailableListener -> a.b:
+# {"id":"sourceFile","fileName":"OnContextAvailableListener.kt"}
+ void onContextAvailable(android.content.Context) -> a
+androidx.activity.result.ActivityResult -> androidx.activity.result.a:
+# {"id":"sourceFile","fileName":"ActivityResult.java"}
+ int mResultCode -> d
+ android.content.Intent mData -> e
+ 1:8:void ():109:109 ->
+ 1:3:void (int,android.content.Intent):45:47 ->
+ 4:6:void (android.os.Parcel):50:52 ->
+ 1:3:android.content.Intent getData():67:67 -> c
+ 1:3:int getResultCode():59:59 -> d
+ 6:10:java.lang.String resultCodeToString(int):90:90 -> e
+ 11:13:java.lang.String resultCodeToString(int):89:89 -> e
+ 14:16:java.lang.String resultCodeToString(int):88:88 -> e
+ 1:12:java.lang.String toString():72:72 -> toString
+ 13:39:java.lang.String toString():73:73 -> toString
+ 1:5:void writeToParcel(android.os.Parcel,int):96:96 -> writeToParcel
+ 6:15:void writeToParcel(android.os.Parcel,int):97:97 -> writeToParcel
+ 16:19:void writeToParcel(android.os.Parcel,int):98:98 -> writeToParcel
+ 20:23:void writeToParcel(android.os.Parcel,int):99:99 -> writeToParcel
+androidx.activity.result.ActivityResult$1 -> androidx.activity.result.a$a:
+# {"id":"sourceFile","fileName":"ActivityResult.java"}
+ 1:4:void ():109:109 ->
+ 1:6:androidx.activity.result.ActivityResult createFromParcel(android.os.Parcel):112:112 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroid/os/Parcel;)Landroidx/activity/result/a;"}
+ 1:3:androidx.activity.result.ActivityResult[] newArray(int):117:117 -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(I)[Landroidx/activity/result/a;"}
+ 1:5:java.lang.Object createFromParcel(android.os.Parcel):109:109 -> createFromParcel
+ 1:5:java.lang.Object[] newArray(int):109:109 -> newArray
+androidx.activity.result.ActivityResultCallback -> androidx.activity.result.b:
+# {"id":"sourceFile","fileName":"ActivityResultCallback.kt"}
+ void onActivityResult(java.lang.Object) -> a
+androidx.activity.result.ActivityResultLauncher -> androidx.activity.result.c:
+# {"id":"sourceFile","fileName":"ActivityResultLauncher.java"}
+ 1:4:void ():34:34 ->
+ 2:5:void launch(java.lang.Object):47:47 -> a
+ void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat) -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/Object;Landroidx/core/app/c;)V"}
+ void unregister() -> c
+androidx.activity.result.ActivityResultRegistry -> androidx.activity.result.ActivityResultRegistry:
+# {"id":"sourceFile","fileName":"ActivityResultRegistry.java"}
+ java.util.Map mRcToKey -> a
+ java.util.Map mKeyToRc -> b
+ java.util.Map mKeyToLifecycleContainers -> c
+ java.util.ArrayList mLaunchedKeys -> d
+ java.util.Map mKeyToCallback -> e
+ java.util.Map mParsedPendingResults -> f
+ android.os.Bundle mPendingResults -> g
+ 1:3:void ():52:52 ->
+ 4:10:void ():67:67 ->
+ 11:17:void ():68:68 ->
+ 18:24:void ():69:69 ->
+ 25:31:void ():70:70 ->
+ 32:38:void ():72:72 ->
+ 39:45:void ():75:75 ->
+ 46:53:void ():77:77 ->
+ 1:9:void bindRcKey(int,java.lang.String):451:451 -> a
+ 10:19:void bindRcKey(int,java.lang.String):452:452 -> a
+ 1:16:boolean dispatchResult(int,int,android.content.Intent):367:367 -> b
+ 17:29:boolean dispatchResult(int,int,android.content.Intent):371:371 -> b
+ 1:16:boolean dispatchResult(int,java.lang.Object):386:386 -> c
+ 17:26:boolean dispatchResult(int,java.lang.Object):391:391 -> c
+ 27:31:boolean dispatchResult(int,java.lang.Object):392:392 -> c
+ 32:39:boolean dispatchResult(int,java.lang.Object):401:401 -> c
+ 40:43:boolean dispatchResult(int,java.lang.Object):402:402 -> c
+ 44:48:boolean dispatchResult(int,java.lang.Object):394:394 -> c
+ 49:55:boolean dispatchResult(int,java.lang.Object):396:396 -> c
+ 3:8:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):410:410 -> d
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/String;ILandroid/content/Intent;Landroidx/activity/result/ActivityResultRegistry$c;)V"}
+ 9:14:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):411:411 -> d
+ 15:16:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):412:412 -> d
+ 17:18:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):413:413 -> d
+ 19:25:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):414:414 -> d
+ 26:31:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):415:415 -> d
+ 32:36:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):418:418 -> d
+ 37:47:void doDispatch(java.lang.String,int,android.content.Intent,androidx.activity.result.ActivityResultRegistry$CallbackAndContract):420:420 -> d
+ 1:11:int generateRandomNumber():441:441 -> e
+ 12:23:int generateRandomNumber():443:443 -> e
+ 24:31:int generateRandomNumber():444:444 -> e
+ void onLaunch(int,androidx.activity.result.contract.ActivityResultContract,java.lang.Object,androidx.core.app.ActivityOptionsCompat) -> f
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(ILb/a;Ljava/lang/Object;Landroidx/core/app/c;)V"}
+ 4:5:void onRestoreInstanceState(android.os.Bundle):324:324 -> g
+ 6:9:void onRestoreInstanceState(android.os.Bundle):325:325 -> g
+ 10:11:void onRestoreInstanceState(android.os.Bundle):326:326 -> g
+ 12:20:void onRestoreInstanceState(android.os.Bundle):327:327 -> g
+ 21:22:void onRestoreInstanceState(android.os.Bundle):331:331 -> g
+ 23:28:void onRestoreInstanceState(android.os.Bundle):332:332 -> g
+ 29:32:void onRestoreInstanceState(android.os.Bundle):333:333 -> g
+ 33:36:void onRestoreInstanceState(android.os.Bundle):334:334 -> g
+ 37:40:void onRestoreInstanceState(android.os.Bundle):333:333 -> g
+ 41:46:void onRestoreInstanceState(android.os.Bundle):335:335 -> g
+ 47:52:void onRestoreInstanceState(android.os.Bundle):336:336 -> g
+ 53:60:void onRestoreInstanceState(android.os.Bundle):341:341 -> g
+ 61:68:void onRestoreInstanceState(android.os.Bundle):342:342 -> g
+ 69:76:void onRestoreInstanceState(android.os.Bundle):346:346 -> g
+ 77:81:void onRestoreInstanceState(android.os.Bundle):347:347 -> g
+ 82:104:void onRestoreInstanceState(android.os.Bundle):350:350 -> g
+ 1:4:void onSaveInstanceState(android.os.Bundle):304:304 -> h
+ 5:11:void onSaveInstanceState(android.os.Bundle):305:305 -> h
+ 12:16:void onSaveInstanceState(android.os.Bundle):304:304 -> h
+ 17:20:void onSaveInstanceState(android.os.Bundle):306:306 -> h
+ 21:27:void onSaveInstanceState(android.os.Bundle):307:307 -> h
+ 28:32:void onSaveInstanceState(android.os.Bundle):306:306 -> h
+ 33:44:void onSaveInstanceState(android.os.Bundle):308:308 -> h
+ 45:46:void onSaveInstanceState(android.os.Bundle):310:310 -> h
+ 47:52:void onSaveInstanceState(android.os.Bundle):311:311 -> h
+ 53:58:void onSaveInstanceState(android.os.Bundle):310:310 -> h
+ 1:4:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):116:116 -> i
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/String;Landroidx/lifecycle/m;Lb/a;Landroidx/activity/result/b;)Landroidx/activity/result/c;"}
+ 5:16:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):118:118 -> i
+ 17:19:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):125:125 -> i
+ 20:29:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):126:126 -> i
+ 30:34:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):128:128 -> i
+ 35:39:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):130:130 -> i
+ 40:42:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):158:158 -> i
+ 43:47:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):159:159 -> i
+ 48:53:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):161:161 -> i
+ 54:73:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):119:119 -> i
+ 74:93:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.lifecycle.LifecycleOwner,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):121:121 -> i
+ 1:3:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):215:215 -> j
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/String;Lb/a;Landroidx/activity/result/b;)Landroidx/activity/result/c;"}
+ 4:13:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):216:216 -> j
+ 14:21:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):218:218 -> j
+ 22:27:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):220:220 -> j
+ 28:32:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):221:221 -> j
+ 33:35:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):222:222 -> j
+ 36:45:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):224:224 -> j
+ 46:50:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):226:226 -> j
+ 51:54:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):228:228 -> j
+ 55:58:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):229:229 -> j
+ 59:65:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):227:227 -> j
+ 66:71:androidx.activity.result.ActivityResultLauncher register(java.lang.String,androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultCallback):232:232 -> j
+ 1:11:void registerKey(java.lang.String):425:425 -> k
+ 12:15:void registerKey(java.lang.String):429:429 -> k
+ 16:19:void registerKey(java.lang.String):430:430 -> k
+ 1:8:void unregister(java.lang.String):273:273 -> l
+ 9:18:void unregister(java.lang.String):275:275 -> l
+ 19:23:void unregister(java.lang.String):277:277 -> l
+ 24:28:void unregister(java.lang.String):280:280 -> l
+ 29:42:void unregister(java.lang.String):281:281 -> l
+ 43:58:void unregister(java.lang.String):282:282 -> l
+ 59:69:void unregister(java.lang.String):283:283 -> l
+ 70:72:void unregister(java.lang.String):282:282 -> l
+ 73:77:void unregister(java.lang.String):284:284 -> l
+ 78:85:void unregister(java.lang.String):286:286 -> l
+ 86:101:void unregister(java.lang.String):287:287 -> l
+ 102:112:void unregister(java.lang.String):288:288 -> l
+ 113:115:void unregister(java.lang.String):287:287 -> l
+ 116:120:void unregister(java.lang.String):289:289 -> l
+ 121:130:void unregister(java.lang.String):291:291 -> l
+ 131:133:void unregister(java.lang.String):293:293 -> l
+ 134:139:void unregister(java.lang.String):294:294 -> l
+androidx.activity.result.ActivityResultRegistry$1 -> androidx.activity.result.ActivityResultRegistry$1:
+# {"id":"sourceFile","fileName":"ActivityResultRegistry.java"}
+ java.lang.String val$key -> d
+ androidx.activity.result.ActivityResultCallback val$callback -> e
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/result/b;"}
+ androidx.activity.result.contract.ActivityResultContract val$contract -> f
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lb/a;"}
+ androidx.activity.result.ActivityResultRegistry this$0 -> g
+ 1:12:void (androidx.activity.result.ActivityResultRegistry,java.lang.String,androidx.activity.result.ActivityResultCallback,androidx.activity.result.contract.ActivityResultContract):130:130 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/b;Lb/a;)V"}
+ 1:8:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):136:136 -> onStateChanged
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/m;Landroidx/lifecycle/g$a;)V"}
+ 9:26:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):137:137 -> onStateChanged
+ 27:38:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):138:138 -> onStateChanged
+ 39:48:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):140:140 -> onStateChanged
+ 49:57:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):141:141 -> onStateChanged
+ 58:62:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):142:142 -> onStateChanged
+ 63:76:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):144:144 -> onStateChanged
+ 77:85:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):146:146 -> onStateChanged
+ 86:89:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):147:147 -> onStateChanged
+ 90:93:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):148:148 -> onStateChanged
+ 94:97:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):149:149 -> onStateChanged
+ 98:105:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):147:147 -> onStateChanged
+ 106:113:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):151:151 -> onStateChanged
+ 114:123:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):152:152 -> onStateChanged
+ 124:131:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):153:153 -> onStateChanged
+ 132:139:void onStateChanged(androidx.lifecycle.LifecycleOwner,androidx.lifecycle.Lifecycle$Event):154:154 -> onStateChanged
+androidx.activity.result.ActivityResultRegistry$2 -> androidx.activity.result.ActivityResultRegistry$a:
+# {"id":"sourceFile","fileName":"ActivityResultRegistry.java"}
+ java.lang.String val$key -> a
+ androidx.activity.result.contract.ActivityResultContract val$contract -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lb/a;"}
+ androidx.activity.result.ActivityResultRegistry this$0 -> c
+ 1:10:void (androidx.activity.result.ActivityResultRegistry,java.lang.String,androidx.activity.result.contract.ActivityResultContract):161:161 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Lb/a;)V"}
+ 1:14:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):164:164 -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/Object;Landroidx/core/app/c;)V"}
+ 15:23:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):171:171 -> b
+ 24:36:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):173:173 -> b
+ 37:45:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):175:175 -> b
+ 46:46:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):176:176 -> b
+ 47:84:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):166:166 -> b
+ 1:8:void unregister():182:182 -> c
+androidx.activity.result.ActivityResultRegistry$3 -> androidx.activity.result.ActivityResultRegistry$b:
+# {"id":"sourceFile","fileName":"ActivityResultRegistry.java"}
+ java.lang.String val$key -> a
+ androidx.activity.result.contract.ActivityResultContract val$contract -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lb/a;"}
+ androidx.activity.result.ActivityResultRegistry this$0 -> c
+ 1:10:void (androidx.activity.result.ActivityResultRegistry,java.lang.String,androidx.activity.result.contract.ActivityResultContract):232:232 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Lb/a;)V"}
+ 1:14:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):235:235 -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/Object;Landroidx/core/app/c;)V"}
+ 15:23:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):242:242 -> b
+ 24:36:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):244:244 -> b
+ 37:45:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):246:246 -> b
+ 46:46:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):247:247 -> b
+ 47:84:void launch(java.lang.Object,androidx.core.app.ActivityOptionsCompat):237:237 -> b
+ 1:8:void unregister():253:253 -> c
+androidx.activity.result.ActivityResultRegistry$CallbackAndContract -> androidx.activity.result.ActivityResultRegistry$c:
+# {"id":"sourceFile","fileName":"ActivityResultRegistry.java"}
+ androidx.activity.result.ActivityResultCallback mCallback -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/result/b;"}
+ androidx.activity.result.contract.ActivityResultContract mContract -> b
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Lb/a;"}
+ 1:3:void (androidx.activity.result.ActivityResultCallback,androidx.activity.result.contract.ActivityResultContract):461:461 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/activity/result/b;Lb/a;)V"}
+ 4:5:void (androidx.activity.result.ActivityResultCallback,androidx.activity.result.contract.ActivityResultContract):462:462 ->
+ 6:8:void (androidx.activity.result.ActivityResultCallback,androidx.activity.result.contract.ActivityResultContract):463:463 ->
+androidx.activity.result.ActivityResultRegistry$LifecycleContainer -> androidx.activity.result.ActivityResultRegistry$d:
+# {"id":"sourceFile","fileName":"ActivityResultRegistry.java"}
+ androidx.lifecycle.Lifecycle mLifecycle -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/lifecycle/g;"}
+ java.util.ArrayList mObservers -> b
+ 1:3:void (androidx.lifecycle.Lifecycle):471:471 ->
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/g;)V"}
+ 4:5:void (androidx.lifecycle.Lifecycle):472:472 ->
+ 6:13:void (androidx.lifecycle.Lifecycle):473:473 ->
+ 1:5:void addObserver(androidx.lifecycle.LifecycleEventObserver):477:477 -> a
+ # {"id":"com.android.tools.r8.residualsignature","signature":"(Landroidx/lifecycle/k;)V"}
+ 6:11:void addObserver(androidx.lifecycle.LifecycleEventObserver):478:478 -> a
+ 1:17:void clearObservers():482:482 -> b
+ 18:23:void clearObservers():483:483 -> b
+ 24:29:void clearObservers():485:485 -> b
+androidx.activity.result.ActivityResultRegistryOwner -> androidx.activity.result.d:
+# {"id":"sourceFile","fileName":"ActivityResultRegistryOwner.kt"}
+androidx.activity.result.IntentSenderRequest -> androidx.activity.result.e:
+# {"id":"sourceFile","fileName":"IntentSenderRequest.kt"}
+ android.content.IntentSender intentSender -> d
+ android.content.Intent fillInIntent -> e
+ int flagsMask -> f
+ int flagsValues -> g
+ androidx.activity.result.IntentSenderRequest$Companion Companion -> h
+ # {"id":"com.android.tools.r8.residualsignature","signature":"Landroidx/activity/result/e$c;"}
+ 9:16:void ():166:166 ->
+ 1:1:void (android.content.IntentSender,android.content.Intent,int,int):31:31 ->
+ 2:2:void (android.content.IntentSender,android.content.Intent,int,int):36:36 ->
+ 3:3:void (android.content.IntentSender,android.content.Intent,int,int):41:41 ->
+ 4:4:void (android.content.IntentSender,android.content.Intent,int,int):45:45 ->
+ 5:5:void (android.content.IntentSender,android.content.Intent,int,int):49:49 ->
+ 6:9:void (android.os.Parcel):54:57 ->