diff --git a/src/all/koharu/AndroidManifest.xml b/src/all/koharu/AndroidManifest.xml
index e1aa90b82..eb08b6427 100644
--- a/src/all/koharu/AndroidManifest.xml
+++ b/src/all/koharu/AndroidManifest.xml
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <application>
-        <activity
-            android:name=".all.koharu.KoharuUrlActivity"
-            android:excludeFromRecents="true"
-            android:exported="true"
-            android:theme="@android:style/Theme.NoDisplay">
-            <intent-filter>
-                <action android:name="android.intent.action.VIEW" />
-
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.BROWSABLE" />
-
-                <data android:scheme="https" android:pathPattern="/g/..*/..*"/>
-                <data android:host="koharu.to" />
-                <data android:host="schale.network" />
-                <data android:host="gehenna.jp" />
-                <data android:host="niyaniya.moe" />
-                <data android:host="seia.to" />
-                <data android:host="shupogaki.moe" />
-                <data android:host="hoshino.one" />
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <application>
+        <activity
+            android:name=".all.koharu.KoharuUrlActivity"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:theme="@android:style/Theme.NoDisplay">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data android:scheme="https" android:pathPattern="/g/..*/..*"/>
+                <data android:host="koharu.to" />
+                <data android:host="schale.network" />
+                <data android:host="gehenna.jp" />
+                <data android:host="niyaniya.moe" />
+                <data android:host="seia.to" />
+                <data android:host="shupogaki.moe" />
+                <data android:host="hoshino.one" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/src/all/koharu/build.gradle b/src/all/koharu/build.gradle
index ca3317aa1..ba938fd65 100644
--- a/src/all/koharu/build.gradle
+++ b/src/all/koharu/build.gradle
@@ -1,7 +1,7 @@
 ext {
     extName = 'SchaleNetwork'
     extClass = '.KoharuFactory'
-    extVersionCode = 12
+    extVersionCode = 13
     isNsfw = true
 }
 
diff --git a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/Koharu.kt b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/Koharu.kt
index 642383043..456103801 100644
--- a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/Koharu.kt
+++ b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/Koharu.kt
@@ -1,378 +1,441 @@
-package eu.kanade.tachiyomi.extension.all.koharu
-
-import android.content.SharedPreferences
-import androidx.preference.ListPreference
-import androidx.preference.PreferenceScreen
-import androidx.preference.SwitchPreferenceCompat
-import eu.kanade.tachiyomi.network.GET
-import eu.kanade.tachiyomi.network.interceptor.rateLimit
-import eu.kanade.tachiyomi.source.ConfigurableSource
-import eu.kanade.tachiyomi.source.model.FilterList
-import eu.kanade.tachiyomi.source.model.MangasPage
-import eu.kanade.tachiyomi.source.model.Page
-import eu.kanade.tachiyomi.source.model.SChapter
-import eu.kanade.tachiyomi.source.model.SManga
-import eu.kanade.tachiyomi.source.model.UpdateStrategy
-import eu.kanade.tachiyomi.source.online.HttpSource
-import keiyoushi.utils.getPreferencesLazy
-import kotlinx.serialization.decodeFromString
-import kotlinx.serialization.json.Json
-import okhttp3.HttpUrl.Companion.toHttpUrl
-import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
-import okhttp3.OkHttpClient
-import okhttp3.Request
-import okhttp3.Response
-import rx.Observable
-import uy.kohesive.injekt.injectLazy
-import java.text.SimpleDateFormat
-import java.util.Locale
-
-class Koharu(
-    override val lang: String = "all",
-    private val searchLang: String = "",
-) : HttpSource(), ConfigurableSource {
-
-    override val name = "SchaleNetwork"
-
-    override val baseUrl = "https://schale.network"
-
-    override val id = if (lang == "en") 1484902275639232927 else super.id
-
-    private val apiUrl = baseUrl.replace("://", "://api.")
-
-    private val apiBooksUrl = "$apiUrl/books"
-
-    override val supportsLatest = true
-
-    override val client: OkHttpClient = network.cloudflareClient.newBuilder()
-        .rateLimit(1)
-        .build()
-
-    private val json: Json by injectLazy()
-
-    private val shortenTitleRegex = Regex("""(\[[^]]*]|[({][^)}]*[)}])""")
-    private fun String.shortenTitle() = replace(shortenTitleRegex, "").trim()
-
-    private val preferences: SharedPreferences by getPreferencesLazy()
-
-    private fun quality() = preferences.getString(PREF_IMAGERES, "1280")!!
-
-    private fun remadd() = preferences.getBoolean(PREF_REM_ADD, false)
-
-    private fun getDomain(): String {
-        try {
-            val noRedirectClient = client.newBuilder().followRedirects(false).build()
-            val host = noRedirectClient.newCall(GET(baseUrl, headers)).execute()
-                .headers["Location"]?.toHttpUrlOrNull()?.host
-                ?: return baseUrl
-            return "https://$host"
-        } catch (_: Exception) {
-            return baseUrl
-        }
-    }
-
-    private val lazyHeaders by lazy {
-        val domain = getDomain()
-        headersBuilder()
-            .set("Referer", "$domain/")
-            .set("Origin", domain)
-            .build()
-    }
-
-    private fun getManga(book: Entry) = SManga.create().apply {
-        setUrlWithoutDomain("${book.id}/${book.public_key}")
-        title = if (remadd()) book.title.shortenTitle() else book.title
-        thumbnail_url = book.thumbnail.path
-    }
-
-    private fun getImagesByMangaEntry(entry: MangaEntry): Pair<ImagesInfo, String> {
-        val data = entry.data
-        fun getIPK(
-            ori: DataKey?,
-            alt1: DataKey?,
-            alt2: DataKey?,
-            alt3: DataKey?,
-            alt4: DataKey?,
-        ): Pair<Int?, String?> {
-            return Pair(
-                ori?.id ?: alt1?.id ?: alt2?.id ?: alt3?.id ?: alt4?.id,
-                ori?.public_key ?: alt1?.public_key ?: alt2?.public_key ?: alt3?.public_key ?: alt4?.public_key,
-            )
-        }
-        val (id, public_key) = when (quality()) {
-            "1600" -> getIPK(data.`1600`, data.`1280`, data.`0`, data.`980`, data.`780`)
-            "1280" -> getIPK(data.`1280`, data.`1600`, data.`0`, data.`980`, data.`780`)
-            "980" -> getIPK(data.`980`, data.`1280`, data.`0`, data.`1600`, data.`780`)
-            "780" -> getIPK(data.`780`, data.`980`, data.`0`, data.`1280`, data.`1600`)
-            else -> getIPK(data.`0`, data.`1600`, data.`1280`, data.`980`, data.`780`)
-        }
-
-        if (id == null || public_key == null) {
-            throw Exception("No Images Found")
-        }
-
-        val realQuality = when (id) {
-            data.`1600`?.id -> "1600"
-            data.`1280`?.id -> "1280"
-            data.`980`?.id -> "980"
-            data.`780`?.id -> "780"
-            else -> "0"
-        }
-
-        val imagesResponse = client.newCall(GET("$apiBooksUrl/data/${entry.id}/${entry.public_key}/$id/$public_key?v=${entry.updated_at ?: entry.created_at}&w=$realQuality", lazyHeaders)).execute()
-        val images = imagesResponse.parseAs<ImagesInfo>() to realQuality
-        return images
-    }
-
-    // Latest
-
-    override fun latestUpdatesRequest(page: Int) = GET("$apiBooksUrl?page=$page" + if (searchLang.isNotBlank()) "&s=language!:\"$searchLang\"" else "", lazyHeaders)
-    override fun latestUpdatesParse(response: Response) = popularMangaParse(response)
-
-    // Popular
-
-    override fun popularMangaRequest(page: Int) = GET("$apiBooksUrl?sort=8&page=$page" + if (searchLang.isNotBlank()) "&s=language!:\"$searchLang\"" else "", lazyHeaders)
-    override fun popularMangaParse(response: Response): MangasPage {
-        val data = response.parseAs<Books>()
-
-        return MangasPage(data.entries.map(::getManga), data.page * data.limit < data.total)
-    }
-
-    // Search
-
-    override fun getFilterList(): FilterList = getFilters()
-
-    override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
-        return when {
-            query.startsWith(PREFIX_ID_KEY_SEARCH) -> {
-                val ipk = query.removePrefix(PREFIX_ID_KEY_SEARCH)
-                val response = client.newCall(GET("$apiBooksUrl/detail/$ipk", lazyHeaders)).execute()
-                Observable.just(searchMangaParse2(response))
-            }
-            else -> super.fetchSearchManga(page, query, filters)
-        }
-    }
-
-    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
-        val url = apiBooksUrl.toHttpUrl().newBuilder().apply {
-            val terms: MutableList<String> = mutableListOf()
-
-            if (lang != "all") terms += "language!:\"$searchLang\""
-            filters.forEach { filter ->
-                when (filter) {
-                    is SortFilter -> addQueryParameter("sort", filter.getValue())
-
-                    is CategoryFilter -> {
-                        val activeFilter = filter.state.filter { it.state }
-                        if (activeFilter.isNotEmpty()) {
-                            addQueryParameter("cat", activeFilter.sumOf { it.value }.toString())
-                        }
-                    }
-
-                    is TextFilter -> {
-                        if (filter.state.isNotEmpty()) {
-                            val tags = filter.state.split(",").filter(String::isNotBlank).joinToString(",")
-                            if (tags.isNotBlank()) {
-                                terms += "${filter.type}!:" + if (filter.type == "pages") tags else '"' + tags + '"'
-                            }
-                        }
-                    }
-                    else -> {}
-                }
-            }
-            if (query.isNotEmpty()) terms.add("title:\"$query\"")
-            if (terms.isNotEmpty()) addQueryParameter("s", terms.joinToString(" "))
-            addQueryParameter("page", page.toString())
-        }.build()
-
-        return GET(url, lazyHeaders)
-    }
-
-    override fun searchMangaParse(response: Response) = popularMangaParse(response)
-
-    private fun searchMangaParse2(response: Response): MangasPage {
-        val entry = response.parseAs<MangaEntry>()
-
-        return MangasPage(
-            listOf(
-                SManga.create().apply {
-                    setUrlWithoutDomain("${entry.id}/${entry.public_key}")
-                    title = if (remadd()) entry.title.shortenTitle() else entry.title
-                    thumbnail_url = entry.thumbnails.base + entry.thumbnails.main.path
-                },
-            ),
-            false,
-        )
-    }
-    // Details
-
-    override fun mangaDetailsRequest(manga: SManga): Request {
-        return GET("$apiBooksUrl/detail/${manga.url}", lazyHeaders)
-    }
-
-    override fun mangaDetailsParse(response: Response): SManga {
-        return response.parseAs<MangaEntry>().toSManga()
-    }
-
-    private val dateReformat = SimpleDateFormat("EEEE, d MMM yyyy HH:mm (z)", Locale.ENGLISH)
-    private fun MangaEntry.toSManga() = SManga.create().apply {
-        val artists = mutableListOf<String>()
-        val circles = mutableListOf<String>()
-        val parodies = mutableListOf<String>()
-        val magazines = mutableListOf<String>()
-        val characters = mutableListOf<String>()
-        val cosplayers = mutableListOf<String>()
-        val females = mutableListOf<String>()
-        val males = mutableListOf<String>()
-        val mixed = mutableListOf<String>()
-        val other = mutableListOf<String>()
-        val uploaders = mutableListOf<String>()
-        val tags = mutableListOf<String>()
-        for (tag in this@toSManga.tags) {
-            when (tag.namespace) {
-                1 -> artists.add(tag.name)
-                2 -> circles.add(tag.name)
-                3 -> parodies.add(tag.name)
-                4 -> magazines.add(tag.name)
-                5 -> characters.add(tag.name)
-                6 -> cosplayers.add(tag.name)
-                7 -> tag.name.takeIf { it != "anonymous" }?.let { uploaders.add(it) }
-                8 -> males.add(tag.name + " ♂")
-                9 -> females.add(tag.name + " ♀")
-                10 -> mixed.add(tag.name)
-                12 -> other.add(tag.name)
-                else -> tags.add(tag.name)
-            }
-        }
-
-        var appended = false
-        fun List<String>.joinAndCapitalizeEach(): String? = this.emptyToNull()?.joinToString { it.capitalizeEach() }?.apply { appended = true }
-        title = if (remadd()) this@toSManga.title.shortenTitle() else this@toSManga.title
-
-        author = (circles.emptyToNull() ?: artists).joinToString { it.capitalizeEach() }
-        artist = artists.joinToString { it.capitalizeEach() }
-        genre = (tags + males + females + mixed + other).joinToString { it.capitalizeEach() }
-        description = buildString {
-            circles.joinAndCapitalizeEach()?.let {
-                append("Circles: ", it, "\n")
-            }
-            uploaders.joinAndCapitalizeEach()?.let {
-                append("Uploaders: ", it, "\n")
-            }
-            magazines.joinAndCapitalizeEach()?.let {
-                append("Magazines: ", it, "\n")
-            }
-            cosplayers.joinAndCapitalizeEach()?.let {
-                append("Cosplayers: ", it, "\n")
-            }
-            parodies.joinAndCapitalizeEach()?.let {
-                append("Parodies: ", it, "\n")
-            }
-            characters.joinAndCapitalizeEach()?.let {
-                append("Characters: ", it, "\n")
-            }
-
-            if (appended) append("\n")
-
-            try {
-                append("Posted: ", dateReformat.format(created_at), "\n")
-            } catch (_: Exception) {}
-
-            val dataKey = when (quality()) {
-                "1600" -> data.`1600` ?: data.`1280` ?: data.`0`
-                "1280" -> data.`1280` ?: data.`1600` ?: data.`0`
-                "980" -> data.`980` ?: data.`1280` ?: data.`0`
-                "780" -> data.`780` ?: data.`980` ?: data.`0`
-                else -> data.`0`
-            }
-            append("Size: ", dataKey.readableSize(), "\n\n")
-            append("Pages: ", thumbnails.entries.size, "\n\n")
-        }
-        status = SManga.COMPLETED
-        update_strategy = UpdateStrategy.ONLY_FETCH_ONCE
-        initialized = true
-    }
-
-    private fun String.capitalizeEach() = this.split(" ").joinToString(" ") { s ->
-        s.replaceFirstChar { sr ->
-            if (sr.isLowerCase()) sr.titlecase(Locale.getDefault()) else sr.toString()
-        }
-    }
-
-    private fun <T> Collection<T>.emptyToNull(): Collection<T>? {
-        return this.ifEmpty { null }
-    }
-
-    override fun getMangaUrl(manga: SManga) = "$baseUrl/g/${manga.url}"
-
-    // Chapter
-
-    override fun chapterListRequest(manga: SManga): Request {
-        return GET("$apiBooksUrl/detail/${manga.url}", lazyHeaders)
-    }
-
-    override fun chapterListParse(response: Response): List<SChapter> {
-        val manga = response.parseAs<MangaEntry>()
-        return listOf(
-            SChapter.create().apply {
-                name = "Chapter"
-                url = "${manga.id}/${manga.public_key}"
-                date_upload = (manga.updated_at ?: manga.created_at)
-            },
-        )
-    }
-
-    override fun getChapterUrl(chapter: SChapter) = "$baseUrl/g/${chapter.url}"
-
-    // Page List
-
-    override fun pageListRequest(chapter: SChapter): Request {
-        return GET("$apiBooksUrl/detail/${chapter.url}", lazyHeaders)
-    }
-
-    override fun pageListParse(response: Response): List<Page> {
-        val mangaEntry = response.parseAs<MangaEntry>()
-        val imagesInfo = getImagesByMangaEntry(mangaEntry)
-
-        return imagesInfo.first.entries.mapIndexed { index, image ->
-            Page(index, imageUrl = "${imagesInfo.first.base}/${image.path}?w=${imagesInfo.second}")
-        }
-    }
-
-    override fun imageRequest(page: Page): Request {
-        return GET(page.imageUrl!!, lazyHeaders)
-    }
-
-    override fun imageUrlParse(response: Response) = throw UnsupportedOperationException()
-
-    // Settings
-
-    override fun setupPreferenceScreen(screen: PreferenceScreen) {
-        ListPreference(screen.context).apply {
-            key = PREF_IMAGERES
-            title = "Image Resolution"
-            entries = arrayOf("780x", "980x", "1280x", "1600x", "Original")
-            entryValues = arrayOf("780", "980", "1280", "1600", "0")
-            summary = "%s"
-            setDefaultValue("1280")
-        }.also(screen::addPreference)
-
-        SwitchPreferenceCompat(screen.context).apply {
-            key = PREF_REM_ADD
-            title = "Remove additional information in title"
-            summary = "Remove anything in brackets from manga titles.\n" +
-                "Reload manga to apply changes to loaded manga."
-            setDefaultValue(false)
-        }.also(screen::addPreference)
-    }
-
-    private inline fun <reified T> Response.parseAs(): T {
-        return json.decodeFromString(body.string())
-    }
-
-    companion object {
-        const val PREFIX_ID_KEY_SEARCH = "id:"
-        private const val PREF_IMAGERES = "pref_image_quality"
-        private const val PREF_REM_ADD = "pref_remove_additional"
-    }
-}
+package eu.kanade.tachiyomi.extension.all.koharu
+
+import android.content.SharedPreferences
+import androidx.preference.EditTextPreference
+import androidx.preference.ListPreference
+import androidx.preference.PreferenceScreen
+import androidx.preference.SwitchPreferenceCompat
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.artistList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.circleList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.femaleList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.genreList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.getFilters
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.maleList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.mixedList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.otherList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.parodyList
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.tagsFetchAttempts
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.tagsFetched
+import eu.kanade.tachiyomi.network.GET
+import eu.kanade.tachiyomi.network.POST
+import eu.kanade.tachiyomi.network.asObservableSuccess
+import eu.kanade.tachiyomi.network.interceptor.rateLimit
+import eu.kanade.tachiyomi.source.ConfigurableSource
+import eu.kanade.tachiyomi.source.model.FilterList
+import eu.kanade.tachiyomi.source.model.MangasPage
+import eu.kanade.tachiyomi.source.model.Page
+import eu.kanade.tachiyomi.source.model.SChapter
+import eu.kanade.tachiyomi.source.model.SManga
+import eu.kanade.tachiyomi.source.online.HttpSource
+import keiyoushi.utils.getPreferencesLazy
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.json.Json
+import okhttp3.HttpUrl.Companion.toHttpUrl
+import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
+import okhttp3.OkHttpClient
+import okhttp3.Request
+import okhttp3.Response
+import rx.Observable
+import uy.kohesive.injekt.injectLazy
+import java.text.SimpleDateFormat
+import java.util.Locale
+
+class Koharu(
+    override val lang: String = "all",
+    private val searchLang: String = "",
+) : HttpSource(), ConfigurableSource {
+
+    override val name = "SchaleNetwork"
+
+    override val baseUrl = "https://schale.network"
+
+    override val id = if (lang == "en") 1484902275639232927 else super.id
+
+    private val apiUrl = baseUrl.replace("://", "://api.")
+
+    private val apiBooksUrl = "$apiUrl/books"
+
+    private val authUrl = "${baseUrl.replace("://", "://auth.")}/clearance"
+
+    override val supportsLatest = true
+
+    private val json: Json by injectLazy()
+
+    private val shortenTitleRegex = Regex("""(\[[^]]*]|[({][^)}]*[)}])""")
+    private fun String.shortenTitle() = replace(shortenTitleRegex, "").trim()
+
+    private val preferences: SharedPreferences by getPreferencesLazy()
+
+    private fun quality() = preferences.getString(PREF_IMAGERES, "1280")!!
+
+    private fun remadd() = preferences.getBoolean(PREF_REM_ADD, false)
+
+    private fun alwaysExcludeTags() = preferences.getString(PREF_EXCLUDE_TAGS, "")
+
+    private var _domainUrl: String? = null
+    internal val domainUrl: String
+        get() {
+            return _domainUrl ?: run {
+                val domain = getDomain()
+                _domainUrl = domain
+                domain
+            }
+        }
+
+    private fun getDomain(): String {
+        try {
+            val noRedirectClient = client.newBuilder().followRedirects(false).build()
+            val host = noRedirectClient.newCall(GET(baseUrl, headers)).execute()
+                .headers["Location"]?.toHttpUrlOrNull()?.host
+                ?: return baseUrl
+            return "https://$host"
+        } catch (_: Exception) {
+            return baseUrl
+        }
+    }
+
+    private val lazyHeaders by lazy {
+        headersBuilder()
+            .set("Referer", "$domainUrl/")
+            .set("Origin", domainUrl)
+            .build()
+    }
+
+    override val client: OkHttpClient = network.cloudflareClient.newBuilder()
+        .rateLimit(3)
+        .build()
+
+    private val interceptedClient: OkHttpClient
+        get() = network.cloudflareClient.newBuilder()
+            .addInterceptor(TurnstileInterceptor(client, domainUrl, authUrl, lazyHeaders["User-Agent"]))
+            .rateLimit(3)
+            .build()
+
+    private fun getManga(book: Entry) = SManga.create().apply {
+        setUrlWithoutDomain("${book.id}/${book.key}")
+        title = if (remadd()) book.title.shortenTitle() else book.title
+        thumbnail_url = book.thumbnail.path
+    }
+
+    private fun getImagesByMangaData(entry: MangaData, entryId: String, entryKey: String): Pair<ImagesInfo, String> {
+        val data = entry.data
+        fun getIPK(
+            ori: DataKey?,
+            alt1: DataKey?,
+            alt2: DataKey?,
+            alt3: DataKey?,
+            alt4: DataKey?,
+        ): Pair<Int?, String?> {
+            return Pair(
+                ori?.id ?: alt1?.id ?: alt2?.id ?: alt3?.id ?: alt4?.id,
+                ori?.key ?: alt1?.key ?: alt2?.key ?: alt3?.key ?: alt4?.key,
+            )
+        }
+        val (id, public_key) = when (quality()) {
+            "1600" -> getIPK(data.`1600`, data.`1280`, data.`0`, data.`980`, data.`780`)
+            "1280" -> getIPK(data.`1280`, data.`1600`, data.`0`, data.`980`, data.`780`)
+            "980" -> getIPK(data.`980`, data.`1280`, data.`0`, data.`1600`, data.`780`)
+            "780" -> getIPK(data.`780`, data.`980`, data.`0`, data.`1280`, data.`1600`)
+            else -> getIPK(data.`0`, data.`1600`, data.`1280`, data.`980`, data.`780`)
+        }
+
+        if (id == null || public_key == null) {
+            throw Exception("No Images Found")
+        }
+
+        val realQuality = when (id) {
+            data.`1600`?.id -> "1600"
+            data.`1280`?.id -> "1280"
+            data.`980`?.id -> "980"
+            data.`780`?.id -> "780"
+            else -> "0"
+        }
+
+        val imagesResponse = interceptedClient.newCall(GET("$apiBooksUrl/data/$entryId/$entryKey/$id/$public_key/$realQuality?crt=$token", lazyHeaders)).execute()
+        val images = imagesResponse.parseAs<ImagesInfo>() to realQuality
+        return images
+    }
+
+    // Latest
+
+    override fun latestUpdatesRequest(page: Int) = GET(
+        apiBooksUrl.toHttpUrl().newBuilder().apply {
+            addQueryParameter("page", page.toString())
+
+            val terms: MutableList<String> = mutableListOf()
+            if (lang != "all") terms += "language:\"^$searchLang$\""
+            val alwaysExcludeTags = alwaysExcludeTags()?.split(",")
+                ?.map { it.trim() }?.filter(String::isNotBlank) ?: emptyList()
+            if (alwaysExcludeTags.isNotEmpty()) {
+                terms += "tag:\"${alwaysExcludeTags.joinToString(",") { "-$it" }}\""
+            }
+            if (terms.isNotEmpty()) addQueryParameter("s", terms.joinToString(" "))
+        }.build(),
+        lazyHeaders,
+    )
+
+    override fun latestUpdatesParse(response: Response) = popularMangaParse(response)
+
+    // Popular
+
+    override fun popularMangaRequest(page: Int) = GET(
+        apiBooksUrl.toHttpUrl().newBuilder().apply {
+            addQueryParameter("sort", "8")
+            addQueryParameter("page", page.toString())
+
+            val terms: MutableList<String> = mutableListOf()
+            if (lang != "all") terms += "language:\"^$searchLang$\""
+            val alwaysExcludeTags = alwaysExcludeTags()?.split(",")
+                ?.map { it.trim() }?.filter(String::isNotBlank) ?: emptyList()
+            if (alwaysExcludeTags.isNotEmpty()) {
+                terms += "tag:\"${alwaysExcludeTags.joinToString(",") { "-$it" }}\""
+            }
+            if (terms.isNotEmpty()) addQueryParameter("s", terms.joinToString(" "))
+        }.build(),
+        lazyHeaders,
+    )
+
+    override fun popularMangaParse(response: Response): MangasPage {
+        val data = response.parseAs<Books>()
+        return MangasPage(data.entries.map(::getManga), data.page * data.limit < data.total)
+    }
+
+    // Search
+
+    override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
+        return when {
+            query.startsWith(PREFIX_ID_KEY_SEARCH) -> {
+                val ipk = query.removePrefix(PREFIX_ID_KEY_SEARCH)
+                val response = client.newCall(GET("$apiBooksUrl/detail/$ipk", lazyHeaders)).execute()
+                Observable.just(
+                    MangasPage(listOf(mangaDetailsParse(response)), false),
+                )
+            }
+            else -> super.fetchSearchManga(page, query, filters)
+        }
+    }
+
+    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
+        val url = apiBooksUrl.toHttpUrl().newBuilder().apply {
+            val terms: MutableList<String> = mutableListOf()
+            val includedTags: MutableList<Int> = mutableListOf()
+            val excludedTags: MutableList<Int> = mutableListOf()
+
+            if (lang != "all") terms += "language:\"^$searchLang$\""
+            val alwaysExcludeTags = alwaysExcludeTags()?.split(",")
+                ?.map { it.trim() }?.filter(String::isNotBlank) ?: emptyList()
+            if (alwaysExcludeTags.isNotEmpty()) {
+                terms += "tag:\"${alwaysExcludeTags.joinToString(",") { "-$it" }}\""
+            }
+
+            filters.forEach { filter ->
+                when (filter) {
+                    is KoharuFilters.SortFilter -> addQueryParameter("sort", filter.getValue())
+
+                    is KoharuFilters.CategoryFilter -> {
+                        val activeFilter = filter.state.filter { it.state }
+                        if (activeFilter.isNotEmpty()) {
+                            addQueryParameter("cat", activeFilter.sumOf { it.value }.toString())
+                        }
+                    }
+
+                    is KoharuFilters.TagFilter -> {
+                        includedTags += filter.state
+                            .filter { it.isIncluded() }
+                            .map { it.id }
+                        excludedTags += filter.state
+                            .filter { it.isExcluded() }
+                            .map { it.id }
+                    }
+
+                    is KoharuFilters.GenreConditionFilter -> {
+                        if (filter.state > 0) {
+                            addQueryParameter(filter.param, filter.toUriPart())
+                        }
+                    }
+
+                    is KoharuFilters.TextFilter -> {
+                        if (filter.state.isNotEmpty()) {
+                            val tags = filter.state.split(",").filter(String::isNotBlank).joinToString(",")
+                            if (tags.isNotBlank()) {
+                                terms += "${filter.type}:" + if (filter.type == "pages") tags else "\"$tags\""
+                            }
+                        }
+                    }
+                    else -> {}
+                }
+            }
+
+            if (includedTags.isNotEmpty()) {
+                addQueryParameter("include", includedTags.joinToString(","))
+            }
+            if (excludedTags.isNotEmpty()) {
+                addQueryParameter("exclude", excludedTags.joinToString(","))
+            }
+
+            if (query.isNotEmpty()) terms.add("title:\"$query\"")
+            if (terms.isNotEmpty()) addQueryParameter("s", terms.joinToString(" "))
+            addQueryParameter("page", page.toString())
+        }.build()
+
+        return GET(url, lazyHeaders)
+    }
+
+    override fun searchMangaParse(response: Response) = popularMangaParse(response)
+
+    override fun getFilterList(): FilterList {
+        launchIO { fetchTags() }
+
+        return getFilters()
+    }
+
+    private val scope = CoroutineScope(Dispatchers.IO)
+
+    private fun launchIO(block: () -> Unit) = scope.launch { block() }
+
+    /**
+     * Fetch the genres from the source to be used in the filters.
+     */
+    private fun fetchTags() {
+        if (tagsFetchAttempts < 3 && !tagsFetched) {
+            try {
+                client.newCall(
+                    GET("$apiBooksUrl/tags/filters", lazyHeaders),
+                ).execute()
+                    .use { it.parseAs<List<Filter>>() }
+                    .also {
+                        tagsFetched = true
+                    }
+                    .takeIf { it.isNotEmpty() }
+                    ?.map { it.toTag() }
+                    ?.also { tags ->
+                        genreList = tags.filterIsInstance<KoharuFilters.Genre>()
+                        femaleList = tags.filterIsInstance<KoharuFilters.Female>()
+                        maleList = tags.filterIsInstance<KoharuFilters.Male>()
+                        artistList = tags.filterIsInstance<KoharuFilters.Artist>()
+                        circleList = tags.filterIsInstance<KoharuFilters.Circle>()
+                        parodyList = tags.filterIsInstance<KoharuFilters.Parody>()
+                        mixedList = tags.filterIsInstance<KoharuFilters.Mixed>()
+                        otherList = tags.filterIsInstance<KoharuFilters.Other>()
+                    }
+            } catch (_: Exception) {
+            } finally {
+                tagsFetchAttempts++
+            }
+        }
+    }
+
+    // Details
+
+    override fun mangaDetailsRequest(manga: SManga): Request {
+        return GET("$apiBooksUrl/detail/${manga.url}", lazyHeaders)
+    }
+
+    override fun mangaDetailsParse(response: Response): SManga {
+        val mangaDetail = response.parseAs<MangaDetail>()
+        return mangaDetail.toSManga().apply {
+            setUrlWithoutDomain("${mangaDetail.id}/${mangaDetail.key}")
+            title = if (remadd()) mangaDetail.title.shortenTitle() else mangaDetail.title
+        }
+    }
+
+    override fun getMangaUrl(manga: SManga) = "$baseUrl/g/${manga.url}"
+
+    // Chapter
+
+    override fun chapterListRequest(manga: SManga): Request {
+        return GET("$apiBooksUrl/detail/${manga.url}", lazyHeaders)
+    }
+
+    override fun chapterListParse(response: Response): List<SChapter> {
+        val manga = response.parseAs<MangaDetail>()
+        return listOf(
+            SChapter.create().apply {
+                name = "Chapter"
+                url = "${manga.id}/${manga.key}"
+                date_upload = (manga.updated_at ?: manga.created_at)
+            },
+        )
+    }
+
+    override fun getChapterUrl(chapter: SChapter) = "$baseUrl/g/${chapter.url}"
+
+    // Page List
+
+    override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
+        return interceptedClient.newCall(pageListRequest(chapter))
+            .asObservableSuccess()
+            .map { response ->
+                pageListParse(response)
+            }
+    }
+
+    override fun pageListRequest(chapter: SChapter): Request {
+        return POST("$apiBooksUrl/detail/${chapter.url}?crt=$token", lazyHeaders)
+    }
+
+    override fun pageListParse(response: Response): List<Page> {
+        val mangaData = response.parseAs<MangaData>()
+        val url = response.request.url.toString()
+        val matches = Regex("""/detail/(\d+)/([a-z\d]+)""").find(url)
+        if (matches == null || matches.groupValues.size < 3) return emptyList()
+        val imagesInfo = getImagesByMangaData(mangaData, matches.groupValues[1], matches.groupValues[2])
+
+        return imagesInfo.first.entries.mapIndexed { index, image ->
+            Page(index, imageUrl = "${imagesInfo.first.base}/${image.path}?w=${imagesInfo.second}")
+        }
+    }
+
+    override fun imageRequest(page: Page): Request {
+        return GET(page.imageUrl!!, lazyHeaders)
+    }
+
+    override fun imageUrlParse(response: Response) = throw UnsupportedOperationException()
+
+    // Settings
+
+    override fun setupPreferenceScreen(screen: PreferenceScreen) {
+        ListPreference(screen.context).apply {
+            key = PREF_IMAGERES
+            title = "Image Resolution"
+            entries = arrayOf("780x", "980x", "1280x", "1600x", "Original")
+            entryValues = arrayOf("780", "980", "1280", "1600", "0")
+            summary = "%s"
+            setDefaultValue("1280")
+        }.also(screen::addPreference)
+
+        SwitchPreferenceCompat(screen.context).apply {
+            key = PREF_REM_ADD
+            title = "Remove additional information in title"
+            summary = "Remove anything in brackets from manga titles.\n" +
+                "Reload manga to apply changes to loaded manga."
+            setDefaultValue(false)
+        }.also(screen::addPreference)
+
+        EditTextPreference(screen.context).apply {
+            key = PREF_EXCLUDE_TAGS
+            title = "Tags to exclude from browse/search"
+            summary = "Separate tags with commas (,).\n" +
+                "Excluding: ${alwaysExcludeTags()}"
+        }.also(screen::addPreference)
+    }
+
+    private inline fun <reified T> Response.parseAs(): T {
+        return json.decodeFromString(body.string())
+    }
+
+    companion object {
+        const val PREFIX_ID_KEY_SEARCH = "id:"
+        private const val PREF_IMAGERES = "pref_image_quality"
+        private const val PREF_REM_ADD = "pref_remove_additional"
+        private const val PREF_EXCLUDE_TAGS = "pref_exclude_tags"
+
+        internal var token: String? = null
+        internal var authorization: String? = null
+
+        internal val dateReformat = SimpleDateFormat("EEEE, d MMM yyyy HH:mm (z)", Locale.ENGLISH)
+    }
+}
diff --git a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuDto.kt b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuDto.kt
index 579321ead..1054aff65 100644
--- a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuDto.kt
+++ b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuDto.kt
@@ -1,83 +1,209 @@
-package eu.kanade.tachiyomi.extension.all.koharu
+package eu.kanade.tachiyomi.extension.all.koharu
 
-import kotlinx.serialization.Serializable
-
-@Serializable
-class Tag(
-    var name: String,
-    var namespace: Int = 0,
-)
-
-@Serializable
-class Books(
-    val entries: List<Entry> = emptyList(),
-    val total: Int = 0,
-    val limit: Int = 0,
-    val page: Int,
-)
-
-@Serializable
-class Entry(
-    val id: Int,
-    val public_key: String,
-    val title: String,
-    val thumbnail: Thumbnail,
-)
-
-@Serializable
-class MangaEntry(
-    val id: Int,
-    val title: String,
-    val public_key: String,
-    val created_at: Long = 0L,
-    val updated_at: Long?,
-    val thumbnails: Thumbnails,
-    val tags: List<Tag> = emptyList(),
-    val data: Data,
-)
-
-@Serializable
-class Thumbnails(
-    val base: String,
-    val main: Thumbnail,
-    val entries: List<Thumbnail>,
-)
-
-@Serializable
-class Thumbnail(
-    val path: String,
-)
-
-@Serializable
-class Data(
-    val `0`: DataKey,
-    val `780`: DataKey? = null,
-    val `980`: DataKey? = null,
-    val `1280`: DataKey? = null,
-    val `1600`: DataKey? = null,
-)
-
-@Serializable
-class DataKey(
-    val id: Int? = null,
-    val size: Double = 0.0,
-    val public_key: String? = null,
-) {
-    fun readableSize() = when {
-        size >= 300 * 1000 * 1000 -> "${"%.2f".format(size / (1000.0 * 1000.0 * 1000.0))} GB"
-        size >= 100 * 1000 -> "${"%.2f".format(size / (1000.0 * 1000.0))} MB"
-        size >= 1000 -> "${"%.2f".format(size / (1000.0))} kB"
-        else -> "$size B"
-    }
-}
-
-@Serializable
-class ImagesInfo(
-    val base: String,
-    val entries: List<ImagePath>,
-)
-
-@Serializable
-class ImagePath(
-    val path: String,
-)
+import eu.kanade.tachiyomi.extension.all.koharu.Koharu.Companion.dateReformat
+import eu.kanade.tachiyomi.source.model.SManga
+import eu.kanade.tachiyomi.source.model.UpdateStrategy
+import kotlinx.serialization.Serializable
+import java.util.Locale
+
+@Serializable
+class Tag(
+    val name: String,
+    val namespace: Int = 0,
+)
+
+@Serializable
+class Filter(
+    private val id: Int,
+    private val name: String,
+    private val namespace: Int = 0,
+) {
+    fun toTag() = when (namespace) {
+        0 -> KoharuFilters.Genre(id, name)
+        1 -> KoharuFilters.Artist(id, name)
+        2 -> KoharuFilters.Circle(id, name)
+        3 -> KoharuFilters.Parody(id, name)
+        8 -> KoharuFilters.Male(id, name)
+        9 -> KoharuFilters.Female(id, name)
+        10 -> KoharuFilters.Mixed(id, name)
+        12 -> KoharuFilters.Other(id, name)
+        else -> KoharuFilters.Tag(id, name, namespace)
+    }
+}
+
+@Serializable
+class Books(
+    val entries: List<Entry> = emptyList(),
+    val total: Int = 0,
+    val limit: Int = 0,
+    val page: Int,
+)
+
+@Serializable
+class Entry(
+    val id: Int,
+    val key: String,
+    val title: String,
+    val thumbnail: Thumbnail,
+)
+
+@Serializable
+class MangaDetail(
+    val id: Int,
+    val title: String,
+    val key: String,
+    val created_at: Long = 0L,
+    val updated_at: Long?,
+    val thumbnails: Thumbnails,
+    val tags: List<Tag> = emptyList(),
+) {
+    fun toSManga() = SManga.create().apply {
+        val artists = mutableListOf<String>()
+        val circles = mutableListOf<String>()
+        val parodies = mutableListOf<String>()
+        val magazines = mutableListOf<String>()
+        val characters = mutableListOf<String>()
+        val cosplayers = mutableListOf<String>()
+        val females = mutableListOf<String>()
+        val males = mutableListOf<String>()
+        val mixed = mutableListOf<String>()
+        val language = mutableListOf<String>()
+        val other = mutableListOf<String>()
+        val uploaders = mutableListOf<String>()
+        val tags = mutableListOf<String>()
+        this@MangaDetail.tags.forEach { tag ->
+            when (tag.namespace) {
+                1 -> artists.add(tag.name)
+                2 -> circles.add(tag.name)
+                3 -> parodies.add(tag.name)
+                4 -> magazines.add(tag.name)
+                5 -> characters.add(tag.name)
+                6 -> cosplayers.add(tag.name)
+                7 -> tag.name.takeIf { it != "anonymous" }?.let { uploaders.add(it) }
+                8 -> males.add(tag.name + " ♂")
+                9 -> females.add(tag.name + " ♀")
+                10 -> mixed.add(tag.name)
+                11 -> language.add(tag.name)
+                12 -> other.add(tag.name)
+                else -> tags.add(tag.name)
+            }
+        }
+
+        var appended = false
+        fun List<String>.joinAndCapitalizeEach(): String? = this.emptyToNull()?.joinToString { it.capitalizeEach() }?.apply { appended = true }
+
+        thumbnail_url = thumbnails.base + thumbnails.main.path
+
+        author = (circles.emptyToNull() ?: artists).joinToString { it.capitalizeEach() }
+        artist = artists.joinToString { it.capitalizeEach() }
+        genre = (artists + circles + parodies + magazines + characters + cosplayers + tags + females + males + mixed + other).joinToString { it.capitalizeEach() }
+        description = buildString {
+            circles.joinAndCapitalizeEach()?.let {
+                append("Circles: ", it, "\n")
+            }
+            uploaders.joinAndCapitalizeEach()?.let {
+                append("Uploaders: ", it, "\n")
+            }
+            magazines.joinAndCapitalizeEach()?.let {
+                append("Magazines: ", it, "\n")
+            }
+            cosplayers.joinAndCapitalizeEach()?.let {
+                append("Cosplayers: ", it, "\n")
+            }
+            parodies.joinAndCapitalizeEach()?.let {
+                append("Parodies: ", it, "\n")
+            }
+            characters.joinAndCapitalizeEach()?.let {
+                append("Characters: ", it, "\n")
+            }
+
+            if (appended) append("\n")
+
+            try {
+                append("Posted: ", dateReformat.format(created_at), "\n")
+            } catch (_: Exception) {}
+
+            append("Pages: ", thumbnails.entries.size, "\n\n")
+        }
+        status = SManga.COMPLETED
+        update_strategy = UpdateStrategy.ONLY_FETCH_ONCE
+        initialized = true
+    }
+
+    private fun String.capitalizeEach() = this.split(" ").joinToString(" ") { s ->
+        s.replaceFirstChar { sr ->
+            if (sr.isLowerCase()) sr.titlecase(Locale.getDefault()) else sr.toString()
+        }
+    }
+
+    private fun <T> Collection<T>.emptyToNull(): Collection<T>? {
+        return this.ifEmpty { null }
+    }
+}
+
+@Serializable
+class MangaData(
+    val data: Data,
+    val similar: List<Entry> = emptyList(),
+) {
+    /**
+     * Return human-readable size of chapter.
+     * @param quality The quality set in PREF_IMAGERES
+     */
+    fun size(quality: String): String {
+        val dataKey = when (quality) {
+            "1600" -> data.`1600` ?: data.`1280` ?: data.`0`
+            "1280" -> data.`1280` ?: data.`1600` ?: data.`0`
+            "980" -> data.`980` ?: data.`1280` ?: data.`0`
+            "780" -> data.`780` ?: data.`980` ?: data.`0`
+            else -> data.`0`
+        }
+        return dataKey.readableSize()
+    }
+}
+
+@Serializable
+class Thumbnails(
+    val base: String,
+    val main: Thumbnail,
+    val entries: List<Thumbnail>,
+)
+
+@Serializable
+class Thumbnail(
+    val path: String,
+)
+
+@Serializable
+class Data(
+    val `0`: DataKey,
+    val `780`: DataKey? = null,
+    val `980`: DataKey? = null,
+    val `1280`: DataKey? = null,
+    val `1600`: DataKey? = null,
+)
+
+@Serializable
+class DataKey(
+    val id: Int? = null,
+    val size: Double = 0.0,
+    val key: String? = null,
+) {
+    fun readableSize() = when {
+        size >= 300 * 1000 * 1000 -> "${"%.2f".format(size / (1000.0 * 1000.0 * 1000.0))} GB"
+        size >= 100 * 1000 -> "${"%.2f".format(size / (1000.0 * 1000.0))} MB"
+        size >= 1000 -> "${"%.2f".format(size / (1000.0))} kB"
+        else -> "$size B"
+    }
+}
+
+@Serializable
+class ImagesInfo(
+    val base: String,
+    val entries: List<ImagePath>,
+)
+
+@Serializable
+class ImagePath(
+    val path: String,
+)
diff --git a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFactory.kt b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFactory.kt
index 0bcdd4be5..2cdebc21b 100644
--- a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFactory.kt
+++ b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFactory.kt
@@ -1,13 +1,13 @@
-package eu.kanade.tachiyomi.extension.all.koharu
+package eu.kanade.tachiyomi.extension.all.koharu
 
-import eu.kanade.tachiyomi.source.Source
-import eu.kanade.tachiyomi.source.SourceFactory
-
-class KoharuFactory : SourceFactory {
-    override fun createSources(): List<Source> = listOf(
-        Koharu(),
-        Koharu("en", "english"),
-        Koharu("ja", "japanese"),
-        Koharu("zh", "chinese"),
-    )
-}
+import eu.kanade.tachiyomi.source.Source
+import eu.kanade.tachiyomi.source.SourceFactory
+
+class KoharuFactory : SourceFactory {
+    override fun createSources(): List<Source> = listOf(
+        Koharu(),
+        Koharu("en", "english"),
+        Koharu("ja", "japanese"),
+        Koharu("zh", "chinese"),
+    )
+}
diff --git a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFilters.kt b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFilters.kt
index e8478fea7..8a8566d57 100644
--- a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFilters.kt
+++ b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuFilters.kt
@@ -1,51 +1,129 @@
-package eu.kanade.tachiyomi.extension.all.koharu
+package eu.kanade.tachiyomi.extension.all.koharu
 
-import eu.kanade.tachiyomi.source.model.Filter
-import eu.kanade.tachiyomi.source.model.FilterList
-
-fun getFilters(): FilterList {
-    return FilterList(
-        SortFilter("Sort by", getSortsList),
-        CategoryFilter("Category"),
-        Filter.Separator(),
-        Filter.Header("Separate tags with commas (,)"),
-        Filter.Header("Prepend with dash (-) to exclude"),
-        TextFilter("Artists", "artist"),
-        TextFilter("Magazines", "magazine"),
-        TextFilter("Publishers", "publisher"),
-        TextFilter("Characters", "character"),
-        TextFilter("Cosplayers", "cosplayer"),
-        TextFilter("Parodies", "parody"),
-        TextFilter("Circles", "circle"),
-        TextFilter("Male Tags", "male"),
-        TextFilter("Female Tags", "female"),
-        TextFilter("Tags ( Universal )", "tag"),
-        Filter.Header("Filter by pages, for example: (>20)"),
-        TextFilter("Pages", "pages"),
-    )
-}
-
-internal open class TextFilter(name: String, val type: String) : Filter.Text(name)
-internal open class SortFilter(name: String, private val vals: List<Pair<String, String>>, state: Int = 0) :
-    Filter.Select<String>(name, vals.map { it.first }.toTypedArray(), state) {
-    fun getValue() = vals[state].second
-}
-
-internal class CategoryFilter(name: String) :
-    Filter.Group<CheckBoxFilter>(
-        name,
-        listOf(
-            Pair("Manga", 2),
-            Pair("Doujinshi", 4),
-            Pair("Illustration", 8),
-        ).map { CheckBoxFilter(it.first, it.second, true) },
-    )
-internal open class CheckBoxFilter(name: String, val value: Int, state: Boolean) : Filter.CheckBox(name, state)
-
-private val getSortsList: List<Pair<String, String>> = listOf(
-    Pair("Recently Posted", "4"),
-    Pair("Title", "2"),
-    Pair("Pages", "3"),
-    Pair("Most Viewed", "8"),
-    Pair("Most Favorited", "9"),
-)
+import eu.kanade.tachiyomi.source.model.Filter
+import eu.kanade.tachiyomi.source.model.FilterList
+
+object KoharuFilters {
+    var genreList: List<Genre> = KoharuTags.genreList
+    var femaleList: List<Female> = KoharuTags.femaleList
+    var maleList: List<Male> = KoharuTags.maleList
+    var artistList: List<Artist> = KoharuTags.artistList
+    var circleList: List<Circle> = KoharuTags.circleList
+    var parodyList: List<Parody> = KoharuTags.parodyList
+    var mixedList: List<Mixed> = KoharuTags.mixedList
+    var otherList: List<Other> = KoharuTags.otherList
+
+    /**
+     * Whether tags have been fetched
+     */
+    internal var tagsFetched: Boolean = false
+
+    /**
+     * Inner variable to control how much tries the tags request was called.
+     */
+    internal var tagsFetchAttempts: Int = 0
+
+    fun getFilters(): FilterList {
+        return FilterList(
+            SortFilter("Sort by", getSortsList),
+            CategoryFilter("Category"),
+            Filter.Separator(),
+            TagFilter("Tags", genreList),
+            TagFilter("Female Tags", femaleList),
+            TagFilter("Male Tags", maleList),
+            TagFilter("Artists", artistList),
+            TagFilter("Circles", circleList),
+            TagFilter("Parodies", parodyList),
+            TagFilter("Mixed", mixedList),
+            TagFilter("Other", otherList),
+            GenreConditionFilter("Include condition", tagsConditionIncludeFilterOptions, "i"),
+            GenreConditionFilter("Exclude condition", tagsConditionExcludeFilterOptions, "e"),
+            Filter.Separator(),
+            Filter.Header("Separate tags with commas (,)"),
+            Filter.Header("Prepend with dash (-) to exclude"),
+            TextFilter("Magazines", "magazine"),
+            TextFilter("Publishers", "publisher"),
+            TextFilter("Characters", "character"),
+            TextFilter("Cosplayers", "cosplayer"),
+            Filter.Header("Filter by pages, for example: (>20)"),
+            TextFilter("Pages", "pages"),
+        )
+    }
+
+    internal open class TextFilter(name: String, val type: String) : Filter.Text(name)
+    internal open class SortFilter(
+        name: String,
+        private val vals: List<Pair<String, String>>,
+        state: Int = 0,
+    ) :
+        Filter.Select<String>(name, vals.map { it.first }.toTypedArray(), state) {
+        fun getValue() = vals[state].second
+    }
+
+    internal class CategoryFilter(name: String) :
+        Filter.Group<CheckBoxFilter>(
+            name,
+            listOf(
+                Pair("Manga", 2),
+                Pair("Doujinshi", 4),
+                Pair("Illustration", 8),
+            ).map { CheckBoxFilter(it.first, it.second, true) },
+        )
+
+    internal open class CheckBoxFilter(name: String, val value: Int, state: Boolean) :
+        Filter.CheckBox(name, state)
+
+    private val getSortsList: List<Pair<String, String>> = listOf(
+        Pair("Recently Posted", "4"),
+        Pair("Title", "2"),
+        Pair("Pages", "3"),
+        Pair("Most Viewed", "8"),
+        Pair("Most Favorited", "9"),
+    )
+
+    internal class GenreConditionFilter(
+        title: String,
+        options: List<Pair<String, String>>,
+        val param: String,
+    ) : UriPartFilter(
+        title,
+        options.toTypedArray(),
+    )
+
+    open class Tag(val id: Int, val name: String, val namespace: Int)
+    class Genre(id: Int, name: String) : Tag(id, name, namespace = 0)
+    class Artist(id: Int, name: String) : Tag(id, name, namespace = 1)
+    class Circle(id: Int, name: String) : Tag(id, name, namespace = 2)
+    class Parody(id: Int, name: String) : Tag(id, name, namespace = 3)
+    class Male(id: Int, name: String) : Tag(id, name, namespace = 8)
+    class Female(id: Int, name: String) : Tag(id, name, namespace = 9)
+    class Mixed(id: Int, name: String) : Tag(id, name, namespace = 10)
+    class Other(id: Int, name: String) : Tag(id, name, namespace = 12)
+
+    internal class TagFilter(title: String, tags: List<Tag>) :
+        Filter.Group<TagTriState>(title, tags.map { TagTriState(it.name, it.id) })
+
+    internal class TagTriState(name: String, val id: Int) : Filter.TriState(name)
+
+    open class UriPartFilter(
+        displayName: String,
+        private val vals: Array<Pair<String, String>>,
+        state: Int = 0,
+    ) :
+        Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray(), state) {
+        fun toUriPart() = vals[state].second
+    }
+
+    // https://api.schale.network/books?include=<id>,<id>&i=1&exclude=<id>,<id>&e=1
+    private val tagsConditionIncludeFilterOptions: List<Pair<String, String>> =
+        listOf(
+            "AND" to "",
+            "OR" to "1",
+        )
+
+    private val tagsConditionExcludeFilterOptions: List<Pair<String, String>> =
+        listOf(
+            "OR" to "",
+            "AND" to "1",
+        )
+}
diff --git a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuTags.kt b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuTags.kt
new file mode 100644
index 000000000..02468135f
--- /dev/null
+++ b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/KoharuTags.kt
@@ -0,0 +1,3087 @@
+package eu.kanade.tachiyomi.extension.all.koharu
+
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Artist
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Circle
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Female
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Genre
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Male
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Mixed
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Other
+import eu.kanade.tachiyomi.extension.all.koharu.KoharuFilters.Parody
+
+// https://api.schale.network/books/tags/filters
+
+// Default: tag
+// Namespace: 1 - artist
+// Namespace: 2 - circle
+// Namespace: 3 - parody
+// Namespace: 8 - male
+// Namespace: 9 - female
+// Namespace: 10 - mixed
+// Namespace: 11 - language (english, translated)
+// Namespace: 12 - other
+
+object KoharuTags {
+
+    val genreList = listOf(
+        Genre(id = 216180, name = "ahegao"),
+        Genre(id = 29, name = "anal"),
+        Genre(id = 55, name = "apron"),
+        Genre(id = 150, name = "armpit fetish"),
+        Genre(id = 5727, name = "bathhouse"),
+        Genre(id = 393, name = "bathroom"),
+        Genre(id = 25806, name = "bdsm"),
+        Genre(id = 3904, name = "beach"),
+        Genre(id = 220519, name = "beach-sale"),
+        Genre(id = 216205, name = "beauty mark"),
+        Genre(id = 23, name = "big penis"),
+        Genre(id = 2673, name = "biting"),
+        Genre(id = 75, name = "blindfold"),
+        Genre(id = 2833, name = "bloomers"),
+        Genre(id = 216179, name = "blowjob"),
+        Genre(id = 19204, name = "body swap"),
+        Genre(id = 220598, name = "body writing"),
+        Genre(id = 1457, name = "bondage"),
+        Genre(id = 216198, name = "booty"),
+        Genre(id = 188545, name = "breast sucking"),
+        Genre(id = 171768, name = "bss"),
+        Genre(id = 239, name = "bukkake"),
+        Genre(id = 1290, name = "bun hair"),
+        Genre(id = 18, name = "cheating"),
+        Genre(id = 2366, name = "cheerleader"),
+        Genre(id = 2391, name = "chikan"),
+        Genre(id = 171131, name = "childhood friends"),
+        Genre(id = 1983, name = "christmas"),
+        Genre(id = 283, name = "chubby"),
+        Genre(id = 2282, name = "comedy"),
+        Genre(id = 234, name = "cosplay"),
+        Genre(id = 170592, name = "costume"),
+        Genre(id = 220582, name = "co-workers"),
+        Genre(id = 170093, name = "crosdressing"),
+        Genre(id = 1827, name = "crossdressing"),
+        Genre(id = 1851, name = "crotch tattoo"),
+        Genre(id = 44, name = "curly hair"),
+        Genre(id = 51, name = "dark skin"),
+        Genre(id = 735, name = "deepthroat"),
+        Genre(id = 183313, name = "defloration"),
+        Genre(id = 960, name = "deity"),
+        Genre(id = 4592, name = "delinquent"),
+        Genre(id = 23474, name = "demon"),
+        Genre(id = 220644, name = "dilf"),
+        Genre(id = 220684, name = "doctor"),
+        Genre(id = 238, name = "double penetration"),
+        Genre(id = 1351, name = "elf"),
+        Genre(id = 39, name = "exhibitionism"),
+        Genre(id = 130, name = "eyebrows"),
+        Genre(id = 10359, name = "eyepatch"),
+        Genre(id = 2462, name = "face mask"),
+        Genre(id = 149, name = "facesitting"),
+        Genre(id = 187552, name = "facial"),
+        Genre(id = 9, name = "fangs"),
+        Genre(id = 449, name = "fantasy"),
+        Genre(id = 899, name = "filming"),
+        Genre(id = 291, name = "fingering"),
+        Genre(id = 220498, name = "first time"),
+        Genre(id = 241, name = "fishnets"),
+        Genre(id = 220503, name = "fivesome plus"),
+        Genre(id = 909, name = "footjob"),
+        Genre(id = 778, name = "forced"),
+        Genre(id = 352, name = "foreigner"),
+        Genre(id = 2513, name = "freckles"),
+        Genre(id = 8440, name = "genderbend"),
+        Genre(id = 175, name = "glasses"),
+        Genre(id = 183317, name = "hairy"),
+        Genre(id = 4405, name = "hairy armpit"),
+        Genre(id = 216185, name = "handjob"),
+        Genre(id = 893, name = "headphones"),
+        Genre(id = 216186, name = "heart pupils"),
+        Genre(id = 14006, name = "historical"),
+        Genre(id = 3084, name = "horns"),
+        Genre(id = 10930, name = "horror"),
+        Genre(id = 1022, name = "hot spring"),
+        Genre(id = 176320, name = "hot springs"),
+        Genre(id = 610, name = "humiliation"),
+        Genre(id = 643, name = "idol"),
+        Genre(id = 216207, name = "irodori aqua"),
+        Genre(id = 6511, name = "isekai"),
+        Genre(id = 188422, name = "kemonomimi"),
+        Genre(id = 74, name = "kimono"),
+        Genre(id = 220709, name = "kissing"),
+        Genre(id = 5447, name = "kuudere"),
+        Genre(id = 216187, name = "lactation"),
+        Genre(id = 303, name = "leg lock"),
+        Genre(id = 43, name = "light hair"),
+        Genre(id = 220484, name = "light novel"),
+        Genre(id = 216203, name = "lingerie"),
+        Genre(id = 5892, name = "lotion play"),
+        Genre(id = 406, name = "love hotel"),
+        Genre(id = 220504, name = "love potion"),
+        Genre(id = 226, name = "maid"),
+        Genre(id = 38, name = "masturbation"),
+        Genre(id = 216208, name = "m-for-milf-sale"),
+        Genre(id = 126, name = "muscles"),
+        Genre(id = 216181, name = "nakadashi"),
+        Genre(id = 398, name = "netorare"),
+        Genre(id = 1190, name = "netorase"),
+        Genre(id = 2701, name = "netori"),
+        Genre(id = 162478, name = "newhalf"),
+        Genre(id = 220631, name = "new job sale"),
+        Genre(id = 2534, name = "ninja"),
+        Genre(id = 171098, name = "non human"),
+        Genre(id = 216079, name = "ntr"),
+        Genre(id = 2359, name = "nurse"),
+        Genre(id = 7129, name = "oni"),
+        Genre(id = 11, name = "orgasm denial"),
+        Genre(id = 259, name = "orgy"),
+        Genre(id = 107, name = "osananajimi"),
+        Genre(id = 171194, name = "outdoor"),
+        Genre(id = 87, name = "outdoors"),
+        Genre(id = 538, name = "over-eye bangs"),
+        Genre(id = 1265, name = "pantyhose"),
+        Genre(id = 849, name = "pegging"),
+        Genre(id = 1041, name = "piercing"),
+        Genre(id = 216199, name = "ponytail"),
+        Genre(id = 8359, name = "pool"),
+        Genre(id = 216076, name = "pride-month-sale"),
+        Genre(id = 216184, name = "pubic hair"),
+        Genre(id = 1637, name = "qipao"),
+        Genre(id = 896, name = "rimjob"),
+        Genre(id = 22413, name = "robot"),
+        Genre(id = 220599, name = "scientist"),
+        Genre(id = 4385, name = "sci-fi"),
+        Genre(id = 220552, name = "semi-color"),
+        Genre(id = 220505, name = "shark teeth"),
+        Genre(id = 791, name = "shimapan"),
+        Genre(id = 88, name = "short hair"),
+        Genre(id = 1400, name = "sixty-nine"),
+        Genre(id = 220840, name = "smell fetish"),
+        Genre(id = 70, name = "socks"),
+        Genre(id = 220710, name = "sole female"),
+        Genre(id = 220708, name = "sole male"),
+        Genre(id = 220557, name = "spanking"),
+        Genre(id = 327, name = "spats"),
+        Genre(id = 14993, name = "spirit"),
+        Genre(id = 686, name = "sportswear"),
+        Genre(id = 41, name = "squirting"),
+        Genre(id = 33, name = "stockings"),
+        Genre(id = 3083, name = "succubus"),
+        Genre(id = 216077, name = "summer-sale"),
+        Genre(id = 187687, name = "swallowing"),
+        Genre(id = 61, name = "swimsuit"),
+        Genre(id = 6909, name = "swinging"),
+        Genre(id = 299, name = "tanlines"),
+        Genre(id = 9040, name = "tattoo"),
+        Genre(id = 62, name = "teacher"),
+        Genre(id = 5940, name = "tentacles"),
+        Genre(id = 602, name = "thigh job"),
+        Genre(id = 171161, name = "threesome"),
+        Genre(id = 220632, name = "threesomes-and-moresomes"),
+        Genre(id = 66, name = "toys"),
+        Genre(id = 220711, name = "tracksuit"),
+        Genre(id = 79059, name = "trans"),
+        Genre(id = 220707, name = "translated"),
+        Genre(id = 172, name = "tsundere"),
+        Genre(id = 10, name = "twintails"),
+        Genre(id = 3109, name = "very long hair"),
+        Genre(id = 601, name = "voyeurism"),
+        Genre(id = 74894, name = "vtuber"),
+        Genre(id = 4332, name = "waitress"),
+        Genre(id = 27837, name = "whiteout"),
+        Genre(id = 5891, name = "witch"),
+        Genre(id = 21909, name = "wrestling"),
+        Genre(id = 216182, name = "x-ray"),
+        Genre(id = 1689, name = "yandere"),
+        Genre(id = 4384, name = "zero gravity"),
+        Genre(id = 220759, name = "華語"),
+    )
+    val artistList = listOf(
+        Artist(id = 180781, name = "029"),
+        Artist(id = 216945, name = "108 gou"),
+        Artist(id = 197439, name = "1-gou"),
+        Artist(id = 16396, name = "212"),
+        Artist(id = 70636, name = "218"),
+        Artist(id = 150445, name = "23"),
+        Artist(id = 101647, name = "35 machi"),
+        Artist(id = 5965, name = "40010 prototype"),
+        Artist(id = 90469, name = "7x2"),
+        Artist(id = 28045, name = "7zu7"),
+        Artist(id = 110698, name = "88"),
+        Artist(id = 18221, name = "a-10"),
+        Artist(id = 56256, name = "ababari"),
+        Artist(id = 92033, name = "abe inori"),
+        Artist(id = 17796, name = "abe manabu"),
+        Artist(id = 26685, name = "abi"),
+        Artist(id = 103849, name = "acefishy"),
+        Artist(id = 166696, name = "achumuchi"),
+        Artist(id = 22531, name = "aduma ren"),
+        Artist(id = 130988, name = "ae"),
+        Artist(id = 41679, name = "afukuro"),
+        Artist(id = 183493, name = "agachi"),
+        Artist(id = 21139, name = "ahobaka"),
+        Artist(id = 220737, name = "ahoge kinoko"),
+        Artist(id = 3748, name = "ai"),
+        Artist(id = 198087, name = "aida maki"),
+        Artist(id = 27141, name = "aihara hanten"),
+        Artist(id = 118197, name = "aikunn8"),
+        Artist(id = 6798, name = "aimaitei umami"),
+        Artist(id = 137439, name = "aimitsu"),
+        Artist(id = 66591, name = "aimiya yuu"),
+        Artist(id = 100837, name = "ainan zero"),
+        Artist(id = 218479, name = "ainaryumu"),
+        Artist(id = 2043, name = "aiue oka"),
+        Artist(id = 18407, name = "aiya"),
+        Artist(id = 93744, name = "aja"),
+        Artist(id = 15816, name = "akagi asahito"),
+        Artist(id = 75213, name = "akagi kuro"),
+        Artist(id = 2537, name = "akai mato"),
+        Artist(id = 174501, name = "akamoto akamoto"),
+        Artist(id = 215471, name = "akano murasaki"),
+        Artist(id = 218497, name = "aka p"),
+        Artist(id = 180833, name = "akasa ai"),
+        Artist(id = 76419, name = "aka seiryuu"),
+        Artist(id = 77473, name = "akashi rokuro"),
+        Artist(id = 168105, name = "akatsuki katsuie"),
+        Artist(id = 170741, name = "akatsuki myuuto"),
+        Artist(id = 205116, name = "akausu ko"),
+        Artist(id = 150543, name = "akazawa red"),
+        Artist(id = 54971, name = "akechi shizuku"),
+        Artist(id = 37512, name = "aki"),
+        Artist(id = 220638, name = "akiba@"),
+        Artist(id = 180834, name = "akieda"),
+        Artist(id = 147683, name = "akiha@"),
+        Artist(id = 136744, name = "aki hirame"),
+        Artist(id = 11339, name = "aki kitahara"),
+        Artist(id = 171043, name = "akikusa peperon"),
+        Artist(id = 216404, name = "akino sora"),
+        Artist(id = 129035, name = "akira"),
+        Artist(id = 69552, name = "akishiro akino"),
+        Artist(id = 787, name = "akitsuki itsuki"),
+        Artist(id = 220698, name = "akitsu tombo!"),
+        Artist(id = 1198, name = "akiya akira"),
+        Artist(id = 155540, name = "aku"),
+        Artist(id = 25400, name = "akuma"),
+        Artist(id = 176496, name = "akuochisukii sensei"),
+        Artist(id = 98993, name = "akusema"),
+        Artist(id = 71860, name = "akutenkou"),
+        Artist(id = 36888, name = "alber"),
+        Artist(id = 170647, name = "alexa mahone"),
+        Artist(id = 182601, name = "allegro"),
+        Artist(id = 3990, name = "alp"),
+        Artist(id = 171073, name = "alps ichimando"),
+        Artist(id = 108141, name = "alracoco"),
+        Artist(id = 29716, name = "alto seneka"),
+        Artist(id = 25121, name = "amagaeru"),
+        Artist(id = 203984, name = "amakawa gumi"),
+        Artist(id = 180730, name = "amamitsuki"),
+        Artist(id = 201847, name = "amamiya tenko"),
+        Artist(id = 141227, name = "amane ruri"),
+        Artist(id = 169065, name = "amane sirou"),
+        Artist(id = 1026, name = "amano ameno"),
+        Artist(id = 17993, name = "amano miki"),
+        Artist(id = 56545, name = "amanuki"),
+        Artist(id = 177452, name = "amasora taichi"),
+        Artist(id = 182292, name = "amatusae"),
+        Artist(id = 44098, name = "ame arare"),
+        Artist(id = 40167, name = "ameno shigure"),
+        Artist(id = 3, name = "amezawa koma"),
+        Artist(id = 160192, name = "amiya narumi"),
+        Artist(id = 180835, name = "amu dora"),
+        Artist(id = 4933, name = "andou shuki"),
+        Artist(id = 56432, name = "anmi"),
+        Artist(id = 220630, name = "ano nimaru"),
+        Artist(id = 162939, name = "anponta"),
+        Artist(id = 218202, name = "anza yuu"),
+        Artist(id = 215829, name = "aoba"),
+        Artist(id = 31588, name = "aoba hachi"),
+        Artist(id = 5711, name = "ao banana"),
+        Artist(id = 13733, name = "aoi miharu"),
+        Artist(id = 370, name = "aoi nagisa"),
+        Artist(id = 220873, name = "aoi niwatori"),
+        Artist(id = 66626, name = "aoiro ichigou"),
+        Artist(id = 56528, name = "aomushi"),
+        Artist(id = 211348, name = "aonaga haname"),
+        Artist(id = 169415, name = "aoyama akira"),
+        Artist(id = 116650, name = "aoyama kiiro."),
+        Artist(id = 151045, name = "aozakana"),
+        Artist(id = 10463, name = "araiguma"),
+        Artist(id = 158112, name = "arai kei"),
+        Artist(id = 92332, name = "arai taiki"),
+        Artist(id = 28780, name = "arai togami"),
+        Artist(id = 16882, name = "arakure"),
+        Artist(id = 15113, name = "aramaki echizen"),
+        Artist(id = 14268, name = "aratagawa nikei"),
+        Artist(id = 105596, name = "arato asato"),
+        Artist(id = 216978, name = "are"),
+        Artist(id = 217369, name = "arekusa mahone"),
+        Artist(id = 115575, name = "ari"),
+        Artist(id = 160711, name = "arima kouichi"),
+        Artist(id = 72872, name = "arimura ario"),
+        Artist(id = 220580, name = "arimura daikon"),
+        Artist(id = 8131, name = "arinotowatari"),
+        Artist(id = 188411, name = "ariyoshi gen"),
+        Artist(id = 188600, name = "arurumo"),
+        Artist(id = 180731, name = "arutera"),
+        Artist(id = 217023, name = "asagi aya"),
+        Artist(id = 178845, name = "asahiruyou"),
+        Artist(id = 220679, name = "asakawa"),
+        Artist(id = 93486, name = "asakawa shina"),
+        Artist(id = 148470, name = "asaki takayuki"),
+        Artist(id = 164859, name = "asami aozora"),
+        Artist(id = 25437, name = "asamine tel"),
+        Artist(id = 146200, name = "asanagi"),
+        Artist(id = 220558, name = "asanagi rin"),
+        Artist(id = 206388, name = "asane ken"),
+        Artist(id = 101836, name = "asano yomichi"),
+        Artist(id = 134376, name = "asaomi shimura"),
+        Artist(id = 143096, name = "asawa"),
+        Artist(id = 120966, name = "ashina mellow"),
+        Artist(id = 91, name = "ashiomi masato"),
+        Artist(id = 95912, name = "ashizuki"),
+        Artist(id = 12239, name = "ash yokoshima"),
+        Artist(id = 29930, name = "atage"),
+        Artist(id = 41292, name = "awata mokane"),
+        Artist(id = 19849, name = "awayume"),
+        Artist(id = 149551, name = "ayakase chiyoko"),
+        Artist(id = 170882, name = "ayakawa riku"),
+        Artist(id = 32289, name = "ayaki"),
+        Artist(id = 180784, name = "ayamy"),
+        Artist(id = 188161, name = "ayanakitori"),
+        Artist(id = 136, name = "ayane"),
+        Artist(id = 182150, name = "ayano baru"),
+        Artist(id = 110109, name = "ayano rena"),
+        Artist(id = 29017, name = "ayase atori"),
+        Artist(id = 122266, name = "ayatori"),
+        Artist(id = 37115, name = "ayuma sayu"),
+        Artist(id = 138511, name = "azarashi"),
+        Artist(id = 143566, name = "azegami"),
+        Artist(id = 25206, name = "azuki yui"),
+        Artist(id = 1684, name = "azuma tesshin"),
+        Artist(id = 134573, name = "azumi kyohei"),
+        Artist(id = 180732, name = "azusa"),
+        Artist(id = 220629, name = "azusa kina"),
+        Artist(id = 178212, name = "baa"),
+        Artist(id = 220738, name = "babangida yanagida"),
+        Artist(id = 4314, name = "baksheesh at"),
+        Artist(id = 5833, name = "bakuya"),
+        Artist(id = 171201, name = "bambi"),
+        Artist(id = 217296, name = "ban"),
+        Artist(id = 149694, name = "bang-you"),
+        Artist(id = 220871, name = "banjyaku"),
+        Artist(id = 33991, name = "ban kazuyasu"),
+        Artist(id = 13139, name = "bareisho"),
+        Artist(id = 150105, name = "barlun"),
+        Artist(id = 17749, name = "baruto naisu"),
+        Artist(id = 124288, name = "baryu"),
+        Artist(id = 14834, name = "batsu"),
+        Artist(id = 217902, name = "bekotarou"),
+        Artist(id = 115, name = "benantoka"),
+        Artist(id = 23112, name = "benimura karu"),
+        Artist(id = 163417, name = "benzou"),
+        Artist(id = 67969, name = "berose"),
+        Artist(id = 220875, name = "betty"),
+        Artist(id = 50047, name = "b-ginga"),
+        Artist(id = 43276, name = "bibi"),
+        Artist(id = 23263, name = "bifidus"),
+        Artist(id = 216038, name = "billion"),
+        Artist(id = 166396, name = "binto"),
+        Artist(id = 40955, name = "blman"),
+        Artist(id = 219113, name = "blue gk"),
+        Artist(id = 7929, name = "bobobo"),
+        Artist(id = 216026, name = "bodoyama"),
+        Artist(id = 45674, name = "bonnie"),
+        Artist(id = 14998, name = "bonza"),
+        Artist(id = 146516, name = "booch"),
+        Artist(id = 211866, name = "bori hori"),
+        Artist(id = 830, name = "bosshi"),
+        Artist(id = 17644, name = "bota mochito"),
+        Artist(id = 192207, name = "bouhatei"),
+        Artist(id = 4573, name = "bowcan"),
+        Artist(id = 220512, name = "boxreeema"),
+        Artist(id = 220896, name = "broiler"),
+        Artist(id = 40842, name = "bubuzuke"),
+        Artist(id = 177218, name = "bukatsu"),
+        Artist(id = 216090, name = "bukuro yamada"),
+        Artist(id = 9572, name = "bun"),
+        Artist(id = 51013, name = "buranran"),
+        Artist(id = 218170, name = "butachang"),
+        Artist(id = 137238, name = "butatamako"),
+        Artist(id = 217614, name = "butayaro pork"),
+        Artist(id = 7418, name = "butcha-u"),
+        Artist(id = 117772, name = "camonome"),
+        Artist(id = 125373, name = "can tamax"),
+        Artist(id = 216040, name = "cardinal"),
+        Artist(id = 220589, name = "castle akumerou"),
+        Artist(id = 220624, name = "catking"),
+        Artist(id = 219945, name = "chabashira tatsukichi"),
+        Artist(id = 144689, name = "chanmugi"),
+        Artist(id = 98169, name = "chano mina"),
+        Artist(id = 66280, name = "chan shiden"),
+        Artist(id = 106759, name = "chiba toshirou"),
+        Artist(id = 218391, name = "chicke iii"),
+        Artist(id = 14100, name = "chika"),
+        Artist(id = 126087, name = "chiku"),
+        Artist(id = 151317, name = "chilt"),
+        Artist(id = 103103, name = "▲ chimaki"),
+        Artist(id = 168106, name = "chimosaku"),
+        Artist(id = 12693, name = "chimple hotter"),
+        Artist(id = 154975, name = "chin"),
+        Artist(id = 215000, name = "chinetsu"),
+        Artist(id = 175642, name = "chinpoki"),
+        Artist(id = 212990, name = "chinzurina"),
+        Artist(id = 73415, name = "chipa"),
+        Artist(id = 216096, name = "chiri"),
+        Artist(id = 177144, name = "chirinu iroha"),
+        Artist(id = 30524, name = "chiune"),
+        Artist(id = 151455, name = "chiyami"),
+        Artist(id = 2750, name = "chobipero"),
+        Artist(id = 220490, name = "chochomi"),
+        Artist(id = 208753, name = "chocobeam"),
+        Artist(id = 216080, name = "chocoro"),
+        Artist(id = 154412, name = "chocovanilla"),
+        Artist(id = 145219, name = "choipiro"),
+        Artist(id = 100181, name = "chorimokki"),
+        Artist(id = 7227, name = "chouzetsu bishoujo mine"),
+        Artist(id = 183352, name = "chro"),
+        Artist(id = 29740, name = "chupimaro"),
+        Artist(id = 108099, name = "chuunen"),
+        Artist(id = 159849, name = "clover"),
+        Artist(id = 120954, name = "cobra no woyatsu"),
+        Artist(id = 220547, name = "coffee kizoku"),
+        Artist(id = 198089, name = "collagen"),
+        Artist(id = 119068, name = "comichipota"),
+        Artist(id = 84039, name = "commamion"),
+        Artist(id = 217843, name = "como"),
+        Artist(id = 185504, name = "cotton"),
+        Artist(id = 15613, name = "coupe"),
+        Artist(id = 97862, name = "crew"),
+        Artist(id = 173981, name = "crimson"),
+        Artist(id = 166451, name = "crimson crown"),
+        Artist(id = 114373, name = "croriin"),
+        Artist(id = 144319, name = "cucchiore"),
+        Artist(id = 157923, name = "cuck manga j\u0026w"),
+        Artist(id = 218480, name = "cup-chan"),
+        Artist(id = 7074, name = "curie"),
+        Artist(id = 14088, name = "cuvie"),
+        Artist(id = 150704, name = "cyberunique"),
+        Artist(id = 156932, name = "cyclone"),
+        Artist(id = 4631, name = "dagashi"),
+        Artist(id = 113069, name = "daiji"),
+        Artist(id = 160193, name = "daisuke hiyama"),
+        Artist(id = 33898, name = "dam"),
+        Artist(id = 83636, name = "danchino"),
+        Artist(id = 8746, name = "dancyo"),
+        Artist(id = 144016, name = "daniku"),
+        Artist(id = 175405, name = "danimaru"),
+        Artist(id = 123436, name = "danrenji"),
+        Artist(id = 98983, name = "danshiro"),
+        Artist(id = 152017, name = "darabuchi"),
+        Artist(id = 164706, name = "dark†zone"),
+        Artist(id = 200291, name = "darunekohanten"),
+        Artist(id = 119274, name = "dasui*"),
+        Artist(id = 93795, name = "dawarishi"),
+        Artist(id = 153782, name = "de"),
+        Artist(id = 155441, name = "deep valley"),
+        Artist(id = 180736, name = "deko"),
+        Artist(id = 116184, name = "dekosuke 18gou"),
+        Artist(id = 100265, name = "delta nine"),
+        Artist(id = 156297, name = "denchi"),
+        Artist(id = 25786, name = "derauea"),
+        Artist(id = 220876, name = "dermar"),
+        Artist(id = 39685, name = "desumokun"),
+        Artist(id = 183701, name = "dharker studios"),
+        Artist(id = 25294, name = "diathorn"),
+        Artist(id = 12483, name = "dibi"),
+        Artist(id = 10496, name = "dicca suemitsu"),
+        Artist(id = 67501, name = "diisuke"),
+        Artist(id = 108772, name = "dikk0"),
+        Artist(id = 3101, name = "distance"),
+        Artist(id = 18143, name = "dobato"),
+        Artist(id = 198248, name = "dochashiko"),
+        Artist(id = 120838, name = "doemutan"),
+        Artist(id = 219570, name = "doji ro"),
+        Artist(id = 151562, name = "doku denpa"),
+        Artist(id = 217106, name = "dokurosan"),
+        Artist(id = 58109, name = "don"),
+        Artist(id = 193220, name = "donden"),
+        Artist(id = 85982, name = "dopikasu-chan"),
+        Artist(id = 220645, name = "doppel"),
+        Artist(id = 138403, name = "doranoyama"),
+        Artist(id = 220536, name = "dorozumi"),
+        Artist(id = 220649, name = "dosojin"),
+        Artist(id = 54479, name = "dotsuco"),
+        Artist(id = 306, name = "doumou"),
+        Artist(id = 180787, name = "doushima"),
+        Artist(id = 105458, name = "doxy"),
+        Artist(id = 161844, name = "dozamura"),
+        Artist(id = 91208, name = "dramus"),
+        Artist(id = 174069, name = "dr. p"),
+        Artist(id = 180788, name = "dsmile"),
+        Artist(id = 20828, name = "dynamite moca"),
+        Artist(id = 165215, name = "dytm"),
+        Artist(id = 122357, name = "e9"),
+        Artist(id = 220893, name = "ebi193"),
+        Artist(id = 54406, name = "ebina ebi"),
+        Artist(id = 1565, name = "ebi shri"),
+        Artist(id = 219714, name = "ebi top"),
+        Artist(id = 78700, name = "echigoya takeru"),
+        Artist(id = 168811, name = "eclipse"),
+        Artist(id = 220266, name = "eco heeky"),
+        Artist(id = 171342, name = "eda"),
+        Artist(id = 13899, name = "edogawa roman"),
+        Artist(id = 104042, name = "ee"),
+        Artist(id = 197795, name = "efuefu"),
+        Artist(id = 4155, name = "eguchi jaws"),
+        Artist(id = 170787, name = "eigetu"),
+        Artist(id = 17041, name = "eikichi"),
+        Artist(id = 9329, name = "eizan"),
+        Artist(id = 5175, name = "ekakibit"),
+        Artist(id = 26935, name = "electric sheep"),
+        Artist(id = 220647, name = "eltoria"),
+        Artist(id = 176753, name = "ema"),
+        Artist(id = 27863, name = "emily"),
+        Artist(id = 105514, name = "emu"),
+        Artist(id = 170, name = "e-musu aki"),
+        Artist(id = 31727, name = "endou hiroto"),
+        Artist(id = 63032, name = "eneko"),
+        Artist(id = 220929, name = "enishi"),
+        Artist(id = 151706, name = "ennorei"),
+        Artist(id = 47563, name = "eno"),
+        Artist(id = 215967, name = "enoka"),
+        Artist(id = 83414, name = "enoki"),
+        Artist(id = 152904, name = "enokippu"),
+        Artist(id = 217705, name = "eno yukimi"),
+        Artist(id = 16950, name = "enuhani"),
+        Artist(id = 38118, name = "eo masaka"),
+        Artist(id = 93598, name = "erect sawaru"),
+        Artist(id = 196928, name = "ereere"),
+        Artist(id = 96300, name = "erocchi"),
+        Artist(id = 113871, name = "eroi-roe"),
+        Artist(id = 44391, name = "eroki"),
+        Artist(id = 156615, name = "erotibot"),
+        Artist(id = 97107, name = "eshimoto"),
+        Artist(id = 41118, name = "esuke"),
+        Artist(id = 73731, name = "esuo"),
+        Artist(id = 114500, name = "etsuzan jakusui"),
+        Artist(id = 171003, name = "etuzan jakusui"),
+        Artist(id = 9128, name = "eudetenis"),
+        Artist(id = 14, name = "f4u"),
+        Artist(id = 220763, name = "fataaa"),
+        Artist(id = 27581, name = "fell_tale"),
+        Artist(id = 216059, name = "ffc"),
+        Artist(id = 183385, name = "flage"),
+        Artist(id = 44681, name = "flanvia"),
+        Artist(id = 140760, name = "flugel"),
+        Artist(id = 98664, name = "fly"),
+        Artist(id = 107266, name = "focke wulf"),
+        Artist(id = 171367, name = "freedom prophet"),
+        Artist(id = 52358, name = "frisuku"),
+        Artist(id = 220891, name = "fue"),
+        Artist(id = 29670, name = "fueru natto"),
+        Artist(id = 177897, name = "fuguta-ke"),
+        Artist(id = 52231, name = "fujihan"),
+        Artist(id = 2270, name = "fujimaru"),
+        Artist(id = 204530, name = "fujimoto ikura"),
+        Artist(id = 185126, name = "fujisaki chiro"),
+        Artist(id = 216254, name = "fujisaki fujiko"),
+        Artist(id = 40724, name = "fujisaki hikari"),
+        Artist(id = 220932, name = "fujisaki yuu"),
+        Artist(id = 129651, name = "fujitaku"),
+        Artist(id = 31135, name = "fujitasuku"),
+        Artist(id = 26414, name = "fujitsuna"),
+        Artist(id = 5738, name = "fujiyama"),
+        Artist(id = 189169, name = "fujizarashi"),
+        Artist(id = 157396, name = "fujoujoshi"),
+        Artist(id = 206800, name = "fukidamari"),
+        Artist(id = 6784, name = "fukumaaya"),
+        Artist(id = 30232, name = "fukuroumori"),
+        Artist(id = 83672, name = "fukuyama naoto"),
+        Artist(id = 17414, name = "fumio"),
+        Artist(id = 220689, name = "fumitsuki sou"),
+        Artist(id = 180738, name = "funatsu kazuki"),
+        Artist(id = 78926, name = "furatsu"),
+        Artist(id = 157888, name = "furisuku"),
+        Artist(id = 108632, name = "furumoto takeru"),
+        Artist(id = 1060, name = "fu-ta"),
+        Artist(id = 147729, name = "futaba yodomu"),
+        Artist(id = 66983, name = "futamine kobito"),
+        Artist(id = 121938, name = "futatan"),
+        Artist(id = 20875, name = "fuyukaza tsubasa"),
+        Artist(id = 220715, name = "fuzinoe 13b"),
+        Artist(id = 161675, name = "fuzui"),
+        Artist(id = 170228, name = "gachonjirou"),
+        Artist(id = 173723, name = "gagarin kichi"),
+        Artist(id = 31242, name = "gaien"),
+        Artist(id = 53093, name = "gamma ray"),
+        Artist(id = 76503, name = "gar"),
+        Artist(id = 189690, name = "geboku kazuaki"),
+        Artist(id = 27545, name = "gegera toshikazu"),
+        Artist(id = 93084, name = "gekka f-to"),
+        Artist(id = 181219, name = "gen"),
+        Artist(id = 39655, name = "gengorou"),
+        Artist(id = 28487, name = "gentsuki"),
+        Artist(id = 106270, name = "george hirune"),
+        Artist(id = 180739, name = "geshumaro"),
+        Artist(id = 104958, name = "geso smith"),
+        Artist(id = 61645, name = "gesundheit"),
+        Artist(id = 46073, name = "gggg"),
+        Artist(id = 160194, name = "gibuchoko"),
+        Artist(id = 25672, name = "gintarou"),
+        Artist(id = 157908, name = "ginyou haru"),
+        Artist(id = 17006, name = "girigiri mai"),
+        Artist(id = 180740, name = "giuniu"),
+        Artist(id = 186004, name = "godo kotaro"),
+        Artist(id = 157225, name = "goji ogawa"),
+        Artist(id = 66565, name = "gokubuto mayuge"),
+        Artist(id = 216082, name = "goma gorilla"),
+        Artist(id = 4662, name = "gomennasai"),
+        Artist(id = 24225, name = "gomu"),
+        Artist(id = 44899, name = "gonza"),
+        Artist(id = 13284, name = "gorgeous takarada"),
+        Artist(id = 180790, name = "gorobots"),
+        Artist(id = 82241, name = "gosaiji"),
+        Artist(id = 120768, name = "goten"),
+        Artist(id = 194286, name = "gram"),
+        Artist(id = 157318, name = "great mosu"),
+        Artist(id = 180791, name = "guchico"),
+        Artist(id = 21512, name = "guglielmo"),
+        Artist(id = 167220, name = "guhan shounen"),
+        Artist(id = 1044, name = "gujira"),
+        Artist(id = 13059, name = "gunnousa"),
+        Artist(id = 214595, name = "guremasu"),
+        Artist(id = 117415, name = "guts shihan"),
+        Artist(id = 35303, name = "g-wara"),
+        Artist(id = 2387, name = "gy"),
+        Artist(id = 180082, name = "gyutan"),
+        Artist(id = 214461, name = "hachisuto"),
+        Artist(id = 2893, name = "hachiya makoto"),
+        Artist(id = 85859, name = "hagiyoshi"),
+        Artist(id = 153345, name = "haiba nemumi"),
+        Artist(id = 220561, name = "haijima"),
+        Artist(id = 220743, name = "haika"),
+        Artist(id = 84830, name = "haitokukan"),
+        Artist(id = 74019, name = "haji"),
+        Artist(id = 6529, name = "hakano shinsir"),
+        Artist(id = 9674, name = "hakkyou daioujou"),
+        Artist(id = 41098, name = "hal"),
+        Artist(id = 759, name = "hamao"),
+        Artist(id = 175766, name = "hamidashi kanitama"),
+        Artist(id = 25214, name = "hanabi"),
+        Artist(id = 26820, name = "hanafuda sakurano"),
+        Artist(id = 145622, name = "hanaharu naruco"),
+        Artist(id = 147107, name = "hanauna"),
+        Artist(id = 180792, name = "hanekoto"),
+        Artist(id = 157238, name = "hanekumo"),
+        Artist(id = 108211, name = "happoubi jin"),
+        Artist(id = 1099, name = "hardboiled yoshiko"),
+        Artist(id = 59048, name = "haregama"),
+        Artist(id = 15762, name = "harenochiame"),
+        Artist(id = 11793, name = "harigane shinshi"),
+        Artist(id = 216259, name = "haruharu haruto"),
+        Artist(id = 27317, name = "harukichi"),
+        Artist(id = 216031, name = "harumachi uro"),
+        Artist(id = 164727, name = "harumare"),
+        Artist(id = 216057, name = "haruno manji"),
+        Artist(id = 27261, name = "harurun"),
+        Artist(id = 179206, name = "harusawa"),
+        Artist(id = 6391, name = "haru yukiko"),
+        Artist(id = 25694, name = "hashibiro kou"),
+        Artist(id = 35167, name = "hashimoto"),
+        Artist(id = 137355, name = "hashina tamaki"),
+        Artist(id = 152379, name = "hassen"),
+        Artist(id = 220921, name = "hasunoue baitsu"),
+        Artist(id = 32804, name = "hatimoto"),
+        Artist(id = 210305, name = "hatomugi munmun"),
+        Artist(id = 220601, name = "hatori kinoko"),
+        Artist(id = 188326, name = "hato tsumugi"),
+        Artist(id = 161613, name = "hattori masaki"),
+        Artist(id = 180741, name = "hayakawa akari"),
+        Artist(id = 75474, name = "hazakura satsuki"),
+        Artist(id = 72805, name = "hazu hazuki"),
+        Artist(id = 17529, name = "hazuki yuuto"),
+        Artist(id = 199992, name = "hellooo"),
+        Artist(id = 35221, name = "henkuma"),
+        Artist(id = 220856, name = "henoeno"),
+        Artist(id = 2254, name = "henreader"),
+        Artist(id = 85687, name = "henrybird"),
+        Artist(id = 1373, name = "heriyama"),
+        Artist(id = 219971, name = "hetaren"),
+        Artist(id = 157037, name = "hetata"),
+        Artist(id = 162925, name = "hidarikiki"),
+        Artist(id = 66019, name = "hidarite tarou"),
+        Artist(id = 215295, name = "hide"),
+        Artist(id = 220604, name = "hieizan oniku"),
+        Artist(id = 31491, name = "higashide irodori"),
+        Artist(id = 78764, name = "higashino mikan"),
+        Artist(id = 174981, name = "higefurai"),
+        Artist(id = 211, name = "higenamuchi"),
+        Artist(id = 64795, name = "higeta"),
+        Artist(id = 148743, name = "highlow"),
+        Artist(id = 120225, name = "hihiyama yokikana"),
+        Artist(id = 160459, name = "hiiragi popura"),
+        Artist(id = 7988, name = "himeno komomo"),
+        Artist(id = 220221, name = "himukai kyousuke"),
+        Artist(id = 180742, name = "himura kiseki"),
+        Artist(id = 133279, name = "himuro shunsuke"),
+        Artist(id = 4455, name = "hinahara emi"),
+        Artist(id = 1254, name = "hinasaki yo"),
+        Artist(id = 191133, name = "hinata aosuke"),
+        Artist(id = 26153, name = "hinazuka ryo"),
+        Artist(id = 15181, name = "hinoshita akame"),
+        Artist(id = 220854, name = "hino yamada"),
+        Artist(id = 189333, name = "hiraga daidai"),
+        Artist(id = 4725, name = "hirama hirokazu"),
+        Artist(id = 192715, name = "hiramaru akira"),
+        Artist(id = 161511, name = "hiramedousa"),
+        Artist(id = 21166, name = "hirano tetsuyuki"),
+        Artist(id = 74969, name = "hirayan"),
+        Artist(id = 7403, name = "hirno"),
+        Artist(id = 106369, name = "hirono azuma"),
+        Artist(id = 25683, name = "hiroshiki"),
+        Artist(id = 220612, name = "hiroyoshi kira"),
+        Artist(id = 220640, name = "hiroyuki"),
+        Artist(id = 1426, name = "hiroyuki sanadura"),
+        Artist(id = 70201, name = "hirune"),
+        Artist(id = 3737, name = "hiru okita"),
+        Artist(id = 53155, name = "hisagi"),
+        Artist(id = 147573, name = "hisama kumako"),
+        Artist(id = 16432, name = "hisasi"),
+        Artist(id = 14945, name = "hishigata tomaru"),
+        Artist(id = 3245, name = "hissatsukun"),
+        Artist(id = 220701, name = "hitonitachi"),
+        Artist(id = 14001, name = "hitori"),
+        Artist(id = 11595, name = "hiura r"),
+        Artist(id = 180836, name = "hiwatari rin"),
+        Artist(id = 12807, name = "hiyocco"),
+        Artist(id = 195079, name = "hiyori hamster"),
+        Artist(id = 945, name = "hiyoshi hana"),
+        Artist(id = 180794, name = "hncl"),
+        Artist(id = 194103, name = "hogeramu"),
+        Artist(id = 216054, name = "hokke"),
+        Artist(id = 2306, name = "homunculus"),
+        Artist(id = 6989, name = "hone"),
+        Artist(id = 154846, name = "honey bomb"),
+        Artist(id = 38295, name = "honryou hanaru"),
+        Artist(id = 57711, name = "hon toku"),
+        Artist(id = 31620, name = "horieros"),
+        Artist(id = 187189, name = "hori hiroaki"),
+        Artist(id = 141546, name = "horita ahan"),
+        Artist(id = 122410, name = "hoshii nasake"),
+        Artist(id = 211517, name = "hoshitani kyo"),
+        Artist(id = 103568, name = "hoshito lucky"),
+        Artist(id = 10172, name = "hota."),
+        Artist(id = 204950, name = "hoyhoy colo"),
+        Artist(id = 159351, name = "hozumi kenji"),
+        Artist(id = 8363, name = "hse"),
+        Artist(id = 176957, name = "hubrael"),
+        Artist(id = 87456, name = "hxxg"),
+        Artist(id = 6172, name = "hyji"),
+        Artist(id = 26392, name = "hyocorou"),
+        Artist(id = 216088, name = "hyougo kijima"),
+        Artist(id = 176463, name = "hyperdropkick"),
+        Artist(id = 84292, name = "ibarame hisa"),
+        Artist(id = 67675, name = "ibuki haruhi"),
+        Artist(id = 216081, name = "iburo."),
+        Artist(id = 35951, name = "iburou."),
+        Artist(id = 211344, name = "ichi"),
+        Artist(id = 6729, name = "ichiei"),
+        Artist(id = 33842, name = "ichigain"),
+        Artist(id = 4428, name = "ichigou"),
+        Artist(id = 31270, name = "ichihara hikari z"),
+        Artist(id = 106427, name = "ichihaya"),
+        Artist(id = 14053, name = "ichiko"),
+        Artist(id = 58, name = "ichimatsu"),
+        Artist(id = 141835, name = "ichimoku-san"),
+        Artist(id = 212086, name = "ichinomiya87"),
+        Artist(id = 19056, name = "ichinomiya yuu"),
+        Artist(id = 24482, name = "ichinose land"),
+        Artist(id = 119670, name = "ichi-okunen wakusei"),
+        Artist(id = 48956, name = "ichiren takushou"),
+        Artist(id = 29400, name = "ichiri"),
+        Artist(id = 37411, name = "ichiro"),
+        Artist(id = 81620, name = "idaten funisuke"),
+        Artist(id = 97489, name = "igedoaha"),
+        Artist(id = 163752, name = "iida toyoyuki"),
+        Artist(id = 6840, name = "ikematsu"),
+        Artist(id = 41097, name = "iketaki ganguten"),
+        Artist(id = 205003, name = "iketaraiku"),
+        Artist(id = 3803, name = "ikeuchi tanuma"),
+        Artist(id = 44225, name = "ikeya"),
+        Artist(id = 63710, name = "ikezaki misa"),
+        Artist(id = 180744, name = "iku"),
+        Artist(id = 41130, name = "ikuhana niiro"),
+        Artist(id = 220608, name = "imai yuumi"),
+        Artist(id = 220868, name = "ima the now"),
+        Artist(id = 4186, name = "imazon"),
+        Artist(id = 185312, name = "imotarou"),
+        Artist(id = 122817, name = "inagita"),
+        Artist(id = 27812, name = "inago"),
+        Artist(id = 219036, name = "inari"),
+        Artist(id = 61850, name = "inari mochi"),
+        Artist(id = 155984, name = "inato serere"),
+        Artist(id = 156914, name = "indo curry"),
+        Artist(id = 180795, name = "infinote"),
+        Artist(id = 137888, name = "inonaka kawazu"),
+        Artist(id = 6741, name = "inoue makito"),
+        Artist(id = 605, name = "inu"),
+        Artist(id = 4781, name = "inuburo"),
+        Artist(id = 4497, name = "inue shinsuke"),
+        Artist(id = 65413, name = "inukami inoji"),
+        Artist(id = 220905, name = "inu 犬"),
+        Artist(id = 155521, name = "inu (犬)"),
+        Artist(id = 164434, name = "iron y"),
+        Artist(id = 220639, name = "isaki uta"),
+        Artist(id = 262, name = "isao"),
+        Artist(id = 174578, name = "ishigaki takashi"),
+        Artist(id = 220559, name = "ishikarian"),
+        Artist(id = 16475, name = "ishikawa hirodi"),
+        Artist(id = 103, name = "ishikawa shisuke"),
+        Artist(id = 3044, name = "ishikei"),
+        Artist(id = 137815, name = "ishito yuhra"),
+        Artist(id = 32393, name = "isora inasa"),
+        Artist(id = 146027, name = "isya"),
+        Artist(id = 43896, name = "itami"),
+        Artist(id = 174125, name = "itaoitsuko"),
+        Artist(id = 216264, name = "itohana"),
+        Artist(id = 34561, name = "itose ikuto"),
+        Artist(id = 1114, name = "itou ei"),
+        Artist(id = 28698, name = "itou eight"),
+        Artist(id = 219037, name = "itou nanami"),
+        Artist(id = 41335, name = "itouya"),
+        Artist(id = 68185, name = "itsuki kuro"),
+        Artist(id = 12186, name = "itsutsuse"),
+        Artist(id = 128255, name = "iwami yasoya"),
+        Artist(id = 33064, name = "iwasaki yuuki"),
+        Artist(id = 182395, name = "iwashita"),
+        Artist(id = 191053, name = "iyo"),
+        Artist(id = 35455, name = "izumiya otoha"),
+        Artist(id = 22651, name = "izure"),
+        Artist(id = 155059, name = "j9"),
+        Artist(id = 158942, name = "jack"),
+        Artist(id = 34286, name = "jackie lesnick"),
+        Artist(id = 66266, name = "jagayama tarawo"),
+        Artist(id = 122380, name = "jaguchi"),
+        Artist(id = 156125, name = "jake"),
+        Artist(id = 149503, name = "jeans"),
+        Artist(id = 2851, name = "jingrock"),
+        Artist(id = 179976, name = "jinja ale"),
+        Artist(id = 75534, name = "jino"),
+        Artist(id = 98030, name = "jjune"),
+        Artist(id = 180837, name = "jonsun"),
+        Artist(id = 31015, name = "jony"),
+        Artist(id = 26805, name = "joutai ijou(doku)"),
+        Artist(id = 163655, name = "jūichi"),
+        Artist(id = 154453, name = "junshain inoue"),
+        Artist(id = 197934, name = "jury"),
+        Artist(id = 194542, name = "kaauchi"),
+        Artist(id = 23566, name = "kaba shiromi"),
+        Artist(id = 3908, name = "kaduchi"),
+        Artist(id = 67036, name = "kaenuco"),
+        Artist(id = 48663, name = "kaerunoko"),
+        Artist(id = 91893, name = "kaga akuru"),
+        Artist(id = 180838, name = "kagawa ichigo"),
+        Artist(id = 90976, name = "kaiduka"),
+        Artist(id = 275, name = "kai maruco"),
+        Artist(id = 26714, name = "kaitenfude"),
+        Artist(id = 16221, name = "kakao"),
+        Artist(id = 120429, name = "kakei kei"),
+        Artist(id = 45437, name = "kakino nashiko"),
+        Artist(id = 156443, name = "kakitsubata kanae"),
+        Artist(id = 38734, name = "kakizaki kousei"),
+        Artist(id = 103514, name = "kakunini"),
+        Artist(id = 157358, name = "kakuzato"),
+        Artist(id = 214007, name = "kakyubushi"),
+        Artist(id = 171474, name = "kamaboko"),
+        Artist(id = 203143, name = "kamakiri farm"),
+        Artist(id = 48771, name = "kamekichi"),
+        Artist(id = 179510, name = "kame ranppa hi"),
+        Artist(id = 14054, name = "kameyoshi ichiko"),
+        Artist(id = 1837, name = "kamishiro ryu"),
+        Artist(id = 26836, name = "kamitani"),
+        Artist(id = 180746, name = "kamiyama aya"),
+        Artist(id = 1756, name = "kamiya zuzu"),
+        Artist(id = 12936, name = "kamizuki shiki"),
+        Artist(id = 68199, name = "kamo"),
+        Artist(id = 220727, name = "kamo naberou"),
+        Artist(id = 220699, name = "kaname kinuco"),
+        Artist(id = 61764, name = "kanari tokusaku"),
+        Artist(id = 35740, name = "kanbayashi chiko"),
+        Artist(id = 5677, name = "kanbe"),
+        Artist(id = 25146, name = "kaneko toshiaki"),
+        Artist(id = 124515, name = "kangoku meika"),
+        Artist(id = 218649, name = "kaniguruma"),
+        Artist(id = 47847, name = "kanimura ebio"),
+        Artist(id = 157651, name = "kanju"),
+        Artist(id = 138053, name = "kanmuri"),
+        Artist(id = 15920, name = "kanna tetsuboku"),
+        Artist(id = 161303, name = "kanno takashi"),
+        Artist(id = 218439, name = "kanon ishino"),
+        Artist(id = 180798, name = "kantoku"),
+        Artist(id = 28062, name = "kanzaki maguro"),
+        Artist(id = 62627, name = "kanzume"),
+        Artist(id = 125794, name = "kapo"),
+        Artist(id = 114029, name = "kaponco taroh"),
+        Artist(id = 8653, name = "kappipe"),
+        Artist(id = 218512, name = "karaage-chan"),
+        Artist(id = 26288, name = "karakuchi choucream"),
+        Artist(id = 2611, name = "karasu"),
+        Artist(id = 205970, name = "karasu chan"),
+        Artist(id = 89756, name = "karasu-chan"),
+        Artist(id = 78, name = "karma tatsuro"),
+        Artist(id = 153422, name = "karory"),
+        Artist(id = 5555, name = "karoti"),
+        Artist(id = 6637, name = "karube guri"),
+        Artist(id = 54854, name = "kasei"),
+        Artist(id = 176741, name = "kashiwagi zonbi"),
+        Artist(id = 220726, name = "kasoku"),
+        Artist(id = 16295, name = "kasugano tobari"),
+        Artist(id = 335, name = "kasuga souichi"),
+        Artist(id = 67757, name = "kasukasu"),
+        Artist(id = 175206, name = "katanashi apollo"),
+        Artist(id = 1502, name = "katase minami"),
+        Artist(id = 19494, name = "katatsuki kei"),
+        Artist(id = 188918, name = "katoru panda"),
+        Artist(id = 3072, name = "katou rennyuu"),
+        Artist(id = 165018, name = "katsura harufumi"),
+        Artist(id = 2480, name = "katsurai yoshiaki"),
+        Artist(id = 160195, name = "katsura takada"),
+        Artist(id = 10405, name = "kätzchen"),
+        Artist(id = 3473, name = "kawahagi sakana"),
+        Artist(id = 4390, name = "kawaisaw"),
+        Artist(id = 190388, name = "kawakami masaki"),
+        Artist(id = 18464, name = "kawano masatoshi"),
+        Artist(id = 106216, name = "kawaraya"),
+        Artist(id = 201502, name = "kawasaki"),
+        Artist(id = 80890, name = "kawashima yoshio"),
+        Artist(id = 160196, name = "kaworu watashiya"),
+        Artist(id = 180799, name = "kayahara"),
+        Artist(id = 62306, name = "kayama kifumi"),
+        Artist(id = 135120, name = "kayama rim"),
+        Artist(id = 187871, name = "kayama yuichiro"),
+        Artist(id = 93958, name = "kayumidome"),
+        Artist(id = 15774, name = "kazakura"),
+        Artist(id = 184711, name = "kaza midori"),
+        Artist(id = 24699, name = "kaze no gotoku!"),
+        Artist(id = 103032, name = "kazepana"),
+        Artist(id = 106011, name = "kazuki"),
+        Artist(id = 1440, name = "kazuma muramasa"),
+        Artist(id = 220637, name = "kazutoki shiki"),
+        Artist(id = 220634, name = "kechin"),
+        Artist(id = 3004, name = "kekemotsu"),
+        Artist(id = 2588, name = "kekocha"),
+        Artist(id = 158828, name = "kemigawa"),
+        Artist(id = 7104, name = "kemuri haku"),
+        Artist(id = 29263, name = "ken-1"),
+        Artist(id = 47504, name = "kenji"),
+        Artist(id = 220483, name = "kenkou cross"),
+        Artist(id = 104793, name = "kento okayama"),
+        Artist(id = 97675, name = "keoya"),
+        Artist(id = 2502, name = "kerorin"),
+        Artist(id = 1304, name = "ketsuyuki tamon"),
+        Artist(id = 564, name = "key"),
+        Artist(id = 211121, name = "keyyan"),
+        Artist(id = 5658, name = "kiasa"),
+        Artist(id = 220712, name = "kiba satoshi"),
+        Artist(id = 8153, name = "kichihachi"),
+        Artist(id = 19750, name = "kichiroku"),
+        Artist(id = 170664, name = "kicktyan"),
+        Artist(id = 156631, name = "kid"),
+        Artist(id = 87730, name = "kidmo"),
+        Artist(id = 62307, name = "kihachi uro"),
+        Artist(id = 180800, name = "kii kanna"),
+        Artist(id = 220903, name = "kiiroi shizuku"),
+        Artist(id = 68080, name = "kiiroi tamago"),
+        Artist(id = 7264, name = "kikaider reijiro"),
+        Artist(id = 220492, name = "kikiga"),
+        Artist(id = 166476, name = "kikuichi monji"),
+        Artist(id = 43162, name = "kikuno sukemaru"),
+        Artist(id = 28566, name = "kikuta"),
+        Artist(id = 5210, name = "kima-gray"),
+        Artist(id = 19223, name = "kimi rito"),
+        Artist(id = 165905, name = "kinako yakumo"),
+        Artist(id = 70101, name = "kinata"),
+        Artist(id = 38605, name = "kink"),
+        Artist(id = 148120, name = "kin no hiyoko"),
+        Artist(id = 435, name = "kinntarou"),
+        Artist(id = 183972, name = "kinomiki"),
+        Artist(id = 80107, name = "kinoshita yuichi"),
+        Artist(id = 157861, name = "kira maru"),
+        Artist(id = 164618, name = "kiramaru"),
+        Artist(id = 168794, name = "kirei na oneesan wa suki desu kai"),
+        Artist(id = 173180, name = "kirekawa"),
+        Artist(id = 10778, name = "kirihara yuu"),
+        Artist(id = 89803, name = "kirimoto yuuji"),
+        Artist(id = 220412, name = "kirin ouji"),
+        Artist(id = 220683, name = "kirome"),
+        Artist(id = 145380, name = "kisaragi gunma"),
+        Artist(id = 66393, name = "kisaragi meg"),
+        Artist(id = 180840, name = "kisaragi yuu"),
+        Artist(id = 117919, name = "kise itsuki"),
+        Artist(id = 7880, name = "kisen"),
+        Artist(id = 1531, name = "kishikaisei"),
+        Artist(id = 220488, name = "kishizuka kenji"),
+        Artist(id = 79116, name = "kitahara eiji"),
+        Artist(id = 162667, name = "kitazato nawoki"),
+        Artist(id = 178995, name = "kitoen"),
+        Artist(id = 1877, name = "kito sakeru"),
+        Artist(id = 199761, name = "kiwami ichiman dageki"),
+        Artist(id = 16268, name = "kiyomiya ryou"),
+        Artist(id = 155630, name = "kiyose kaoru"),
+        Artist(id = 69634, name = "kiyoshiro inoue"),
+        Artist(id = 20888, name = "kizuka kazuki"),
+        Artist(id = 99350, name = "kizuki rei"),
+        Artist(id = 21361, name = "kloah13"),
+        Artist(id = 932, name = "knuckle curve"),
+        Artist(id = 220874, name = "kobachi kenichi"),
+        Artist(id = 63726, name = "kobayashi chisato"),
+        Artist(id = 180749, name = "kodachi natsu"),
+        Artist(id = 219841, name = "kodaka kazuma"),
+        Artist(id = 149298, name = "kogaku kazuya"),
+        Artist(id = 131712, name = "kogame futsu"),
+        Artist(id = 48705, name = "kohachi"),
+        Artist(id = 94012, name = "kohri"),
+        Artist(id = 184263, name = "kohri ms"),
+        Artist(id = 1792, name = "kohsaka donten"),
+        Artist(id = 104163, name = "koikawa minoru"),
+        Artist(id = 146577, name = "kojima miu"),
+        Artist(id = 2553, name = "kojima saya"),
+        Artist(id = 48171, name = "kokona"),
+        Artist(id = 9058, name = "kokonoki nao"),
+        Artist(id = 166819, name = "kokudayaka"),
+        Artist(id = 180750, name = "kokudou 12-go"),
+        Artist(id = 26857, name = "kokuryuugan"),
+        Artist(id = 220748, name = "komaturi tamago"),
+        Artist(id = 45559, name = "komezawa"),
+        Artist(id = 183563, name = "komota"),
+        Artist(id = 187354, name = "konbanwa"),
+        Artist(id = 37130, name = "konchiki"),
+        Artist(id = 215586, name = "kondo yume"),
+        Artist(id = 157213, name = "konecha"),
+        Artist(id = 86920, name = "konka"),
+        Artist(id = 157077, name = "kon-kit"),
+        Artist(id = 220894, name = "konkon tochu"),
+        Artist(id = 120581, name = "konnyaku"),
+        Artist(id = 220853, name = "konoe nanao"),
+        Artist(id = 158799, name = "konomi shikishiro"),
+        Artist(id = 106732, name = "konoshige"),
+        Artist(id = 3257, name = "konoshiro shinko"),
+        Artist(id = 183702, name = "kopi anget"),
+        Artist(id = 2780, name = "koppori nama beer"),
+        Artist(id = 137602, name = "koromotake"),
+        Artist(id = 220553, name = "korosuke"),
+        Artist(id = 60020, name = "koshino"),
+        Artist(id = 356, name = "kosuke haruhito"),
+        Artist(id = 180801, name = "kotatsu"),
+        Artist(id = 19040, name = "kotengu"),
+        Artist(id = 167469, name = "kotobuki maimu"),
+        Artist(id = 203672, name = "kotomaro"),
+        Artist(id = 164827, name = "kotoyoshi yumisuke"),
+        Artist(id = 216041, name = "kou"),
+        Artist(id = 156479, name = "kouji"),
+        Artist(id = 160627, name = "kouki kuu"),
+        Artist(id = 4715, name = "koumashiro"),
+        Artist(id = 245, name = "koume keito"),
+        Artist(id = 111546, name = "kourui"),
+        Artist(id = 107545, name = "koutarou"),
+        Artist(id = 118771, name = "koyama shigeru"),
+        Artist(id = 161558, name = "koyu"),
+        Artist(id = 12070, name = "kozakura nanane"),
+        Artist(id = 220479, name = "ktzw"),
+        Artist(id = 190208, name = "kudaraji hatsuka"),
+        Artist(id = 39957, name = "kudou hisashi"),
+        Artist(id = 180751, name = "kumanoi"),
+        Artist(id = 220696, name = "kumota chun"),
+        Artist(id = 117652, name = "kunimine yuzuki"),
+        Artist(id = 180752, name = "kuon michiyoshi"),
+        Artist(id = 151656, name = "kuratsuka riko"),
+        Artist(id = 148122, name = "kurenai yuuji"),
+        Artist(id = 8431, name = "kurimochi chizuru"),
+        Artist(id = 180753, name = "kuro"),
+        Artist(id = 152888, name = "kuroba dam"),
+        Artist(id = 155284, name = "kuroe"),
+        Artist(id = 56270, name = "kurofude anna"),
+        Artist(id = 155593, name = "kurogane satsuki"),
+        Artist(id = 12997, name = "kurohekiten"),
+        Artist(id = 728, name = "kuroiwa madoka"),
+        Artist(id = 55666, name = "kurokawa otogi"),
+        Artist(id = 554, name = "kurokoshi you"),
+        Artist(id = 220627, name = "kuron"),
+        Artist(id = 134980, name = "kuro-nyan"),
+        Artist(id = 162895, name = "kurosu gatari"),
+        Artist(id = 46476, name = "kurowa"),
+        Artist(id = 216039, name = "kuroyui"),
+        Artist(id = 171600, name = "kurumi moka"),
+        Artist(id = 20528, name = "kusada"),
+        Artist(id = 8676, name = "kusatsu terunyo"),
+        Artist(id = 29312, name = "kuunerin"),
+        Artist(id = 194379, name = "kuwai tomi"),
+        Artist(id = 27199, name = "kuze nakisu"),
+        Artist(id = 178016, name = "kuzuya"),
+        Artist(id = 26794, name = "kyockcho"),
+        Artist(id = 71042, name = "kyougoku touya"),
+        Artist(id = 99926, name = "kyou no gohan"),
+        Artist(id = 19792, name = "leafy"),
+        Artist(id = 4301, name = "leli"),
+        Artist(id = 881, name = "leonardo sixteen"),
+        Artist(id = 145654, name = "leopard"),
+        Artist(id = 220619, name = "lilith"),
+        Artist(id = 622, name = "linda"),
+        Artist(id = 86934, name = "lob☆star"),
+        Artist(id = 28384, name = "lockheart"),
+        Artist(id = 154520, name = "locon"),
+        Artist(id = 27972, name = "lolicept"),
+        Artist(id = 20694, name = "lolimate"),
+        Artist(id = 167583, name = "loopsoft"),
+        Artist(id = 157531, name = "loose"),
+        Artist(id = 156543, name = "lynus"),
+        Artist(id = 7435, name = "maakurou"),
+        Artist(id = 139330, name = "maarenka"),
+        Artist(id = 39814, name = "maban"),
+        Artist(id = 29460, name = "machimura komori"),
+        Artist(id = 149504, name = "madoguchiki"),
+        Artist(id = 140033, name = "madoka tsukumo"),
+        Artist(id = 6541, name = "madoutei"),
+        Artist(id = 180802, name = "maeda mic"),
+        Artist(id = 211549, name = "maemuki na doemu"),
+        Artist(id = 220297, name = "mafuyu"),
+        Artist(id = 4022, name = "mafuyu hemp"),
+        Artist(id = 163714, name = "magukappu"),
+        Artist(id = 61149, name = "maguro tekka don"),
+        Artist(id = 189954, name = "maid dead"),
+        Artist(id = 183703, name = "maid games"),
+        Artist(id = 216052, name = "maihara matsuge"),
+        Artist(id = 164703, name = "maimu-maimu"),
+        Artist(id = 143456, name = "majima shiroyuki"),
+        Artist(id = 5030, name = "majoccoid"),
+        Artist(id = 28510, name = "maki daikichi"),
+        Artist(id = 32527, name = "maki makio"),
+        Artist(id = 127834, name = "makin"),
+        Artist(id = 142355, name = "makina zero"),
+        Artist(id = 16363, name = "makio"),
+        Artist(id = 21341, name = "maki tatsuki"),
+        Artist(id = 6742, name = "makito"),
+        Artist(id = 42380, name = "makki"),
+        Artist(id = 5062, name = "mame denkyuu"),
+        Artist(id = 48398, name = "mame ojitan"),
+        Artist(id = 220622, name = "manial"),
+        Artist(id = 89228, name = "mankai kaika"),
+        Artist(id = 111262, name = "manno"),
+        Artist(id = 60642, name = "mantarou"),
+        Artist(id = 220216, name = "manyuu kaeru tasuke sansei"),
+        Artist(id = 148758, name = "maple"),
+        Artist(id = 211400, name = "mappadaka goutarou"),
+        Artist(id = 195043, name = "mappa ni natta"),
+        Artist(id = 49798, name = "mareo"),
+        Artist(id = 50820, name = "margamoid"),
+        Artist(id = 11002, name = "mario"),
+        Artist(id = 78304, name = "maririn"),
+        Artist(id = 27723, name = "marui maru"),
+        Artist(id = 160858, name = "maruta"),
+        Artist(id = 191919, name = "marutama negi"),
+        Artist(id = 27173, name = "maruwatarou"),
+        Artist(id = 201263, name = "mary-san"),
+        Artist(id = 84725, name = "ma-sa"),
+        Artist(id = 153692, name = "masahiro kobayashi"),
+        Artist(id = 148123, name = "masaru yajiro"),
+        Artist(id = 41597, name = "masayo"),
+        Artist(id = 74411, name = "mashiro shirako"),
+        Artist(id = 211950, name = "mashiro shiroiro"),
+        Artist(id = 6841, name = "masu"),
+        Artist(id = 220626, name = "matanoshita saguru"),
+        Artist(id = 142228, name = "matarou"),
+        Artist(id = 180754, name = "matayosi"),
+        Artist(id = 71720, name = "matsuda val"),
+        Artist(id = 220721, name = "matsuka"),
+        Artist(id = 6080, name = "matsukawa"),
+        Artist(id = 6759, name = "matsumoto drill kenkyuujo"),
+        Artist(id = 50280, name = "matsunami rumi"),
+        Artist(id = 186808, name = "matsuzono"),
+        Artist(id = 29370, name = "maumen"),
+        Artist(id = 12801, name = "maybe"),
+        Artist(id = 126742, name = "mayonaka taruho"),
+        Artist(id = 84348, name = "mayutsuba mono"),
+        Artist(id = 15796, name = "mda starou"),
+        Artist(id = 211383, name = "me"),
+        Artist(id = 103759, name = "meeo"),
+        Artist(id = 42336, name = "meika"),
+        Artist(id = 179258, name = "meisuke"),
+        Artist(id = 17516, name = "meito"),
+        Artist(id = 220889, name = "meito hoshina"),
+        Artist(id = 1293, name = "meiyamamoh"),
+        Artist(id = 6221, name = "meme50"),
+        Artist(id = 140474, name = "menbow"),
+        Artist(id = 5785, name = "menea the dog"),
+        Artist(id = 28653, name = "menoko"),
+        Artist(id = 216085, name = "mentaiko itto"),
+        Artist(id = 3675, name = "methonium"),
+        Artist(id = 219851, name = "meyto"),
+        Artist(id = 1780, name = "mg joe"),
+        Artist(id = 1074, name = "mg kurino"),
+        Artist(id = 200, name = "mgmee"),
+        Artist(id = 995, name = "michiking"),
+        Artist(id = 47225, name = "midori aoi"),
+        Artist(id = 180804, name = "midorikawa you"),
+        Artist(id = 67197, name = "midori no ruupe"),
+        Artist(id = 10451, name = "midorino tanuki"),
+        Artist(id = 101523, name = "migihaji"),
+        Artist(id = 220850, name = "migita"),
+        Artist(id = 160098, name = "miito shido"),
+        Artist(id = 48770, name = "mika"),
+        Artist(id = 64805, name = "mikaduchi"),
+        Artist(id = 2032, name = "mika mikami"),
+        Artist(id = 25809, name = "mikarin"),
+        Artist(id = 220427, name = "miki chika"),
+        Artist(id = 195213, name = "miki ooro"),
+        Artist(id = 73426, name = "mikuni mizuki"),
+        Artist(id = 156409, name = "milf shobou"),
+        Artist(id = 180805, name = "mimoza"),
+        Artist(id = 20682, name = "minagiri"),
+        Artist(id = 118604, name = "minakami mizuya"),
+        Artist(id = 18849, name = "minakuchi takashi"),
+        Artist(id = 220926, name = "minamax"),
+        Artist(id = 28741, name = "minami"),
+        Artist(id = 33757, name = "minamida usuke"),
+        Artist(id = 216045, name = "minami fumika"),
+        Artist(id = 38447, name = "minamino sazan"),
+        Artist(id = 205017, name = "minamo"),
+        Artist(id = 148771, name = "minamoto"),
+        Artist(id = 18520, name = "minasuki popuri"),
+        Artist(id = 149987, name = "minato fumi"),
+        Artist(id = 27896, name = "minato itoya"),
+        Artist(id = 56726, name = "minatomo"),
+        Artist(id = 216042, name = "minato yuu"),
+        Artist(id = 218339, name = "minazuki mikka"),
+        Artist(id = 23166, name = "minokichi"),
+        Artist(id = 71972, name = "minster"),
+        Artist(id = 159480, name = "mira"),
+        Artist(id = 214170, name = "mirudora"),
+        Artist(id = 90917, name = "misaki otoha"),
+        Artist(id = 1268, name = "misaoka"),
+        Artist(id = 396, name = "misa wasabi"),
+        Artist(id = 919, name = "miseo"),
+        Artist(id = 70492, name = "miso tanuki incan teikoku"),
+        Artist(id = 649, name = "mitsugi"),
+        Artist(id = 160958, name = "mitsuhime moka"),
+        Artist(id = 115416, name = "mitsuki"),
+        Artist(id = 33854, name = "mitsuki ponz"),
+        Artist(id = 220643, name = "mitsuko mouri"),
+        Artist(id = 198093, name = "mitsuya"),
+        Artist(id = 66732, name = "miura kazuki"),
+        Artist(id = 28464, name = "miyabi"),
+        Artist(id = 17276, name = "miyabi tatsuto"),
+        Artist(id = 211479, name = "miyahama ryo"),
+        Artist(id = 99925, name = "miyako no gohan"),
+        Artist(id = 27471, name = "miyamoto issa"),
+        Artist(id = 42917, name = "miyamoto liz"),
+        Artist(id = 125741, name = "miyazen"),
+        Artist(id = 1601, name = "miyuki yaya"),
+        Artist(id = 43027, name = "mizoguchi gelatin"),
+        Artist(id = 29997, name = "mizone"),
+        Artist(id = 216034, name = "mizue eel"),
+        Artist(id = 27911, name = "mizuhara yuu"),
+        Artist(id = 211503, name = "mizuki"),
+        Artist(id = 211669, name = "mizuki gai"),
+        Artist(id = 15860, name = "mizuki sanban"),
+        Artist(id = 92901, name = "mizuno chou"),
+        Artist(id = 148125, name = "mizuryu kei"),
+        Artist(id = 587, name = "mizusaki."),
+        Artist(id = 180755, name = "mizutame tori"),
+        Artist(id = 27666, name = "mizutani natsu"),
+        Artist(id = 163610, name = "moburaibu"),
+        Artist(id = 202880, name = "mocco"),
+        Artist(id = 216097, name = "mochi fu jin"),
+        Artist(id = 125240, name = "mochigome seikatsu"),
+        Artist(id = 11739, name = "mochi kuu usagi"),
+        Artist(id = 166414, name = "mochimako"),
+        Artist(id = 91160, name = "modare"),
+        Artist(id = 220682, name = "moeno yukiji"),
+        Artist(id = 76398, name = "mogami taketo"),
+        Artist(id = 171744, name = "mogemoge"),
+        Artist(id = 804, name = "mogg"),
+        Artist(id = 6139, name = "mogiki hayami"),
+        Artist(id = 152846, name = "mogudan"),
+        Artist(id = 89743, name = "mogullaz"),
+        Artist(id = 180841, name = "mogumo"),
+        Artist(id = 319, name = "mojarin"),
+        Artist(id = 14162, name = "moketa"),
+        Artist(id = 219990, name = "mokko ritchie"),
+        Artist(id = 20383, name = "mokufuu"),
+        Artist(id = 209928, name = "mokuyama hito"),
+        Artist(id = 7533, name = "momi"),
+        Artist(id = 178300, name = "momiji mimo"),
+        Artist(id = 3302, name = "momoduki suzu"),
+        Artist(id = 132430, name = "momoduzi suzu"),
+        Artist(id = 10596, name = "momoko"),
+        Artist(id = 191459, name = "momokumo"),
+        Artist(id = 220613, name = "momonigiri"),
+        Artist(id = 132365, name = "momonosuke"),
+        Artist(id = 40450, name = "momono yuuca"),
+        Artist(id = 80473, name = "momoyama hato"),
+        Artist(id = 105307, name = "monchan rev3"),
+        Artist(id = 193633, name = "monimonimo"),
+        Artist(id = 138970, name = "monononofu"),
+        Artist(id = 51223, name = "monoo kara"),
+        Artist(id = 15125, name = "mon-petit"),
+        Artist(id = 154927, name = "monyata"),
+        Artist(id = 180807, name = "morichika"),
+        Artist(id = 42427, name = "mori guruta"),
+        Artist(id = 57056, name = "morikoke"),
+        Artist(id = 189846, name = "morimarimo"),
+        Artist(id = 3019, name = "morimiya masayuki"),
+        Artist(id = 17953, name = "morimoto kiyona"),
+        Artist(id = 141356, name = "mori no bambi"),
+        Artist(id = 90867, name = "mori okojjo"),
+        Artist(id = 21294, name = "morishima kon"),
+        Artist(id = 95142, name = "mori sinrisk"),
+        Artist(id = 131621, name = "moriyama shijimi"),
+        Artist(id = 211364, name = "moriyama tarutaru"),
+        Artist(id = 38092, name = "motsu aki"),
+        Artist(id = 54143, name = "moyamoya"),
+        Artist(id = 111132, name = "moyori"),
+        Artist(id = 904, name = "mozu"),
+        Artist(id = 222, name = "mozuya murasaki"),
+        Artist(id = 58035, name = "mt"),
+        Artist(id = 162782, name = "mucc"),
+        Artist(id = 171764, name = "muchipan"),
+        Artist(id = 169086, name = "mugen-no-sudadokei"),
+        Artist(id = 185963, name = "mugicha world"),
+        Artist(id = 220895, name = "mukai kiyoharu"),
+        Artist(id = 126976, name = "mukimoto koko"),
+        Artist(id = 170529, name = "mumumu"),
+        Artist(id = 76644, name = "muneshiro"),
+        Artist(id = 163458, name = "munioni"),
+        Artist(id = 208696, name = "muoto"),
+        Artist(id = 220841, name = "murabito c"),
+        Artist(id = 147826, name = "murasakiiro orange"),
+        Artist(id = 33950, name = "murasaki☆nyaa"),
+        Artist(id = 220210, name = "muro"),
+        Artist(id = 40914, name = "muronaga chaashuu"),
+        Artist(id = 34590, name = "musashimaru"),
+        Artist(id = 180756, name = "musha sabu"),
+        Artist(id = 177286, name = "mushipan"),
+        Artist(id = 220771, name = "mutagawa"),
+        Artist(id = 5588, name = "mutou mato"),
+        Artist(id = 22228, name = "mutsuki haru"),
+        Artist(id = 153413, name = "mutsuno hexa"),
+        Artist(id = 576, name = "mutsutake"),
+        Artist(id = 5860, name = "mutya"),
+        Artist(id = 196138, name = "myamo"),
+        Artist(id = 82098, name = "n"),
+        Artist(id = 211729, name = "nabara shoko"),
+        Artist(id = 43096, name = "naenae"),
+        Artist(id = 1579, name = "naganoro"),
+        Artist(id = 102270, name = "nagase tooru"),
+        Artist(id = 150847, name = "nagashima chousuke"),
+        Artist(id = 14022, name = "nagayori"),
+        Artist(id = 180842, name = "nagishiro mito"),
+        Artist(id = 185058, name = "nagoyaka jirou"),
+        Artist(id = 6653, name = "naito loveca"),
+        Artist(id = 165594, name = "nakajima lupus"),
+        Artist(id = 114484, name = "nakamachi machi"),
+        Artist(id = 11576, name = "nakamura kuzuyu"),
+        Artist(id = 4542, name = "nakamura regura"),
+        Artist(id = 163019, name = "nakamura tenzin"),
+        Artist(id = 181803, name = "nakani"),
+        Artist(id = 6706, name = "nakano sora"),
+        Artist(id = 220146, name = "nako sir"),
+        Artist(id = 79449, name = "namae renraku"),
+        Artist(id = 204058, name = "namamugi"),
+        Artist(id = 180808, name = "namaniku atk"),
+        Artist(id = 974, name = "namboku"),
+        Artist(id = 131413, name = "namiki nazu"),
+        Artist(id = 116455, name = "naminori kamome"),
+        Artist(id = 7134, name = "namonashi"),
+        Artist(id = 107739, name = "nana"),
+        Artist(id = 86490, name = "nanae"),
+        Artist(id = 1159, name = "nana-g"),
+        Artist(id = 176703, name = "nanairo seven"),
+        Artist(id = 2321, name = "nanamiya tsugumi"),
+        Artist(id = 76754, name = "nanamoto"),
+        Artist(id = 44379, name = "nanao"),
+        Artist(id = 819, name = "nanao yukiji"),
+        Artist(id = 180843, name = "nanase miri"),
+        Artist(id = 19241, name = "nanase mizuho"),
+        Artist(id = 1641, name = "nanase takashi"),
+        Artist(id = 88947, name = "nanatsuda"),
+        Artist(id = 194752, name = "nanbo"),
+        Artist(id = 27383, name = "nanigawa rui"),
+        Artist(id = 123101, name = "nanita"),
+        Artist(id = 12880, name = "nannpu"),
+        Artist(id = 220869, name = "nao"),
+        Artist(id = 148126, name = "naokame"),
+        Artist(id = 211752, name = "naop"),
+        Artist(id = 2952, name = "napata"),
+        Artist(id = 105160, name = "narii ikoni"),
+        Artist(id = 65496, name = "narita koh"),
+        Artist(id = 49817, name = "narumi suzune"),
+        Artist(id = 149391, name = "narusawa kei"),
+        Artist(id = 168109, name = "narushima godou"),
+        Artist(id = 203997, name = "narushima kanna"),
+        Artist(id = 25272, name = "nashipasuta"),
+        Artist(id = 64658, name = "natsuhiko"),
+        Artist(id = 772, name = "natsuki kiyohito"),
+        Artist(id = 185585, name = "natsuki marina"),
+        Artist(id = 718, name = "natsumi iroha"),
+        Artist(id = 53608, name = "natsuno io"),
+        Artist(id = 14822, name = "natsuo wataru"),
+        Artist(id = 176693, name = "natsuyoshi"),
+        Artist(id = 15471, name = "navier haruka 2t"),
+        Artist(id = 220919, name = "nawofu"),
+        Artist(id = 4883, name = "necrosmos"),
+        Artist(id = 152064, name = "nectar"),
+        Artist(id = 2188, name = "neet"),
+        Artist(id = 153539, name = "neginegio"),
+        Artist(id = 220897, name = "negito ron"),
+        Artist(id = 145040, name = "neko denryoku"),
+        Artist(id = 210850, name = "nekoderu"),
+        Artist(id = 148892, name = "nekoi hikaru"),
+        Artist(id = 21206, name = "nekomata naomi"),
+        Artist(id = 153453, name = "nekorotanuki"),
+        Artist(id = 117294, name = "neko@ruko"),
+        Artist(id = 67815, name = "nekoyama kushitarou"),
+        Artist(id = 75129, name = "nemu"),
+        Artist(id = 149324, name = "nemui neru"),
+        Artist(id = 210107, name = "nemui nezu"),
+        Artist(id = 43332, name = "neo hatachi"),
+        Artist(id = 220603, name = "neromashin"),
+        Artist(id = 105102, name = "nerotarou."),
+        Artist(id = 220717, name = "neshia"),
+        Artist(id = 28156, name = "netoro morikon"),
+        Artist(id = 220904, name = "nezuminobo"),
+        Artist(id = 167080, name = "nibo niboshi"),
+        Artist(id = 57046, name = "nicoby"),
+        Artist(id = 107053, name = "nicolai no yome"),
+        Artist(id = 168973, name = "nico-pun-nise"),
+        Artist(id = 131997, name = "nigesapo"),
+        Artist(id = 1087, name = "niimaru yuu"),
+        Artist(id = 20841, name = "nijou katame"),
+        Artist(id = 220596, name = "niki"),
+        Artist(id = 103627, name = "nikubou maranoshin"),
+        Artist(id = 216074, name = "nikuo"),
+        Artist(id = 187114, name = "niku to gohan"),
+        Artist(id = 110626, name = "ningenjiru"),
+        Artist(id = 8324, name = "ninoko"),
+        Artist(id = 8944, name = "nippa takahide"),
+        Artist(id = 411, name = "niro"),
+        Artist(id = 72940, name = "nise"),
+        Artist(id = 180757, name = "nishieda"),
+        Artist(id = 345, name = "nishi iori"),
+        Artist(id = 162853, name = "nishiki ai"),
+        Artist(id = 158012, name = "nishimaki tohru"),
+        Artist(id = 32346, name = "nishio"),
+        Artist(id = 180844, name = "nishizawa 5mm"),
+        Artist(id = 72057, name = "nishizawa mizuki"),
+        Artist(id = 180809, name = "noco"),
+        Artist(id = 212721, name = "nocori"),
+        Artist(id = 94830, name = "nogiwa kaede"),
+        Artist(id = 218457, name = "no.gomes"),
+        Artist(id = 2837, name = "nohito"),
+        Artist(id = 48305, name = "noise"),
+        Artist(id = 17445, name = "nokin"),
+        Artist(id = 33430, name = "nokoppa"),
+        Artist(id = 209425, name = "nompang"),
+        Artist(id = 147340, name = "nomu"),
+        Artist(id = 198094, name = "nomu-tea"),
+        Artist(id = 1821, name = "nonaka tama"),
+        Artist(id = 11235, name = "non☆non"),
+        Artist(id = 220742, name = "nonogi"),
+        Artist(id = 180810, name = "nonokuro"),
+        Artist(id = 202729, name = "nontaro nonjiro"),
+        Artist(id = 35963, name = "noragami souta"),
+        Artist(id = 9185, name = "norasuko"),
+        Artist(id = 155607, name = "norigorou"),
+        Artist(id = 3341, name = "norinko"),
+        Artist(id = 157121, name = "nosa"),
+        Artist(id = 163258, name = "nosekichiku"),
+        Artist(id = 220772, name = "novice tori"),
+        Artist(id = 4687, name = "nozi"),
+        Artist(id = 189055, name = "ntntgngn"),
+        Artist(id = 154709, name = "ntrobo"),
+        Artist(id = 116730, name = "nukunuku"),
+        Artist(id = 38305, name = "nunnu"),
+        Artist(id = 216043, name = "nunogoshi taito"),
+        Artist(id = 204674, name = "nurumayu"),
+        Artist(id = 165934, name = "nusmusbim"),
+        Artist(id = 158925, name = "nyanko"),
+        Artist(id = 10747, name = "nylon"),
+        Artist(id = 106667, name = "obmas"),
+        Artist(id = 145923, name = "oda non"),
+        Artist(id = 52595, name = "oden70"),
+        Artist(id = 677, name = "ogadenmon"),
+        Artist(id = 452, name = "ogawa hidari"),
+        Artist(id = 16820, name = "ogino jun"),
+        Artist(id = 70045, name = "ohara makoto"),
+        Artist(id = 180023, name = "ohara mochisuke"),
+        Artist(id = 23996, name = "ohisashiburi"),
+        Artist(id = 9111, name = "ohkami ryosuke"),
+        Artist(id = 115087, name = "ohmori"),
+        Artist(id = 11132, name = "ojo"),
+        Artist(id = 140279, name = "ojou"),
+        Artist(id = 25138, name = "okada kou"),
+        Artist(id = 145422, name = "okama"),
+        Artist(id = 528, name = "okara"),
+        Artist(id = 74676, name = "okayu"),
+        Artist(id = 38010, name = "okinaga umanosuke"),
+        Artist(id = 1341, name = "okito endoh"),
+        Artist(id = 14180, name = "okizarisu"),
+        Artist(id = 208822, name = "okta"),
+        Artist(id = 3379, name = "okudera chiaki"),
+        Artist(id = 36397, name = "okumori boy"),
+        Artist(id = 6006, name = "okumoto yuta"),
+        Artist(id = 176323, name = "okuva"),
+        Artist(id = 193761, name = "okuyama(to)"),
+        Artist(id = 28841, name = "okyuuri"),
+        Artist(id = 49374, name = "omizu chihiro"),
+        Artist(id = 138195, name = "omochi"),
+        Artist(id = 190717, name = "onaka"),
+        Artist(id = 65563, name = "onaka emi"),
+        Artist(id = 199932, name = "ona kimaru"),
+        Artist(id = 169173, name = "onedollar"),
+        Artist(id = 61431, name = "oniben katze"),
+        Artist(id = 220556, name = "onigashima eryu"),
+        Artist(id = 172860, name = "onigirikun"),
+        Artist(id = 66814, name = "onigiri unicorn"),
+        Artist(id = 109400, name = "onigunsow"),
+        Artist(id = 105749, name = "oniku"),
+        Artist(id = 216049, name = "onizuka chris"),
+        Artist(id = 46824, name = "onizuka naoshi"),
+        Artist(id = 40799, name = "onodera"),
+        Artist(id = 128281, name = "ono kana"),
+        Artist(id = 38693, name = "onomesin"),
+        Artist(id = 206715, name = "ono miren"),
+        Artist(id = 16962, name = "onsen mantarou"),
+        Artist(id = 119226, name = "ooban yaki"),
+        Artist(id = 217783, name = "oohashi takayuki"),
+        Artist(id = 37325, name = "oohira sunset"),
+        Artist(id = 81120, name = "oomi suzu"),
+        Artist(id = 193428, name = "ooooalikui"),
+        Artist(id = 99506, name = "oosaki"),
+        Artist(id = 163816, name = "ooshima aki"),
+        Artist(id = 149944, name = "ootori mahiro"),
+        Artist(id = 39540, name = "ootsuka reika"),
+        Artist(id = 25927, name = "oouso"),
+        Artist(id = 31528, name = "ooyama kina"),
+        Artist(id = 67400, name = "ooyoko yamaame"),
+        Artist(id = 75731, name = "oozora wakaba"),
+        Artist(id = 220774, name = "oreta hone"),
+        Artist(id = 220635, name = "oreteki"),
+        Artist(id = 5318, name = "orico"),
+        Artist(id = 115172, name = "orihika"),
+        Artist(id = 216190, name = "orita"),
+        Artist(id = 206479, name = "orusu"),
+        Artist(id = 213632, name = "osakana arichi"),
+        Artist(id = 180813, name = "osanai"),
+        Artist(id = 43843, name = "osatou"),
+        Artist(id = 172642, name = "oshima tomo"),
+        Artist(id = 172643, name = "oshima towa"),
+        Artist(id = 220700, name = "oshiro shiroo"),
+        Artist(id = 71971, name = "osiimi"),
+        Artist(id = 8002, name = "osomatsu"),
+        Artist(id = 75347, name = "otochichi"),
+        Artist(id = 148669, name = "otoo"),
+        Artist(id = 18445, name = "ouchi kaeru"),
+        Artist(id = 153621, name = "ouma tokiichi"),
+        Artist(id = 115088, name = "oumikun"),
+        Artist(id = 220581, name = "owari ningen"),
+        Artist(id = 94062, name = "oyabe ryou"),
+        Artist(id = 192137, name = "oyuno mizuwari"),
+        Artist(id = 135349, name = "panda ekisu"),
+        Artist(id = 220931, name = "pan ☆ koojo"),
+        Artist(id = 5474, name = "parabola"),
+        Artist(id = 199592, name = "particular"),
+        Artist(id = 16256, name = "pei"),
+        Artist(id = 220654, name = "peniken"),
+        Artist(id = 17097, name = "pennel"),
+        Artist(id = 196220, name = "period ö"),
+        Artist(id = 18180, name = "petenshi"),
+        Artist(id = 61900, name = "philly"),
+        Artist(id = 382, name = "picao"),
+        Artist(id = 124217, name = "pija"),
+        Artist(id = 220773, name = "pikachi"),
+        Artist(id = 40308, name = "piririnegi"),
+        Artist(id = 3694, name = "piro"),
+        Artist(id = 18279, name = "piyopiyo"),
+        Artist(id = 135086, name = "pizanuko"),
+        Artist(id = 174566, name = "p no ji"),
+        Artist(id = 18993, name = "poccora"),
+        Artist(id = 160312, name = "pochi"),
+        Artist(id = 124147, name = "pochitaro"),
+        Artist(id = 180845, name = "pokimari"),
+        Artist(id = 77790, name = "pokoten"),
+        Artist(id = 6666, name = "polinky"),
+        Artist(id = 81579, name = "pome vanilla"),
+        Artist(id = 40931, name = "ponsuke"),
+        Artist(id = 18431, name = "poriure-tan"),
+        Artist(id = 185457, name = "poruna"),
+        Artist(id = 29962, name = "potekoro"),
+        Artist(id = 147944, name = "prime"),
+        Artist(id = 220872, name = "pucachi"),
+        Artist(id = 12527, name = "puniiyu"),
+        Artist(id = 220725, name = "punk"),
+        Artist(id = 119029, name = "purumetal"),
+        Artist(id = 220623, name = "pururun"),
+        Artist(id = 213213, name = "push mine"),
+        Artist(id = 166712, name = "puuzaki puuna"),
+        Artist(id = 27608, name = "puyocha"),
+        Artist(id = 15563, name = "pyon-kti"),
+        Artist(id = 105207, name = "pyz"),
+        Artist(id = 220614, name = "qudamono"),
+        Artist(id = 122561, name = "rabu"),
+        Artist(id = 25168, name = "raita"),
+        Artist(id = 171925, name = "raka"),
+        Artist(id = 2465, name = "rakko"),
+        Artist(id = 109966, name = "rakujin"),
+        Artist(id = 497, name = "rama"),
+        Artist(id = 81000, name = "ramu"),
+        Artist(id = 220907, name = "random"),
+        Artist(id = 26324, name = "range murata"),
+        Artist(id = 25228, name = "rasahan"),
+        Artist(id = 208581, name = "rasen kyofukaku"),
+        Artist(id = 14145, name = "rca"),
+        Artist(id = 2086, name = "rebis"),
+        Artist(id = 13968, name = "reco"),
+        Artist(id = 164532, name = "redrop"),
+        Artist(id = 146302, name = "red-rum"),
+        Artist(id = 15217, name = "regdic"),
+        Artist(id = 104899, name = "rei"),
+        Artist(id = 60371, name = "reidi"),
+        Artist(id = 207519, name = "reigaros"),
+        Artist(id = 211592, name = "reitou"),
+        Artist(id = 149104, name = "reitou mikan"),
+        Artist(id = 181162, name = "ren date"),
+        Artist(id = 136147, name = "rerere"),
+        Artist(id = 220916, name = "retsuriko oomori"),
+        Artist(id = 152818, name = "rib:y(uhki)"),
+        Artist(id = 21834, name = "rib꞉y(uhki)"),
+        Artist(id = 173368, name = "richard bachman"),
+        Artist(id = 1654, name = "rico"),
+        Artist(id = 101206, name = "ricochet"),
+        Artist(id = 203844, name = "rifuru"),
+        Artist(id = 100047, name = "ringo club"),
+        Artist(id = 220485, name = "rinon9"),
+        Artist(id = 3181, name = "rinu suruga"),
+        Artist(id = 210205, name = "ripu"),
+        Artist(id = 143173, name = "risui"),
+        Artist(id = 187515, name = "riyusa"),
+        Artist(id = 5628, name = "rokkaku yasosuke"),
+        Artist(id = 81996, name = "rokko"),
+        Artist(id = 67344, name = "rokkotsu"),
+        Artist(id = 3429, name = "rokuichi"),
+        Artist(id = 197457, name = "rokuroku bin"),
+        Artist(id = 180760, name = "rokuwata tomoe"),
+        Artist(id = 180846, name = "rolua"),
+        Artist(id = 108395, name = "ronna"),
+        Artist(id = 45817, name = "rororogi mogera"),
+        Artist(id = 57604, name = "roteri"),
+        Artist(id = 152106, name = "rubi-sama"),
+        Artist(id = 220851, name = "rukitsura."),
+        Artist(id = 156162, name = "runrun"),
+        Artist(id = 73365, name = "ruriiro sugar"),
+        Artist(id = 140131, name = "rustle"),
+        Artist(id = 30586, name = "rusty soul"),
+        Artist(id = 40825, name = "ryo"),
+        Artist(id = 112613, name = "ryoichi kurokawa"),
+        Artist(id = 65959, name = "ryokucha ism"),
+        Artist(id = 188872, name = "ryou"),
+        Artist(id = 94047, name = "ryoumoto hatsumi"),
+        Artist(id = 164179, name = "ryunosuke"),
+        Artist(id = 6234, name = "ryu shinonome"),
+        Artist(id = 220846, name = "ryuta amazume"),
+        Artist(id = 5618, name = "saburo"),
+        Artist(id = 168110, name = "sabusuka"),
+        Artist(id = 216087, name = "sadahiro"),
+        Artist(id = 185981, name = "sadao"),
+        Artist(id = 5684, name = "saemon"),
+        Artist(id = 81949, name = "sagano yuuji"),
+        Artist(id = 180814, name = "sage joh"),
+        Artist(id = 16977, name = "saijou satoru"),
+        Artist(id = 147908, name = "saikawa yusa"),
+        Artist(id = 114060, name = "saikime"),
+        Artist(id = 194964, name = "saikura noushu"),
+        Artist(id = 70335, name = "saimon"),
+        Artist(id = 132842, name = "saiogauma"),
+        Artist(id = 180761, name = "saito"),
+        Artist(id = 145769, name = "saitom"),
+        Artist(id = 220555, name = "saitou natsuki"),
+        Artist(id = 1488, name = "saito yamashiro no kami yukihiko"),
+        Artist(id = 10016, name = "sajipen"),
+        Artist(id = 11588, name = "sakagaki"),
+        Artist(id = 82176, name = "sakagami umi"),
+        Artist(id = 220724, name = "sakamoto kafka"),
+        Artist(id = 216078, name = "sakana noko"),
+        Artist(id = 195371, name = "sake-chan"),
+        Artist(id = 7605, name = "sakida saki"),
+        Artist(id = 29070, name = "sakofu"),
+        Artist(id = 95560, name = "sakujirou"),
+        Artist(id = 29123, name = "sakuma tsukasa"),
+        Artist(id = 157302, name = "sakura"),
+        Artist(id = 186556, name = "sakuraba rokusuke"),
+        Artist(id = 159608, name = "sakura hanatsumi"),
+        Artist(id = 1968, name = "sakurai energy"),
+        Artist(id = 26289, name = "sakurai maki"),
+        Artist(id = 81066, name = "sakura mafumi"),
+        Artist(id = 220933, name = "sakura yuu"),
+        Artist(id = 14042, name = "sakurazari hotori"),
+        Artist(id = 55992, name = "sameda koban"),
+        Artist(id = 34228, name = "samemanma"),
+        Artist(id = 24799, name = "samerupa"),
+        Artist(id = 8976, name = "samozumo tooru"),
+        Artist(id = 175889, name = "sanagi torajirou"),
+        Artist(id = 5693, name = "sanjuurou"),
+        Artist(id = 191813, name = "sankaku sui"),
+        Artist(id = 220520, name = "sankurowa"),
+        Artist(id = 161575, name = "sanom"),
+        Artist(id = 13994, name = "sanrokumaru"),
+        Artist(id = 189834, name = "sansyoku nerune"),
+        Artist(id = 1403, name = "santa"),
+        Artist(id = 200638, name = "sanuki"),
+        Artist(id = 151286, name = "saori sato"),
+        Artist(id = 159020, name = "sarfata"),
+        Artist(id = 25103, name = "sasachinn"),
+        Artist(id = 62858, name = "sasahara yuuki"),
+        Artist(id = 17811, name = "sasahiro"),
+        Artist(id = 220847, name = "sasai saji"),
+        Artist(id = 146557, name = "sasamori tomoe"),
+        Artist(id = 47, name = "sasayuki"),
+        Artist(id = 180762, name = "sasetsu"),
+        Artist(id = 174857, name = "sashimi"),
+        Artist(id = 39235, name = "satetsu"),
+        Artist(id = 81444, name = "satofuji masato"),
+        Artist(id = 112673, name = "satotsuki chiyo"),
+        Artist(id = 216275, name = "satou kuuki"),
+        Artist(id = 126830, name = "satou mizu"),
+        Artist(id = 7786, name = "satou souji"),
+        Artist(id = 155463, name = "satou tomoyuki"),
+        Artist(id = 207366, name = "satou yuuki"),
+        Artist(id = 21670, name = "satozaki"),
+        Artist(id = 8200, name = "satsukiasha"),
+        Artist(id = 37224, name = "satsuki imonet"),
+        Artist(id = 2576, name = "satsuki mikazu"),
+        Artist(id = 15438, name = "satsuki neko"),
+        Artist(id = 689, name = "savan"),
+        Artist(id = 187389, name = "sawatashi yun"),
+        Artist(id = 145001, name = "sayori"),
+        Artist(id = 220516, name = "schwinn"),
+        Artist(id = 220583, name = "sei"),
+        Artist(id = 220913, name = "sekaisaisoku no panda"),
+        Artist(id = 205451, name = "sekitsui"),
+        Artist(id = 31371, name = "sekiya asami"),
+        Artist(id = 190258, name = "semino hazuki"),
+        Artist(id = 78855, name = "senaka ga shiri"),
+        Artist(id = 180847, name = "sencha"),
+        Artist(id = 180848, name = "sencha (煎茶)"),
+        Artist(id = 10510, name = "sendou hachi"),
+        Artist(id = 110602, name = "senoo hibiteru"),
+        Artist(id = 43667, name = "senyuu"),
+        Artist(id = 25241, name = "serizawa"),
+        Artist(id = 171975, name = "seto kohei"),
+        Artist(id = 208250, name = "seto yuki"),
+        Artist(id = 198205, name = "sgk"),
+        Artist(id = 148606, name = "shake"),
+        Artist(id = 220749, name = "shako punch"),
+        Artist(id = 189034, name = "shamo"),
+        Artist(id = 220615, name = "shansyoku amido"),
+        Artist(id = 77897, name = "sharumon"),
+        Artist(id = 175827, name = "shayo"),
+        Artist(id = 216044, name = "shiba0"),
+        Artist(id = 49576, name = "shiba 4-chome"),
+        Artist(id = 78588, name = "shibaken gorou"),
+        Artist(id = 23032, name = "shiba nanasei"),
+        Artist(id = 58809, name = "shibasaki shouji"),
+        Artist(id = 153763, name = "shibire hitsuji"),
+        Artist(id = 220379, name = "shida"),
+        Artist(id = 294, name = "shiden"),
+        Artist(id = 191945, name = "shien"),
+        Artist(id = 167315, name = "shigemiya"),
+        Artist(id = 180815, name = "shigure ui"),
+        Artist(id = 187722, name = "shikabanekamo"),
+        Artist(id = 212061, name = "shikakui kuromaru"),
+        Artist(id = 5137, name = "shika yuno"),
+        Artist(id = 206986, name = "shikigami kuroko"),
+        Artist(id = 4284, name = "shikkarimono no takashi-kun"),
+        Artist(id = 180763, name = "shimahara"),
+        Artist(id = 147474, name = "shimantogawa"),
+        Artist(id = 18030, name = "shimazu tekkou"),
+        Artist(id = 193084, name = "shimen soka"),
+        Artist(id = 26401, name = "shimetta seiya"),
+        Artist(id = 220776, name = "shimizu kafka"),
+        Artist(id = 116925, name = "shimofuri"),
+        Artist(id = 106610, name = "shimohara"),
+        Artist(id = 197880, name = "shimon"),
+        Artist(id = 175870, name = "shimoshi"),
+        Artist(id = 54094, name = "shimuro"),
+        Artist(id = 8562, name = "shindo l"),
+        Artist(id = 53805, name = "shindou"),
+        Artist(id = 110074, name = "shine nabis"),
+        Artist(id = 219135, name = "shine nabyss"),
+        Artist(id = 61687, name = "shingo."),
+        Artist(id = 6913, name = "shinjiro"),
+        Artist(id = 38880, name = "shino"),
+        Artist(id = 34062, name = "shinooka homare"),
+        Artist(id = 512, name = "shinozuka george"),
+        Artist(id = 195943, name = "shinozuka yuuji"),
+        Artist(id = 202239, name = "shinshu takedake"),
+        Artist(id = 216089, name = "shintaro kago"),
+        Artist(id = 39827, name = "shinya"),
+        Artist(id = 161729, name = "shioko amekawa"),
+        Artist(id = 8847, name = "shiomaneki"),
+        Artist(id = 85152, name = "shiotsuki love"),
+        Artist(id = 79917, name = "shiragiku"),
+        Artist(id = 32443, name = "shirai nsuke"),
+        Artist(id = 130086, name = "shirai samoedo"),
+        Artist(id = 139063, name = "shiranai hitoshi"),
+        Artist(id = 46553, name = "shirasagi rokuwa"),
+        Artist(id = 192760, name = "shirasu"),
+        Artist(id = 128833, name = "shiroie mika"),
+        Artist(id = 184281, name = "shirokitsune"),
+        Artist(id = 220621, name = "shirokumae"),
+        Artist(id = 220677, name = "shiromizugi"),
+        Artist(id = 7192, name = "shirotadai"),
+        Artist(id = 159577, name = "shirouzu myuuta"),
+        Artist(id = 160018, name = "shirow"),
+        Artist(id = 69037, name = "shitara nana"),
+        Artist(id = 175316, name = "shittori bouzu"),
+        Artist(id = 154673, name = "shituzhi"),
+        Artist(id = 11506, name = "shiunsanchou"),
+        Artist(id = 464, name = "shizyou mako"),
+        Artist(id = 168777, name = "shobu"),
+        Artist(id = 218305, name = "shomu"),
+        Artist(id = 185, name = "shono kotaro"),
+        Artist(id = 87340, name = "shouna mitsuishi"),
+        Artist(id = 220849, name = "sho washizuka"),
+        Artist(id = 38050, name = "shuko"),
+        Artist(id = 187026, name = "shuru-ban"),
+        Artist(id = 220706, name = "shuten douji"),
+        Artist(id = 9412, name = "sian"),
+        Artist(id = 172069, name = "siberian hahasky"),
+        Artist(id = 126936, name = "signo mandara"),
+        Artist(id = 2761, name = "siho"),
+        Artist(id = 149466, name = "sin"),
+        Artist(id = 197990, name = "sindoll"),
+        Artist(id = 195298, name = "siokogashi"),
+        Artist(id = 30488, name = "siokonbu"),
+        Artist(id = 47015, name = "sio oninco"),
+        Artist(id = 58558, name = "soba"),
+        Artist(id = 82708, name = "soi"),
+        Artist(id = 148129, name = "soine"),
+        Artist(id = 1007, name = "sojihogu"),
+        Artist(id = 211882, name = "sola"),
+        Artist(id = 3285, name = "solopip b"),
+        Artist(id = 220642, name = "sonno"),
+        Artist(id = 165307, name = "son yohsyu"),
+        Artist(id = 198096, name = "sora hina"),
+        Artist(id = 100444, name = "sorai shinya"),
+        Artist(id = 31924, name = "soramame-san"),
+        Artist(id = 30539, name = "sorani"),
+        Artist(id = 149677, name = "sorono"),
+        Artist(id = 155105, name = "souryu"),
+        Artist(id = 101426, name = "souseki"),
+        Artist(id = 216037, name = "soushaboku"),
+        Artist(id = 220600, name = "soy"),
+        Artist(id = 155842, name = "soyosoyo"),
+        Artist(id = 193922, name = "spiritus tarou"),
+        Artist(id = 162969, name = "star☆chaser"),
+        Artist(id = 175357, name = "starling-chan"),
+        Artist(id = 25338, name = "stealth kaigyou"),
+        Artist(id = 9025, name = "strelka"),
+        Artist(id = 160197, name = "stu-hiro"),
+        Artist(id = 5240, name = "sturkey"),
+        Artist(id = 155806, name = "sueyuu"),
+        Artist(id = 2134, name = "sugaishi"),
+        Artist(id = 134213, name = "sugara"),
+        Artist(id = 64971, name = "sugarbt"),
+        Artist(id = 25796, name = "sugar milk"),
+        Artist(id = 137786, name = "sugaru shun"),
+        Artist(id = 67247, name = "sugi g"),
+        Artist(id = 201531, name = "sugimura sakon"),
+        Artist(id = 129969, name = "sugimura takeshi"),
+        Artist(id = 18092, name = "suihei sen"),
+        Artist(id = 152676, name = "suisui"),
+        Artist(id = 144775, name = "sukesuke"),
+        Artist(id = 33522, name = "sukoyaka gyuunyuu"),
+        Artist(id = 2065, name = "sumiya"),
+        Artist(id = 28244, name = "sumiyoshi"),
+        Artist(id = 144497, name = "sunaba"),
+        Artist(id = 220898, name = "sunagimo dx"),
+        Artist(id = 85664, name = "super zombie"),
+        Artist(id = 2905, name = "suruga kuroitsu"),
+        Artist(id = 26763, name = "survival knife"),
+        Artist(id = 185704, name = "susukumo nagi"),
+        Artist(id = 220617, name = "susy"),
+        Artist(id = 220500, name = "sutadasu"),
+        Artist(id = 158641, name = "suzui narumi"),
+        Artist(id = 34298, name = "suzuki akoni"),
+        Artist(id = 75845, name = "suzuki hinomi"),
+        Artist(id = 15385, name = "suzuki nago"),
+        Artist(id = 187536, name = "suzuki toto"),
+        Artist(id = 220922, name = "suzumiya kazuki"),
+        Artist(id = 111977, name = "suzunomoku"),
+        Artist(id = 155494, name = "suzurame"),
+        Artist(id = 187069, name = "suzushimo"),
+        Artist(id = 36534, name = "suzushiro nazuna"),
+        Artist(id = 83374, name = "syamonabe"),
+        Artist(id = 26004, name = "syou"),
+        Artist(id = 66454, name = "syoukaki"),
+        Artist(id = 8896, name = "syowmaru"),
+        Artist(id = 157547, name = "syukuriin"),
+        Artist(id = 8240, name = "syuuen"),
+        Artist(id = 109859, name = "tabbto"),
+        Artist(id = 162462, name = "tabe koji"),
+        Artist(id = 5571, name = "tabigarasu"),
+        Artist(id = 218650, name = "tabuchi"),
+        Artist(id = 25873, name = "tachibana aruto"),
+        Artist(id = 61083, name = "tachibana nagon"),
+        Artist(id = 148908, name = "tachibana omina"),
+        Artist(id = 26023, name = "tachibana yuu"),
+        Artist(id = 154554, name = "tachikawa negoro"),
+        Artist(id = 92847, name = "tachiroku"),
+        Artist(id = 176792, name = "tadano mezashi"),
+        Artist(id = 28228, name = "taira issui"),
+        Artist(id = 124784, name = "taira kosaka"),
+        Artist(id = 180764, name = "taira tsukune"),
+        Artist(id = 183704, name = "tai xi studio"),
+        Artist(id = 66358, name = "tajima"),
+        Artist(id = 2105, name = "tajima particle"),
+        Artist(id = 3389, name = "takahashi note"),
+        Artist(id = 34943, name = "takahashiya takabee"),
+        Artist(id = 190046, name = "takamaru"),
+        Artist(id = 220525, name = "takamichi"),
+        Artist(id = 153812, name = "takamiyahairi"),
+        Artist(id = 181015, name = "takano saku"),
+        Artist(id = 7661, name = "takashi"),
+        Artist(id = 207256, name = "takashi (anigasaru)"),
+        Artist(id = 220843, name = "takashima shoa"),
+        Artist(id = 152154, name = "takatsuki shuuya"),
+        Artist(id = 1974, name = "takaya ki"),
+        Artist(id = 29917, name = "takeda aranobu"),
+        Artist(id = 97907, name = "takeda hiromitsu"),
+        Artist(id = 176671, name = "takemaru takasaki"),
+        Artist(id = 19716, name = "takemasa takeshi"),
+        Artist(id = 220584, name = "taketa"),
+        Artist(id = 82558, name = "taki makura"),
+        Artist(id = 193499, name = "takoneru"),
+        Artist(id = 180324, name = "takota konu"),
+        Artist(id = 97951, name = "takoyaki rock"),
+        Artist(id = 6557, name = "takoyaki yoshi"),
+        Artist(id = 150083, name = "takunomi"),
+        Artist(id = 167117, name = "takurowo"),
+        Artist(id = 118566, name = "tama-bon"),
+        Artist(id = 220506, name = "tamai moko"),
+        Artist(id = 220641, name = "tamaki nao"),
+        Artist(id = 175328, name = "tamanobu"),
+        Artist(id = 5806, name = "tamano kedama"),
+        Artist(id = 4795, name = "tamatsuyada"),
+        Artist(id = 187819, name = "tamayuki hakka"),
+        Artist(id = 53911, name = "tamazatou"),
+        Artist(id = 190363, name = "tamon sakaki"),
+        Artist(id = 6716, name = "tanabe"),
+        Artist(id = 220716, name = "tanaka kanata"),
+        Artist(id = 215986, name = "tanakala"),
+        Artist(id = 160119, name = "taniguchi daisuke"),
+        Artist(id = 92412, name = "taniguchi-san"),
+        Artist(id = 213026, name = "tannu"),
+        Artist(id = 177722, name = "tansan kitsune"),
+        Artist(id = 97461, name = "tansuiken"),
+        Artist(id = 9520, name = "tanuma yuuichirou"),
+        Artist(id = 159427, name = "taono kinoko"),
+        Artist(id = 90820, name = "taraku"),
+        Artist(id = 20719, name = "tarazoo"),
+        Artist(id = 75906, name = "tarou t"),
+        Artist(id = 49945, name = "tatapopo"),
+        Artist(id = 152568, name = "tatsunami youtoku"),
+        Artist(id = 7777, name = "tatsu tairagi"),
+        Artist(id = 220694, name = "tatsuwaipu"),
+        Artist(id = 195854, name = "tawawa delivery"),
+        Artist(id = 91929, name = "tear"),
+        Artist(id = 181341, name = "tearontaron"),
+        Artist(id = 220704, name = "teikanokei"),
+        Artist(id = 78794, name = "teikuuhikou"),
+        Artist(id = 157582, name = "tendou itsuki"),
+        Artist(id = 126401, name = "teritama potekora"),
+        Artist(id = 220514, name = "terujirou"),
+        Artist(id = 56306, name = "tes_mel"),
+        Artist(id = 167221, name = "testter"),
+        Artist(id = 36273, name = "tetsuusa"),
+        Artist(id = 25089, name = "tetsuyama kaya"),
+        Artist(id = 212305, name = "the amanoja9"),
+        Artist(id = 147042, name = "t-heaven"),
+        Artist(id = 19144, name = "thomas"),
+        Artist(id = 220575, name = "tianoblue"),
+        Artist(id = 183277, name = "tiko"),
+        Artist(id = 476, name = "tinn hisakawa"),
+        Artist(id = 71426, name = "tirotata"),
+        Artist(id = 139596, name = "titiduki"),
+        Artist(id = 135832, name = "t-man"),
+        Artist(id = 107110, name = "tobari zaru"),
+        Artist(id = 8665, name = "todoroki sin"),
+        Artist(id = 220607, name = "tofu pizzamaru"),
+        Artist(id = 25605, name = "tohyama eight"),
+        Artist(id = 7642, name = "tohzai"),
+        Artist(id = 148053, name = "toilet komoru"),
+        Artist(id = 144373, name = "toin"),
+        Artist(id = 161413, name = "toitoi"),
+        Artist(id = 9776, name = "tokie hirohito"),
+        Artist(id = 197152, name = "toku"),
+        Artist(id = 12353, name = "tokupyon"),
+        Artist(id = 176647, name = "tomihero"),
+        Artist(id = 18778, name = "tomohiro kai"),
+        Artist(id = 150328, name = "tomokichi"),
+        Artist(id = 27161, name = "tomomimi shimon"),
+        Artist(id = 110560, name = "tomose shunsaku"),
+        Artist(id = 82841, name = "tonarino esuichi"),
+        Artist(id = 219959, name = "tonezato honu"),
+        Artist(id = 158338, name = "tonteki teishoku"),
+        Artist(id = 220475, name = "toono esuke"),
+        Artist(id = 102854, name = "torichamaru"),
+        Artist(id = 203353, name = "torii yoshitsuna"),
+        Artist(id = 206465, name = "torino karaage"),
+        Artist(id = 4517, name = "toroshio"),
+        Artist(id = 88260, name = "torotarou"),
+        Artist(id = 41784, name = "toruneko"),
+        Artist(id = 160198, name = "toshinori iinuma"),
+        Artist(id = 80041, name = "totoyama keiji"),
+        Artist(id = 85762, name = "tou"),
+        Artist(id = 98767, name = "toujou tsukushi"),
+        Artist(id = 31073, name = "touma itsuki"),
+        Artist(id = 96095, name = "touno itsuki"),
+        Artist(id = 48214, name = "tousen"),
+        Artist(id = 123521, name = "toushiki yubune"),
+        Artist(id = 48332, name = "toyama jigoku"),
+        Artist(id = 27769, name = "toyo"),
+        Artist(id = 158321, name = "triangle!"),
+        Artist(id = 220510, name = "try"),
+        Artist(id = 35530, name = "tsuchinoshita kaeru"),
+        Artist(id = 58559, name = "tsuchiyasu"),
+        Artist(id = 206920, name = "tsuda hitokuchi"),
+        Artist(id = 705, name = "tsuda nanafushi"),
+        Artist(id = 12860, name = "tsuge yasuna"),
+        Artist(id = 65049, name = "tsugumi suzuma"),
+        Artist(id = 16205, name = "tsukako"),
+        Artist(id = 86792, name = "tsukimiya tsutome"),
+        Artist(id = 2175, name = "tsukino jyogi"),
+        Artist(id = 32177, name = "tsukiriran"),
+        Artist(id = 14117, name = "tsukitokage"),
+        Artist(id = 211744, name = "tsukumo go"),
+        Artist(id = 92060, name = "tsukumo nikyuu"),
+        Artist(id = 178241, name = "tsukuru"),
+        Artist(id = 149140, name = "tsumetoro"),
+        Artist(id = 62222, name = "tsunekira"),
+        Artist(id = 206339, name = "tsunonigau"),
+        Artist(id = 74355, name = "tsuriganesou"),
+        Artist(id = 189350, name = "tsuruga"),
+        Artist(id = 142827, name = "tsuruomi"),
+        Artist(id = 121399, name = "tsurusaki takahiro"),
+        Artist(id = 45664, name = "tsuruta bungaku"),
+        Artist(id = 62880, name = "tsuruyama mito"),
+        Artist(id = 101000, name = "tsuttsu"),
+        Artist(id = 45482, name = "tulip"),
+        Artist(id = 43004, name = "turnover"),
+        Artist(id = 67270, name = "type.90"),
+        Artist(id = 105909, name = "tyranu"),
+        Artist(id = 180851, name = "u10"),
+        Artist(id = 176246, name = "ubuo"),
+        Artist(id = 220746, name = "uchigawa"),
+        Artist(id = 14009, name = "uchiuchi keyaki"),
+        Artist(id = 17026, name = "ueda yuh"),
+        Artist(id = 180852, name = "ueno"),
+        Artist(id = 120291, name = "uenosuke"),
+        Artist(id = 14078, name = "ugeppa"),
+        Artist(id = 220588, name = "ukai yudu"),
+        Artist(id = 160199, name = "ukanmuri"),
+        Artist(id = 220587, name = "ukiuki chisato"),
+        Artist(id = 8510, name = "ulrich"),
+        Artist(id = 6449, name = "umakuchi shouyu"),
+        Artist(id = 117468, name = "umeda nautilus"),
+        Artist(id = 88894, name = "umehisa"),
+        Artist(id = 92299, name = "umeko"),
+        Artist(id = 22872, name = "umihotaru harumare"),
+        Artist(id = 180818, name = "umiko"),
+        Artist(id = 49955, name = "umi no kyuuban"),
+        Artist(id = 206943, name = "umino ryo"),
+        Artist(id = 25718, name = "umiushi"),
+        Artist(id = 129056, name = "unacchi"),
+        Artist(id = 147870, name = "unadon"),
+        Artist(id = 147801, name = "unagimaru"),
+        Artist(id = 68805, name = "unasaka"),
+        Artist(id = 182505, name = "unbalance"),
+        Artist(id = 188685, name = "unohana pochiko"),
+        Artist(id = 23986, name = "uno ryoku"),
+        Artist(id = 121102, name = "unosero"),
+        Artist(id = 5393, name = "unou"),
+        Artist(id = 132471, name = "untsuku"),
+        Artist(id = 180766, name = "untue"),
+        Artist(id = 153, name = "uo denim"),
+        Artist(id = 25494, name = "uono shinome"),
+        Artist(id = 27593, name = "uousaoh"),
+        Artist(id = 91736, name = "upanishimaru"),
+        Artist(id = 192933, name = "urakuso"),
+        Artist(id = 107476, name = "uranokyuu"),
+        Artist(id = 220906, name = "urase shioji"),
+        Artist(id = 165948, name = "urashima yuuhi"),
+        Artist(id = 216266, name = "urasuji samurai"),
+        Artist(id = 11985, name = "uraziro"),
+        Artist(id = 93875, name = "urec"),
+        Artist(id = 105017, name = "urupina"),
+        Artist(id = 18121, name = "uruujima call"),
+        Artist(id = 78401, name = "usa"),
+        Artist(id = 220434, name = "usachanget"),
+        Artist(id = 2016, name = "usagi nagomu"),
+        Artist(id = 147651, name = "usashiro mani"),
+        Artist(id = 112981, name = "usashiromani"),
+        Artist(id = 41859, name = "ushimanu"),
+        Artist(id = 20049, name = "ushino kandume"),
+        Artist(id = 166887, name = "ushinomiya"),
+        Artist(id = 114540, name = "ushio kiyoshi"),
+        Artist(id = 79082, name = "ushiro muki"),
+        Artist(id = 182877, name = "ushizawa mikke"),
+        Artist(id = 113034, name = "uso ashio"),
+        Artist(id = 220912, name = "us them"),
+        Artist(id = 31741, name = "usubeni sakurako"),
+        Artist(id = 139685, name = "usui yui"),
+        Artist(id = 152959, name = "uten ameka"),
+        Artist(id = 80405, name = "utsumi bobota"),
+        Artist(id = 91500, name = "utsunomiya ukatsu"),
+        Artist(id = 105712, name = "utsusumi kio"),
+        Artist(id = 220487, name = "utsutenkai"),
+        Artist(id = 175706, name = "utsutsu*minoru"),
+        Artist(id = 4967, name = "utu"),
+        Artist(id = 119699, name = "vanicooo"),
+        Artist(id = 220902, name = "vanilla cream"),
+        Artist(id = 168452, name = "volvox"),
+        Artist(id = 31416, name = "vyo"),
+        Artist(id = 29432, name = "wabara hiro"),
+        Artist(id = 191699, name = "wacoco waco"),
+        Artist(id = 216211, name = "wagashi"),
+        Artist(id = 48815, name = "waira"),
+        Artist(id = 179412, name = "wakako"),
+        Artist(id = 15554, name = "wakame-san"),
+        Artist(id = 220747, name = "wakura"),
+        Artist(id = 182489, name = "wamuko"),
+        Artist(id = 2085, name = "wamusato haru"),
+        Artist(id = 78499, name = "wanao"),
+        Artist(id = 47596, name = "wantan meo"),
+        Artist(id = 137838, name = "warabite"),
+        Artist(id = 30932, name = "washizuka sho"),
+        Artist(id = 148619, name = "watanuki ron"),
+        Artist(id = 31906, name = "waves"),
+        Artist(id = 6573, name = "wazakita"),
+        Artist(id = 168405, name = "wes heartland smith"),
+        Artist(id = 216092, name = "wonawo"),
+        Artist(id = 10823, name = "woof"),
+        Artist(id = 4377, name = "woruto"),
+        Artist(id = 133001, name = "wozu satoru"),
+        Artist(id = 220158, name = "x36marubox"),
+        Artist(id = 205667, name = "xiao xiao gyoza"),
+        Artist(id = 200457, name = "xin"),
+        Artist(id = 102591, name = "yagicom"),
+        Artist(id = 155884, name = "yagino mekichi"),
+        Artist(id = 1145, name = "yahiro pochi"),
+        Artist(id = 14446, name = "yaki tomato"),
+        Artist(id = 68858, name = "yakumi benishouga"),
+        Artist(id = 81985, name = "yakura waka"),
+        Artist(id = 52932, name = "yamada gogogo"),
+        Artist(id = 59994, name = "yamada konayuki"),
+        Artist(id = 55845, name = "yamada kou"),
+        Artist(id = 1802, name = "yamada no seikatsu ga daiichi"),
+        Artist(id = 220562, name = "yamada sabun"),
+        Artist(id = 25182, name = "yamada yuuya"),
+        Artist(id = 28767, name = "yamahata rian"),
+        Artist(id = 62452, name = "yamaimo tororo"),
+        Artist(id = 54772, name = "yamaishi juhachi"),
+        Artist(id = 109253, name = "yamakonbu"),
+        Artist(id = 156949, name = "yamakumo"),
+        Artist(id = 170574, name = "yamamoto fcn"),
+        Artist(id = 80766, name = "yamamoto tomomitsu"),
+        Artist(id = 25854, name = "yamamoto zenzen"),
+        Artist(id = 187221, name = "yamanokami"),
+        Artist(id = 205903, name = "yamashita kurowo"),
+        Artist(id = 26835, name = "yamatogawa"),
+        Artist(id = 198441, name = "yamato hotaru"),
+        Artist(id = 220550, name = "yameta takashi"),
+        Artist(id = 148882, name = "yana"),
+        Artist(id = 144968, name = "yanagi"),
+        Artist(id = 97713, name = "yanase kotatsu"),
+        Artist(id = 1703, name = "yanase yanagi"),
+        Artist(id = 121455, name = "yano mitsuki"),
+        Artist(id = 219934, name = "yano toshinori"),
+        Artist(id = 7240, name = "yanyo"),
+        Artist(id = 97319, name = "yappen"),
+        Artist(id = 47098, name = "yasu"),
+        Artist(id = 83235, name = "yasui riosuke"),
+        Artist(id = 180767, name = "yasuyuki"),
+        Artist(id = 43224, name = "yatsuki hiyori"),
+        Artist(id = 6250, name = "yaya hinata"),
+        Artist(id = 662, name = "yazaki suigin"),
+        Artist(id = 87867, name = "yd"),
+        Artist(id = 179148, name = "yk"),
+        Artist(id = 220741, name = "yochi ryouta"),
+        Artist(id = 41988, name = "yoikono tt"),
+        Artist(id = 220499, name = "yoki kana"),
+        Artist(id = 17656, name = "yokohama inka"),
+        Artist(id = 149510, name = "yokoshima"),
+        Artist(id = 9838, name = "yokoshima nikki"),
+        Artist(id = 180768, name = "yom"),
+        Artist(id = 119731, name = "yomei 3-shuukan"),
+        Artist(id = 69281, name = "yonekura kengo"),
+        Artist(id = 216100, name = "yoriu mushi"),
+        Artist(id = 4864, name = "yoshida inuhito"),
+        Artist(id = 132387, name = "yoshida killy"),
+        Artist(id = 180820, name = "yoshihiro"),
+        Artist(id = 220736, name = "yoshimizu"),
+        Artist(id = 192678, name = "yoshimoto"),
+        Artist(id = 180854, name = "yoshi-o"),
+        Artist(id = 18318, name = "yoshioka hirosumi"),
+        Artist(id = 42182, name = "yoshiragi"),
+        Artist(id = 180821, name = "yoshitomi akihito"),
+        Artist(id = 156060, name = "yoshiyuki nishi"),
+        Artist(id = 154246, name = "yoshou"),
+        Artist(id = 60281, name = "yoshu ohepe"),
+        Artist(id = 6822, name = "yosiura kazuya"),
+        Artist(id = 5460, name = "yosuke"),
+        Artist(id = 145993, name = "yotsuba chica"),
+        Artist(id = 16024, name = "yozo"),
+        Artist(id = 71389, name = "ysmmzr"),
+        Artist(id = 78046, name = "yucchris"),
+        Artist(id = 12718, name = "yuduki kei"),
+        Artist(id = 5486, name = "yug"),
+        Artist(id = 138421, name = "yukako"),
+        Artist(id = 180154, name = "yukataro"),
+        Artist(id = 35155, name = "yukian"),
+        Artist(id = 147745, name = "yuki tomoshi"),
+        Artist(id = 68892, name = "yukiu con"),
+        Artist(id = 189152, name = "yumekawa dododo-chan"),
+        Artist(id = 138809, name = "yumeki banana"),
+        Artist(id = 7038, name = "yumeno tanuki"),
+        Artist(id = 25770, name = "yumoteliuce"),
+        Artist(id = 180855, name = "yu-nagi"),
+        Artist(id = 8803, name = "yunioshi"),
+        Artist(id = 220620, name = "yun kinoko"),
+        Artist(id = 3378, name = "yuran"),
+        Artist(id = 423, name = "yurikawa"),
+        Artist(id = 185901, name = "yurishima shiro"),
+        Artist(id = 117118, name = "yuruchin kyouso"),
+        Artist(id = 180769, name = "yuu"),
+        Artist(id = 39317, name = "yuuga"),
+        Artist(id = 1666, name = "yuugiri"),
+        Artist(id = 170425, name = "yuuki hb"),
+        Artist(id = 168512, name = "yuuki ringo"),
+        Artist(id = 40416, name = "yuuki shin"),
+        Artist(id = 149447, name = "yuuki tsumugi"),
+        Artist(id = 64892, name = "yuukiya sai"),
+        Artist(id = 38496, name = "yuzugin"),
+        Artist(id = 14810, name = "yuzuha"),
+        Artist(id = 207414, name = "yuzuki himuka"),
+        Artist(id = 25969, name = "yuzuki maki"),
+        Artist(id = 40155, name = "yuzuki n dash"),
+        Artist(id = 54641, name = "yuzu machi"),
+        Artist(id = 60458, name = "yuzuno kiichi"),
+        Artist(id = 188638, name = "yuzu ramune"),
+        Artist(id = 15876, name = "yuzuriha"),
+        Artist(id = 111574, name = "yuzuto sen"),
+        Artist(id = 51488, name = "zacro"),
+        Artist(id = 72471, name = "zakotsu"),
+        Artist(id = 636, name = "zanji"),
+        Artist(id = 63367, name = "zarashi"),
+        Artist(id = 36636, name = "zasha"),
+        Artist(id = 211571, name = "zawarc"),
+        Artist(id = 169875, name = "zettai zetsumei"),
+        Artist(id = 220610, name = "ziki masaya"),
+        Artist(id = 207318, name = "ziran"),
+        Artist(id = 141507, name = "zizio"),
+        Artist(id = 147063, name = "z-ton"),
+        Artist(id = 24633, name = "zunta"),
+        Artist(id = 220521, name = "zutako"),
+    )
+    val circleList = listOf(
+        Circle(id = 197440, name = "111 touban"),
+        Circle(id = 167734, name = "140km/h"),
+        Circle(id = 181093, name = "1582"),
+        Circle(id = 199033, name = "180r"),
+        Circle(id = 145332, name = "23.4do"),
+        Circle(id = 213839, name = "3d live"),
+        Circle(id = 146028, name = "434 not found"),
+        Circle(id = 146716, name = "50on!"),
+        Circle(id = 152366, name = "8cm"),
+        Circle(id = 211401, name = "aadaba3"),
+        Circle(id = 147909, name = "abgrund"),
+        Circle(id = 156852, name = "ageage"),
+        Circle(id = 173862, name = "aigamodou"),
+        Circle(id = 166397, name = "akaeboshi"),
+        Circle(id = 165308, name = "akari blast!"),
+        Circle(id = 170742, name = "akatsukiya"),
+        Circle(id = 146277, name = "akausagi"),
+        Circle(id = 147684, name = "akiba maou"),
+        Circle(id = 147123, name = "akikaze asparagus"),
+        Circle(id = 176497, name = "akuochisukii classroom"),
+        Circle(id = 170648, name = "alexa thunder"),
+        Circle(id = 152770, name = "alice no takarabako"),
+        Circle(id = 172861, name = "alicesoft"),
+        Circle(id = 157038, name = "altayne"),
+        Circle(id = 154295, name = "amaineiro"),
+        Circle(id = 212306, name = "a-mania9's"),
+        Circle(id = 205199, name = "amatousengen"),
+        Circle(id = 146139, name = "amazake hatosyo-ten"),
+        Circle(id = 151657, name = "amulai sweets factory"),
+        Circle(id = 155631, name = "androgynous"),
+        Circle(id = 149246, name = "aneko no techo"),
+        Circle(id = 207257, name = "anigasaru"),
+        Circle(id = 151951, name = "anmitsu yomogitei"),
+        Circle(id = 211753, name = "anything"),
+        Circle(id = 147730, name = "aoba q madou"),
+        Circle(id = 151318, name = "aohimo familia"),
+        Circle(id = 195214, name = "aoi no ie"),
+        Circle(id = 148054, name = "aomizuan"),
+        Circle(id = 150011, name = "aomori ringo"),
+        Circle(id = 152155, name = "apocolotte"),
+        Circle(id = 216281, name = "arakureta monotachi"),
+        Circle(id = 220687, name = "area14"),
+        Circle(id = 148471, name = "asaki blog branch office"),
+        Circle(id = 187723, name = "ashi no seikou ha tsumi"),
+        Circle(id = 220551, name = "ashitakara ganbaru"),
+        Circle(id = 212722, name = "atarayo"),
+        Circle(id = 150084, name = "athome shuka"),
+        Circle(id = 153109, name = "ayakase-ke no neko"),
+        Circle(id = 171202, name = "babi"),
+        Circle(id = 166415, name = "binbou yusuri express"),
+        Circle(id = 197458, name = "bintoro purin"),
+        Circle(id = 168513, name = "bio champuru"),
+        Circle(id = 177991, name = "black note"),
+        Circle(id = 151563, name = "bluekiller"),
+        Circle(id = 220606, name = "blue planter"),
+        Circle(id = 172070, name = "boindo"),
+        Circle(id = 220605, name = "bonnouji"),
+        Circle(id = 211745, name = "box"),
+        Circle(id = 162970, name = "burnbright"),
+        Circle(id = 158829, name = "butagoya"),
+        Circle(id = 220745, name = "casioputer"),
+        Circle(id = 202522, name = "catastrophe"),
+        Circle(id = 149299, name = "celtrance"),
+        Circle(id = 209385, name = "chilukuni"),
+        Circle(id = 170229, name = "chimamire yashiki"),
+        Circle(id = 154976, name = "chinchin tei"),
+        Circle(id = 212991, name = "chinzuri bop"),
+        Circle(id = 217557, name = "cior"),
+        Circle(id = 147043, name = "circle romantic flight"),
+        Circle(id = 163418, name = "clammbon"),
+        Circle(id = 172644, name = "cocoa break"),
+        Circle(id = 154876, name = "consava"),
+        Circle(id = 170788, name = "contamination"),
+        Circle(id = 150363, name = "crimson crown"),
+        Circle(id = 216212, name = "dagashiya"),
+        Circle(id = 146845, name = "da hootch"),
+        Circle(id = 153934, name = "dai-6-kichi"),
+        Circle(id = 152889, name = "dam koubou"),
+        Circle(id = 220509, name = "danimaru studio"),
+        Circle(id = 152018, name = "darabuchidou"),
+        Circle(id = 147871, name = "deastim"),
+        Circle(id = 155825, name = "dekoboko hurricane"),
+        Circle(id = 154361, name = "dibi shoten"),
+        Circle(id = 219033, name = "diletta"),
+        Circle(id = 158013, name = "d-lovers"),
+        Circle(id = 157666, name = "dobu no hotori"),
+        Circle(id = 202688, name = "dochaku so happy!"),
+        Circle(id = 145830, name = "dodo fuguri"),
+        Circle(id = 162873, name = "doll play"),
+        Circle(id = 146303, name = "doronuma kyoudai"),
+        Circle(id = 161845, name = "doza village"),
+        Circle(id = 147697, name = "dr. vermilion"),
+        Circle(id = 192934, name = "dryr"),
+        Circle(id = 152915, name = "dso"),
+        Circle(id = 220845, name = "energia"),
+        Circle(id = 157122, name = "enokoro kurage"),
+        Circle(id = 220688, name = "e roman koubou"),
+        Circle(id = 197034, name = "eroquis"),
+        Circle(id = 10824, name = "fancy feeling"),
+        Circle(id = 146201, name = "fatalpulse"),
+        Circle(id = 155541, name = "frankenstein"),
+        Circle(id = 211572, name = "fuerzabruta"),
+        Circle(id = 211480, name = "fuhai nabe"),
+        Circle(id = 152065, name = "fujiya"),
+        Circle(id = 167644, name = "fuka fuka"),
+        Circle(id = 205726, name = "futanari★…ochinchinland"),
+        Circle(id = 163020, name = "futanari★ochinchinland"),
+        Circle(id = 161676, name = "fuzui undou"),
+        Circle(id = 216255, name = "fz colon"),
+        Circle(id = 162244, name = "gamenhaji"),
+        Circle(id = 160099, name = "garakuta shoujo"),
+        Circle(id = 212087, name = "gekiyaku rabbits"),
+        Circle(id = 179149, name = "gj-x"),
+        Circle(id = 219651, name = "golden bazooka"),
+        Circle(id = 194287, name = "g-planet"),
+        Circle(id = 147978, name = "g-power!"),
+        Circle(id = 155442, name = "great canyon"),
+        Circle(id = 156298, name = "gunjou robot"),
+        Circle(id = 153346, name = "haiba-nation"),
+        Circle(id = 152677, name = "hakkindo"),
+        Circle(id = 198442, name = "hanasakura"),
+        Circle(id = 155985, name = "hannama"),
+        Circle(id = 157176, name = "harapeko teishoku"),
+        Circle(id = 216058, name = "haruiro club"),
+        Circle(id = 216053, name = "hawkbit"),
+        Circle(id = 165512, name = "h.b.a."),
+        Circle(id = 198206, name = "hebitunagary"),
+        Circle(id = 220636, name = "hentai our own way"),
+        Circle(id = 156045, name = "hibon"),
+        Circle(id = 150671, name = "himeya"),
+        Circle(id = 207415, name = "himuganeya"),
+        Circle(id = 162526, name = "himyea"),
+        Circle(id = 159850, name = "hi per pinch"),
+        Circle(id = 216210, name = "hobukuro!"),
+        Circle(id = 178817, name = "hohoihoi"),
+        Circle(id = 216055, name = "hokkee"),
+        Circle(id = 201125, name = "homare works"),
+        Circle(id = 192451, name = "horieros' homestead"),
+        Circle(id = 220633, name = "hoshimaki project"),
+        Circle(id = 164062, name = "icchibocchi"),
+        Circle(id = 150299, name = "ichibocchi"),
+        Circle(id = 156915, name = "inbou no teikoku"),
+        Circle(id = 157397, name = "initiative"),
+        Circle(id = 220104, name = "inoha"),
+        Circle(id = 155843, name = "irodori"),
+        Circle(id = 220008, name = "isocurve"),
+        Circle(id = 182396, name = "iwashita shoten"),
+        Circle(id = 148670, name = "izanagi"),
+        Circle(id = 155060, name = "j9 opera company"),
+        Circle(id = 167857, name = "jikahatsudensho"),
+        Circle(id = 220517, name = "jitensha sougyou"),
+        Circle(id = 220518, name = "k2company"),
+        Circle(id = 147802, name = "kabayakiya"),
+        Circle(id = 216051, name = "kaeru wa nani yatte mo erai!!"),
+        Circle(id = 220705, name = "kaientai"),
+        Circle(id = 165906, name = "kaikandrug"),
+        Circle(id = 158642, name = "kaiyuu kikaku"),
+        Circle(id = 156444, name = "kakitsubata no yashiro"),
+        Circle(id = 163981, name = "kakitsubata yashiro"),
+        Circle(id = 157359, name = "kakuzato-ichi"),
+        Circle(id = 173674, name = "kamaboko koubou"),
+        Circle(id = 202881, name = "kamico!"),
+        Circle(id = 157909, name = "kamikadou"),
+        Circle(id = 150544, name = "kaminendo.corp"),
+        Circle(id = 158113, name = "kansai orange"),
+        Circle(id = 176432, name = "karajishi botan"),
+        Circle(id = 153423, name = "karomix"),
+        Circle(id = 174290, name = "karuwani"),
+        Circle(id = 167316, name = "kasoku edge"),
+        Circle(id = 170665, name = "kawazoko"),
+        Circle(id = 162783, name = "kazama dojo"),
+        Circle(id = 178213, name = "kiba wo muku"),
+        Circle(id = 154928, name = "kinokko"),
+        Circle(id = 159428, name = "kinoko931"),
+        Circle(id = 173369, name = "kisei toukyoku"),
+        Circle(id = 216099, name = "ki-software"),
+        Circle(id = 220480, name = "kitazawa sangyo"),
+        Circle(id = 154555, name = "kitsune"),
+        Circle(id = 172727, name = "kitsune bousouzoku"),
+        Circle(id = 155648, name = "kitsuneya"),
+        Circle(id = 164180, name = "kleitos"),
+        Circle(id = 155384, name = "knuckle head"),
+        Circle(id = 182293, name = "kokusai hihoukan"),
+        Circle(id = 164828, name = "kotoyoshi wired"),
+        Circle(id = 156126, name = "kousai comics"),
+        Circle(id = 220877, name = "kurogoma seizou koujou"),
+        Circle(id = 206987, name = "kurokoya"),
+        Circle(id = 157889, name = "kurokudoya"),
+        Circle(id = 159609, name = "kuusou riot!"),
+        Circle(id = 149061, name = "kyockchokyock"),
+        Circle(id = 148845, name = "labomagi"),
+        Circle(id = 167095, name = "laminaria"),
+        Circle(id = 152819, name = "l.g.c."),
+        Circle(id = 167488, name = "linda project"),
+        Circle(id = 147945, name = "loflat"),
+        Circle(id = 157532, name = "loose's doujin lab"),
+        Circle(id = 153746, name = "ltd."),
+        Circle(id = 216206, name = "machi no onikuya-san"),
+        Circle(id = 156163, name = "maltese"),
+        Circle(id = 149695, name = "manguri cannon"),
+        Circle(id = 194719, name = "marimo ya"),
+        Circle(id = 212062, name = "marushiro shikaku"),
+        Circle(id = 216060, name = "maruta production"),
+        Circle(id = 215296, name = "marutendon"),
+        Circle(id = 151707, name = "masochist high"),
+        Circle(id = 203503, name = "max gorigori"),
+        Circle(id = 9330, name = "mc"),
+        Circle(id = 148772, name = "meat field"),
+        Circle(id = 202730, name = "meat hammer"),
+        Circle(id = 153764, name = "media"),
+        Circle(id = 179259, name = "meimeiko"),
+        Circle(id = 146696, name = "meme-ya"),
+        Circle(id = 216086, name = "mentaiko"),
+        Circle(id = 211384, name = "merrow"),
+        Circle(id = 149141, name = "metronauts"),
+        Circle(id = 147574, name = "moco chouchou"),
+        Circle(id = 220502, name = "mokko ritch vanilla aji"),
+        Circle(id = 212324, name = "monji koubou"),
+        Circle(id = 211951, name = "moo"),
+        Circle(id = 172435, name = "moon light kitten"),
+        Circle(id = 160628, name = "moon night kitten"),
+        Circle(id = 178595, name = "moon ruler"),
+        Circle(id = 157319, name = "mosquito on"),
+        Circle(id = 160712, name = "motley crew"),
+        Circle(id = 168406, name = "move from one place to heaven"),
+        Circle(id = 176754, name = "mr. hokke"),
+        Circle(id = 148730, name = "muchakai"),
+        Circle(id = 177690, name = "muchi panya"),
+        Circle(id = 151456, name = "mukousharan"),
+        Circle(id = 159578, name = "mutant"),
+        Circle(id = 145878, name = "naitou2"),
+        Circle(id = 156061, name = "naivta"),
+        Circle(id = 154893, name = "namanamago"),
+        Circle(id = 149342, name = "nanakorobi yaoki"),
+        Circle(id = 146558, name = "nanimoshinai"),
+        Circle(id = 165019, name = "nazunasoft"),
+        Circle(id = 12719, name = "ncp"),
+        Circle(id = 157154, name = "nedaore"),
+        Circle(id = 147285, name = "negapoji~bu"),
+        Circle(id = 148883, name = "nekoarashi"),
+        Circle(id = 162940, name = "neko very cute"),
+        Circle(id = 154675, name = "neyagurui"),
+        Circle(id = 220508, name = "nhooooooooooooooo"),
+        Circle(id = 147667, name = "nita ken"),
+        Circle(id = 151133, name = "norakurari"),
+        Circle(id = 155608, name = "norigozen"),
+        Circle(id = 161131, name = "nosebleed"),
+        Circle(id = 17994, name = "no such agency"),
+        Circle(id = 149481, name = "nul_neverland"),
+        Circle(id = 156544, name = "nyasuverse"),
+        Circle(id = 216084, name = "ocha ocha honpo"),
+        Circle(id = 218651, name = "ogon shinshi club"),
+        Circle(id = 148893, name = "once only"),
+        Circle(id = 195832, name = "o.p/com"),
+        Circle(id = 159641, name = "oshiruko kan"),
+        Circle(id = 150106, name = "ossan sindoi"),
+        Circle(id = 155407, name = "otogi no kuni no soapland"),
+        Circle(id = 157924, name = "otoko-jyuku.com"),
+        Circle(id = 6730, name = "oto-love"),
+        Circle(id = 220616, name = "otome kibun"),
+        Circle(id = 155885, name = "otona teikoku"),
+        Circle(id = 211550, name = "otousan no kurorekishi"),
+        Circle(id = 174620, name = "parapluie"),
+        Circle(id = 159481, name = "peachpulsar"),
+        Circle(id = 220618, name = "peropero shuppan"),
+        Circle(id = 202461, name = "piro-piro-go"),
+        Circle(id = 164728, name = "piropiro-go"),
+        Circle(id = 148744, name = "piruporo"),
+        Circle(id = 195541, name = "p-kan"),
+        Circle(id = 160313, name = "pochi-goya"),
+        Circle(id = 175643, name = "poki no ie"),
+        Circle(id = 165312, name = "polinky place"),
+        Circle(id = 167886, name = "puchimaple"),
+        Circle(id = 166477, name = "push mine"),
+        Circle(id = 166713, name = "puu no puupuupuu"),
+        Circle(id = 161304, name = "px-real"),
+        Circle(id = 17277, name = "rakugaikidou"),
+        Circle(id = 156197, name = "red fox"),
+        Circle(id = 157042, name = "red paprika"),
+        Circle(id = 152569, name = "re-fire"),
+        Circle(id = 207520, name = "reigasou"),
+        Circle(id = 220713, name = "retro"),
+        Circle(id = 203845, name = "rifuroom"),
+        Circle(id = 175828, name = "riku no kotoutei"),
+        Circle(id = 220380, name = "ringo"),
+        Circle(id = 216227, name = "ringo no naru ki"),
+        Circle(id = 155495, name = "rock steady"),
+        Circle(id = 147475, name = "rorinoutage"),
+        Circle(id = 194928, name = "rotoest"),
+        Circle(id = 216101, name = "rpg company 2"),
+        Circle(id = 152107, name = "rubi-sama wo agameru kai"),
+        Circle(id = 211670, name = "rycanthropy"),
+        Circle(id = 215587, name = "sakuranbo nouen"),
+        Circle(id = 157303, name = "sakuranbu"),
+        Circle(id = 216056, name = "sakura no kinoshita"),
+        Circle(id = 162926, name = "sangeriya"),
+        Circle(id = 192424, name = "sanman sanzen koi king"),
+        Circle(id = 155464, name = "santonana"),
+        Circle(id = 159021, name = "sarfatation"),
+        Circle(id = 179803, name = "sashimi teishoku"),
+        Circle(id = 213577, name = "sayoshigure"),
+        Circle(id = 211330, name = "seikatsu sesshishou"),
+        Circle(id = 178242, name = "seki sabato"),
+        Circle(id = 177453, name = "setsunasa midare"),
+        Circle(id = 153414, name = "seventh zest"),
+        Circle(id = 148607, name = "shakestyle"),
+        Circle(id = 148304, name = "sheepfold"),
+        Circle(id = 147746, name = "shiawase kanmiryou"),
+        Circle(id = 148909, name = "shima-pan"),
+        Circle(id = 153622, name = "shimoyakedou"),
+        Circle(id = 168778, name = "shinsekai set"),
+        Circle(id = 177219, name = "shinshunshantonshou"),
+        Circle(id = 153747, name = "shobunkan co."),
+        Circle(id = 159352, name = "shouchuu mac"),
+        Circle(id = 147108, name = "shouwa saishuu sensen"),
+        Circle(id = 157652, name = "shuusei patch 3gb"),
+        Circle(id = 219621, name = "sinistra"),
+        Circle(id = 149467, name = "sin-maniax"),
+        Circle(id = 162176, name = "slime crown"),
+        Circle(id = 163753, name = "snowrich"),
+        Circle(id = 163459, name = "soft thigh"),
+        Circle(id = 219852, name = "solace thalassa"),
+        Circle(id = 180155, name = "sonota oozei"),
+        Circle(id = 188639, name = "soramune"),
+        Circle(id = 149678, name = "soronosanchi"),
+        Circle(id = 149392, name = "sound sticker"),
+        Circle(id = 216243, name = "squeeze candy heaven"),
+        Circle(id = 153783, name = "standard"),
+        Circle(id = 184926, name = "story circle"),
+        Circle(id = 149325, name = "studio diamond"),
+        Circle(id = 155106, name = "studio the devil"),
+        Circle(id = 165949, name = "subliminal dai-kaiten"),
+        Circle(id = 211840, name = ".suco"),
+        Circle(id = 155285, name = "sugar*berry*syrup"),
+        Circle(id = 212151, name = "suitakobara ni choudo ii"),
+        Circle(id = 220609, name = "sukinaco"),
+        Circle(id = 216265, name = "sukoburuyama"),
+        Circle(id = 160120, name = "surumenium"),
+        Circle(id = 216260, name = "sushi-ya"),
+        Circle(id = 172645, name = "sweet pea"),
+        Circle(id = 165595, name = "taiyaki pan"),
+        Circle(id = 202240, name = "takedake"),
+        Circle(id = 167118, name = "takurowo dou"),
+        Circle(id = 194380, name = "tamago kitchen"),
+        Circle(id = 160019, name = "tamago no kara"),
+        Circle(id = 175329, name = "tamaland"),
+        Circle(id = 213027, name = "tantan"),
+        Circle(id = 153454, name = "tanukine"),
+        Circle(id = 160959, name = "team harenchi"),
+        Circle(id = 219931, name = "teenage fanclub"),
+        Circle(id = 170575, name = "tempest"),
+        Circle(id = 157583, name = "tendoushi"),
+        Circle(id = 155807, name = "tengohambre"),
+        Circle(id = 220585, name = "tentou mushi no sanba"),
+        Circle(id = 220515, name = "terujirou shirushi no kibi dango"),
+        Circle(id = 170530, name = "three m"),
+        Circle(id = 161414, name = "toitoikai"),
+        Circle(id = 165935, name = "tokaeshina koubou"),
+        Circle(id = 220611, name = "tokinao"),
+        Circle(id = 178996, name = "toko-ya"),
+        Circle(id = 198399, name = "tokyo maid dead ball"),
+        Circle(id = 158339, name = "tonteki"),
+        Circle(id = 165999, name = "torotoro yume banana"),
+        Circle(id = 177818, name = "toushitsu catapult"),
+        Circle(id = 178834, name = "tozan:bu"),
+        Circle(id = 147652, name = "triangle!"),
+        Circle(id = 158322, name = "tridentworks inc."),
+        Circle(id = 8432, name = "tsf no f"),
+        Circle(id = 155594, name = "ttsy"),
+        Circle(id = 161559, name = "tunnel no.73"),
+        Circle(id = 178665, name = "ubuoya"),
+        Circle(id = 149105, name = "ue ni aru mikan"),
+        Circle(id = 154247, name = "uniyaa"),
+        Circle(id = 216267, name = "urasujibeya"),
+        Circle(id = 216246, name = "usacastle"),
+        Circle(id = 201086, name = "ushiro no shimamura"),
+        Circle(id = 213461, name = "ushiro no shimura"),
+        Circle(id = 157449, name = "usotsukiya"),
+        Circle(id = 152960, name = "uten+"),
+        Circle(id = 175707, name = "utsutsutsutsu"),
+        Circle(id = 214462, name = "violet bee"),
+        Circle(id = 164619, name = "violetstar"),
+        Circle(id = 216276, name = "vpans extasy"),
+        Circle(id = 157002, name = "wakuseiburo"),
+        Circle(id = 207463, name = "wamusho"),
+        Circle(id = 220848, name = "watakubi"),
+        Circle(id = 148620, name = "watanuki shinguten"),
+        Circle(id = 188284, name = "waterfall"),
+        Circle(id = 163146, name = "wwwave"),
+        Circle(id = 162854, name = "x∞model"),
+        Circle(id = 149945, name = "yabitsu touge"),
+        Circle(id = 154521, name = "yadokagaeru"),
+        Circle(id = 220890, name = "yajirushikey"),
+        Circle(id = 211365, name = "yamamori cabbage"),
+        Circle(id = 155281, name = "yamanashi musume"),
+        Circle(id = 149158, name = "yamoseven"),
+        Circle(id = 150533, name = "yanyanyo"),
+        Circle(id = 159624, name = "yatomomin"),
+        Circle(id = 152417, name = "yogurt"),
+        Circle(id = 150329, name = "yudokuya"),
+        Circle(id = 220914, name = "yugen-no-suda"),
+        Circle(id = 207367, name = "yuuki kagou butsu"),
+        Circle(id = 147229, name = "yuusaritsukata"),
+        Circle(id = 147462, name = "yuzuya"),
+        Circle(id = 220464, name = "zenjidou shimoneta seizou machine"),
+        Circle(id = 169876, name = "zettai zetsumei's hut"),
+    )
+    val parodyList = listOf(
+        Parody(id = 17995, name = "a kiss for the petals"),
+        Parody(id = 146278, name = "amagi brilliant park"),
+        Parody(id = 146140, name = "ane doki"),
+        Parody(id = 147286, name = "angel blade"),
+        Parody(id = 149728, name = "azur lane"),
+        Parody(id = 150107, name = "black lagoon"),
+        Parody(id = 186645, name = "blue archive"),
+        Parody(id = 148411, name = "cardfight!! vanguard"),
+        Parody(id = 145831, name = "dagashi kashi"),
+        Parody(id = 178350, name = "danganronpa"),
+        Parody(id = 146846, name = "dark souls"),
+        Parody(id = 148894, name = "darling in the franxx"),
+        Parody(id = 148472, name = "delicious in dungeon"),
+        Parody(id = 174171, name = "devil may cry"),
+        Parody(id = 170684, name = "devil survivor 2"),
+        Parody(id = 103850, name = "doki doki literature club!"),
+        Parody(id = 62223, name = "doraemon"),
+        Parody(id = 151393, name = "dragon ball"),
+        Parody(id = 149868, name = "dragon quest"),
+        Parody(id = 158069, name = "dragon's crown"),
+        Parody(id = 155679, name = "eromanga sensei"),
+        Parody(id = 148436, name = "fantasy earth zero"),
+        Parody(id = 147463, name = "fate series"),
+        Parody(id = 160175, name = "final fantasy"),
+        Parody(id = 198207, name = "final fantasy vii"),
+        Parody(id = 149206, name = "fire emblem fates"),
+        Parody(id = 166568, name = "fire emblem: three houses"),
+        Parody(id = 146153, name = "food wars! shokugeki no soma"),
+        Parody(id = 206200, name = "full color version"),
+        Parody(id = 4677, name = "gate"),
+        Parody(id = 162971, name = "genshin impact"),
+        Parody(id = 150012, name = "gintama"),
+        Parody(id = 147762, name = "girls und panzer"),
+        Parody(id = 147044, name = "god eater 2"),
+        Parody(id = 147404, name = "go! princess precure"),
+        Parody(id = 146202, name = "granblue fantasy"),
+        Parody(id = 151081, name = "gundam build fighters"),
+        Parody(id = 151082, name = "gundam iron-blooded orphans"),
+        Parody(id = 164163, name = "gundam zz"),
+        Parody(id = 195724, name = "haganai"),
+        Parody(id = 47247, name = "haramase! honoo no oppai isekai ero mahou gakuen!"),
+        Parody(id = 161677, name = "hololive"),
+        Parody(id = 146614, name = "hundred"),
+        Parody(id = 148305, name = "hyperdimension neptunia"),
+        Parody(id = 146443, name = "is it wrong to try to pick up girls in a dungeon?"),
+        Parody(id = 152788, name = "kagai jugyou"),
+        Parody(id = 146118, name = "kantai collection"),
+        Parody(id = 150705, name = "kid icarus"),
+        Parody(id = 76765, name = "king of fighters"),
+        Parody(id = 167222, name = "komi can't communicate"),
+        Parody(id = 148688, name = "konosuba: god's blessing on this wonderful world!"),
+        Parody(id = 195725, name = "lagrange: the flower of rin-ne"),
+        Parody(id = 146517, name = "last period"),
+        Parody(id = 197991, name = "legend of mana"),
+        Parody(id = 149300, name = "love live"),
+        Parody(id = 219009, name = "love plus"),
+        Parody(id = 157290, name = "manage! kimemasu!!"),
+        Parody(id = 9186, name = "metroid"),
+        Parody(id = 147979, name = "millennium war aigis"),
+        Parody(id = 147861, name = "minecraft"),
+        Parody(id = 148671, name = "muv-luv"),
+        Parody(id = 156632, name = "my hero academia"),
+        Parody(id = 164181, name = "myriad colors phantom world"),
+        Parody(id = 156585, name = "nier: automata"),
+        Parody(id = 216002, name = "original"),
+        Parody(id = 148955, name = "persona 5"),
+        Parody(id = 146754, name = "precure"),
+        Parody(id = 176498, name = "pretty cure"),
+        Parody(id = 211867, name = "psychopath and the killer"),
+        Parody(id = 149277, name = "pubg"),
+        Parody(id = 156558, name = "puella magi madoka magica"),
+        Parody(id = 147827, name = "puyo puyo"),
+        Parody(id = 146086, name = "puzzle \u0026 dragons"),
+        Parody(id = 159919, name = "re:zero -starting life in another world-"),
+        Parody(id = 196202, name = "robot girls z"),
+        Parody(id = 27000, name = "rwby"),
+        Parody(id = 147165, name = "saki achiga-hen"),
+        Parody(id = 147668, name = "schoolgirl strikers"),
+        Parody(id = 134873, name = "scooby-doo"),
+        Parody(id = 197992, name = "star fox"),
+        Parody(id = 170666, name = "star fox series"),
+        Parody(id = 76766, name = "street fighter"),
+        Parody(id = 156600, name = "super mario odyssey"),
+        Parody(id = 146921, name = "sword art online"),
+        Parody(id = 160147, name = "taimanin yukikaze"),
+        Parody(id = 198129, name = "tekken"),
+        Parody(id = 153501, name = "tera"),
+        Parody(id = 10406, name = "the human reignition project"),
+        Parody(id = 162245, name = "the idolm@ster"),
+        Parody(id = 146903, name = "the idolm@ster cinderella girls"),
+        Parody(id = 147522, name = "the irregular at magic high school"),
+        Parody(id = 162514, name = "the quintessential quintuplets"),
+        Parody(id = 152591, name = "the ryuo's work is never done!"),
+        Parody(id = 146424, name = "toaru majutsu no index"),
+        Parody(id = 146632, name = "to love-ru"),
+        Parody(id = 147124, name = "touhou"),
+        Parody(id = 147803, name = "utawarerumono"),
+        Parody(id = 152019, name = "valkyria chronicles"),
+        Parody(id = 161546, name = "vocaloid"),
+        Parody(id = 147698, name = "voiceroid"),
+        Parody(id = 195728, name = "waiting in the summer"),
+        Parody(id = 4597, name = "watamote"),
+        Parody(id = 151027, name = "yotsuba\u0026!"),
+        Parody(id = 11777, name = "zelda"),
+    )
+    val maleList = listOf(
+        Male(id = 216153, name = "ahegao ♂"),
+        Male(id = 216268, name = "armpit licking ♂"),
+        Male(id = 216283, name = "bald ♂"),
+        Male(id = 216277, name = "bbm ♂"),
+        Male(id = 216162, name = "beauty mark ♂"),
+        Male(id = 216160, name = "big areolae ♂"),
+        Male(id = 216170, name = "big breasts ♂"),
+        Male(id = 216114, name = "big penis ♂"),
+        Male(id = 216175, name = "blowjob ♂"),
+        Male(id = 216176, name = "booty ♂"),
+        Male(id = 216168, name = "bunny girl ♂"),
+        Male(id = 216166, name = "business suit ♂"),
+        Male(id = 216163, name = "busty ♂"),
+        Male(id = 216123, name = "cheating ♂"),
+        Male(id = 216213, name = "clone ♂"),
+        Male(id = 73, name = "condom ♂"),
+        Male(id = 216550, name = "crossdressing ♂"),
+        Male(id = 216383, name = "dark skin ♂"),
+        Male(id = 216757, name = "demon ♂"),
+        Male(id = 216228, name = "dilf ♂"),
+        Male(id = 216278, name = "facial hair ♂"),
+        Male(id = 216169, name = "females only ♂"),
+        Male(id = 216164, name = "femdom ♂"),
+        Male(id = 216165, name = "futanari ♂"),
+        Male(id = 216689, name = "gender change ♂"),
+        Male(id = 216229, name = "glasses ♂"),
+        Male(id = 216167, name = "gyaru ♂"),
+        Male(id = 216156, name = "handjob ♂"),
+        Male(id = 216289, name = "harem ♂"),
+        Male(id = 216178, name = "heart pupils ♂"),
+        Male(id = 216177, name = "lactation ♂"),
+        Male(id = 216161, name = "lingerie ♂"),
+        Male(id = 216237, name = "low shotacon ♂"),
+        Male(id = 216173, name = "magical girl ♂"),
+        Male(id = 217540, name = "maid ♂"),
+        Male(id = 178247, name = "males only ♂"),
+        Male(id = 216269, name = "masturbation ♂"),
+        Male(id = 216409, name = "monster ♂"),
+        Male(id = 216132, name = "muscles ♂"),
+        Male(id = 216154, name = "nakadashi ♂"),
+        Male(id = 216284, name = "old man ♂"),
+        Male(id = 218169, name = "orc ♂"),
+        Male(id = 216171, name = "paizuri ♂"),
+        Male(id = 216172, name = "petite ♂"),
+        Male(id = 216157, name = "ponytail ♂"),
+        Male(id = 216159, name = "pubic hair ♂"),
+        Male(id = 216335, name = "rape ♂"),
+        Male(id = 183321, name = "schoolboy uniform ♂"),
+        Male(id = 216155, name = "schoolgirl uniform ♂"),
+        Male(id = 446, name = "shotacon ♂"),
+        Male(id = 216498, name = "smegma ♂"),
+        Male(id = 215991, name = "sole male ♂"),
+        Male(id = 217346, name = "stockings ♂"),
+        Male(id = 216279, name = "sunglasses ♂"),
+        Male(id = 216270, name = "sweating ♂"),
+        Male(id = 216126, name = "teacher ♂"),
+        Male(id = 986, name = "tomgirl ♂"),
+        Male(id = 493, name = "ugly bastard ♂"),
+        Male(id = 216238, name = "virginity ♂"),
+        Male(id = 216271, name = "voyeurism ♂"),
+        Male(id = 216174, name = "x-ray ♂"),
+        Male(id = 6735, name = "yaoi ♂"),
+    )
+    val femaleList = listOf(
+        Female(id = 35, name = "ahegao ♀"),
+        Female(id = 216014, name = "anal ♀"),
+        Female(id = 216015, name = "anal intercourse ♀"),
+        Female(id = 216120, name = "apron ♀"),
+        Female(id = 216146, name = "armpit fetish ♀"),
+        Female(id = 216353, name = "armpit licking ♀"),
+        Female(id = 216133, name = "armpit sex ♀"),
+        Female(id = 216389, name = "assjob ♀"),
+        Female(id = 216252, name = "ball sucking ♀"),
+        Female(id = 216381, name = "bbw ♀"),
+        Female(id = 216230, name = "bdsm ♀"),
+        Female(id = 24, name = "beauty mark ♀"),
+        Female(id = 218433, name = "big ♀"),
+        Female(id = 187532, name = "big areolae ♀"),
+        Female(id = 216272, name = "big ass ♀"),
+        Female(id = 378, name = "big breasts ♀"),
+        Female(id = 216200, name = "big penis ♀"),
+        Female(id = 216214, name = "bike shorts ♀"),
+        Female(id = 215992, name = "bikini ♀"),
+        Female(id = 216280, name = "blackmail ♀"),
+        Female(id = 216122, name = "blindfold ♀"),
+        Female(id = 216314, name = "bloomers ♀"),
+        Female(id = 16, name = "blowjob ♀"),
+        Female(id = 216215, name = "blowjob face ♀"),
+        Female(id = 216191, name = "bondage ♀"),
+        Female(id = 97, name = "booty ♀"),
+        Female(id = 216530, name = "breast expansion ♀"),
+        Female(id = 216139, name = "bukkake ♀"),
+        Female(id = 216202, name = "bun hair ♀"),
+        Female(id = 1419, name = "bunny girl ♀"),
+        Female(id = 392, name = "business suit ♀"),
+        Female(id = 32, name = "busty ♀"),
+        Female(id = 6, name = "catgirl ♀"),
+        Female(id = 216115, name = "cheating ♀"),
+        Female(id = 216143, name = "chubby ♀"),
+        Female(id = 216231, name = "clit stimulation ♀"),
+        Female(id = 217748, name = "closed eyes ♀"),
+        Female(id = 216017, name = "collar ♀"),
+        Female(id = 216216, name = "corruption ♀"),
+        Female(id = 216140, name = "cosplay ♀"),
+        Female(id = 216102, name = "cousin ♀"),
+        Female(id = 216217, name = "crotch tattoo ♀"),
+        Female(id = 218155, name = "cumflation ♀"),
+        Female(id = 458, name = "cunnilingus ♀"),
+        Female(id = 216116, name = "curly hair ♀"),
+        Female(id = 216121, name = "dark skin ♀"),
+        Female(id = 216192, name = "deepthroat ♀"),
+        Female(id = 216239, name = "defloration ♀"),
+        Female(id = 216233, name = "demon girl ♀"),
+        Female(id = 218113, name = "domination loss ♀"),
+        Female(id = 216141, name = "double penetration ♀"),
+        Female(id = 216285, name = "drunk ♀"),
+        Female(id = 216201, name = "elf ♀"),
+        Female(id = 216117, name = "exhibitionism ♀"),
+        Female(id = 216247, name = "exposed clothing ♀"),
+        Female(id = 216235, name = "eye-covering bang ♀"),
+        Female(id = 216134, name = "facesitting ♀"),
+        Female(id = 216111, name = "fangs ♀"),
+        Female(id = 137513, name = "females only ♀"),
+        Female(id = 138, name = "femdom ♀"),
+        Female(id = 216282, name = "filming ♀"),
+        Female(id = 216144, name = "fingering ♀"),
+        Female(id = 216142, name = "fishnets ♀"),
+        Female(id = 216218, name = "focus blowjob ♀"),
+        Female(id = 216188, name = "footjob ♀"),
+        Female(id = 188423, name = "fox girl ♀"),
+        Female(id = 216888, name = "fundoshi ♀"),
+        Female(id = 4884, name = "futanari ♀"),
+        Female(id = 216643, name = "gag ♀"),
+        Female(id = 216261, name = "garter belt ♀"),
+        Female(id = 216136, name = "glasses ♀"),
+        Female(id = 216262, name = "glory hole ♀"),
+        Female(id = 216019, name = "gloves ♀"),
+        Female(id = 216219, name = "gokkun ♀"),
+        Female(id = 72, name = "gyaru ♀"),
+        Female(id = 216236, name = "hairy ♀"),
+        Female(id = 22, name = "handjob ♀"),
+        Female(id = 1886, name = "harem ♀"),
+        Female(id = 167, name = "heart pupils ♀"),
+        Female(id = 216273, name = "hidden sex ♀"),
+        Female(id = 216193, name = "high heels ♀"),
+        Female(id = 216349, name = "huge breasts ♀"),
+        Female(id = 133, name = "impregnation ♀"),
+        Female(id = 216370, name = "inflation ♀"),
+        Female(id = 2460, name = "inverted nipples ♀"),
+        Female(id = 216020, name = "kemonomimi ♀"),
+        Female(id = 216124, name = "kimono ♀"),
+        Female(id = 216004, name = "kissing ♀"),
+        Female(id = 216342, name = "kunoichi ♀"),
+        Female(id = 216773, name = "lab coat ♀"),
+        Female(id = 561, name = "lactation ♀"),
+        Female(id = 216194, name = "latex ♀"),
+        Female(id = 216232, name = "leash ♀"),
+        Female(id = 216046, name = "leg lock ♀"),
+        Female(id = 216220, name = "leotard ♀"),
+        Female(id = 216118, name = "light hair ♀"),
+        Female(id = 233, name = "lingerie ♀"),
+        Female(id = 219, name = "lolicon ♀"),
+        Female(id = 216263, name = "long tongue ♀"),
+        Female(id = 216240, name = "low lolicon ♀"),
+        Female(id = 217534, name = "machine ♀"),
+        Female(id = 24138, name = "magical girl ♀"),
+        Female(id = 216005, name = "maid ♀"),
+        Female(id = 216119, name = "masturbation ♀"),
+        Female(id = 42, name = "mating press ♀"),
+        Female(id = 216221, name = "mesugaki ♀"),
+        Female(id = 448, name = "miko ♀"),
+        Female(id = 17, name = "milf ♀"),
+        Female(id = 218428, name = "mind ♀"),
+        Female(id = 216286, name = "mind break ♀"),
+        Female(id = 216222, name = "mind control ♀"),
+        Female(id = 954, name = "monster girl ♀"),
+        Female(id = 216223, name = "moral degeneration ♀"),
+        Female(id = 216428, name = "mother ♀"),
+        Female(id = 216224, name = "mouth mask ♀"),
+        Female(id = 216149, name = "muscles ♀"),
+        Female(id = 7, name = "nakadashi ♀"),
+        Female(id = 216148, name = "netorare ♀"),
+        Female(id = 217895, name = "nipple fuck ♀"),
+        Female(id = 216195, name = "nipple piercing ♀"),
+        Female(id = 216256, name = "nipple stimulation ♀"),
+        Female(id = 2365, name = "nun ♀"),
+        Female(id = 216339, name = "nurse ♀"),
+        Female(id = 40, name = "ojousama ♀"),
+        Female(id = 171103, name = "oneesan ♀"),
+        Female(id = 216245, name = "oppai loli ♀"),
+        Female(id = 216112, name = "orgasm denial ♀"),
+        Female(id = 216150, name = "over-eye bangs ♀"),
+        Female(id = 155, name = "paizuri ♀"),
+        Female(id = 216257, name = "pantyhose ♀"),
+        Female(id = 216532, name = "pasties ♀"),
+        Female(id = 218431, name = "penis enlargement ♀"),
+        Female(id = 141, name = "petite ♀"),
+        Female(id = 216362, name = "petplay ♀"),
+        Female(id = 216287, name = "phone sex ♀"),
+        Female(id = 216196, name = "piercing ♀"),
+        Female(id = 216602, name = "piss drinking ♀"),
+        Female(id = 216258, name = "pixie cut ♀"),
+        Female(id = 182, name = "ponytail ♀"),
+        Female(id = 1694, name = "pregnant ♀"),
+        Female(id = 216225, name = "prostitution ♀"),
+        Female(id = 71, name = "pubic hair ♀"),
+        Female(id = 216253, name = "rape ♀"),
+        Female(id = 218434, name = "schoolgirl ♀"),
+        Female(id = 34, name = "schoolgirl uniform ♀"),
+        Female(id = 216127, name = "sex toys ♀"),
+        Female(id = 216502, name = "shibari ♀"),
+        Female(id = 216248, name = "shimaidon ♀"),
+        Female(id = 216129, name = "short hair ♀"),
+        Female(id = 1286, name = "shortstack ♀"),
+        Female(id = 216244, name = "sister ♀"),
+        Female(id = 216234, name = "smalldom ♀"),
+        Female(id = 216125, name = "socks ♀"),
+        Female(id = 215995, name = "sole female ♀"),
+        Female(id = 216274, name = "solo action ♀"),
+        Female(id = 216147, name = "spats ♀"),
+        Female(id = 216022, name = "squirting ♀"),
+        Female(id = 216006, name = "stockings ♀"),
+        Female(id = 215996, name = "sweating ♀"),
+        Female(id = 215997, name = "swimsuit ♀"),
+        Female(id = 216023, name = "tail ♀"),
+        Female(id = 659, name = "tall girl ♀"),
+        Female(id = 216145, name = "tanlines ♀"),
+        Female(id = 216138, name = "teacher ♀"),
+        Female(id = 216655, name = "tentacles ♀"),
+        Female(id = 216131, name = "thick eyebrows ♀"),
+        Female(id = 216197, name = "thigh high boots ♀"),
+        Female(id = 216152, name = "thigh job ♀"),
+        Female(id = 142, name = "tomboy ♀"),
+        Female(id = 216241, name = "tracksuit ♀"),
+        Female(id = 216104, name = "transparent clothing ♀"),
+        Female(id = 216749, name = "triple penetration ♀"),
+        Female(id = 216137, name = "tsundere ♀"),
+        Female(id = 216249, name = "twins ♀"),
+        Female(id = 216113, name = "twintails ♀"),
+        Female(id = 216105, name = "unusual pupils ♀"),
+        Female(id = 216242, name = "urination ♀"),
+        Female(id = 215998, name = "very long hair ♀"),
+        Female(id = 216378, name = "waitress ♀"),
+        Female(id = 21, name = "x-ray ♀"),
+        Female(id = 5695, name = "yuri ♀"),
+    )
+    val mixedList = listOf(
+        Mixed(id = 216752, name = "body swap"),
+        Mixed(id = 1918, name = "fffm foursome"),
+        Mixed(id = 272, name = "ffm threesome"),
+        Mixed(id = 229, name = "group"),
+        Mixed(id = 414, name = "incest"),
+        Mixed(id = 597, name = "inseki"),
+        Mixed(id = 878, name = "mmf threesome"),
+        Mixed(id = 242, name = "mmmf foursome"),
+    )
+    val otherList = listOf(
+        Other(id = 145899, name = "box set"),
+        Other(id = 151271, name = "cg set"),
+        Other(id = 171843, name = "compilation"),
+        Other(id = 2373, name = "ecchi"),
+        Other(id = 49, name = "full color"),
+        Other(id = 216110, name = "incomplete"),
+        Other(id = 7691, name = "interview"),
+        Other(id = 80294, name = "mosaics"),
+        Other(id = 216000, name = "multi-work series"),
+        Other(id = 1376, name = "non-h"),
+        Other(id = 31903, name = "no penetration"),
+        Other(id = 163152, name = "ongoing"),
+        Other(id = 1375, name = "slice of life"),
+        Other(id = 216288, name = "soushuuhen"),
+        Other(id = 1852, name = "story arc"),
+        Other(id = 82597, name = "tankoubon"),
+        Other(id = 8, name = "uncensored"),
+        Other(id = 5, name = "vanilla"),
+        Other(id = 71980, name = "webtoon"),
+        Other(id = 2394, name = "western"),
+    )
+}
diff --git a/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/TurnstileInterceptor.kt b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/TurnstileInterceptor.kt
new file mode 100644
index 000000000..4ee469684
--- /dev/null
+++ b/src/all/koharu/src/eu/kanade/tachiyomi/extension/all/koharu/TurnstileInterceptor.kt
@@ -0,0 +1,242 @@
+package eu.kanade.tachiyomi.extension.all.koharu
+
+import android.annotation.SuppressLint
+import android.app.Application
+import android.os.Handler
+import android.os.Looper
+import android.webkit.WebResourceRequest
+import android.webkit.WebResourceResponse
+import android.webkit.WebView
+import android.webkit.WebViewClient
+import eu.kanade.tachiyomi.extension.all.koharu.Koharu.Companion.authorization
+import eu.kanade.tachiyomi.extension.all.koharu.Koharu.Companion.token
+import eu.kanade.tachiyomi.network.GET
+import eu.kanade.tachiyomi.network.POST
+import okhttp3.Headers
+import okhttp3.Interceptor
+import okhttp3.OkHttpClient
+import okhttp3.Response
+import uy.kohesive.injekt.injectLazy
+import java.io.IOException
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+
+/** Cloudflare Turnstile interceptor */
+class TurnstileInterceptor(
+    private val client: OkHttpClient,
+    private val domainUrl: String,
+    private val authUrl: String,
+    private val userAgent: String?,
+) : Interceptor {
+
+    private val context: Application by injectLazy()
+    private val handler by lazy { Handler(Looper.getMainLooper()) }
+
+    private val lazyHeaders by lazy {
+        Headers.Builder().apply {
+            set("User-Agent", userAgent ?: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36")
+            set("Referer", "$domainUrl/")
+            set("Origin", domainUrl)
+        }.build()
+    }
+
+    private fun authHeaders(authorization: String) =
+        Headers.Builder().apply {
+            set("User-Agent", userAgent ?: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36")
+            set("Referer", "$domainUrl/")
+            set("Origin", domainUrl)
+            set("Authorization", authorization)
+        }.build()
+
+    private val authorizedRequestRegex by lazy { Regex("""(.+\?crt=)(.*)""") }
+
+    override fun intercept(chain: Interceptor.Chain): Response {
+        val request = chain.request()
+
+        val url = request.url.toString()
+        val matchResult = authorizedRequestRegex.find(url) ?: return chain.proceed(request)
+        if (matchResult.groupValues.size == 3) {
+            val requestingUrl = matchResult.groupValues[1]
+            val crt = matchResult.groupValues[2]
+            var newResponse: Response
+
+            if (crt.isNotBlank() && crt != "null") {
+                // Token already set in URL, just make the request
+                newResponse = chain.proceed(request)
+                if (newResponse.code !in listOf(400, 403)) return newResponse
+            } else {
+                // Token doesn't include, add token then make request
+                if (token.isNullOrBlank()) resolveInWebview()
+                val newRequest = if (request.method == "POST") {
+                    POST("${requestingUrl}$token", lazyHeaders)
+                } else {
+                    GET("${requestingUrl}$token", lazyHeaders)
+                }
+                newResponse = chain.proceed(newRequest)
+                if (newResponse.code !in listOf(400, 403)) return newResponse
+            }
+            newResponse.close()
+
+            // Request failed, refresh token then try again
+            clearToken()
+            token = null
+            resolveInWebview()
+            val newRequest = if (request.method == "POST") {
+                POST("${requestingUrl}$token", lazyHeaders)
+            } else {
+                GET("${requestingUrl}$token", lazyHeaders)
+            }
+            newResponse = chain.proceed(newRequest)
+            if (newResponse.code !in listOf(400, 403)) return newResponse
+            throw IOException("Open webview once to refresh token (${newResponse.code})")
+        }
+        return chain.proceed(request)
+    }
+
+    @SuppressLint("SetJavaScriptEnabled")
+    fun resolveInWebview(): Pair<String?, String?> {
+        val latch = CountDownLatch(1)
+        var webView: WebView? = null
+
+        handler.post {
+            val webview = WebView(context)
+            webView = webview
+            with(webview.settings) {
+                javaScriptEnabled = true
+                domStorageEnabled = true
+                databaseEnabled = true
+                useWideViewPort = false
+                loadWithOverviewMode = false
+            }
+
+            webview.webViewClient = object : WebViewClient() {
+                override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?): WebResourceResponse? {
+                    val authHeader = request?.requestHeaders?.get("Authorization")
+                    if (request?.url.toString().contains(authUrl) && authHeader != null) {
+                        authorization = authHeader
+                        if (request.method == "POST") {
+                            // Authorize & requesting a new token.
+                            // `authorization` here should be in format: Bearer <authorization>
+                            try {
+                                val noRedirectClient = client.newBuilder().followRedirects(false).build()
+                                val authHeaders = authHeaders(authHeader)
+                                val response = noRedirectClient.newCall(POST(authUrl, authHeaders)).execute()
+                                response.use {
+                                    if (response.isSuccessful) {
+                                        with(response) {
+                                            token = body.string()
+                                                .removeSurrounding("\"")
+                                        }
+                                    }
+                                }
+                            } catch (_: IOException) {
+                            } finally {
+                                latch.countDown()
+                            }
+                        }
+                        if (request.method == "GET") {
+                            // Site is trying to recheck old token validation here.
+                            // If it fails then site will request a new one using POST method.
+                            // But we will check it ourselves.
+                            // Normally this might not occur because old token should already be acquired & rechecked via onPageFinished.
+                            // `authorization` here should be in format: Bearer <token>
+                            val oldToken = authorization
+                                ?.substringAfterLast(" ")
+                            if (oldToken != null && recheckTokenValid(oldToken)) {
+                                token = oldToken
+                                latch.countDown()
+                            }
+                        }
+                    }
+                    return super.shouldInterceptRequest(view, request)
+                }
+
+                /**
+                 * Read the saved token in localStorage and use it.
+                 * This token might already expired. Normally site will check token for expiration with a GET request.
+                 * Here will will recheck it ourselves.
+                 */
+                override fun onPageFinished(view: WebView?, url: String?) {
+                    if (view == null) return
+                    val script = "javascript:localStorage['clearance']"
+                    view.evaluateJavascript(script) {
+                        // Avoid overwrite newly requested token
+                        if (!it.isNullOrBlank() && it != "null" && token.isNullOrBlank()) {
+                            val oldToken = it
+                                .removeSurrounding("\"")
+                            if (recheckTokenValid(oldToken)) {
+                                token = oldToken
+                                latch.countDown()
+                            }
+                        }
+                    }
+                }
+
+                private fun recheckTokenValid(token: String): Boolean {
+                    try {
+                        val noRedirectClient = client.newBuilder().followRedirects(false).build()
+                        val authHeaders = authHeaders("Bearer $token")
+                        val response = noRedirectClient.newCall(GET(authUrl, authHeaders)).execute()
+                        response.use {
+                            if (response.isSuccessful) {
+                                return true
+                            }
+                        }
+                    } catch (_: IOException) {
+                    }
+                    return false
+                }
+            }
+
+            webview.loadUrl("$domainUrl/")
+        }
+
+        latch.await(20, TimeUnit.SECONDS)
+
+        handler.post {
+            // One last try to read the token from localStorage, in case it got updated last minute.
+            if (token.isNullOrBlank()) {
+                val script = "javascript:localStorage['clearance']"
+                webView?.evaluateJavascript(script) {
+                    if (!it.isNullOrBlank() && it != "null") {
+                        token = it
+                            .removeSurrounding("\"")
+                    }
+                }
+            }
+
+            webView?.stopLoading()
+            webView?.destroy()
+            webView = null
+        }
+
+        return token to authorization
+    }
+
+    @SuppressLint("SetJavaScriptEnabled")
+    private fun clearToken() {
+        val latch = CountDownLatch(1)
+        handler.post {
+            val webView = WebView(context)
+            with(webView.settings) {
+                javaScriptEnabled = true
+                domStorageEnabled = true
+                databaseEnabled = true
+            }
+            webView.webViewClient = object : WebViewClient() {
+                override fun onPageFinished(view: WebView?, url: String?) {
+                    if (view == null) return
+                    val script = "javascript:localStorage.clear()"
+                    view.evaluateJavascript(script) {
+                        token = null
+                        view.stopLoading()
+                        view.destroy()
+                        latch.countDown()
+                    }
+                }
+            }
+            webView.loadUrl(domainUrl)
+        }
+        latch.await(20, TimeUnit.SECONDS)
+    }
+}