first commit
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
다음 안내를 따르세요.
|
||||
다음 앱 ID를 사용하여 Google 모바일 광고 SDK 가이드의 안내를 따르세요.
|
||||
|
||||
한글 십자말 풀이
|
||||
ca-app-pub-5498177170320650~1587001641
|
||||
|
||||
배너
|
||||
ca-app-pub-5498177170320650/4758380884
|
||||
|
||||
클리어_전면
|
||||
ca-app-pub-5498177170320650/2132217547
|
||||
|
||||
힌트_보상형
|
||||
ca-app-pub-5498177170320650/1587448755
|
||||
@@ -0,0 +1,87 @@
|
||||
plugins {
|
||||
alias(libs.plugins.android.application)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.kotlin.compose)
|
||||
alias(libs.plugins.ksp)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.wordpuzzle.hangul"
|
||||
compileSdk = 35
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.wordpuzzle.hangul"
|
||||
minSdk = 26
|
||||
targetSdk = 35
|
||||
versionCode = 1
|
||||
versionName = "1.0.0"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "17"
|
||||
}
|
||||
buildFeatures {
|
||||
compose = true
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(libs.androidx.core.ktx)
|
||||
implementation(libs.androidx.lifecycle.runtime.ktx)
|
||||
implementation(libs.androidx.lifecycle.viewmodel.compose)
|
||||
implementation(libs.androidx.activity.compose)
|
||||
|
||||
implementation(platform(libs.androidx.compose.bom))
|
||||
implementation(libs.androidx.ui)
|
||||
implementation(libs.androidx.ui.graphics)
|
||||
implementation(libs.androidx.ui.tooling.preview)
|
||||
implementation(libs.androidx.material3)
|
||||
implementation(libs.androidx.material.icons.extended)
|
||||
implementation(libs.androidx.navigation.compose)
|
||||
|
||||
// DataStore Preferences
|
||||
implementation(libs.androidx.datastore.preferences)
|
||||
|
||||
// Room Database
|
||||
implementation(libs.androidx.room.runtime)
|
||||
implementation(libs.androidx.room.ktx)
|
||||
ksp(libs.androidx.room.compiler)
|
||||
|
||||
// Jetpack Glance (App Widget)
|
||||
implementation(libs.androidx.glance)
|
||||
implementation(libs.androidx.glance.material3)
|
||||
|
||||
// Google Mobile Ads (AdMob)
|
||||
implementation(libs.play.services.ads)
|
||||
|
||||
// Firebase BoM & Remote Config
|
||||
implementation(platform(libs.firebase.bom))
|
||||
implementation(libs.firebase.config)
|
||||
|
||||
// Coroutines & JSON
|
||||
implementation(libs.kotlinx.coroutines.android)
|
||||
implementation(libs.gson)
|
||||
|
||||
testImplementation(libs.junit)
|
||||
androidTestImplementation(libs.androidx.junit)
|
||||
androidTestImplementation(libs.androidx.espresso.core)
|
||||
androidTestImplementation(platform(libs.androidx.compose.bom))
|
||||
androidTestImplementation(libs.androidx.ui.test.junit4)
|
||||
debugImplementation(libs.androidx.ui.tooling)
|
||||
debugImplementation(libs.androidx.ui.test.manifest)
|
||||
}
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
package com.wordpuzzle.hangul.`data`.local
|
||||
|
||||
import androidx.room.InvalidationTracker
|
||||
import androidx.room.RoomOpenDelegate
|
||||
import androidx.room.migration.AutoMigrationSpec
|
||||
import androidx.room.migration.Migration
|
||||
import androidx.room.util.TableInfo
|
||||
import androidx.room.util.TableInfo.Companion.read
|
||||
import androidx.room.util.dropFtsSyncTriggers
|
||||
import androidx.sqlite.SQLiteConnection
|
||||
import androidx.sqlite.execSQL
|
||||
import javax.`annotation`.processing.Generated
|
||||
import kotlin.Lazy
|
||||
import kotlin.String
|
||||
import kotlin.Suppress
|
||||
import kotlin.collections.List
|
||||
import kotlin.collections.Map
|
||||
import kotlin.collections.MutableList
|
||||
import kotlin.collections.MutableMap
|
||||
import kotlin.collections.MutableSet
|
||||
import kotlin.collections.Set
|
||||
import kotlin.collections.mutableListOf
|
||||
import kotlin.collections.mutableMapOf
|
||||
import kotlin.collections.mutableSetOf
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
@Generated(value = ["androidx.room.RoomProcessor"])
|
||||
@Suppress(names = ["UNCHECKED_CAST", "DEPRECATION", "REDUNDANT_PROJECTION", "REMOVAL"])
|
||||
public class AppDatabase_Impl : AppDatabase() {
|
||||
private val _wordDao: Lazy<WordDao> = lazy {
|
||||
WordDao_Impl(this)
|
||||
}
|
||||
|
||||
protected override fun createOpenDelegate(): RoomOpenDelegate {
|
||||
val _openDelegate: RoomOpenDelegate = object : RoomOpenDelegate(1,
|
||||
"6ed8a7a3657c3041f42f4f00efa0280d", "99a3f99ee3147476a93cae61ad1484dd") {
|
||||
public override fun createAllTables(connection: SQLiteConnection) {
|
||||
connection.execSQL("CREATE TABLE IF NOT EXISTS `words` (`id` TEXT NOT NULL, `word` TEXT NOT NULL, `meaning` TEXT NOT NULL, `category` TEXT NOT NULL, `difficulty` INTEGER NOT NULL, `example` TEXT NOT NULL, `isLearned` INTEGER NOT NULL, `isPreLearned` INTEGER NOT NULL, `learnedTimestamp` INTEGER NOT NULL, PRIMARY KEY(`id`))")
|
||||
connection.execSQL("CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)")
|
||||
connection.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '6ed8a7a3657c3041f42f4f00efa0280d')")
|
||||
}
|
||||
|
||||
public override fun dropAllTables(connection: SQLiteConnection) {
|
||||
connection.execSQL("DROP TABLE IF EXISTS `words`")
|
||||
}
|
||||
|
||||
public override fun onCreate(connection: SQLiteConnection) {
|
||||
}
|
||||
|
||||
public override fun onOpen(connection: SQLiteConnection) {
|
||||
internalInitInvalidationTracker(connection)
|
||||
}
|
||||
|
||||
public override fun onPreMigrate(connection: SQLiteConnection) {
|
||||
dropFtsSyncTriggers(connection)
|
||||
}
|
||||
|
||||
public override fun onPostMigrate(connection: SQLiteConnection) {
|
||||
}
|
||||
|
||||
public override fun onValidateSchema(connection: SQLiteConnection):
|
||||
RoomOpenDelegate.ValidationResult {
|
||||
val _columnsWords: MutableMap<String, TableInfo.Column> = mutableMapOf()
|
||||
_columnsWords.put("id", TableInfo.Column("id", "TEXT", true, 1, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("word", TableInfo.Column("word", "TEXT", true, 0, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("meaning", TableInfo.Column("meaning", "TEXT", true, 0, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("category", TableInfo.Column("category", "TEXT", true, 0, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("difficulty", TableInfo.Column("difficulty", "INTEGER", true, 0, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("example", TableInfo.Column("example", "TEXT", true, 0, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("isLearned", TableInfo.Column("isLearned", "INTEGER", true, 0, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("isPreLearned", TableInfo.Column("isPreLearned", "INTEGER", true, 0, null,
|
||||
TableInfo.CREATED_FROM_ENTITY))
|
||||
_columnsWords.put("learnedTimestamp", TableInfo.Column("learnedTimestamp", "INTEGER", true,
|
||||
0, null, TableInfo.CREATED_FROM_ENTITY))
|
||||
val _foreignKeysWords: MutableSet<TableInfo.ForeignKey> = mutableSetOf()
|
||||
val _indicesWords: MutableSet<TableInfo.Index> = mutableSetOf()
|
||||
val _infoWords: TableInfo = TableInfo("words", _columnsWords, _foreignKeysWords,
|
||||
_indicesWords)
|
||||
val _existingWords: TableInfo = read(connection, "words")
|
||||
if (!_infoWords.equals(_existingWords)) {
|
||||
return RoomOpenDelegate.ValidationResult(false, """
|
||||
|words(com.wordpuzzle.hangul.data.local.WordEntity).
|
||||
| Expected:
|
||||
|""".trimMargin() + _infoWords + """
|
||||
|
|
||||
| Found:
|
||||
|""".trimMargin() + _existingWords)
|
||||
}
|
||||
return RoomOpenDelegate.ValidationResult(true, null)
|
||||
}
|
||||
}
|
||||
return _openDelegate
|
||||
}
|
||||
|
||||
protected override fun createInvalidationTracker(): InvalidationTracker {
|
||||
val _shadowTablesMap: MutableMap<String, String> = mutableMapOf()
|
||||
val _viewTables: MutableMap<String, Set<String>> = mutableMapOf()
|
||||
return InvalidationTracker(this, _shadowTablesMap, _viewTables, "words")
|
||||
}
|
||||
|
||||
public override fun clearAllTables() {
|
||||
super.performClear(false, "words")
|
||||
}
|
||||
|
||||
protected override fun getRequiredTypeConverterClasses(): Map<KClass<*>, List<KClass<*>>> {
|
||||
val _typeConvertersMap: MutableMap<KClass<*>, List<KClass<*>>> = mutableMapOf()
|
||||
_typeConvertersMap.put(WordDao::class, WordDao_Impl.getRequiredConverters())
|
||||
return _typeConvertersMap
|
||||
}
|
||||
|
||||
public override fun getRequiredAutoMigrationSpecClasses(): Set<KClass<out AutoMigrationSpec>> {
|
||||
val _autoMigrationSpecsSet: MutableSet<KClass<out AutoMigrationSpec>> = mutableSetOf()
|
||||
return _autoMigrationSpecsSet
|
||||
}
|
||||
|
||||
public override
|
||||
fun createAutoMigrations(autoMigrationSpecs: Map<KClass<out AutoMigrationSpec>, AutoMigrationSpec>):
|
||||
List<Migration> {
|
||||
val _autoMigrations: MutableList<Migration> = mutableListOf()
|
||||
return _autoMigrations
|
||||
}
|
||||
|
||||
public override fun wordDao(): WordDao = _wordDao.value
|
||||
}
|
||||
+321
@@ -0,0 +1,321 @@
|
||||
package com.wordpuzzle.hangul.`data`.local
|
||||
|
||||
import androidx.room.EntityDeleteOrUpdateAdapter
|
||||
import androidx.room.EntityInsertAdapter
|
||||
import androidx.room.RoomDatabase
|
||||
import androidx.room.coroutines.createFlow
|
||||
import androidx.room.util.getColumnIndexOrThrow
|
||||
import androidx.room.util.performSuspending
|
||||
import androidx.sqlite.SQLiteStatement
|
||||
import javax.`annotation`.processing.Generated
|
||||
import kotlin.Boolean
|
||||
import kotlin.Int
|
||||
import kotlin.Long
|
||||
import kotlin.String
|
||||
import kotlin.Suppress
|
||||
import kotlin.Unit
|
||||
import kotlin.collections.List
|
||||
import kotlin.collections.MutableList
|
||||
import kotlin.collections.mutableListOf
|
||||
import kotlin.reflect.KClass
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Generated(value = ["androidx.room.RoomProcessor"])
|
||||
@Suppress(names = ["UNCHECKED_CAST", "DEPRECATION", "REDUNDANT_PROJECTION", "REMOVAL"])
|
||||
public class WordDao_Impl(
|
||||
__db: RoomDatabase,
|
||||
) : WordDao {
|
||||
private val __db: RoomDatabase
|
||||
|
||||
private val __insertAdapterOfWordEntity: EntityInsertAdapter<WordEntity>
|
||||
|
||||
private val __updateAdapterOfWordEntity: EntityDeleteOrUpdateAdapter<WordEntity>
|
||||
init {
|
||||
this.__db = __db
|
||||
this.__insertAdapterOfWordEntity = object : EntityInsertAdapter<WordEntity>() {
|
||||
protected override fun createQuery(): String =
|
||||
"INSERT OR IGNORE INTO `words` (`id`,`word`,`meaning`,`category`,`difficulty`,`example`,`isLearned`,`isPreLearned`,`learnedTimestamp`) VALUES (?,?,?,?,?,?,?,?,?)"
|
||||
|
||||
protected override fun bind(statement: SQLiteStatement, entity: WordEntity) {
|
||||
statement.bindText(1, entity.id)
|
||||
statement.bindText(2, entity.word)
|
||||
statement.bindText(3, entity.meaning)
|
||||
statement.bindText(4, entity.category)
|
||||
statement.bindLong(5, entity.difficulty.toLong())
|
||||
statement.bindText(6, entity.example)
|
||||
val _tmp: Int = if (entity.isLearned) 1 else 0
|
||||
statement.bindLong(7, _tmp.toLong())
|
||||
val _tmp_1: Int = if (entity.isPreLearned) 1 else 0
|
||||
statement.bindLong(8, _tmp_1.toLong())
|
||||
statement.bindLong(9, entity.learnedTimestamp)
|
||||
}
|
||||
}
|
||||
this.__updateAdapterOfWordEntity = object : EntityDeleteOrUpdateAdapter<WordEntity>() {
|
||||
protected override fun createQuery(): String =
|
||||
"UPDATE OR ABORT `words` SET `id` = ?,`word` = ?,`meaning` = ?,`category` = ?,`difficulty` = ?,`example` = ?,`isLearned` = ?,`isPreLearned` = ?,`learnedTimestamp` = ? WHERE `id` = ?"
|
||||
|
||||
protected override fun bind(statement: SQLiteStatement, entity: WordEntity) {
|
||||
statement.bindText(1, entity.id)
|
||||
statement.bindText(2, entity.word)
|
||||
statement.bindText(3, entity.meaning)
|
||||
statement.bindText(4, entity.category)
|
||||
statement.bindLong(5, entity.difficulty.toLong())
|
||||
statement.bindText(6, entity.example)
|
||||
val _tmp: Int = if (entity.isLearned) 1 else 0
|
||||
statement.bindLong(7, _tmp.toLong())
|
||||
val _tmp_1: Int = if (entity.isPreLearned) 1 else 0
|
||||
statement.bindLong(8, _tmp_1.toLong())
|
||||
statement.bindLong(9, entity.learnedTimestamp)
|
||||
statement.bindText(10, entity.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override suspend fun insertAll(words: List<WordEntity>): Unit = performSuspending(__db,
|
||||
false, true) { _connection ->
|
||||
__insertAdapterOfWordEntity.insert(_connection, words)
|
||||
}
|
||||
|
||||
public override suspend fun update(word: WordEntity): Unit = performSuspending(__db, false, true)
|
||||
{ _connection ->
|
||||
__updateAdapterOfWordEntity.handle(_connection, word)
|
||||
}
|
||||
|
||||
public override fun getAllWordsFlow(): Flow<List<WordEntity>> {
|
||||
val _sql: String = "SELECT * FROM words ORDER BY id ASC"
|
||||
return createFlow(__db, false, arrayOf("words")) { _connection ->
|
||||
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||
try {
|
||||
val _columnIndexOfId: Int = getColumnIndexOrThrow(_stmt, "id")
|
||||
val _columnIndexOfWord: Int = getColumnIndexOrThrow(_stmt, "word")
|
||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||
val _result: MutableList<WordEntity> = mutableListOf()
|
||||
while (_stmt.step()) {
|
||||
val _item: WordEntity
|
||||
val _tmpId: String
|
||||
_tmpId = _stmt.getText(_columnIndexOfId)
|
||||
val _tmpWord: String
|
||||
_tmpWord = _stmt.getText(_columnIndexOfWord)
|
||||
val _tmpMeaning: String
|
||||
_tmpMeaning = _stmt.getText(_columnIndexOfMeaning)
|
||||
val _tmpCategory: String
|
||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||
val _tmpDifficulty: Int
|
||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||
val _tmpExample: String
|
||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
||||
val _tmpIsLearned: Boolean
|
||||
val _tmp: Int
|
||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||
_tmpIsLearned = _tmp != 0
|
||||
val _tmpIsPreLearned: Boolean
|
||||
val _tmp_1: Int
|
||||
_tmp_1 = _stmt.getLong(_columnIndexOfIsPreLearned).toInt()
|
||||
_tmpIsPreLearned = _tmp_1 != 0
|
||||
val _tmpLearnedTimestamp: Long
|
||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||
_item =
|
||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||
_result.add(_item)
|
||||
}
|
||||
_result
|
||||
} finally {
|
||||
_stmt.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override suspend fun getWordById(id: String): WordEntity? {
|
||||
val _sql: String = "SELECT * FROM words WHERE id = ? LIMIT 1"
|
||||
return performSuspending(__db, true, false) { _connection ->
|
||||
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||
try {
|
||||
var _argIndex: Int = 1
|
||||
_stmt.bindText(_argIndex, id)
|
||||
val _columnIndexOfId: Int = getColumnIndexOrThrow(_stmt, "id")
|
||||
val _columnIndexOfWord: Int = getColumnIndexOrThrow(_stmt, "word")
|
||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||
val _result: WordEntity?
|
||||
if (_stmt.step()) {
|
||||
val _tmpId: String
|
||||
_tmpId = _stmt.getText(_columnIndexOfId)
|
||||
val _tmpWord: String
|
||||
_tmpWord = _stmt.getText(_columnIndexOfWord)
|
||||
val _tmpMeaning: String
|
||||
_tmpMeaning = _stmt.getText(_columnIndexOfMeaning)
|
||||
val _tmpCategory: String
|
||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||
val _tmpDifficulty: Int
|
||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||
val _tmpExample: String
|
||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
||||
val _tmpIsLearned: Boolean
|
||||
val _tmp: Int
|
||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||
_tmpIsLearned = _tmp != 0
|
||||
val _tmpIsPreLearned: Boolean
|
||||
val _tmp_1: Int
|
||||
_tmp_1 = _stmt.getLong(_columnIndexOfIsPreLearned).toInt()
|
||||
_tmpIsPreLearned = _tmp_1 != 0
|
||||
val _tmpLearnedTimestamp: Long
|
||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||
_result =
|
||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||
} else {
|
||||
_result = null
|
||||
}
|
||||
_result
|
||||
} finally {
|
||||
_stmt.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override fun getLearnedWordsFlow(): Flow<List<WordEntity>> {
|
||||
val _sql: String = "SELECT * FROM words WHERE isLearned = 1 ORDER BY learnedTimestamp DESC"
|
||||
return createFlow(__db, false, arrayOf("words")) { _connection ->
|
||||
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||
try {
|
||||
val _columnIndexOfId: Int = getColumnIndexOrThrow(_stmt, "id")
|
||||
val _columnIndexOfWord: Int = getColumnIndexOrThrow(_stmt, "word")
|
||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||
val _result: MutableList<WordEntity> = mutableListOf()
|
||||
while (_stmt.step()) {
|
||||
val _item: WordEntity
|
||||
val _tmpId: String
|
||||
_tmpId = _stmt.getText(_columnIndexOfId)
|
||||
val _tmpWord: String
|
||||
_tmpWord = _stmt.getText(_columnIndexOfWord)
|
||||
val _tmpMeaning: String
|
||||
_tmpMeaning = _stmt.getText(_columnIndexOfMeaning)
|
||||
val _tmpCategory: String
|
||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||
val _tmpDifficulty: Int
|
||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||
val _tmpExample: String
|
||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
||||
val _tmpIsLearned: Boolean
|
||||
val _tmp: Int
|
||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||
_tmpIsLearned = _tmp != 0
|
||||
val _tmpIsPreLearned: Boolean
|
||||
val _tmp_1: Int
|
||||
_tmp_1 = _stmt.getLong(_columnIndexOfIsPreLearned).toInt()
|
||||
_tmpIsPreLearned = _tmp_1 != 0
|
||||
val _tmpLearnedTimestamp: Long
|
||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||
_item =
|
||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||
_result.add(_item)
|
||||
}
|
||||
_result
|
||||
} finally {
|
||||
_stmt.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override suspend fun getWordsForPreLearning(limit: Int): List<WordEntity> {
|
||||
val _sql: String = "SELECT * FROM words WHERE isLearned = 0 ORDER BY difficulty ASC LIMIT ?"
|
||||
return performSuspending(__db, true, false) { _connection ->
|
||||
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||
try {
|
||||
var _argIndex: Int = 1
|
||||
_stmt.bindLong(_argIndex, limit.toLong())
|
||||
val _columnIndexOfId: Int = getColumnIndexOrThrow(_stmt, "id")
|
||||
val _columnIndexOfWord: Int = getColumnIndexOrThrow(_stmt, "word")
|
||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||
val _result: MutableList<WordEntity> = mutableListOf()
|
||||
while (_stmt.step()) {
|
||||
val _item: WordEntity
|
||||
val _tmpId: String
|
||||
_tmpId = _stmt.getText(_columnIndexOfId)
|
||||
val _tmpWord: String
|
||||
_tmpWord = _stmt.getText(_columnIndexOfWord)
|
||||
val _tmpMeaning: String
|
||||
_tmpMeaning = _stmt.getText(_columnIndexOfMeaning)
|
||||
val _tmpCategory: String
|
||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||
val _tmpDifficulty: Int
|
||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||
val _tmpExample: String
|
||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
||||
val _tmpIsLearned: Boolean
|
||||
val _tmp: Int
|
||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||
_tmpIsLearned = _tmp != 0
|
||||
val _tmpIsPreLearned: Boolean
|
||||
val _tmp_1: Int
|
||||
_tmp_1 = _stmt.getLong(_columnIndexOfIsPreLearned).toInt()
|
||||
_tmpIsPreLearned = _tmp_1 != 0
|
||||
val _tmpLearnedTimestamp: Long
|
||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||
_item =
|
||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||
_result.add(_item)
|
||||
}
|
||||
_result
|
||||
} finally {
|
||||
_stmt.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override suspend fun markWordLearned(wordText: String, timestamp: Long) {
|
||||
val _sql: String = "UPDATE words SET isLearned = 1, learnedTimestamp = ? WHERE word = ?"
|
||||
return performSuspending(__db, false, true) { _connection ->
|
||||
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||
try {
|
||||
var _argIndex: Int = 1
|
||||
_stmt.bindLong(_argIndex, timestamp)
|
||||
_argIndex = 2
|
||||
_stmt.bindText(_argIndex, wordText)
|
||||
_stmt.step()
|
||||
} finally {
|
||||
_stmt.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override suspend fun markWordPreLearned(id: String) {
|
||||
val _sql: String = "UPDATE words SET isPreLearned = 1 WHERE id = ?"
|
||||
return performSuspending(__db, false, true) { _connection ->
|
||||
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||
try {
|
||||
var _argIndex: Int = 1
|
||||
_stmt.bindText(_argIndex, id)
|
||||
_stmt.step()
|
||||
} finally {
|
||||
_stmt.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public companion object {
|
||||
public fun getRequiredConverters(): List<KClass<*>> = emptyList()
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
com.wordpuzzle.hangul.app-pngs-0 D:\Workspace\android\wordpuzzles\app\build\generated\res\pngs\debug
|
||||
com.wordpuzzle.hangul.app-resValues-1 D:\Workspace\android\wordpuzzles\app\build\generated\res\resValues\debug
|
||||
com.wordpuzzle.hangul.app-updated_navigation_xml-2 D:\Workspace\android\wordpuzzles\app\build\generated\updated_navigation_xml\debug
|
||||
com.wordpuzzle.hangul.app-packageDebugResources-3 D:\Workspace\android\wordpuzzles\app\build\intermediates\incremental\debug\packageDebugResources\merged.dir
|
||||
com.wordpuzzle.hangul.app-packageDebugResources-4 D:\Workspace\android\wordpuzzles\app\build\intermediates\incremental\debug\packageDebugResources\stripped.dir
|
||||
com.wordpuzzle.hangul.app-debug-5 D:\Workspace\android\wordpuzzles\app\build\intermediates\merged_res\debug\mergeDebugResources
|
||||
com.wordpuzzle.hangul.app-debug-6 D:\Workspace\android\wordpuzzles\app\src\debug\res
|
||||
com.wordpuzzle.hangul.app-main-7 D:\Workspace\android\wordpuzzles\app\src\main\res
|
||||
gradleHome-0 C:\Users\minar\.gradle
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"room-compiler-2.7.0.jar (androidx.room:room-compiler:2.7.0)":"KSP_PROCESSOR"}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{}
|
||||
Binary file not shown.
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "APK",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "com.wordpuzzle.hangul",
|
||||
"variantName": "debug",
|
||||
"elements": [
|
||||
{
|
||||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 1,
|
||||
"versionName": "1.0.0",
|
||||
"outputFile": "app-debug.apk"
|
||||
}
|
||||
],
|
||||
"elementType": "File",
|
||||
"minSdkVersionForDexing": 26
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#- File Locator -
|
||||
listingFile=../../../apk/debug/output-metadata.json
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
appMetadataVersion=1.1
|
||||
androidGradlePluginVersion=9.4.0
|
||||
@@ -0,0 +1,194 @@
|
||||
[
|
||||
{
|
||||
"stageNumber": 1,
|
||||
"title": "첫걸음 (자연과 일상)",
|
||||
"gridSize": 5,
|
||||
"difficulty": 1,
|
||||
"clues": [
|
||||
{
|
||||
"id": "c1_1",
|
||||
"number": 1,
|
||||
"direction": "ACROSS",
|
||||
"word": "가을하늘",
|
||||
"clue": "가을철의 맑고 푸른 하늘.",
|
||||
"startRow": 1,
|
||||
"startCol": 0,
|
||||
"length": 4
|
||||
},
|
||||
{
|
||||
"id": "c1_2",
|
||||
"number": 2,
|
||||
"direction": "DOWN",
|
||||
"word": "하늘나라",
|
||||
"clue": "천국을 이르는 말.",
|
||||
"startRow": 1,
|
||||
"startCol": 2,
|
||||
"length": 4
|
||||
},
|
||||
{
|
||||
"id": "c1_3",
|
||||
"number": 3,
|
||||
"direction": "ACROSS",
|
||||
"word": "나비효과",
|
||||
"clue": "미세한 변화가 엄청난 결과를 낳는 현상.",
|
||||
"startRow": 3,
|
||||
"startCol": 1,
|
||||
"length": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"stageNumber": 2,
|
||||
"title": "동네 한바퀴",
|
||||
"gridSize": 5,
|
||||
"difficulty": 1,
|
||||
"clues": [
|
||||
{
|
||||
"id": "c2_1",
|
||||
"number": 1,
|
||||
"direction": "ACROSS",
|
||||
"word": "과일가게",
|
||||
"clue": "여러 가지 과일을 파는 상점.",
|
||||
"startRow": 0,
|
||||
"startCol": 1,
|
||||
"length": 4
|
||||
},
|
||||
{
|
||||
"id": "c2_2",
|
||||
"number": 2,
|
||||
"direction": "DOWN",
|
||||
"word": "가면무도회",
|
||||
"clue": "참가자가 가면을 쓰고 춤을 추는 연회.",
|
||||
"startRow": 0,
|
||||
"startCol": 3,
|
||||
"length": 5
|
||||
},
|
||||
{
|
||||
"id": "c2_3",
|
||||
"number": 3,
|
||||
"direction": "ACROSS",
|
||||
"word": "무지개",
|
||||
"clue": "비 갠 하늘에 나타나는 일곱 빛깔 호선.",
|
||||
"startRow": 2,
|
||||
"startCol": 2,
|
||||
"length": 3
|
||||
},
|
||||
{
|
||||
"id": "c2_4",
|
||||
"number": 4,
|
||||
"direction": "DOWN",
|
||||
"word": "개구쟁이",
|
||||
"clue": "궂은 장난을 자주 치는 귀여운 아이.",
|
||||
"startRow": 2,
|
||||
"startCol": 4,
|
||||
"length": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"stageNumber": 3,
|
||||
"title": "사자성어와 지혜",
|
||||
"gridSize": 6,
|
||||
"difficulty": 2,
|
||||
"clues": [
|
||||
{
|
||||
"id": "c3_1",
|
||||
"number": 1,
|
||||
"direction": "ACROSS",
|
||||
"word": "일석이조",
|
||||
"clue": "돌 하나로 새 두 마리를 잡는다는 사자성어.",
|
||||
"startRow": 1,
|
||||
"startCol": 1,
|
||||
"length": 4
|
||||
},
|
||||
{
|
||||
"id": "c3_2",
|
||||
"number": 2,
|
||||
"direction": "DOWN",
|
||||
"word": "조약돌",
|
||||
"clue": "물에 씻기어 둥글고 반드러워진 작은 돌.",
|
||||
"startRow": 1,
|
||||
"startCol": 4,
|
||||
"length": 3
|
||||
},
|
||||
{
|
||||
"id": "c3_3",
|
||||
"number": 3,
|
||||
"direction": "ACROSS",
|
||||
"word": "돌다리",
|
||||
"clue": "돌로 놓은 다리. 신중함을 뜻하는 속담 소재.",
|
||||
"startRow": 3,
|
||||
"startCol": 3,
|
||||
"length": 3
|
||||
},
|
||||
{
|
||||
"id": "c3_4",
|
||||
"number": 4,
|
||||
"direction": "DOWN",
|
||||
"word": "다락방",
|
||||
"clue": "지붕 바로 밑이나 천장 위에 꾸며 놓은 방.",
|
||||
"startRow": 3,
|
||||
"startCol": 4,
|
||||
"length": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"stageNumber": 4,
|
||||
"title": "문화와 예술",
|
||||
"gridSize": 6,
|
||||
"difficulty": 2,
|
||||
"clues": [
|
||||
{
|
||||
"id": "c4_1",
|
||||
"number": 1,
|
||||
"direction": "ACROSS",
|
||||
"word": "방방곡곡",
|
||||
"clue": "전국 방방곡곡, 한 곳도 빠짐없는 모든 곳.",
|
||||
"startRow": 0,
|
||||
"startCol": 1,
|
||||
"length": 4
|
||||
},
|
||||
{
|
||||
"id": "c4_2",
|
||||
"number": 2,
|
||||
"direction": "DOWN",
|
||||
"word": "곡예사",
|
||||
"clue": "서커스나 줄타기 따위 곡예를 하는 사람.",
|
||||
"startRow": 0,
|
||||
"startCol": 3,
|
||||
"length": 3
|
||||
},
|
||||
{
|
||||
"id": "c4_3",
|
||||
"number": 3,
|
||||
"direction": "ACROSS",
|
||||
"word": "사람인",
|
||||
"clue": "두 사람이 서로 기대고 있는 형상의 한자.",
|
||||
"startRow": 2,
|
||||
"startCol": 3,
|
||||
"length": 3
|
||||
},
|
||||
{
|
||||
"id": "c4_4",
|
||||
"number": 4,
|
||||
"direction": "DOWN",
|
||||
"word": "인사동",
|
||||
"clue": "서울 종로구의 전통 문화와 예술의 거리.",
|
||||
"startRow": 2,
|
||||
"startCol": 5,
|
||||
"length": 3
|
||||
},
|
||||
{
|
||||
"id": "c4_5",
|
||||
"number": 5,
|
||||
"direction": "ACROSS",
|
||||
"word": "동고동락",
|
||||
"clue": "괴로움도 즐거움도 함께한다는 뜻의 사자성어.",
|
||||
"startRow": 4,
|
||||
"startCol": 2,
|
||||
"length": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,162 @@
|
||||
[
|
||||
{
|
||||
"id": "w1",
|
||||
"word": "가을하늘",
|
||||
"meaning": "가을철의 맑고 푸른 하늘.",
|
||||
"category": "자연",
|
||||
"difficulty": 1,
|
||||
"example": "가을하늘이 높고 푸르다."
|
||||
},
|
||||
{
|
||||
"id": "w2",
|
||||
"word": "하늘나라",
|
||||
"meaning": "천국을 이르는 말.",
|
||||
"category": "일반",
|
||||
"difficulty": 1,
|
||||
"example": "하늘나라에서 행복하게 지내렴."
|
||||
},
|
||||
{
|
||||
"id": "w3",
|
||||
"word": "나비효과",
|
||||
"meaning": "미세한 변화나 사건이 엄청난 결과를 낳는 현상.",
|
||||
"category": "상식/과학",
|
||||
"difficulty": 2,
|
||||
"example": "작은 습관이 큰 나비효과를 가져왔다."
|
||||
},
|
||||
{
|
||||
"id": "w4",
|
||||
"word": "과일가게",
|
||||
"meaning": "여러 가지 과일을 파는 상점.",
|
||||
"category": "일상",
|
||||
"difficulty": 1,
|
||||
"example": "과일가게에서 싱싱한 사과를 샀다."
|
||||
},
|
||||
{
|
||||
"id": "w5",
|
||||
"word": "가면무도회",
|
||||
"meaning": "참가자가 가면을 쓰고 춤을 추는 연회.",
|
||||
"category": "문화",
|
||||
"difficulty": 2,
|
||||
"example": "화려한 가면무도회가 열렸다."
|
||||
},
|
||||
{
|
||||
"id": "w6",
|
||||
"word": "무지개",
|
||||
"meaning": "비가 갠 후 하늘에 나타나는 일곱 가지 빛깔의 호선.",
|
||||
"category": "자연",
|
||||
"difficulty": 1,
|
||||
"example": "소나기가 그치고 하늘에 무지개가 떴다."
|
||||
},
|
||||
{
|
||||
"id": "w7",
|
||||
"word": "개구쟁이",
|
||||
"meaning": "궂은 장난을 자주 치는 아이를 귀엽게 이르는 말.",
|
||||
"category": "일상",
|
||||
"difficulty": 1,
|
||||
"example": "우리 집 막내는 소문난 개구쟁이다."
|
||||
},
|
||||
{
|
||||
"id": "w8",
|
||||
"word": "일석이조",
|
||||
"meaning": "돌 하나를 던져 새 두 마리를 잡는다는 뜻으로, 한 가지 일로 두 가지 이익을 얻음을 이르는 사자성어.",
|
||||
"category": "사자성어",
|
||||
"difficulty": 2,
|
||||
"example": "건강도 챙기고 돈도 아끼니 일석이조다."
|
||||
},
|
||||
{
|
||||
"id": "w9",
|
||||
"word": "조약돌",
|
||||
"meaning": "물에 씻기어 둥글고 반드러워진 작은 돌.",
|
||||
"category": "자연",
|
||||
"difficulty": 1,
|
||||
"example": "시냇가에서 예쁜 조약돌을 주웠다."
|
||||
},
|
||||
{
|
||||
"id": "w10",
|
||||
"word": "돌다리",
|
||||
"meaning": "돌로 놓은 다리. 또는 '돌다리도 두들겨 보고 건너라'는 속담의 소재.",
|
||||
"category": "일상",
|
||||
"difficulty": 1,
|
||||
"example": "돌다리도 두들겨 보고 건너는 신중함이 필요하다."
|
||||
},
|
||||
{
|
||||
"id": "w11",
|
||||
"word": "다락방",
|
||||
"meaning": "지붕 바로 밑이나 천장 위에 꾸며 놓은 방.",
|
||||
"category": "건축",
|
||||
"difficulty": 1,
|
||||
"example": "어릴 적 다락방에서 보물찾기를 했다."
|
||||
},
|
||||
{
|
||||
"id": "w12",
|
||||
"word": "방방곡곡",
|
||||
"meaning": "한 곳도 빠짐없는 모든 곳. 전국 곳곳.",
|
||||
"category": "사자성어",
|
||||
"difficulty": 2,
|
||||
"example": "기쁜 소식이 전국 방방곡곡에 퍼졌다."
|
||||
},
|
||||
{
|
||||
"id": "w13",
|
||||
"word": "곡예사",
|
||||
"meaning": "서커스나 줄타기 따위의 곡예를 전문으로 하는 사람.",
|
||||
"category": "직업",
|
||||
"difficulty": 2,
|
||||
"example": "곡예사의 아슬아슬한 묘기에 박수가 쏟아졌다."
|
||||
},
|
||||
{
|
||||
"id": "w14",
|
||||
"word": "사람인",
|
||||
"meaning": "한자의 하나(人). 두 사람이 서로 기대고 있는 형상.",
|
||||
"category": "한자",
|
||||
"difficulty": 1,
|
||||
"example": "사람 인 자는 서로 돕는 형상이다."
|
||||
},
|
||||
{
|
||||
"id": "w15",
|
||||
"word": "인사동",
|
||||
"meaning": "서울 종로구에 위치한 전통 문화와 예술의 거리.",
|
||||
"category": "지리",
|
||||
"difficulty": 1,
|
||||
"example": "주말에 인사동 쌈지길을 구경했다."
|
||||
},
|
||||
{
|
||||
"id": "w16",
|
||||
"word": "동고동락",
|
||||
"meaning": "괴로움도 즐거움도 함께한다는 뜻의 사자성어.",
|
||||
"category": "사자성어",
|
||||
"difficulty": 2,
|
||||
"example": "우리는 오랜 세월 동고동락한 사이다."
|
||||
},
|
||||
{
|
||||
"id": "w17",
|
||||
"word": "락앤롤",
|
||||
"meaning": "1950년대 미국에서 발생한 대중음악의 한 장르.",
|
||||
"category": "음악",
|
||||
"difficulty": 2,
|
||||
"example": "신나는 락앤롤 음악에 맞춰 몸을 흔들었다."
|
||||
},
|
||||
{
|
||||
"id": "w18",
|
||||
"word": "롤러코스터",
|
||||
"meaning": "놀이공원의 레일 위를 빠르게 질주하는 놀이기구.",
|
||||
"category": "놀이",
|
||||
"difficulty": 1,
|
||||
"example": "롤러코스터를 타며 시원하게 소리를 질렀다."
|
||||
},
|
||||
{
|
||||
"id": "w19",
|
||||
"word": "터줏대감",
|
||||
"meaning": "어떤 집단이나 장소에 오래전부터 자리 잡고 큰 영향력을 가진 사람.",
|
||||
"category": "관용구",
|
||||
"difficulty": 2,
|
||||
"example": "그는 이 동네의 터줏대감이다."
|
||||
},
|
||||
{
|
||||
"id": "w20",
|
||||
"word": "감자튀김",
|
||||
"meaning": "감자를 썰어 기름에 튀겨낸 서양 음식.",
|
||||
"category": "음식",
|
||||
"difficulty": 1,
|
||||
"example": "햄버거와 바삭한 감자튀김을 함께 주문했다."
|
||||
}
|
||||
]
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "COMPATIBLE_SCREEN_MANIFEST",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "com.wordpuzzle.hangul",
|
||||
"variantName": "debug",
|
||||
"elements": []
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
4
|
||||
BIN
Binary file not shown.
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
[{"key":"META-INF/androidx.navigation_navigation-common-ktx.version","name":"META-INF/androidx.navigation_navigation-common-ktx.version","size":6,"crc":-402369105}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/compose/ui/ExperimentalComposeUiApi.class","name":"androidx/compose/ui/ExperimentalComposeUiApi.class","size":786,"crc":-418551283},{"key":"androidx/compose/ui/InternalComposeUiApi.class","name":"androidx/compose/ui/InternalComposeUiApi.class","size":864,"crc":-886945856},{"key":"androidx/compose/ui/util/AndroidTrace_androidKt.class","name":"androidx/compose/ui/util/AndroidTrace_androidKt.class","size":1375,"crc":-1745608269},{"key":"androidx/compose/ui/util/InlineClassHelperKt.class","name":"androidx/compose/ui/util/InlineClassHelperKt.class","size":2796,"crc":1839478123},{"key":"androidx/compose/ui/util/InlineClassHelper_jvmKt.class","name":"androidx/compose/ui/util/InlineClassHelper_jvmKt.class","size":1136,"crc":48882481},{"key":"androidx/compose/ui/util/ListUtilsKt.class","name":"androidx/compose/ui/util/ListUtilsKt.class","size":23551,"crc":-67452821},{"key":"androidx/compose/ui/util/MathHelpersKt.class","name":"androidx/compose/ui/util/MathHelpersKt.class","size":4040,"crc":1106318760},{"key":"META-INF/androidx.compose.ui_ui-util.version","name":"META-INF/androidx.compose.ui_ui-util.version","size":6,"crc":921909079},{"key":"META-INF/ui-util_release.kotlin_module","name":"META-INF/ui-util_release.kotlin_module","size":150,"crc":721414718}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/lifecycle/AbstractSavedStateViewModelFactory.class","name":"androidx/lifecycle/AbstractSavedStateViewModelFactory.class","size":6266,"crc":624322821},{"key":"androidx/lifecycle/LegacySavedStateHandleController$OnRecreation.class","name":"androidx/lifecycle/LegacySavedStateHandleController$OnRecreation.class","size":3023,"crc":1352335096},{"key":"androidx/lifecycle/LegacySavedStateHandleController$tryToAddRecreator$1.class","name":"androidx/lifecycle/LegacySavedStateHandleController$tryToAddRecreator$1.class","size":2215,"crc":-1110321192},{"key":"androidx/lifecycle/LegacySavedStateHandleController.class","name":"androidx/lifecycle/LegacySavedStateHandleController.class","size":4242,"crc":1010501014},{"key":"androidx/lifecycle/SavedStateHandle$Companion.class","name":"androidx/lifecycle/SavedStateHandle$Companion.class","size":4008,"crc":1738275723},{"key":"androidx/lifecycle/SavedStateHandle$SavingStateLiveData.class","name":"androidx/lifecycle/SavedStateHandle$SavingStateLiveData.class","size":2677,"crc":309253364},{"key":"androidx/lifecycle/SavedStateHandle.class","name":"androidx/lifecycle/SavedStateHandle.class","size":13780,"crc":1271817115},{"key":"androidx/lifecycle/SavedStateHandleAttacher.class","name":"androidx/lifecycle/SavedStateHandleAttacher.class","size":2410,"crc":1374032691},{"key":"androidx/lifecycle/SavedStateHandleController.class","name":"androidx/lifecycle/SavedStateHandleController.class","size":4069,"crc":-1267825771},{"key":"androidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1.class","size":1015,"crc":1680652581},{"key":"androidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1.class","size":1095,"crc":664941330},{"key":"androidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1.class","size":1077,"crc":-1417974376},{"key":"androidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1.class","size":1877,"crc":1377385748},{"key":"androidx/lifecycle/SavedStateHandleSupport.class","name":"androidx/lifecycle/SavedStateHandleSupport.class","size":8455,"crc":-612439321},{"key":"androidx/lifecycle/SavedStateHandlesProvider$viewModel$2.class","name":"androidx/lifecycle/SavedStateHandlesProvider$viewModel$2.class","size":1569,"crc":-1314923407},{"key":"androidx/lifecycle/SavedStateHandlesProvider.class","name":"androidx/lifecycle/SavedStateHandlesProvider.class","size":5980,"crc":-1504923530},{"key":"androidx/lifecycle/SavedStateHandlesVM.class","name":"androidx/lifecycle/SavedStateHandlesVM.class","size":1202,"crc":1376387357},{"key":"androidx/lifecycle/SavedStateViewModelFactory.class","name":"androidx/lifecycle/SavedStateViewModelFactory.class","size":8826,"crc":-1008829102},{"key":"androidx/lifecycle/SavedStateViewModelFactoryKt.class","name":"androidx/lifecycle/SavedStateViewModelFactoryKt.class","size":5061,"crc":473598696},{"key":"META-INF/androidx.lifecycle_lifecycle-viewmodel-savedstate.version","name":"META-INF/androidx.lifecycle_lifecycle-viewmodel-savedstate.version","size":6,"crc":-249600786},{"key":"META-INF/lifecycle-viewmodel-savedstate_release.kotlin_module","name":"META-INF/lifecycle-viewmodel-savedstate_release.kotlin_module","size":101,"crc":-1891795020}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":160,"crc":-835500566},{"key":"META-INF/kotlin-android-extensions-runtime.kotlin_module","name":"META-INF/kotlin-android-extensions-runtime.kotlin_module","size":24,"crc":-1111743755},{"key":"kotlinx/android/extensions/CacheImplementation$Companion.class","name":"kotlinx/android/extensions/CacheImplementation$Companion.class","size":1213,"crc":140420271},{"key":"kotlinx/android/extensions/CacheImplementation.class","name":"kotlinx/android/extensions/CacheImplementation.class","size":2416,"crc":347669202},{"key":"kotlinx/android/extensions/ContainerOptions.class","name":"kotlinx/android/extensions/ContainerOptions.class","size":760,"crc":2087980103},{"key":"kotlinx/android/extensions/LayoutContainer.class","name":"kotlinx/android/extensions/LayoutContainer.class","size":617,"crc":-1755010923},{"key":"kotlinx/android/parcel/IgnoredOnParcel.class","name":"kotlinx/android/parcel/IgnoredOnParcel.class","size":778,"crc":314959443},{"key":"kotlinx/android/parcel/Parceler$DefaultImpls.class","name":"kotlinx/android/parcel/Parceler$DefaultImpls.class","size":933,"crc":1163865465},{"key":"kotlinx/android/parcel/Parceler.class","name":"kotlinx/android/parcel/Parceler.class","size":1162,"crc":-532188771},{"key":"kotlinx/android/parcel/Parcelize.class","name":"kotlinx/android/parcel/Parcelize.class","size":806,"crc":-844911176},{"key":"kotlinx/android/parcel/RawValue.class","name":"kotlinx/android/parcel/RawValue.class","size":814,"crc":1186390907},{"key":"kotlinx/android/parcel/TypeParceler$Container.class","name":"kotlinx/android/parcel/TypeParceler$Container.class","size":883,"crc":2072132443},{"key":"kotlinx/android/parcel/TypeParceler.class","name":"kotlinx/android/parcel/TypeParceler.class","size":1282,"crc":1342335667},{"key":"kotlinx/android/parcel/WriteWith.class","name":"kotlinx/android/parcel/WriteWith.class","size":992,"crc":61107936}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/versionedparcelable/CustomVersionedParcelable.class","name":"androidx/versionedparcelable/CustomVersionedParcelable.class","size":915,"crc":-363159068},{"key":"androidx/versionedparcelable/NonParcelField.class","name":"androidx/versionedparcelable/NonParcelField.class","size":676,"crc":1361393714},{"key":"androidx/versionedparcelable/ParcelField.class","name":"androidx/versionedparcelable/ParcelField.class","size":762,"crc":-355164638},{"key":"androidx/versionedparcelable/ParcelImpl$1.class","name":"androidx/versionedparcelable/ParcelImpl$1.class","size":1191,"crc":-60532325},{"key":"androidx/versionedparcelable/ParcelImpl.class","name":"androidx/versionedparcelable/ParcelImpl.class","size":1979,"crc":1919067054},{"key":"androidx/versionedparcelable/ParcelUtils.class","name":"androidx/versionedparcelable/ParcelUtils.class","size":5523,"crc":-1129855369},{"key":"androidx/versionedparcelable/VersionedParcel$1.class","name":"androidx/versionedparcelable/VersionedParcel$1.class","size":1546,"crc":-1038307129},{"key":"androidx/versionedparcelable/VersionedParcel$ParcelException.class","name":"androidx/versionedparcelable/VersionedParcel$ParcelException.class","size":538,"crc":1830934000},{"key":"androidx/versionedparcelable/VersionedParcel.class","name":"androidx/versionedparcelable/VersionedParcel.class","size":29325,"crc":142272959},{"key":"androidx/versionedparcelable/VersionedParcelParcel.class","name":"androidx/versionedparcelable/VersionedParcelParcel.class","size":7429,"crc":-328586236},{"key":"androidx/versionedparcelable/VersionedParcelStream$1.class","name":"androidx/versionedparcelable/VersionedParcelStream$1.class","size":1613,"crc":1775874054},{"key":"androidx/versionedparcelable/VersionedParcelStream$FieldBuffer.class","name":"androidx/versionedparcelable/VersionedParcelStream$FieldBuffer.class","size":1288,"crc":1505456534},{"key":"androidx/versionedparcelable/VersionedParcelStream.class","name":"androidx/versionedparcelable/VersionedParcelStream.class","size":13823,"crc":-1859752855},{"key":"androidx/versionedparcelable/VersionedParcelable.class","name":"androidx/versionedparcelable/VersionedParcelable.class","size":148,"crc":752656910},{"key":"androidx/versionedparcelable/VersionedParcelize.class","name":"androidx/versionedparcelable/VersionedParcelize.class","size":964,"crc":886842821},{"key":"META-INF/androidx.versionedparcelable_versionedparcelable.version","name":"META-INF/androidx.versionedparcelable_versionedparcelable.version","size":6,"crc":1557790284}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/interpolator/view/animation/FastOutLinearInInterpolator.class","name":"androidx/interpolator/view/animation/FastOutLinearInInterpolator.class","size":2893,"crc":-586218538},{"key":"androidx/interpolator/view/animation/FastOutSlowInInterpolator.class","name":"androidx/interpolator/view/animation/FastOutSlowInInterpolator.class","size":2876,"crc":-1344934723},{"key":"androidx/interpolator/view/animation/LinearOutSlowInInterpolator.class","name":"androidx/interpolator/view/animation/LinearOutSlowInInterpolator.class","size":2882,"crc":-733508970},{"key":"androidx/interpolator/view/animation/LookupTableInterpolator.class","name":"androidx/interpolator/view/animation/LookupTableInterpolator.class","size":907,"crc":-26214147},{"key":"META-INF/androidx.interpolator_interpolator.version","name":"META-INF/androidx.interpolator_interpolator.version","size":6,"crc":-42031000}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":25,"crc":-301826126}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/savedstate/ViewKt.class","name":"androidx/savedstate/ViewKt.class","size":1242,"crc":-891744385},{"key":"META-INF/androidx.savedstate_savedstate-ktx.version","name":"META-INF/androidx.savedstate_savedstate-ktx.version","size":6,"crc":1315721634},{"key":"META-INF/savedstate-ktx_release.kotlin_module","name":"META-INF/savedstate-ktx_release.kotlin_module","size":55,"crc":1183290022}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/graphics/path/ConicConverter.class","name":"androidx/graphics/path/ConicConverter.class","size":2554,"crc":-2075525229},{"key":"androidx/graphics/path/PathIterator$ConicEvaluation.class","name":"androidx/graphics/path/PathIterator$ConicEvaluation.class","size":1567,"crc":-1050694862},{"key":"androidx/graphics/path/PathIterator.class","name":"androidx/graphics/path/PathIterator.class","size":4616,"crc":1603771064},{"key":"androidx/graphics/path/PathIteratorApi34Impl.class","name":"androidx/graphics/path/PathIteratorApi34Impl.class","size":4428,"crc":130817382},{"key":"androidx/graphics/path/PathIteratorImpl$Companion.class","name":"androidx/graphics/path/PathIteratorImpl$Companion.class","size":836,"crc":-346921140},{"key":"androidx/graphics/path/PathIteratorImpl$WhenMappings.class","name":"androidx/graphics/path/PathIteratorImpl$WhenMappings.class","size":1000,"crc":252266143},{"key":"androidx/graphics/path/PathIteratorImpl.class","name":"androidx/graphics/path/PathIteratorImpl.class","size":5545,"crc":746059062},{"key":"androidx/graphics/path/PathIteratorImplKt.class","name":"androidx/graphics/path/PathIteratorImplKt.class","size":1869,"crc":-1390430380},{"key":"androidx/graphics/path/PathIteratorPreApi34Impl.class","name":"androidx/graphics/path/PathIteratorPreApi34Impl.class","size":3642,"crc":908573320},{"key":"androidx/graphics/path/PathSegment$Type.class","name":"androidx/graphics/path/PathSegment$Type.class","size":1772,"crc":-789665998},{"key":"androidx/graphics/path/PathSegment.class","name":"androidx/graphics/path/PathSegment.class","size":3292,"crc":-1409739059},{"key":"androidx/graphics/path/PathSegmentUtilities.class","name":"androidx/graphics/path/PathSegmentUtilities.class","size":2049,"crc":-1625946079},{"key":"androidx/graphics/path/PathUtilities.class","name":"androidx/graphics/path/PathUtilities.class","size":1994,"crc":1288469232},{"key":"META-INF/androidx.graphics_graphics-path.version","name":"META-INF/androidx.graphics_graphics-path.version","size":6,"crc":-463103703},{"key":"META-INF/graphics-path_release.kotlin_module","name":"META-INF/graphics-path_release.kotlin_module","size":107,"crc":1457114750}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":1061,"crc":-1251250516},{"key":"META-INF/maven/com.google.guava/failureaccess/pom.properties","name":"META-INF/maven/com.google.guava/failureaccess/pom.properties","size":138,"crc":1785411800},{"key":"META-INF/maven/com.google.guava/failureaccess/pom.xml","name":"META-INF/maven/com.google.guava/failureaccess/pom.xml","size":2413,"crc":-1906597673},{"key":"com/google/common/util/concurrent/internal/InternalFutureFailureAccess.class","name":"com/google/common/util/concurrent/internal/InternalFutureFailureAccess.class","size":458,"crc":-1842118595},{"key":"com/google/common/util/concurrent/internal/InternalFutures.class","name":"com/google/common/util/concurrent/internal/InternalFutures.class","size":743,"crc":2071911263}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/customview/poolingcontainer/PoolingContainer.class","name":"androidx/customview/poolingcontainer/PoolingContainer.class","size":5411,"crc":1218352752},{"key":"androidx/customview/poolingcontainer/PoolingContainerListener.class","name":"androidx/customview/poolingcontainer/PoolingContainerListener.class","size":572,"crc":1704627172},{"key":"androidx/customview/poolingcontainer/PoolingContainerListenerHolder.class","name":"androidx/customview/poolingcontainer/PoolingContainerListenerHolder.class","size":2033,"crc":-1869864933},{"key":"META-INF/androidx.customview_customview-poolingcontainer.version","name":"META-INF/androidx.customview_customview-poolingcontainer.version","size":6,"crc":-42031000},{"key":"META-INF/customview-poolingcontainer_release.kotlin_module","name":"META-INF/customview-poolingcontainer_release.kotlin_module","size":82,"crc":-469476031}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":25,"crc":-301826126},{"key":"META-INF/datastore-core-okio.kotlin_module","name":"META-INF/datastore-core-okio.kotlin_module","size":71,"crc":-842474721},{"key":"androidx/datastore/core/okio/AtomicBoolean.class","name":"androidx/datastore/core/okio/AtomicBoolean.class","size":1091,"crc":1631543537},{"key":"androidx/datastore/core/okio/AtomicInt.class","name":"androidx/datastore/core/okio/AtomicInt.class","size":1258,"crc":328675844},{"key":"androidx/datastore/core/okio/OkioReadScope$readData$1.class","name":"androidx/datastore/core/okio/OkioReadScope$readData$1.class","size":1953,"crc":982954668},{"key":"androidx/datastore/core/okio/OkioReadScope.class","name":"androidx/datastore/core/okio/OkioReadScope.class","size":7626,"crc":1749145141},{"key":"androidx/datastore/core/okio/OkioSerializer.class","name":"androidx/datastore/core/okio/OkioSerializer.class","size":1390,"crc":-1718451737},{"key":"androidx/datastore/core/okio/OkioStorage$1.class","name":"androidx/datastore/core/okio/OkioStorage$1.class","size":2087,"crc":1818981389},{"key":"androidx/datastore/core/okio/OkioStorage$Companion.class","name":"androidx/datastore/core/okio/OkioStorage$Companion.class","size":1485,"crc":915912459},{"key":"androidx/datastore/core/okio/OkioStorage$canonicalPath$2.class","name":"androidx/datastore/core/okio/OkioStorage$canonicalPath$2.class","size":2324,"crc":-1520533305},{"key":"androidx/datastore/core/okio/OkioStorage$createConnection$2.class","name":"androidx/datastore/core/okio/OkioStorage$createConnection$2.class","size":3100,"crc":1101961689},{"key":"androidx/datastore/core/okio/OkioStorage.class","name":"androidx/datastore/core/okio/OkioStorage.class","size":7242,"crc":338528835},{"key":"androidx/datastore/core/okio/OkioStorageConnection$readScope$1.class","name":"androidx/datastore/core/okio/OkioStorageConnection$readScope$1.class","size":2029,"crc":1183308023},{"key":"androidx/datastore/core/okio/OkioStorageConnection$writeScope$1.class","name":"androidx/datastore/core/okio/OkioStorageConnection$writeScope$1.class","size":2072,"crc":1042673907},{"key":"androidx/datastore/core/okio/OkioStorageConnection.class","name":"androidx/datastore/core/okio/OkioStorageConnection.class","size":12958,"crc":-927860441},{"key":"androidx/datastore/core/okio/OkioStorageKt.class","name":"androidx/datastore/core/okio/OkioStorageKt.class","size":1131,"crc":-1071525275},{"key":"androidx/datastore/core/okio/OkioWriteScope$writeData$1.class","name":"androidx/datastore/core/okio/OkioWriteScope$writeData$1.class","size":1868,"crc":-1984904908},{"key":"androidx/datastore/core/okio/OkioWriteScope.class","name":"androidx/datastore/core/okio/OkioWriteScope.class","size":7068,"crc":-271519542},{"key":"androidx/datastore/core/okio/Synchronizer.class","name":"androidx/datastore/core/okio/Synchronizer.class","size":1537,"crc":-2096946248}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/arch/core/executor/ArchTaskExecutor.class","name":"androidx/arch/core/executor/ArchTaskExecutor.class","size":2950,"crc":-173664277},{"key":"androidx/arch/core/executor/DefaultTaskExecutor$1.class","name":"androidx/arch/core/executor/DefaultTaskExecutor$1.class","size":1445,"crc":-1550744660},{"key":"androidx/arch/core/executor/DefaultTaskExecutor$Api28Impl.class","name":"androidx/arch/core/executor/DefaultTaskExecutor$Api28Impl.class","size":834,"crc":1774766260},{"key":"androidx/arch/core/executor/DefaultTaskExecutor.class","name":"androidx/arch/core/executor/DefaultTaskExecutor.class","size":3293,"crc":-1256626107},{"key":"androidx/arch/core/executor/TaskExecutor.class","name":"androidx/arch/core/executor/TaskExecutor.class","size":1053,"crc":1399542030},{"key":"META-INF/androidx.arch.core_core-runtime.version","name":"META-INF/androidx.arch.core_core-runtime.version","size":67,"crc":1307063212}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/viewpager/widget/PagerAdapter.class","name":"androidx/viewpager/widget/PagerAdapter.class","size":4231,"crc":1137649263},{"key":"androidx/viewpager/widget/PagerTabStrip$1.class","name":"androidx/viewpager/widget/PagerTabStrip$1.class","size":1031,"crc":-1240140111},{"key":"androidx/viewpager/widget/PagerTabStrip$2.class","name":"androidx/viewpager/widget/PagerTabStrip$2.class","size":1031,"crc":-1127620809},{"key":"androidx/viewpager/widget/PagerTabStrip.class","name":"androidx/viewpager/widget/PagerTabStrip.class","size":7327,"crc":43124920},{"key":"androidx/viewpager/widget/PagerTitleStrip$PageListener.class","name":"androidx/viewpager/widget/PagerTitleStrip$PageListener.class","size":2333,"crc":1083928157},{"key":"androidx/viewpager/widget/PagerTitleStrip$SingleLineAllCapsTransform.class","name":"androidx/viewpager/widget/PagerTitleStrip$SingleLineAllCapsTransform.class","size":1386,"crc":-1473138747},{"key":"androidx/viewpager/widget/PagerTitleStrip.class","name":"androidx/viewpager/widget/PagerTitleStrip.class","size":12631,"crc":-2046776245},{"key":"androidx/viewpager/widget/ViewPager$1.class","name":"androidx/viewpager/widget/ViewPager$1.class","size":1017,"crc":169159464},{"key":"androidx/viewpager/widget/ViewPager$2.class","name":"androidx/viewpager/widget/ViewPager$2.class","size":571,"crc":-481935440},{"key":"androidx/viewpager/widget/ViewPager$3.class","name":"androidx/viewpager/widget/ViewPager$3.class","size":700,"crc":-118651813},{"key":"androidx/viewpager/widget/ViewPager$4.class","name":"androidx/viewpager/widget/ViewPager$4.class","size":1986,"crc":554889883},{"key":"androidx/viewpager/widget/ViewPager$DecorView.class","name":"androidx/viewpager/widget/ViewPager$DecorView.class","size":528,"crc":-950931320},{"key":"androidx/viewpager/widget/ViewPager$ItemInfo.class","name":"androidx/viewpager/widget/ViewPager$ItemInfo.class","size":533,"crc":1272630321},{"key":"androidx/viewpager/widget/ViewPager$LayoutParams.class","name":"androidx/viewpager/widget/ViewPager$LayoutParams.class","size":1246,"crc":366823533},{"key":"androidx/viewpager/widget/ViewPager$MyAccessibilityDelegate.class","name":"androidx/viewpager/widget/ViewPager$MyAccessibilityDelegate.class","size":2526,"crc":2109101101},{"key":"androidx/viewpager/widget/ViewPager$OnAdapterChangeListener.class","name":"androidx/viewpager/widget/ViewPager$OnAdapterChangeListener.class","size":526,"crc":-2027879253},{"key":"androidx/viewpager/widget/ViewPager$OnPageChangeListener.class","name":"androidx/viewpager/widget/ViewPager$OnPageChangeListener.class","size":425,"crc":695229708},{"key":"androidx/viewpager/widget/ViewPager$PageTransformer.class","name":"androidx/viewpager/widget/ViewPager$PageTransformer.class","size":367,"crc":410653001},{"key":"androidx/viewpager/widget/ViewPager$PagerObserver.class","name":"androidx/viewpager/widget/ViewPager$PagerObserver.class","size":746,"crc":645832464},{"key":"androidx/viewpager/widget/ViewPager$SavedState$1.class","name":"androidx/viewpager/widget/ViewPager$SavedState$1.class","size":1705,"crc":479450836},{"key":"androidx/viewpager/widget/ViewPager$SavedState.class","name":"androidx/viewpager/widget/ViewPager$SavedState.class","size":2417,"crc":107589641},{"key":"androidx/viewpager/widget/ViewPager$SimpleOnPageChangeListener.class","name":"androidx/viewpager/widget/ViewPager$SimpleOnPageChangeListener.class","size":919,"crc":-651217725},{"key":"androidx/viewpager/widget/ViewPager$ViewPositionComparator.class","name":"androidx/viewpager/widget/ViewPager$ViewPositionComparator.class","size":1333,"crc":-1413797540},{"key":"androidx/viewpager/widget/ViewPager.class","name":"androidx/viewpager/widget/ViewPager.class","size":51337,"crc":-2522352},{"key":"META-INF/androidx.viewpager_viewpager.version","name":"META-INF/androidx.viewpager_viewpager.version","size":6,"crc":-42031000}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/loader/app/LoaderManager$LoaderCallbacks.class","name":"androidx/loader/app/LoaderManager$LoaderCallbacks.class","size":946,"crc":-123528875},{"key":"androidx/loader/app/LoaderManager.class","name":"androidx/loader/app/LoaderManager.class","size":2244,"crc":156436383},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderInfo.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderInfo.class","size":7635,"crc":-1955402743},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderObserver.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderObserver.class","size":3237,"crc":866989739},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel$1.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel$1.class","size":1102,"crc":-1482526164},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel.class","size":4255,"crc":862018756},{"key":"androidx/loader/app/LoaderManagerImpl.class","name":"androidx/loader/app/LoaderManagerImpl.class","size":7525,"crc":-1905229766},{"key":"androidx/loader/content/AsyncTaskLoader$LoadTask.class","name":"androidx/loader/content/AsyncTaskLoader$LoadTask.class","size":2590,"crc":-1781583970},{"key":"androidx/loader/content/AsyncTaskLoader.class","name":"androidx/loader/content/AsyncTaskLoader.class","size":5894,"crc":-1443051443},{"key":"androidx/loader/content/CursorLoader.class","name":"androidx/loader/content/CursorLoader.class","size":6564,"crc":1182075271},{"key":"androidx/loader/content/Loader$ForceLoadContentObserver.class","name":"androidx/loader/content/Loader$ForceLoadContentObserver.class","size":1018,"crc":1420840201},{"key":"androidx/loader/content/Loader$OnLoadCanceledListener.class","name":"androidx/loader/content/Loader$OnLoadCanceledListener.class","size":493,"crc":1597944693},{"key":"androidx/loader/content/Loader$OnLoadCompleteListener.class","name":"androidx/loader/content/Loader$OnLoadCompleteListener.class","size":553,"crc":-1004412857},{"key":"androidx/loader/content/Loader.class","name":"androidx/loader/content/Loader.class","size":7784,"crc":-309363131},{"key":"androidx/loader/content/ModernAsyncTask$1.class","name":"androidx/loader/content/ModernAsyncTask$1.class","size":1122,"crc":-1522224884},{"key":"androidx/loader/content/ModernAsyncTask$2.class","name":"androidx/loader/content/ModernAsyncTask$2.class","size":1730,"crc":-54802885},{"key":"androidx/loader/content/ModernAsyncTask$3.class","name":"androidx/loader/content/ModernAsyncTask$3.class","size":1946,"crc":999679769},{"key":"androidx/loader/content/ModernAsyncTask$4.class","name":"androidx/loader/content/ModernAsyncTask$4.class","size":818,"crc":781657903},{"key":"androidx/loader/content/ModernAsyncTask$AsyncTaskResult.class","name":"androidx/loader/content/ModernAsyncTask$AsyncTaskResult.class","size":951,"crc":565889747},{"key":"androidx/loader/content/ModernAsyncTask$InternalHandler.class","name":"androidx/loader/content/ModernAsyncTask$InternalHandler.class","size":1258,"crc":-98894051},{"key":"androidx/loader/content/ModernAsyncTask$Status.class","name":"androidx/loader/content/ModernAsyncTask$Status.class","size":1243,"crc":278128340},{"key":"androidx/loader/content/ModernAsyncTask$WorkerRunnable.class","name":"androidx/loader/content/ModernAsyncTask$WorkerRunnable.class","size":796,"crc":-1597044986},{"key":"androidx/loader/content/ModernAsyncTask.class","name":"androidx/loader/content/ModernAsyncTask.class","size":7908,"crc":692681611},{"key":"META-INF/androidx.loader_loader.version","name":"META-INF/androidx.loader_loader.version","size":6,"crc":-42031000}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/savedstate/Recreator$Companion.class","name":"androidx/savedstate/Recreator$Companion.class","size":881,"crc":-2099199957},{"key":"androidx/savedstate/Recreator$SavedStateProvider.class","name":"androidx/savedstate/Recreator$SavedStateProvider.class","size":2367,"crc":1821800407},{"key":"androidx/savedstate/Recreator.class","name":"androidx/savedstate/Recreator.class","size":5559,"crc":-533493763},{"key":"androidx/savedstate/SavedStateRegistry$AutoRecreated.class","name":"androidx/savedstate/SavedStateRegistry$AutoRecreated.class","size":784,"crc":567056175},{"key":"androidx/savedstate/SavedStateRegistry$Companion.class","name":"androidx/savedstate/SavedStateRegistry$Companion.class","size":887,"crc":900872896},{"key":"androidx/savedstate/SavedStateRegistry$SavedStateProvider.class","name":"androidx/savedstate/SavedStateRegistry$SavedStateProvider.class","size":709,"crc":-309935901},{"key":"androidx/savedstate/SavedStateRegistry.class","name":"androidx/savedstate/SavedStateRegistry.class","size":10105,"crc":788600212},{"key":"androidx/savedstate/SavedStateRegistryController$Companion.class","name":"androidx/savedstate/SavedStateRegistryController$Companion.class","size":1607,"crc":-1819286630},{"key":"androidx/savedstate/SavedStateRegistryController.class","name":"androidx/savedstate/SavedStateRegistryController.class","size":4330,"crc":-287729808},{"key":"androidx/savedstate/SavedStateRegistryOwner.class","name":"androidx/savedstate/SavedStateRegistryOwner.class","size":755,"crc":-979039875},{"key":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1.class","name":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1.class","size":1846,"crc":423512158},{"key":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2.class","name":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2.class","size":2045,"crc":-1356874610},{"key":"androidx/savedstate/ViewTreeSavedStateRegistryOwner.class","name":"androidx/savedstate/ViewTreeSavedStateRegistryOwner.class","size":2543,"crc":1459979664},{"key":"META-INF/androidx.savedstate_savedstate.version","name":"META-INF/androidx.savedstate_savedstate.version","size":6,"crc":1315721634},{"key":"META-INF/savedstate_release.kotlin_module","name":"META-INF/savedstate_release.kotlin_module","size":80,"crc":-912612184}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":225,"crc":1334212140},{"key":"META-INF/versions/9/module-info.class","name":"META-INF/versions/9/module-info.class","size":287,"crc":-1907208598}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/lifecycle/LifecycleService.class","name":"androidx/lifecycle/LifecycleService.class","size":2658,"crc":-3702339},{"key":"androidx/lifecycle/ServiceLifecycleDispatcher$DispatchRunnable.class","name":"androidx/lifecycle/ServiceLifecycleDispatcher$DispatchRunnable.class","size":1918,"crc":-985917504},{"key":"androidx/lifecycle/ServiceLifecycleDispatcher.class","name":"androidx/lifecycle/ServiceLifecycleDispatcher.class","size":2975,"crc":-2091535168},{"key":"META-INF/androidx.lifecycle_lifecycle-service.version","name":"META-INF/androidx.lifecycle_lifecycle-service.version","size":6,"crc":-249600786},{"key":"META-INF/lifecycle-service_release.kotlin_module","name":"META-INF/lifecycle-service_release.kotlin_module","size":24,"crc":1613429616}]
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":108,"crc":1316044605},{"key":"META-INF/maven/com.google.guava/listenablefuture/pom.xml","name":"META-INF/maven/com.google.guava/listenablefuture/pom.xml","size":2278,"crc":-995907463},{"key":"META-INF/maven/com.google.guava/listenablefuture/pom.properties","name":"META-INF/maven/com.google.guava/listenablefuture/pom.properties","size":134,"crc":-629924229}]
|
||||
+1
@@ -0,0 +1 @@
|
||||
[{"key":"androidx/startup/AppInitializer.class","name":"androidx/startup/AppInitializer.class","size":7553,"crc":870624420},{"key":"androidx/startup/InitializationProvider.class","name":"androidx/startup/InitializationProvider.class","size":2530,"crc":-159478496},{"key":"androidx/startup/Initializer.class","name":"androidx/startup/Initializer.class","size":555,"crc":-1348991370},{"key":"androidx/startup/StartupException.class","name":"androidx/startup/StartupException.class","size":1051,"crc":-464023827},{"key":"androidx/startup/StartupLogger.class","name":"androidx/startup/StartupLogger.class","size":1324,"crc":1793103804},{"key":"META-INF/androidx.startup_startup-runtime.version","name":"META-INF/androidx.startup_startup-runtime.version","size":6,"crc":1557790284}]
|
||||
+1
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user