From 5a670d6cae41d77280a98936f2baddf31f069656 Mon Sep 17 00:00:00 2001
From: A404M <ahmadmahmoudiprogrammer@gmail.com>
Date: Wed, 18 Dec 2024 11:15:23 +0330
Subject: fixed bugs in multiple operators updated launcher icon

---
 app/build.gradle.kts                               |   4 +-
 app/src/main/ic_launcher-playstore.png             | Bin 2688 -> 2748 bytes
 .../main/java/com/a404m/calculator/MathHelper.kt   | 309 --------------------
 .../com/a404m/calculator/model/CalcButtonModel.kt  |   2 +-
 .../java/com/a404m/calculator/util/MathHelper.kt   | 314 +++++++++++++++++++++
 .../main/res/drawable/ic_launcher_background.xml   | 170 -----------
 .../main/res/drawable/ic_launcher_foreground.xml   |   8 +-
 app/src/main/res/mipmap-hdpi/ic_launcher.webp      | Bin 558 -> 564 bytes
 .../main/res/mipmap-hdpi/ic_launcher_round.webp    | Bin 1972 -> 1986 bytes
 app/src/main/res/mipmap-mdpi/ic_launcher.webp      | Bin 446 -> 468 bytes
 .../main/res/mipmap-mdpi/ic_launcher_round.webp    | Bin 1156 -> 1198 bytes
 app/src/main/res/mipmap-xhdpi/ic_launcher.webp     | Bin 702 -> 722 bytes
 .../main/res/mipmap-xhdpi/ic_launcher_round.webp   | Bin 2746 -> 2796 bytes
 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp    | Bin 944 -> 958 bytes
 .../main/res/mipmap-xxhdpi/ic_launcher_round.webp  | Bin 4174 -> 4178 bytes
 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp   | Bin 1266 -> 1276 bytes
 .../main/res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 5964 -> 6008 bytes
 17 files changed, 321 insertions(+), 486 deletions(-)
 delete mode 100644 app/src/main/java/com/a404m/calculator/MathHelper.kt
 create mode 100644 app/src/main/java/com/a404m/calculator/util/MathHelper.kt
 delete mode 100644 app/src/main/res/drawable/ic_launcher_background.xml

(limited to 'app')

diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 6848831..7fc29a3 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -12,8 +12,8 @@ android {
         applicationId = "com.a404m.calculator"
         minSdk = 21
         targetSdk = 35
-        versionCode = 2
-        versionName = "0.1.0"
+        versionCode = 3
+        versionName = "0.1.1"
 
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
     }
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
index 2d94637..1915ec0 100644
Binary files a/app/src/main/ic_launcher-playstore.png and b/app/src/main/ic_launcher-playstore.png differ
diff --git a/app/src/main/java/com/a404m/calculator/MathHelper.kt b/app/src/main/java/com/a404m/calculator/MathHelper.kt
deleted file mode 100644
index fa6cfc7..0000000
--- a/app/src/main/java/com/a404m/calculator/MathHelper.kt
+++ /dev/null
@@ -1,309 +0,0 @@
-package com.a404m.calculator
-
-import android.util.Log
-import com.a404m.calculator.MathHelper.Operator.Kind
-import java.nio.charset.UnsupportedCharsetException
-
-object MathHelper {
-    private val operatorStrings = arrayOf(
-        '+',
-        '-',
-        '×',
-        '÷',
-        '%',
-    )
-    private val numberStrings = arrayOf(
-        '0',
-        '1',
-        '2',
-        '3',
-        '4',
-        '5',
-        '6',
-        '7',
-        '8',
-        '9',
-        '.',
-    )
-
-    private val plus = Operator(
-        '+',
-        Kind.PREFIX,
-        {
-            Operand(it.first().value)
-        }
-    )
-    private val minus = Operator(
-        '-',
-        Kind.PREFIX,
-        {
-            Operand(-it.first().value)
-        }
-    )
-    private val add = Operator(
-        '+',
-        Kind.INFIX,
-        {
-            Operand(it.first().value+it.last().value)
-        }
-    )
-    private val sub = Operator(
-        '-',
-        Kind.INFIX,
-        {
-            Operand(it.first().value-it.last().value)
-        }
-    )
-    private val mul = Operator(
-        '×',
-        Kind.INFIX,
-        {
-            Operand(it.first().value*it.last().value)
-        }
-    )
-    private val div = Operator(
-        '÷',
-        Kind.INFIX,
-        {
-            Operand(it.first().value/it.last().value)
-        }
-    )
-    private val rem = Operator(
-        '%',
-        Kind.INFIX,
-        {
-            Operand(it.first().value%it.last().value)
-        }
-    )
-    private val operatorOrders = arrayOf(
-        arrayOf(
-            plus,
-            minus,
-        ),
-        arrayOf(
-            mul,
-            div,
-            rem,
-        ),
-        arrayOf(
-            add,
-            sub,
-        )
-    )
-    private val operators = arrayOf(
-        plus,
-        minus,
-        add,
-        sub,
-        mul,
-        div,
-        rem,
-    )
-
-    fun eval(expression: String): String {
-        return try {
-            parse(lex(expression)).eval().toString()
-        } catch (e: Exception) {
-            e.message ?: "Exception"
-        }
-    }
-
-    private fun parse(lexed: ArrayList<Any>): Operator {
-        for (order in operatorOrders) {
-            if (lexed.size == 1) {
-                break
-            }
-            for (i in lexed.indices) {
-                val item = lexed[i]
-                if (item is BasicOperator) {
-                    var op = item.toOperator(
-                        lexed,
-                        i
-                    )
-                    if (op in order) {
-                        op = op.cloneWithoutOperands()
-                        Log.d(
-                            "A404M",
-                            "parse: $op"
-                        )
-                        lexed[i] = op
-                        when (op.kind) {
-                            Kind.NONE -> {}
-                            Kind.INFIX -> {
-                                op.operands.add(lexed.removeAt(i - 1))
-                                op.operands.add(lexed.removeAt(i))
-                            }
-
-                            Kind.PREFIX -> {
-                                op.operands.add(lexed.removeAt(i + 1))
-                            }
-
-                            Kind.POSTFIX -> {
-                                op.operands.add(lexed.removeAt(i - 1))
-                            }
-                        }
-                        break
-                    }
-                }
-            }
-        }
-        return if (lexed.size != 1) {
-            throw UnsupportedOperationException("lexed.size = ${lexed.size}: $lexed")
-        } else if (lexed.first() is Operator) {
-            lexed.first() as Operator
-        } else if (lexed.first() is Operand) {
-            plus.cloneWithoutOperands().cloneWithOperator(arrayListOf(lexed.first()))
-        } else {
-            throw UnsupportedOperationException("unsupported type ${lexed.first().javaClass}")
-        }
-    }
-
-    private fun lex(expression: String): ArrayList<Any> {
-        val items = arrayListOf<Any>()
-
-        var i = 0
-        while (i < expression.length) {
-            when (val c = expression[i]) {
-                in numberStrings -> {
-                    val start = i
-                    while (++i < expression.length && expression[i] in numberStrings);
-                    items.add(
-                        Operand(
-                            value = expression.substring(
-                                start,
-                                i
-                            ).toDouble()
-                        )
-                    )
-                    --i
-                }
-
-                in operatorStrings -> {
-                    items.add(
-                        BasicOperator(c)
-                    )
-                }
-
-                else -> throw UnsupportedCharsetException(c.toString())
-            }
-            ++i
-        }
-
-        return items
-    }
-
-    private class Operator(
-        val operator: Char,
-        val kind: Kind,
-        val operate: (operands:List<Operand>)->Operand,
-        val operands: ArrayList<Any> = arrayListOf(),
-    ) {
-        fun cloneWithoutOperands():Operator{
-            return Operator(
-                operator,
-                kind,
-                operate,
-            )
-        }
-
-        fun cloneWithOperator(operands: ArrayList<Any>): Operator {
-            return Operator(
-                operator,
-                kind,
-                operate,
-                operands,
-            )
-        }
-
-        fun eval(): Operand {
-            Log.d(
-                "A404M",
-                "eval: $operator $operands"
-            )
-            if(operandSize() != operands.size){
-                throw UnsupportedOperationException("Not enough operands")
-            }
-
-            val evaledOperands = operands.map {
-                if(it is Operator){
-                    it.eval()
-                }else{
-                    it as Operand
-                }
-            }
-
-            return operate(evaledOperands)
-        }
-
-        fun operandSize(): Int {
-            return when (kind) {
-                Kind.INFIX -> 2
-                Kind.PREFIX, Kind.POSTFIX -> 1
-                Kind.NONE -> 0
-            }
-        }
-
-        override fun toString(): String {
-            return "$operator $kind $operands"
-        }
-
-        enum class Kind {
-            NONE,
-            INFIX,
-            PREFIX,
-            POSTFIX,
-        }
-    }
-
-    private class BasicOperator(
-        val operator: Char,
-    ) {
-        fun toOperator(
-            items: List<Any>,
-            i: Int
-        ): Operator {
-            val left = items.getOrElse(
-                i - 1,
-                { Any() },
-            ) is Operand
-
-            val right = items.getOrElse(
-                i + 1,
-                { Any() },
-            ) is Operand
-
-            val k:Kind
-
-            if (left) {
-                if (right) {
-                    k = Kind.INFIX
-                } else {
-                    k = Kind.POSTFIX
-                }
-            } else if (right) {
-                k = Kind.PREFIX
-            } else {
-                k = Kind.NONE
-            }
-
-            return operators.first {
-                it.operator == operator && it.kind == k
-            }
-        }
-
-        override fun toString(): String {
-            return operator.toString();
-        }
-    }
-
-    private class Operand(
-        val value: Double,
-    ){
-        override fun toString(): String {
-            if(value % 1 == 0.0){
-                return "%.0f".format(value)
-            }
-            return value.toString()
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt b/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt
index 435acef..c6a10da 100644
--- a/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt
+++ b/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt
@@ -1,6 +1,6 @@
 package com.a404m.calculator.model
 
-import com.a404m.calculator.MathHelper
+import com.a404m.calculator.util.MathHelper
 
 data class CalcButtonModel(
     val text: String,
diff --git a/app/src/main/java/com/a404m/calculator/util/MathHelper.kt b/app/src/main/java/com/a404m/calculator/util/MathHelper.kt
new file mode 100644
index 0000000..d0c3ee3
--- /dev/null
+++ b/app/src/main/java/com/a404m/calculator/util/MathHelper.kt
@@ -0,0 +1,314 @@
+package com.a404m.calculator.util
+
+import android.util.Log
+import com.a404m.calculator.util.MathHelper.Operator.Kind
+import java.nio.charset.UnsupportedCharsetException
+
+object MathHelper {
+    private val operatorStrings = arrayOf(
+        '+',
+        '-',
+        '×',
+        '÷',
+        '%',
+    )
+    private val numberStrings = arrayOf(
+        '0',
+        '1',
+        '2',
+        '3',
+        '4',
+        '5',
+        '6',
+        '7',
+        '8',
+        '9',
+        '.',
+    )
+
+    private val plus = Operator(
+        '+',
+        Kind.PREFIX,
+        {
+            Operand(it.first().value)
+        }
+    )
+    private val minus = Operator(
+        '-',
+        Kind.PREFIX,
+        {
+            Operand(-it.first().value)
+        }
+    )
+    private val add = Operator(
+        '+',
+        Kind.INFIX,
+        {
+            Operand(it.first().value+it.last().value)
+        }
+    )
+    private val sub = Operator(
+        '-',
+        Kind.INFIX,
+        {
+            Operand(it.first().value-it.last().value)
+        }
+    )
+    private val mul = Operator(
+        '×',
+        Kind.INFIX,
+        {
+            Operand(it.first().value*it.last().value)
+        }
+    )
+    private val div = Operator(
+        '÷',
+        Kind.INFIX,
+        {
+            Operand(it.first().value/it.last().value)
+        }
+    )
+    private val rem = Operator(
+        '%',
+        Kind.INFIX,
+        {
+            Operand(it.first().value%it.last().value)
+        }
+    )
+    private val operatorOrders = arrayOf(
+        arrayOf(
+            plus,
+            minus,
+        ),
+        arrayOf(
+            mul,
+            div,
+            rem,
+        ),
+        arrayOf(
+            add,
+            sub,
+        )
+    )
+    private val operators = arrayOf(
+        plus,
+        minus,
+        add,
+        sub,
+        mul,
+        div,
+        rem,
+    )
+
+    fun eval(expression: String): String {
+        return try {
+            parse(lex(expression)).eval().toString()
+        } catch (e: Exception) {
+            e.message ?: "Exception"
+        }
+    }
+
+    private fun parse(lexed: ArrayList<Any>): Operator {
+        for (order in operatorOrders) {
+            if (lexed.size == 1) {
+                break
+            }
+            var i = -1
+            while(++i < lexed.size) {
+                val item = lexed[i]
+                if (item is BasicOperator) {
+                    var op = item.toOperator(
+                        lexed,
+                        i
+                    )
+                    if (op in order) {
+                        op = op.cloneWithoutOperands()
+                        Log.d(
+                            "A404M",
+                            "parse: $op"
+                        )
+                        lexed[i] = op
+                        when (op.kind) {
+                            Kind.NONE -> {}
+                            Kind.INFIX -> {
+                                op.operands.add(lexed.removeAt(i - 1))
+                                op.operands.add(lexed.removeAt(i))
+                                i -= 2
+                            }
+
+                            Kind.PREFIX -> {
+                                op.operands.add(lexed.removeAt(i + 1))
+                                --i
+                            }
+
+                            Kind.POSTFIX -> {
+                                op.operands.add(lexed.removeAt(i - 1))
+                                --i
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return if (lexed.size != 1) {
+            throw UnsupportedOperationException("lexed.size = ${lexed.size}: $lexed")
+        } else if (lexed.first() is Operator) {
+            lexed.first() as Operator
+        } else if (lexed.first() is Operand) {
+            plus.cloneWithoutOperands().cloneWithOperator(arrayListOf(lexed.first()))
+        } else {
+            throw UnsupportedOperationException("unsupported type ${lexed.first().javaClass}")
+        }
+    }
+
+    private fun lex(expression: String): ArrayList<Any> {
+        val items = arrayListOf<Any>()
+
+        var i = 0
+        while (i < expression.length) {
+            when (val c = expression[i]) {
+                in numberStrings -> {
+                    val start = i
+                    while (++i < expression.length && expression[i] in numberStrings);
+                    items.add(
+                        Operand(
+                            value = expression.substring(
+                                start,
+                                i
+                            ).toDouble()
+                        )
+                    )
+                    --i
+                }
+
+                in operatorStrings -> {
+                    items.add(
+                        BasicOperator(c)
+                    )
+                }
+
+                else -> throw UnsupportedCharsetException(c.toString())
+            }
+            ++i
+        }
+
+        return items
+    }
+
+    private class Operator(
+        val operator: Char,
+        val kind: Kind,
+        val operate: (operands:List<Operand>)-> Operand,
+        val operands: ArrayList<Any> = arrayListOf(),
+    ) {
+        fun cloneWithoutOperands(): Operator {
+            return Operator(
+                operator,
+                kind,
+                operate,
+            )
+        }
+
+        fun cloneWithOperator(operands: ArrayList<Any>): Operator {
+            return Operator(
+                operator,
+                kind,
+                operate,
+                operands,
+            )
+        }
+
+        fun eval(): Operand {
+            Log.d(
+                "A404M",
+                "eval: $operator $operands"
+            )
+            if(operandSize() != operands.size){
+                throw UnsupportedOperationException("Not enough operands")
+            }
+
+            val evaledOperands = operands.map {
+                if(it is Operator){
+                    it.eval()
+                }else{
+                    it as Operand
+                }
+            }
+
+            return operate(evaledOperands)
+        }
+
+        fun operandSize(): Int {
+            return when (kind) {
+                Kind.INFIX -> 2
+                Kind.PREFIX, Kind.POSTFIX -> 1
+                Kind.NONE -> 0
+            }
+        }
+
+        override fun toString(): String {
+            return "$operator $kind $operands"
+        }
+
+        enum class Kind {
+            NONE,
+            INFIX,
+            PREFIX,
+            POSTFIX,
+        }
+    }
+
+    private class BasicOperator(
+        val operator: Char,
+    ) {
+        fun toOperator(
+            items: List<Any>,
+            i: Int
+        ): Operator {
+            val leftItem = items.getOrElse(
+                i - 1,
+                { Any() },
+            )
+            val left = leftItem is Operand || leftItem is Operator
+
+            val rightItem = items.getOrElse(
+                i + 1,
+                { Any() },
+            )
+            val right = rightItem is Operand || rightItem is Operator
+
+            val k:Kind
+
+            if (left) {
+                if (right) {
+                    k = Kind.INFIX
+                } else {
+                    k = Kind.POSTFIX
+                }
+            } else if (right) {
+                k = Kind.PREFIX
+            } else {
+                k = Kind.NONE
+            }
+
+            return operators.first {
+                it.operator == operator && it.kind == k
+            }
+        }
+
+        override fun toString(): String {
+            return operator.toString();
+        }
+    }
+
+    private class Operand(
+        val value: Double,
+    ){
+        override fun toString(): String {
+            if(value % 1 == 0.0){
+                return "%.0f".format(value)
+            }
+            return value.toString()
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 07d5da9..0000000
--- a/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="108dp"
-    android:height="108dp"
-    android:viewportWidth="108"
-    android:viewportHeight="108">
-    <path
-        android:fillColor="#3DDC84"
-        android:pathData="M0,0h108v108h-108z" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M9,0L9,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,0L19,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,0L29,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,0L39,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,0L49,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,0L59,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,0L69,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,0L79,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M89,0L89,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M99,0L99,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,9L108,9"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,19L108,19"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,29L108,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,39L108,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,49L108,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,59L108,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,69L108,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,79L108,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,89L108,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,99L108,99"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,29L89,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,39L89,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,49L89,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,59L89,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,69L89,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,79L89,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,19L29,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,19L39,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,19L49,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,19L59,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,19L69,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,19L79,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-</vector>
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
index c5eec94..09bb996 100644
--- a/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -4,10 +4,10 @@
     android:height="108dp"
     android:viewportWidth="87"
     android:viewportHeight="167.625">
-  <group android:scaleX="0.23874721"
-      android:scaleY="0.46"
-      android:translateX="33.1145"
-      android:translateY="45.25875">
+  <group android:scaleX="0.3581208"
+      android:scaleY="0.69"
+      android:translateX="27.921745"
+      android:translateY="25.981874">
     <group android:translateY="133.66406">
       <path android:pathData="M6.1875,-36.84375L80.515625,-36.84375L80.515625,-24.75L6.1875,-24.75L6.1875,-36.84375ZM6.1875,-65.390625L80.515625,-65.390625L80.515625,-53.4375L6.1875,-53.4375L6.1875,-65.390625Z"
           android:fillColor="#A437DB"/>
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp
index ee62035..643e96f 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
index 6452b49..b06dba0 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp
index 8f60d53..66e9095 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
index 3cd3848..47aa47d 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
index 9cb323b..f45a26e 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
index 6941df4..738dd8b 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
index eb514e1..876afd1 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
index 749d7c1..62c18af 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
index e404ad0..bdf47e0 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
index f7f408b..0de6d41 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
-- 
cgit v1.2.3