From b09f26ed346341afe9513cbd21d428b4b7a79364 Mon Sep 17 00:00:00 2001
From: rebelonion <87634197+rebelonion@users.noreply.github.com>
Date: Sat, 29 Jun 2024 10:59:18 -0500
Subject: [PATCH] fix: some markdown fixes
---
app/src/main/AndroidManifest.xml | 1 +
app/src/main/java/ani/dantotsu/Functions.kt | 15 +++-
.../main/java/ani/dantotsu/MainActivity.kt | 8 ++-
.../media/comments/CommentsFragment.kt | 1 +
.../ani/dantotsu/others/AlignTagHandler.kt | 32 +++++++++
.../ani/dantotsu/settings/SettingsActivity.kt | 14 ++--
.../dantotsu/settings/saving/Preferences.kt | 1 +
.../dantotsu/util/ActivityMarkdownCreator.kt | 9 ++-
.../java/ani/dantotsu/util/AniMarkdown.kt | 65 ++++++++++++++----
.../java/ani/dantotsu/util/AudioHelper.kt | 58 ++++++++++++++++
.../res/layout/activity_markdown_creator.xml | 15 ++++
app/src/main/res/raw/audio.mp3 | Bin 0 -> 34560 bytes
app/src/main/res/values/strings.xml | 2 +
13 files changed, 194 insertions(+), 27 deletions(-)
create mode 100644 app/src/main/java/ani/dantotsu/others/AlignTagHandler.kt
create mode 100644 app/src/main/java/ani/dantotsu/util/AudioHelper.kt
create mode 100644 app/src/main/res/raw/audio.mp3
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1a6ab59766..9b071c2bf1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -19,6 +19,7 @@
+
diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt
index abfebb3ab1..c41d22ced6 100644
--- a/app/src/main/java/ani/dantotsu/Functions.kt
+++ b/app/src/main/java/ani/dantotsu/Functions.kt
@@ -68,7 +68,6 @@ import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.annotation.AttrRes
-import androidx.annotation.ColorInt
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
@@ -98,6 +97,7 @@ import ani.dantotsu.databinding.ItemCountDownBinding
import ani.dantotsu.media.Media
import ani.dantotsu.media.MediaDetailsActivity
import ani.dantotsu.notifications.IncognitoNotificationClickReceiver
+import ani.dantotsu.others.AlignTagHandler
import ani.dantotsu.others.ImageViewDialog
import ani.dantotsu.others.SpoilerPlugin
import ani.dantotsu.parsers.ShowResponse
@@ -119,8 +119,8 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withC
import com.bumptech.glide.load.resource.gif.GifDrawable
import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.RequestOptions
+import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.target.Target
-import com.bumptech.glide.request.target.ViewTarget
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.bottomsheet.BottomSheetBehavior
@@ -1448,6 +1448,8 @@ fun openOrCopyAnilistLink(link: String) {
} else {
copyToClipboard(link, true)
}
+ } else if (getYoutubeId(link).isNotEmpty()) {
+ openLinkInYouTube(link)
} else {
copyToClipboard(link, true)
}
@@ -1484,6 +1486,7 @@ fun buildMarkwon(
TagHandlerNoOp.create("h1", "h2", "h3", "h4", "h5", "h6", "hr", "pre", "a")
)
}
+ plugin.addHandler(AlignTagHandler())
})
.usePlugin(GlideImagesPlugin.create(object : GlideImagesPlugin.GlideStore {
@@ -1527,3 +1530,11 @@ fun buildMarkwon(
.build()
return markwon
}
+
+
+
+fun getYoutubeId(url: String): String {
+ val regex = """(?:youtube\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|(?:youtu\.be|youtube\.com)/)([^"&?/\s]{11})|youtube\.com/""".toRegex()
+ val matchResult = regex.find(url)
+ return matchResult?.groupValues?.getOrNull(1) ?: ""
+}
\ No newline at end of file
diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt
index 7b2e0b1d95..412ed67692 100644
--- a/app/src/main/java/ani/dantotsu/MainActivity.kt
+++ b/app/src/main/java/ani/dantotsu/MainActivity.kt
@@ -2,7 +2,6 @@ package ani.dantotsu
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
-import android.app.AlertDialog
import android.content.Intent
import android.content.res.Configuration
import android.graphics.drawable.Animatable
@@ -60,11 +59,11 @@ import ani.dantotsu.settings.saving.SharedPreferenceBooleanLiveData
import ani.dantotsu.settings.saving.internal.PreferenceKeystore
import ani.dantotsu.settings.saving.internal.PreferencePackager
import ani.dantotsu.themes.ThemeManager
+import ani.dantotsu.util.AudioHelper
import ani.dantotsu.util.Logger
import ani.dantotsu.util.customAlertDialog
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar
-import com.google.android.material.textfield.TextInputEditText
import eu.kanade.domain.source.service.SourcePreferences
import io.noties.markwon.Markwon
import io.noties.markwon.SoftBreakAddsNewLinePlugin
@@ -455,7 +454,10 @@ class MainActivity : AppCompatActivity() {
}
}
}
-
+ if (PrefManager.getVal(PrefName.OC)) {
+ AudioHelper.run(this, R.raw.audio)
+ PrefManager.setVal(PrefName.OC, false)
+ }
val torrentManager = Injekt.get()
fun startTorrent() {
if (torrentManager.isAvailable() && PrefManager.getVal(PrefName.TorrentEnabled)) {
diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt
index fc21805e67..de1c76b8df 100644
--- a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt
+++ b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt
@@ -353,6 +353,7 @@ class CommentsFragment : Fragment() {
}
}
}
+
@SuppressLint("NotifyDataSetChanged")
override fun onResume() {
super.onResume()
diff --git a/app/src/main/java/ani/dantotsu/others/AlignTagHandler.kt b/app/src/main/java/ani/dantotsu/others/AlignTagHandler.kt
new file mode 100644
index 0000000000..1708ed0507
--- /dev/null
+++ b/app/src/main/java/ani/dantotsu/others/AlignTagHandler.kt
@@ -0,0 +1,32 @@
+package ani.dantotsu.others
+
+import android.text.Layout
+import android.text.style.AlignmentSpan
+import io.noties.markwon.MarkwonConfiguration
+import io.noties.markwon.RenderProps
+import io.noties.markwon.html.HtmlTag
+import io.noties.markwon.html.tag.SimpleTagHandler
+
+
+class AlignTagHandler : SimpleTagHandler() {
+
+ override fun getSpans(
+ configuration: MarkwonConfiguration,
+ renderProps: RenderProps,
+ tag: HtmlTag
+ ): Any {
+ val alignment: Layout.Alignment = if (tag.attributes().containsKey("center")) {
+ Layout.Alignment.ALIGN_CENTER
+ } else if (tag.attributes().containsKey("end")) {
+ Layout.Alignment.ALIGN_OPPOSITE
+ } else {
+ Layout.Alignment.ALIGN_NORMAL
+ }
+
+ return AlignmentSpan.Standard(alignment)
+ }
+
+ override fun supportedTags(): Collection {
+ return setOf("align")
+ }
+}
diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt
index 2022fac101..7e58e87005 100644
--- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt
+++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt
@@ -23,12 +23,12 @@ import ani.dantotsu.databinding.ActivitySettingsBinding
import ani.dantotsu.initActivity
import ani.dantotsu.navBarHeight
import ani.dantotsu.openLinkInBrowser
-import ani.dantotsu.openLinkInYouTube
import ani.dantotsu.others.AppUpdater
import ani.dantotsu.others.CustomBottomDialog
import ani.dantotsu.pop
import ani.dantotsu.setSafeOnClickListener
import ani.dantotsu.settings.saving.PrefManager
+import ani.dantotsu.settings.saving.PrefName
import ani.dantotsu.snackString
import ani.dantotsu.startMainActivity
import ani.dantotsu.statusBarHeight
@@ -217,10 +217,14 @@ class SettingsActivity : AppCompatActivity() {
settingsLogo.setSafeOnClickListener {
cursedCounter++
(settingsLogo.drawable as Animatable).start()
- if (cursedCounter % 7 == 0) {
- toast(R.string.you_cursed)
- openLinkInYouTube(getString(R.string.cursed_yt))
- //PrefManager.setVal(PrefName.ImageUrl, !PrefManager.getVal(PrefName.ImageUrl, false))
+ if (cursedCounter % 16 == 0) {
+ val oldVal: Boolean = PrefManager.getVal(PrefName.OC)
+ if (!oldVal) {
+ toast(R.string.omega_cursed)
+ } else {
+ toast(R.string.omega_freed)
+ }
+ PrefManager.setVal(PrefName.OC, !oldVal)
} else {
snackString(array[(Math.random() * array.size).toInt()], context)
}
diff --git a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt
index 6f188b854c..c71a6a9bab 100644
--- a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt
+++ b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt
@@ -191,6 +191,7 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files
SubscriptionNotificationStore(Pref(Location.Irrelevant, List::class, listOf())),
UnreadCommentNotifications(Pref(Location.Irrelevant, Int::class, 0)),
DownloadsDir(Pref(Location.Irrelevant, String::class, "")),
+ OC(Pref(Location.Irrelevant, Boolean::class, false)),
RefreshStatus(Pref(Location.Irrelevant, Boolean::class, false)),
//Protected
diff --git a/app/src/main/java/ani/dantotsu/util/ActivityMarkdownCreator.kt b/app/src/main/java/ani/dantotsu/util/ActivityMarkdownCreator.kt
index fdc2493769..5548401e79 100644
--- a/app/src/main/java/ani/dantotsu/util/ActivityMarkdownCreator.kt
+++ b/app/src/main/java/ani/dantotsu/util/ActivityMarkdownCreator.kt
@@ -6,6 +6,7 @@ import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.core.widget.addTextChangedListener
import ani.dantotsu.R
@@ -42,7 +43,7 @@ class ActivityMarkdownCreator : AppCompatActivity() {
BOLD("****", 2, R.id.formatBold),
ITALIC("**", 1, R.id.formatItalic),
STRIKETHROUGH("~~~~", 2, R.id.formatStrikethrough),
- SPOILER("~||~", 2, R.id.formatSpoiler),
+ SPOILER("~!!~", 2, R.id.formatSpoiler),
LINK("[Placeholder](%s)", 0, R.id.formatLink),
IMAGE("img(%s)", 0, R.id.formatImage),
YOUTUBE("youtube(%s)", 0, R.id.formatYoutube),
@@ -267,9 +268,13 @@ class ActivityMarkdownCreator : AppCompatActivity() {
private fun previewMarkdown(preview: Boolean) {
val markwon = buildMarkwon(this, false, anilist = true)
if (preview) {
+ binding.editText.isVisible = false
binding.editText.isEnabled = false
- markwon.setMarkdown(binding.editText, text)
+ binding.markdownPreview.isVisible = true
+ markwon.setMarkdown(binding.markdownPreview, AniMarkdown.getBasicAniHTML(text))
} else {
+ binding.editText.isVisible = true
+ binding.markdownPreview.isVisible = false
binding.editText.setText(text)
binding.editText.isEnabled = true
val markwonEditor = MarkwonEditor.create(markwon)
diff --git a/app/src/main/java/ani/dantotsu/util/AniMarkdown.kt b/app/src/main/java/ani/dantotsu/util/AniMarkdown.kt
index 3f8c04d725..200b388341 100644
--- a/app/src/main/java/ani/dantotsu/util/AniMarkdown.kt
+++ b/app/src/main/java/ani/dantotsu/util/AniMarkdown.kt
@@ -1,12 +1,13 @@
package ani.dantotsu.util
+import ani.dantotsu.getYoutubeId
import ani.dantotsu.util.ColorEditor.Companion.toCssColor
class AniMarkdown { //istg anilist has the worst api
companion object {
- private fun convertNestedImageToHtml(markdown: String): String {
+ private fun String.convertNestedImageToHtml(): String {
val regex = """\[!\[(.*?)]\((.*?)\)]\((.*?)\)""".toRegex()
- return regex.replace(markdown) { matchResult ->
+ return regex.replace(this) { matchResult ->
val altText = matchResult.groupValues[1]
val imageUrl = matchResult.groupValues[2]
val linkUrl = matchResult.groupValues[3]
@@ -14,26 +15,49 @@ class AniMarkdown { //istg anilist has the worst api
}
}
- private fun convertImageToHtml(markdown: String): String {
+ private fun String.convertImageToHtml(): String {
val regex = """!\[(.*?)]\((.*?)\)""".toRegex()
- return regex.replace(markdown) { matchResult ->
+ val anilistRegex = """img\(.*?\)""".toRegex()
+ val markdownImage = regex.replace(this) { matchResult ->
val altText = matchResult.groupValues[1]
val imageUrl = matchResult.groupValues[2]
""""""
}
+ return anilistRegex.replace(markdownImage) { matchResult ->
+ val imageUrl = matchResult.groupValues[1]
+ """"""
+ }
}
- private fun convertLinkToHtml(markdown: String): String {
+ private fun String.convertLinkToHtml(): String {
val regex = """\[(.*?)]\((.*?)\)""".toRegex()
- return regex.replace(markdown) { matchResult ->
+ return regex.replace(this) { matchResult ->
val linkText = matchResult.groupValues[1]
val linkUrl = matchResult.groupValues[2]
"""$linkText"""
}
}
- private fun replaceLeftovers(html: String): String {
- return html.replace(" ", " ")
+ private fun String.convertYoutubeToHtml(): String {
+ val regex = """""".toRegex()
+ return regex.replace(this) { matchResult ->
+ val url = matchResult.groupValues[1]
+ val id = getYoutubeId(url)
+ if (id.isNotEmpty()) {
+ """""".trimIndent()
+ } else {
+ """Youtube Video"""
+ }
+ }
+ }
+
+ private fun String.replaceLeftovers(): String {
+ return this.replace(" ", " ")
.replace("&", "&")
.replace("<", "<")
.replace(">", ">")
@@ -46,18 +70,29 @@ class AniMarkdown { //istg anilist has the worst api
.replace("\n", "
")
}
- private fun underlineToHtml(html: String): String {
- return html.replace("(?s)___(.*?)___".toRegex(), "
$1
")
+ private fun String.underlineToHtml(): String {
+ return this.replace("(?s)___(.*?)___".toRegex(), "
$1
")
.replace("(?s)__(.*?)__".toRegex(), "
$1
")
.replace("(?s)\\s+_([^_]+)_\\s+".toRegex(), "$1")
}
+ private fun String.convertCenterToHtml(): String {
+ val regex = """~~~(.*?)~~~""".toRegex()
+ return regex.replace(this) { matchResult ->
+ val centerText = matchResult.groupValues[1]
+ """$centerText"""
+ }
+ }
+
fun getBasicAniHTML(html: String): String {
- val step0 = convertNestedImageToHtml(html)
- val step1 = convertImageToHtml(step0)
- val step2 = convertLinkToHtml(step1)
- val step3 = replaceLeftovers(step2)
- return underlineToHtml(step3)
+ return html
+ .convertNestedImageToHtml()
+ .convertImageToHtml()
+ .convertLinkToHtml()
+ .convertYoutubeToHtml()
+ .convertCenterToHtml()
+ .replaceLeftovers()
+ .underlineToHtml()
}
fun getFullAniHTML(html: String, textColor: Int): String {
diff --git a/app/src/main/java/ani/dantotsu/util/AudioHelper.kt b/app/src/main/java/ani/dantotsu/util/AudioHelper.kt
new file mode 100644
index 0000000000..bfd38be0a9
--- /dev/null
+++ b/app/src/main/java/ani/dantotsu/util/AudioHelper.kt
@@ -0,0 +1,58 @@
+package ani.dantotsu.util
+
+import android.content.Context
+import android.media.AudioManager
+import android.media.MediaPlayer
+
+class AudioHelper(private val context: Context) {
+
+ private val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
+ private var mediaPlayer: MediaPlayer? = null
+
+ fun routeAudioToSpeaker() {
+ audioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN)
+ audioManager.mode = AudioManager.MODE_IN_COMMUNICATION
+ audioManager.isSpeakerphoneOn = true
+ }
+
+ private val maxVolume: Int
+ get() = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
+ private var oldVolume: Int = 0
+ fun setVolume(percentage: Int) {
+ oldVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
+ val volume = (maxVolume * percentage) / 100
+ audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0)
+ }
+
+ fun playAudio(audio: Int) {
+ mediaPlayer?.release()
+ mediaPlayer = MediaPlayer.create(context, audio)
+ mediaPlayer?.setOnCompletionListener {
+ setVolume(oldVolume)
+ audioManager.abandonAudioFocus(null)
+ it.release()
+ }
+ mediaPlayer?.setOnPreparedListener {
+ it.start()
+ }
+ }
+
+ fun stopAudio() {
+ mediaPlayer?.let {
+ if (it.isPlaying) {
+ it.stop()
+ }
+ it.release()
+ mediaPlayer = null
+ }
+ }
+
+ companion object {
+ fun run(context: Context, audio: Int) {
+ val audioHelper = AudioHelper(context)
+ audioHelper.routeAudioToSpeaker()
+ audioHelper.setVolume(90)
+ audioHelper.playAudio(audio)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_markdown_creator.xml b/app/src/main/res/layout/activity_markdown_creator.xml
index fb66d6f036..548ad1771e 100644
--- a/app/src/main/res/layout/activity_markdown_creator.xml
+++ b/app/src/main/res/layout/activity_markdown_creator.xml
@@ -92,6 +92,21 @@
android:textIsSelectable="true"
android:textSize="18sp"
tools:ignore="LabelFor" />
+
+
diff --git a/app/src/main/res/raw/audio.mp3 b/app/src/main/res/raw/audio.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..49e1e430f00161703b3ef817055fd833ed1c4eed
GIT binary patch
literal 34560
zcmeFZRa6}9wgp;f8cn0Y>Bili;NG}va3?_UAPMfC;O_1kAh
z|NHNK_PI~@jB)nc>Cq3}RW;`5F~3!F&GoHS4gN_%1s;C~00#g7AOL^^0|2Clcge%o
zhmU+g0D!6@r7DL4U_b!WhlBt3`d?)L{6GHxSNZ&(g8d)=|5L{Pcd!3H{{MIR{GX!z
zAOHVT#{PG&|BHW&r2n3O@i&45X}RV@j2qB*Y{|HgUEe5{lon)Re0Fg$CX-G2z%7|z
zz$+wev&*!|s!_Ar^xQGT-k1(Libo|ua-UzFKYkpQGA&YPP?nmMYSG&>
zgt@pp7aodAAfqrpN1ZIudw@)N!>VOZr8%U4gUjWMY}fX1MbSSF5pZoWGutzS_+)3N
zjU?0Yy|CEENMg~_TFk;S`o{?i+c#vWn{>%a%2Ip;@7LGc_@dz@mcbMawlBgaCp0Vc
z3Jn{rSC>%d+7#glG+cf>fgagSFBZ*;%BDQE17#*{P$0teZIc_QSKjy7%YagwB}S%&jbb8<7pJ_zYLBLz;sGV
zEBT099!{tXOw;jmqwy1B19UI|`u}I8{^B1JVxrcQj6}_)9KG@ZM!SaI
zD{Lq9u~aeu7+9d|Pfzwv_8tx}f(KFg(*rc(QNev|kI~R(enQ3GR10NPSi?
z0OiY)lIr(B?z@>z8pdZEP(X4t;CJv4h>D674F%95pf&;PUAJBLIW&RyQPH>SG_(g%
z6v%zwHB7*;N>8(&B;fW>@&ri=bRGZ@$I(gIeDsrg{aX=@*Ty`6itRHSMWOy(Qj(;s
zq87k2%u?KXsf_T?$aG0l@R}S}QJLTu)I4D4ov#)1jL^8<^r&ZD)gd7X60z`O|Fpkv
z@~M_r`*5apGAw*kJU`PgO(8H-yZolA>f(Ko5GRf!%1{4TmYtmcB=&!^lYj9KAlC}Y
z+82^&>6RVD6VhTL0=AzN)44ON=U84?C&&R|1j(P)oeM~LO^wDWzp(=h0nvH{Qs`=Y
z;rrV7!bF!d$nQAbFlSXIwMy4qy_#4gR`H6T7}5M1OQHQqtWAb!4P&aWqw}X!u=3<}
zrdWMFcmhtXqQY_#mbaaO@vQS@#WO>DB;FlFLl%U`t%Oq~BYCX8?gdf5XR^wYPIwiO
zUGu44L6cRDiyluRw!v23{7Dl@-Kv@`+Vn~mHm0fB)cDD(K+yHxwhw^x0fb-au%kj@
zP1akm2=A$r$hXaFwAdmp``>Xk)z6tFN52)RLf(hKS9rTU(t;BeJmhr!m6UqQS0*Fp
ze^WZLVq!47>B<<{72DECjQB}<2LO0M0P}z%DIU6%_4tq!_DSa2V@A6+c@oc!*)QZh
z`8!&{i7T>Mc)qAIb#{LH>?l+Tdofj4Z{EIAuTOtm{9R;Gj}Tv#-iJGW!hfic8fTC9
z=3i^@H~)onV-DezG&-Xxf
z+OUk~nvPH}z5KY_pQI=n2&FI}QYAH>7cSg))Q%a3628Z>3n3PHPg1pedxf)*F?yd!
z+&AIiy3yeMWJ8wG-Z
z9#Oy~pm7MAEbp-O$C#ou_hV6-V(Yr!`=cL>aD&Ce4LsR`rzVu)7fl23INCRoL3U68
zW6c_H!@J`vBVph7nC92~p|beQ*wQNL6-$=wx%ozC^_2$`>$EqoNxHjae_IKqgYC<4
z|GhwIGW0S8<|h_~onJqBYCh_$4aaUj@9A-kO*IMi1PI<309&-TA2Q6_b63_L$JiDf
z9jmxM?kvlEpCRZ{^?U3XnQfWZQMTg);Ro^3>ipEQZt>Ja(yw*_mBUZygn7jgC3YG6
zQx19YLzC{2CxYxHLxhVOTtHIL-~1P;t97B1ywDy$JTjL-#=_Ip-^12Cv}CEe?T-Lqx_}qIf-oSHYEK|S4PX=yj0(e#^*j#G_%b|}*OY*y){ROt
zA)>{H%T`~uf2g`eV{beKOYraNx-Lw=++|8*2+PhleNqIc_h){a5fg491V=L^@&U`=
zONZH%V}0KmyoaHN67s5z{J=dpQ)uE2xP
z_W;ER_ibO@q^f`3VZOQ*mxdHVfa6jNd&%_nMZ>j+yWnsB8`YQQ_sGrlm~T3t4nD_p
zX16H~GsjRZt!Zh9L*k(Xpad?OwVm1@#GUPXqRW%2?DRh6uP-AMah}2iTfLRlIqD
zE*{EFG&?=Hb(V$WbUK#3zk5#b*#{;Uh?nKZ=stg#L-+J^$Jij4>lY#3UCc;apBIAO^JAwh%38>`KV1*UW<$A?$;uAR8S6DG3`4SpP(?9#
zoR?q8!M;dO5~@{#7kcFp>|ezxf9R&%Zkg`W_~wdlMb_|=MiE-6&p`jb`jf40;6Ovw
zpzZJthfZc0vr*<*c!oBT9+Oi;Gp0FFiwO)B*+CNjCgqGKtu^*~X_7Um#_^F_P2O(>
zyRMc$_xxhJ@CxjdFSInyo#L@fpc|ye
zkwR{Z4FiHynUKx2a(A?r8v{i;Y}|?BB@dV0ZbFWKdFKa?l)o?GM|zWkYOUI?FmD63
zMWqkIri4s@;IE3Ny!G~IRf%MkyPruEEL0Twyyc$`U_***06>qzkh`!uHGrp^v%lcBL@UP}yqEc&OT&mMpd}unVUdt(mDP)!Yxv?R%Jj+e2dUrwHwchAPE6S7@
z7ZPnWR(8~3S?&P<&pl1
ze`J~_l@$wgf-ibXS;w$}0L)-1vrvdXk_Hp&cZ4dO<4tE8wG4;^*xDz@D@ldLe#UN`U
zItCdwm{N;nvM|G+)?0L_k^m|cHOAZ5$C>Gd<9en1Ng8o@X+ZfSIpOo&CrOVK(CWR=
z-V9N)&P^kP|Aqf5?
znyF01%k{DKNu4_C>DNFY@l@7ITe#>*@|Y9<2QUf$kpLbH>fid4t8VBJOaf?Eeq-mN
z1+dUW?TQKg@yyGgUsxtuZnbQfLs8=AxK*JjUlWWhW}?hqAYja)WSN6}iRwH-E*R!5
z<-p}D>_lCpHg&&0rIQT8`UJjdrodt!0O(aStqmn
z?8NX>KPM;Y2cA?15e`%fj}PDKbsXQVD~7P)xh2@#@Jmd@XxyoExd{iL4
zX7mi{QBiE4YMA>uLzW~U#m*>`L;TpLRMehkJDVF6NU2g;_;potVxFEJcSwq8$$f&%
z)p6*xQpIoLLMKHGc{j>)N0z@U$Mm|)WafCR?0D!5q$dA3+YM=x;G7e1hE}xaY
z+s|U#_?_^(GUw6$cz_hN&2dhl`LS2
z)%t|!AnIxc^gn^gKDHwZV68kyC2xt$5Ot5qcF9yyZXZt#W-omuJFo}CwT9aig
zOYZTnWhYTK8z~i`<5KzP3pra`iQ154T1*d~?xlRSgPHBTDn!6%^P=)c*+1SGCyzw|
zPwG}7f)0E8l%z36YkmgSBvM)=Z=c$q+Gx6ms5KzxJ~~L4f}D%y&qF6x_01@2;A-W!Uoyd>J%4**g-eL-h)RF2Y2;alH>gq^OA
zbe=TKpGzmBC^7wYhumfoi1MHNgO
zE!#GAt-RC@FIjt3fLk_gA?a)h
z-*7OJ`e>kQyj*8_4wv#Vwa!a(A<;iB`#He}8qDi?7RrkCj>RffS0>jf$`4J6`|RU+nh5umi&|lU@G2Bb6}qlu>8CyRKat8g4So~)8#yx
zBdgN$7fcSC?6T+AKkjWVhbKv+Bw8tA*kLw$T7=>7nO;G9&F+*O&mzGpJr51qJo)b-
z6w*`~;l;MXL7dcv$)0>F;!Xl)QpKJ2yLeq&&VC0WtwbelLWF!3X+^#Pzd@dxt=+gG
z>Q4!B#7R8W%$U+i`)1j1Dn3uBiD;59u?kn<&CkhV$k^Kok?y_
zAx_j`D);yIjs9dC-BV1`p=tGgf}r%iD1k_R6z^P14i+vgh+UZ=_OgKF
z1Nojtkuw76Qr~GhjOkt;REjWHFW|V&Ub=hVgbC1=>5LAX4<9>u|Kcjd#5L+Z*u2Ba
zIaWD(4VxAJL<{E>DkjyucvsP{2+vC{hvsH8NCM^bg}i{0Pcszc06urE^5x
z4F%0bnEuY-E-ovFI-r|UnRv~}u=%lo@B1nSpc+A_4@TjGf+**ye7hDG4d2)0#pacB
zXu(u)P6fqNhapDW@gxBKH}Bzoed>)BZeG}7^DTdEMCoLagd26|uaD&v^|rfaiDG(^s>jbZXGm$(
zaEQ@4-w_A3;dxm5Ov$Tq2y$10b&Mo41Tx=E*TW4G)e
zws`Vp1wriu-<5T@Igt^wc^<##sURtHH$11B|XS?F3?C+(N;G3)VMX>y$+J9G13^TluJdTh3}j5f^XbG*H+EQNhK35)!X0tE
z_CLg@4_W%5)B897^@?l0wj4>ihvcqo!yhnf+3mvE+JbdUYrco4%^7JB`p82OXjACM
zY1;zEHUe+nWo=z
z@`%=pdB(zc!m71bhbt-iqojqo@?)cx0;bbASPE7Kc02pX^R@|RdN=+Nwf4ZOGx3|I
zy`Lueo;n>NByqwyv0sp0>*wKvza^oUFc##Pm`5g?;Qfz9`6KO|f%cS9r`Hu0aDt|w
zfxa}VHcUXJAP6T&t^5_z2dRQm_jS6B^in^?7O2CA*w?L&3ufM0w8)SVwO3EXXyty2
z{)$Gt`0gensewHh`EVcLE(kWrVT(|RJ}&;XhA&Lv5nbTNTK8B=5+enQ)PS*gRv@Ct
zM_6YZmfdtwuS6VzBckcLTx;ZXIw5N=MKV5Hv|nQ1WB2+8vlcM
z3Q`y;6KQer`j4doZGs!$V>z$>oxdu8zxjWQSi43RkkoQ84ur{%Vac)D4M%+rwl97D
zyODe@OcIZW3mSwmg~U!XITGdgjNkbO^
z0x)D`0C*>H>cpwDdLws0CAl=p@oCjr97FXTl*3M(a=$(k`_ts;m!&W$6p9**HU&T$i2Q*Fi8;_IWq^Zf5NekafTX#N|3pl1^@gorqt7^Jy2jrZX}WPb~hX3
z50S^!WTebYO5~Wc34d@ZT&O`9?@$C0NB7B$Z_P=#CG#(sQ6#6)%s%(#@X0dSFiU%g
z7XFzE<82VcA3#om3`}jF4L|oX)M_uJXu%w^K>9cyh`o$KA}pKZZ7cn>ODgrR0^slX
zFIHdkmF9QXarooPBwvT<=d`0EeEr}*k9R^6`>Z2*Xt)U<_(yB%)Tb2mhHX^38yE5RZB>U+jOKHqbnr60vw0~k9#Zoq1fwtmJQ|wimZarx
z%P8(;7T3#IKTg_{m8VI9bp&bIJyKfCQT5eYfVRAGK67x&xZ-4Co~jrn9nLt=FC5o$
z_tIz8M6ic6f%i?n^!%FU3yE@|QhdDBcLtezOsKYP3xqzqj1vpwc_p$)NVlkBkBY1k
zDP#Ix`(mEIIpv_ucHqj=p5;jS@nUO5T^6S;#&nCbE#04*WMq!ZW&|r&AN&-ErPVe#
zXv9V`WM1$A{__vwat4JFUJ;}xC6}i5A3;_9i~WE3p9&QdH#ETvU5wZSSlLg^SKM|C
z7=%jdWo$eBG|`GWJb)yJ<#Ti)nn^vDxQ_A`8ETv!0PS-+gufr7t?*kkp{Y$A;
zK7`0SUCoM+3LG*ck2-a&eFWoio-n9RbnhYk(2%?#}yP~!3lza$u1Migd2IZ
z?UQ>c1sXwC1??j$q4m<`Mh_ddxBvBMb2aa~P^NMj-g-Hr89Oq3rkvWsezODRLMJC0Y-UHKiYs$gLt$5Pg4n
zC5Tc+f
z{8|-sb{=!NGgaNwC*O%nGl72tH@2V(s|)*g5(=Oks*d|5#bsMZZ(1o%$;X%J;1w>G
zUt;#R?CWb5Zp%e`877|zy+%Q6Re@0|jgHQQCxwP)*}Ry-
zsgv@Fl+F`x(tjGyzlYiW=D$jD)nZrmg{~4g_S4Eb%v`u(X@Rzsb_pwA3#PpZaxn0P
zP)$!Zaieddhu#JvF-N`e95xw|(vn{IpJ3*tX9ThGkByU8FBS-yrzLbeIEkWxrs|ox#b-UzYWzH$UWCbho2bw~kNX
z1h3C_NMmOxtY6ZwSHq&WnQ|{iu-3tfTz9dIQpj)0GWbJ)*OUeK$xsTFz`Y?){+~
zQ}u0QdM?u(CQRA|Q18r4$D#C_4PlMBvnes7d^X~E7Sd?aW^NSNAKq0aR(+E
z#DLqkg?-G(M(7&yw9tA-UB?lBZ@=AIsk`~Ivn*MsHVB{6oC-Gm$!6|rA
zL#&@tjT-Yd@;aO}0zDnN_L9j?LU8as39!#<@7g*e2x}%i$=+4|;2sQIJJ_1b`|8bS
z$)Fk<*p>hFai;lz1gJLx>o<5g#^6?Z*M%ige-xz|^ovY{wv=s^JqPrw3_?v0U@HF3aTl&>T59>P2p6%>fdC@N|`ElPsIXO#;I>c53ql
zLDrv<@5`dYQy71)&cGz$lh2{TM~?_`3GR-9Y4A2k3C%_*8KuduL}KtNj)S2;te@LM
zVC6D55Nhx?{sI>cAqoP_0qrhx{Q$@3l|#4mE}Xot`qZ4x$OjG1o^Uaqt@YkZ?zj74
z?^jT02&w<7LXA@JwAKtH@yvy|t{yST7dN5G3@0}hz(R5#AHV{^bHO>GF!;X`z~B7G
zs;+!cAnen0=)6(f%D_?;bto&)EOaP$=3B(%dq`>kR=ZoTW11t>{@GBYc7+p>c%xAQ
z3{!8B=y9OX+sZ_(H>DRE0kqL};Hyq)vLznyAeXlI`Z7N1EYDH$}mn>GQpJgkLgF
zejul4pYJ^YB6*(*o@h-=<6yl@WAVbVEMI2T96~~T3Mo9>$M@ns($eXPc^u}(2A*{f
z1_{d6r6!Yqm!a@}{R+X=M6IJCsC6R<7Ud97_Q14aUYmRY)K&}W#~r9jypSn`qo_`~
zqn~}wphlM;Wgx*1e)ESBX>NmpiK1Wt4Z|oNbq=&QT%N
zz`aJnQYW?i%7G*rlW9DD$QIegc+NvdpOCJDopv#yKqitKWn+Y!wQB+8%h>A9;6q=`
z%=(K6h0IbM2_T#B)moLaS~tGOcKInrnyqghRS9qOYEAWyItv*c_861#4FvcZXtdsQ_egDR?dhAxo{7
z^E6ug0Z+vE*#nJ_P%xn%_o<4tFqD~UBHy#o30Muw>+1bF?SN#=Na39Aysnj1=rm|8
z?HtiFlSwu?`jqn}%{8$yb+jKTNSLn=sbXA;csGjO*z6fTJ*|Gf$AZ?%WlsTDAx@s#
z5kD-YDQ3)nU_i$9sg8}V>+5ex(Q!M_&-V&Pi?aTuu|~!232>YZ~ZSuEoHM<)u>k~4Wl-~n$8}9$BpTWtd=rsrp{>9-|Fw9e#M?>OuG|e
zcD$FSKoNa`4=(6wmyw)$EB$x>*`#TBghFtmhhPw!>e2(
z<%&?^-6=LNel1Y~;Uj%^B{XtcuHBk~3{#^zA~b^;je_{i;tIiYAxT(s0;$%|r3=S_
zE`u{A_7DZL^CP%(=o<^59Kv}^X%o@BrJEZX!&+RF6XvWrYPXSR=hTep~cBGLY=x7AiPg-P|N
zdc8X3%p*fX68pSe<=i}7pG2%3T5`nafC|U?32wueQ#*mekH@y{7*vY_L*M|E&|TQ3
zXKmD5OHsvX!*6=bbN8pq3GqsK<&UlR*QZkfx>m8N{<=p?;~rwlth6`;>y;kO6Lmkn
z283BT7|*8S7zxX>a+2mG?!&Jsp6`sesDGD*0a6-4*>42lVMC>)QZD!%tGs%e$~$4z
zs!E&gSf^#V@T5>dU5q}6-agVMCT-QeTsIAjtH`2C10jLg)VJCjff}2@h!#J$Y8+$25>l)57vW@vxi;djYuOc(KKvU|G
z>IFS{O0r_IMb9wiU}w*Z>>QaY>!sNJMmP5a{~S&m9YrVib6RfWx9yNYHpLUvf9}7P
z$}A}{k=^K2_*K%Qm?>lM8_JS62U{>yGlk+bpyHMHhWABid?SmNAJ?|bv3bhF(P~FK
zGFC4baOA&M`mRCijK3z>;P6L4xq)Rc!`nw5VPPifcNo0FPk+P3;-aR?64G-=w!{^=i_pPd)B+Tm6aqd0*U%F?=q%idi`hq1N`)q
ziZ;|S5WIxu&a?=@0H*=C`ve{YXv2B`xd53l*{y^UD9t-uC$*eDsPaF3+uGleNtr9a
z3vaf_`URsVMV5y@asBnXtOS}6LL+`*+(h)G=kb#a|
z2MO}8%bl(&-Zr~QCkTOWf6G47m`z}O4uOsXbBBS*ey14=BRGPuR@?(e#_Zp9IA}tJ
ziBEd|!0cJY)+L)MXTzw4OwES^95S_X6S@Qf?^hrN!DO-tT2%tn;(|_gim}9M+nk%%WY)3Qi6=Fcg{boqVD8u`u8khgT(-zJ
zxap|q+bSADWiz*;Ep&=E73emG}H9f}rIFsgmBb%H`@j0fwpO{(RTZ&2oNQT=g>z?*g
z<{a9&mMD>GP9IbU;8_uw0LXHlB*+HHyE4MS$xVc#QLUyMXH!D3L&bV17$k{L;A~eU
z-ve5kOWu}B9C{^-pBV^qR&IiSgzeuJw`=-*ifq5NoX3XGn^x>O(v3pC1p$h6p@1@A
zQeg+9?A4f7)~({8ztWsz=O<4J{0>2ucCNWlT-iL1gHWfG-*GfCZhU)0e<=!rcI^0`
z-bWmNG_JrnBY2ny>qFl}HsdShzl?L{*M1QnrlBQIg+#xqObYsKVaTTxNXA;*J&a@4R+nk-o_FI0#$$IQ|xb0tSKuY}Lns_;`eg
zF40%lhPlrsC|RAojX&Ufe+PsOG-QG80%)=+18VA2qhwUdOsMvy@7Dr`QO3{V%lF*D
z%S=w!twWT(j8yGuyhmp?QYaKbw8??4pAwmY2-@k1s*t3K7EVw!u9*-Kp5Dv~q0pKB
z0=PF6L?Mkz!fD>CV6bLd2IDd3qL&~29F$Z|Q18a7y|qHA(OCKE6eapvP0W?eZt3$x
z2)Zz!Ky$y@N~MK_t&p9niv~}%H@o*CwPi}h;_Mw?HQO
zRm6#y+YX^W#8LuZ2cu?LIyaL9OJuUQ0m2Glxi)1vaE~t$;Cc(Al
zVGaCa>*f`2?L}9#RTRceDaZ5rtY-|}IP{%f6njPn2P1&qQnv-bjYEgAuOXoa*!WHm
z^xt`nRio;6guh;hfIqAhQaH6L(o{LPcE0I)5;Z;xMVg9`a|NHza5UB=l%$yGXhhIf
zl&Nq0`Up(E@WGr%YbHP&{&)YAt8U^;PwDdZOrnV$0M)At-N~7t^dncJ<8^|M3SV^3tO+kQcaYFX;fpQy
zf+uSAI`PaZhY8YjpmS(M(KBY)8v$)5o=}{xU9s#>n_*BE^95n1BYW%*iK{t~fheml
zA+4U&bbA`#=03T>vkh^DXG>4LKhD(Vj`ib1l21!P(9z4U!~tQa;*Q7o=Q#yG{-F|T
za#N;M3W+OrK?f~L&2G7dku#QHgY>#-zsSl3WmG)Qwb_#eC59kEewi78sorq)-%scc
zccnFhuVaw0gKT<1Fra4yGY1_yK#UL+Mi~&4!xLmxRao1gkR^)SLC#Ec
z*#xJoxnm-vOjY_bGqXY@-W!(nXZVo5TjUbNN9dZrV;e+5#qemKqO)HSJoNtQ(U!X|
zD<=Z$+kPD69;&=HL*SQgd)n9HCCmt<-@e!K?18ueqcb2
zxGrOvlNZr#73}7F!AR#P9P-!*o;RN{PW{Q|Sr{9GO!W(u!WtSMnnM6`P~%u8azFI-
z(kJ>Zop;UKt*yxx+XW%I;!P0)5KBIq+&-B*gV89(kom|OLzRRAULH~Lc<@%#zQdi%
zQZps(ySm5faZT9>OLhL=#_wP3|4aXi)wRc&$j)^fj(q7K{Er*EGGl@B
zxEg(>^#xAHQ&cobCuFoA(fpOi)Tye|wCa!qp@mvx$@SyKu4TSZtFDzV#WW&Q{7g}v
zw{Hto4KayxK#%;&`s(}_!CLDbL=MS)a)dXIa=d-3KvEiD$-u@p8WdE4V=mdl&Cn_q
zdS2O4;_wx3l+3F@kvumm-ESo6xsTs1p|yfxL@6F_{u@u`YPj@5{;9_$|E0$%l*Krm
zrj|ztQk1W%SoV?}z{l^ymK~1BC?I}#QU{y3?48?g8in&|^WNFqQg}I4j$UY#9i)i42;|kN2>6R&hw#f1p-=UB$pcn-N6d2HTiDAo3AQe
z!V=+Mn$SM*xU46uQ_mXiKE1a-HZ5^e3GT;YhZ}}@{d*4nJOBEr8ypN0eo$BXMoD6s
zr3{xaL?`r7vS$1S8%Q`5XUB&L;}7?Ve)1yr?CJoK+nE6#pct#6nlER0c^}OIhFOXA@m5sucZG3@y
zl`EI0@?qds)@J0{TLzW+jp5jU3-+1CijbF4&m_WEenv$_?OzVhxbx$sAA&RP&@jeR
zkM3`BqGMwSsBD<%Sq?T*1)ip45)xg0b#Y5wtMMNvj%9Rrlp?QmG{lOuUwgG(O`_~_
zX+vXb{VoxnY*3#Ct#F)CRnmN2E&*6ATm+x%x3Ohb+_2kOLB=nsUeQLjQ1uX!C45gR
zam--xp8~f2m;03br~hf!SU!xv|E_mLw!!rqoS+5(262!S
z`1YY&M~7-KbZ17r`ygnra(`PHs=Al&Px>Uk!{rzf&shj5j(8LUBcWWm5^V?nnA*T&
zCYrjfp6J=hkn(WPXCUPbQ^4bD6$L^yP~ylRLQ4|*A;@{9)UTpKEb`HKPQL#U{
zt*xmHZHjC1PuQ}VH;VJ_C(a+H(L*1j)`(Z5bSS#LAe^D~SmYDOhz(PP1j8hQgHTjf
z^rE7;z9R;Y8bnhfpCGAh35v*58XYpST&TscKBL<;jky!FD9>rk
zG%Gvi`)+&!eUju49<=9(3X_se%IG9{Hn8{oYgEoL-VhS2XX*Z?wsyp8HZ+H;p2DtmpT
zf(T5&&HC&RBGs$;E`yDpaz3M19|;X*M8`g;!gF>F1pj0(P!pq(g(aT2ekc(^BtP2(
z_wl(Z-eQC%vIjpbB4Eq1@Plfl*uJf0Y8M>X)qa`$@{0&vzJ{Oc44!f?J$mxW2VM1V;K-vm%ceM?dRw}>tz$nHG|b|{hk+%o0-}Mf%56;+V`Lx*22AOe
zZ;92*&pSJ0PJ-bRWj|>wfYhj7U~}yp;DTcg
zTjF~~v6o*oQ+d22>o{6SW_)^fojXJbhmO4vMthjQWck6SwzyZLBB&_aOz}sCD%c|+
z<~Z{QPX6Aym2F^)#n^(dpkEYh%65Uu591m@t>`&KYzgXLEF*sMhqa=|cwlP__<^02XK;f99%U@z>ew2shTtr0|xJ=t7``UK{|nn#C;>X7f&^fr0Vt|pcGGiq
zw;+-W)#m;DaDu-p=`YI-gDyd<)TL~uBVxA~lLbM{QomI$6%)N|eRRRQ4TV*5
z>_q2oZ}JyMQCTT|kezYx#c*@f*T1Gf|K)$;G);VMnI$!2SQFWXnXs7UT+2vWKH4zV
zUJMdvzeJ)ZduSJ+UF
z!Dbc$!DUZcxWNSf^Ze@CYCjyilBu?aF5TWFN0B(LkLf}9ngxI)U~{X?v=S>jEW0X>
z$I8O>c>sCVAhYKV!9a(}wqr@!K{}zSN0Kl|5rTap2;SLA^AN=q>y6)ZerhjR_EVX3
z!fG|XMlY@y#L0YyhDk>QVHP>IX}6=PWzq9un(%*(*7a6C1;y_5%LeP({F&LadA^u5
zgB=^gT}H?KI5EnEWhGLS4e(B5k}0V2*?PG39kqq8YN3K5hi-*~8Awdt5vKI;sFZXx
zBm`5fi`4n!ST!Ow7r~Ra8SJt%UkZHO%wr>Ewfoup=R%dHG)4OG%44=FmRfyWV_6Pb
z?CXpwEMg6#y~NC#U(#I42RD_5VrsDsH-)LCXiBlorDpa{6D^W|a}L$26-vfp{URLq!Ow`k8;exDUqNaD6Hs#Stx}^@kzj+0{FiHJmdNvYs>TN7C=>w21=k6yYgU4puVM4P
zyPV|)^-FT%qh<;w=DYV__7O1*vfJtQ(1f7y&!t>ph?IEn{(@;LBqt~p%G0Ce>9ts)
zRf2Jvi1Vktf0|Oj{$F*#|I0rz&0DoKUl!I6S`KTj^m2ZPTnU@flE!H5^5d44G;RZF
zS)zwj@%R)a>9U1yM81`K&~s*&w0TGo7QZP??|rnuD_i(`gAAYI)x@-L%<;~1%Qrsy
zf#6SA(s_phi6YLcU!0xx)_&D4iREC2ERTeFHAFF_;GqY3*XK^v7LhTwTqfj_xn3;r
zG8z@H>p-?{!^qY?MS{FoS|+i>u$=o@PJEn}+R+(!Z;el-&$Nw!RNu4vOZDM-C+GPK
z@E22r!ZDFO7634QaR}rnebn@;^CIYnjlT&CMYu0!Fzo@)`Lk!UugjzBVI(*hVTB!y
zge*1LKW}IWxjoxzyb*qGuHbz{=9CCu%FmviJAyOD1MoM5OOyC$?xCPi@B4874Ds0J
z%U-}cPxqh(Ck)r7+noD8xA(meuvMfXAhi%38
ziv`R)--mtD0t{^pf*f($Wernbj!3906&)Q0_BX=VXS$d70~(4_qKJUs_&w&KC>R*8
zG)_Qpij5zWUv`GYmFqckaOySkpQ8|o@xx^{O6`mn^JhFzfDnnr5!oYh$ZrB`mVRyv
zXL~3t7@ljH>{Qj$yNbYoFgmE`BkNB=%`M=ZRg}Hpb$CRfd`0H4>K;xw7f&zD?3ISX
zwV23oXq5*pnZz@>1Yw#wr5Co9X_G43*_Bu-X|Ha_h=1G(-s~;8+O0Ua+7~U?ViG4f
z?Q&1ZW*EkDh3etu=z|CQ!b7wjOLMWgieAzf5{`k{$>q%B@58*{A*fI~rpi|$M{I86
zMDEI={3>lmb`%?mM%K+|dy?&mhrKHT)&AmL%Kmc1t@au%9%jr5T66qnYgT@^;w*3(6N(y3+Zad*5W6~lJU9j!fIJltu&K`-$|W=sr;td%CYwY;s+F3Y%<8S>J&5+X9r5G
z?gHEH5hb#55*Dn8U4unyH5X_=@2;wT$F+tPMG`3pzU4(eN?&u2DhQqhUsGSIZOG%V
z5!OVoQ!&q$9_Igm%qzc;eBAknFc#VuwJ-{4Y782q3wqAN;K92)^j&dnfFFy=?npEt
zk`n7s%PILqYEU~3rr8rS35T!fk%!N)Qo!5IFc)(>jM?ppB+Ea0v@
zjEuU}lS3Q)`5LbyIEPUparT!^g;AhM-nDd=yKaSJcn5Qsf=7UGn94Zube5Rej>*)mB8B12dhrxqOr~cR=`XqKGGJ5
zgq}QCRPRh71#QhP1taT+EGD+9M-V)UsXW-^vE4hYukjk(w6dvAW!A|3+`fE)-OE2^
z*_8@DT}5lNu!Pxu)+IT!VeL$3*VOrc+WX3=HoL9cpbbF^!97?BTD-WsyO!eaUMTKf
zf@^V?q6J!@I23m+MT%=%tY~iDbNZg|oIA$-_nm)t|4K&2SYu>nWj$-}IoI5A)8qzA
ze%A}|L(Uq;TO9Gi0R%yJ`c|v_4G&tr8kdzOFqx)S3J1(M+4BqbUkUmb@c*)N`_q5s
zBkDgg<&4(BstZKwqhcpw{*=O0K@Ty1Y7vj2K1b)RV{%=BhO*~oY8XWSh8t{lR69Pl
zOzC|6)YV$9r((d1Nhe+o{q60`YtQyCm&`%aS1u(SP5W2#vJF#17B2a}K$<`t!Ai{o
zPqeWw-;{)Q3oB%gt3IE}gPu%mbvHlCUs==lEgI!yH43hsQf-XA4bzA{)T|~+#HPMz
zKRxhBIn;(1AFs=s*-W2QC0G|Bx$imwsV+s&kV`qQ|C_DuZ_hH?F=JSwOGX>Z5<6;&FQxeM+Z*KaH%N&wP9EQ06=i65O)e?;|Ga$FkRxJ#n>>+A
zn>5*jOKT=AM??PpVZ-b+Tt5{lL-r(vPsxIhI(C|ppcm3-!*jeD5YdI5N~L{K+Rtrw
zmqXzDhy-(ex4sXzXYx`yehAN)q}DkiZCZF<$$HSsgmsUH{ER@_9q%Lj8#>j#Obh^H
z`5-uAMYeZ6Y^iOq(oEK(Q-;V&f!j{`wZMbUTlsa(l)ZZ4Hc5T02mftLDHIT<>Fu?>I*mfWIhHYjy
zH60?fT*XUmW`+&k824)ZC;#$R*ub`ruu)?#j*Z0pgW{TkMMDUy}lk9a9-PT`N2kDUshFS$cjuc78BUA7r}VG>>-5Yt^4c6EoDfB
zId}XqvnNFYe;KfuQSJW0ZO|c-@F+FeNF5hVy1GtU9M#P5JQ~&yg
zA#`3vN4Z%aRUixe;4leN+iTqQMn10HcDWEjQSY}QUDDncAahg3vsKN%x&0o$h{dwV
zME{{MShAI|C^|SRUR!jBdUNVx`6|KE=O&V1P5#x<=^DM$1o%+#ovNP?V~tZEbK`Zo
z%^qAVFOdRklhK_A4YtZczm6KTI(3OEhyjF#)qo8wU2sERuH^tCoYiFTkhn=I0!GC8
z3J;o2$cE3(v6wz4buO-blwZwdm`fARy*O3VUyanUI%A!jd<+tz;3w@>-L}P~`=G1P
z1%$U29s)hVxEfFN=^KZ?(V(_}`iJuBpCrJa{Eyer-#4QUM(n>RvFLt)YURvIGtGK*
zDvo)Yu=pXN-_=)&0jW>0(Hh!<^*2e{*`xG-5;UW;?6a`ye$Kq3d=WJJBqw{}U|4P7
zn+;;y%ijtx+r;E%)TaE7Fs#xO3#w3Pw>{kcwbbPi&y<~|31sKRuHwKDcbzgKk48(x
zi%Z`3dW)wdZr&BzIN)&ewqe%ify1}G);Tx)-gq|%UepxlicW>w#N{RNO`xEq)Z_X#
zJSRP|PK_;YkH0soGR+ZkQYl*m0ds$}Pvt#PDKf-?7-#HVs#?F`NZ{|t{biBF>>BJT
zI(zoi{S|(#r4;Yz{pZ(nneya*@dB?44RMMWWBJg;Tab
z=cJKkeN;3fJ1d)&B>FKM?;k7226yqwiBsMwyQ8V%;zX?kY@RChdeuZ*w+CgMk)>du
zxG0ePh}`SIAbk3yx_VfjrVtO6AFtzKtdygB1##&1@BUbS@UPWaG_$1;*QpXbW=#*HkK;_!jEgthJ%y5jmlqTVFgpKW^Wk#
zw+8E6wr`Iup}n8jJ0WsxsuRZC_#6H2`4_*&r`CxlI^8&GLpAAinCCtZbEflr(Fb-v
z!;t8o$Bi>Lh1uDe)ECq)9Jw#>`PL>|Z}B9chhF7>5oILe^$22Iw4jkCT=qIZ7O?kr
zKgi5SXYd{D+O{lpNA++SH7}HekyYxJK1#$llxYt80kDt_Q?R~$yGfC>*U~sl8PEH*
zEgo;}t6Dc7|NcA8%h$Z1vV8YP1~b#K3tZVNN3D0`LBH+WindF*Qg7fNh77rb(pnd9
zUsaCV=q+SpwS^&$2iIJk8s{w64I3p|X)H|2X{TNvNfYYS@c|RCTJ9L!yqx$FX%JjAM@i#k%U12XEy_jo
z`PzAh5=q~)?5zCM_P8
za3KvJ$Tg~;+&QlidDdFM^$Ce$oVsU3OTmZQy`BaGbq*@#e-xin0&M}$FK14C8l0#T&o`dQwYEmxo+t@
zPP%_`cX&|1v0c+=%eE54yv*0B8SQbav+s}Q$6NKx7JkmRnxjAtk_N{J9k0A-HF)k^
zQLcUlqv7qFu%je{;eEvRX?g&KJi`QljtoEtFrOrH9N2te18*u^(eN>KEZ-q_M+^pl(jw#DUN7ZN6%m>9DXyd$TSe+?)ARBO|%^?H!%SYU!zdx
zZ2un?@=yLJYZ_`iV}ocaDk;(rlweZIIFtbWLM$q3Jwu+VR{{XRNQqNBx8ZipWB4lr
zg~DHr?EQb|0>>g~-Uhw+JSp5mtB(#*O+Oi|)kh_#A(fW5>Q|ZVz?~L%HPwIn0oQcuX%{@><
zD0u7ohK)%gj%Jr3vZ;HN5JTF`Xt_!(_IlGP7P3(=s`y;S8hC~)sG%o;jN``k=$+*x
z*bhpjwdgW>{|Q#O#a3TEemfADFY|ce7%UYW!u@3d2^AR$$3=o_F<=vt
z&J2$3ZEeyHB0TF|C6MTmNKbtgJBIfS;#pJ|ib}C%bbrFN;uTE@l^*hMHSwX7>Nhge
z%ejnw5RH4-Uj{@WA=~^@0r3a_81Gv}|e}ZT%%dg29PxlL&y@|pDxROSREOhF9$Hq~uJ
zS-L>d=v>YUN>LZ;hC-NC^SyHkO7QMdeG6g0EwsD%N{)Pv?GA%I!P4e^+%d#zJyqB
z#gv+8=6h)-^k`{rztE6uj=afnwvDl${d)rV5B|l9hQ8kk#kK8})P&6|K)!4?WdvR!
zY78|Oy@~a1p%4fFSsdpjc9lOfi=9=vBYmz~JBz6mlS@2mnRCuk#4!7W_J
z++$0^)@Epn!{lU>@VRln2IUs&I}C^iS;eV+xlu8N7tUTV?IkY`hcqexAdfT}(xMh2
zY^reD1~RJY7H(l_Tx{21ip4T^;U{5I>oE>n6j
z+>9Q_LWgo(`^eKGvGD5;)K_JNAjByZ5YR4BGNBjbNAV<#*6_@JdYdSQ37f-jHixdH
zQ|*%gdMp+i9-$l!uhCN9OWR9Ai|QSMPw5EDf
zW0+iaAuSjh3~cxPM1=^`NB|h1u|e_J+Ix!JFOJ1mLuA3$w!-m-VqDxO{hQ3|U{}_j
zZrpyNgz8VU5CCn1L4+Q2ks$mYo>0D&LDyJax@O?z-KGG5g_Y^{3`-9CQ-Xo+kjiv;u@rI3O5V7CC&va_jo|2MjMx$;D{bQNoYQZ>W4E
ztNG}<1)h{k4y0lLdiub1)BGdrMQh
zM3-^d*O>hceK;*Jv56%7E6=ZOTA0er`+{RpukPXj5yoT#a__WS;eOB8M6|4|Ap?xo
z+RPtD>NKA{b4=x$iu_j>`ltScDXt$_vm-X%Mh~n5({XO(DLc{roX&La{tZtfKL#g>
z(~?M6@XW4zbvLf{1t>3{K5SkEt(FPm1O)WLzltE8AP_k3WSWa0oW`7AD6?o!n#jPS>=$8!-4jFy^>FCbTw=VU$cSpicjQefYK}r>I=G`da06R@8yz6<)$M|E2}=
z>D|!EF}tc2f5Jfv&uhHANnsfo(DL?7S>bBb@=$asDk}zAFM)Z;ND&PZj0U`Hm8_RP
z
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 Forgot Password (hold clear button for 10 seconds)
Hide Notification Dot
Private
+ you have been Ǫ̴̺̙͎̤̫͓̮̰̿͝M̴͇̤͗́̾̈́̑̍̿̈͌͝Ȅ̴̡̨̛͉̣̙̩̲̣̤̟̪̣̎͗̎̆̒̉͆̆̕ͅͅǴ̸̯̬̗̠̙͛͐̀̈͋̀̈̽́̎̿͘͘͝ͅĀ̶̧̲̀ͅ ̴̢̟͕̜̓̾̓C̶̬̜̰̘̝̱̫͓͙̭̈́͐͋̓̏̈̍̓̀̌̾̚Ư̸̛̤̱̈́͆̽͊͛̐̓́̑͘̕̕͝R̸̨̨͈̬̱̺͕̪̪̘͕͎̂͛́̅̆̓̀͝ͅS̴̨̨̛̩̭̗̹̰̭̥͉̮̝̠̓̔͆̂͊͆̀̈́̅̕͘̚͝È̴̢̛̝͈̳͉͈͒͒̒̄̏̈̈́D̸̢̡̨̜̞̩̼̫̹̗̮͛̀̈̋̾̇̕̕͜ͅ
+ you have been freed