diff --git a/Lab4/EXO1/.gitignore b/Lab4/.gitignore
similarity index 100%
rename from Lab4/EXO1/.gitignore
rename to Lab4/.gitignore
diff --git a/Lab4/EXO1/.idea/.gitignore b/Lab4/EXO1/.idea/.gitignore
deleted file mode 100644
index 26d33521af10bcc7fd8cea344038eaaeb78d0ef5..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/Lab4/EXO1/.idea/.name b/Lab4/EXO1/.idea/.name
deleted file mode 100644
index c1c77b93e58b9233796eb9a4e9817b51d15df1e6..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-Deezersearch
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/compiler.xml b/Lab4/EXO1/.idea/compiler.xml
deleted file mode 100644
index b589d56e9f285d8cfdc6c270853a5d439021a278..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="CompilerConfiguration">
-    <bytecodeTargetLevel target="17" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/deploymentTargetSelector.xml b/Lab4/EXO1/.idea/deploymentTargetSelector.xml
deleted file mode 100644
index b268ef36cd2de3a14ddddf25aa9f5d4e95731e18..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/deploymentTargetSelector.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="deploymentTargetSelector">
-    <selectionStates>
-      <SelectionState runConfigName="app">
-        <option name="selectionMode" value="DROPDOWN" />
-      </SelectionState>
-    </selectionStates>
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/gradle.xml b/Lab4/EXO1/.idea/gradle.xml
deleted file mode 100644
index 32522c1e7054e664d0b44bf5c384d6e06213b9a5..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/gradle.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="GradleSettings">
-    <option name="linkedExternalProjectsSettings">
-      <GradleProjectSettings>
-        <option name="externalProjectPath" value="$PROJECT_DIR$" />
-        <option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
-        <option name="modules">
-          <set>
-            <option value="$PROJECT_DIR$" />
-            <option value="$PROJECT_DIR$/app" />
-          </set>
-        </option>
-        <option name="resolveExternalAnnotations" value="false" />
-      </GradleProjectSettings>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/kotlinc.xml b/Lab4/EXO1/.idea/kotlinc.xml
deleted file mode 100644
index fdf8d994a6599dd8b64a341af14c598069a10022..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/kotlinc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="KotlinJpsPluginSettings">
-    <option name="version" value="1.9.0" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/migrations.xml b/Lab4/EXO1/.idea/migrations.xml
deleted file mode 100644
index f8051a6f973e69a86e6f07f1a1c87f17a31c7235..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/migrations.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectMigrations">
-    <option name="MigrateToGradleLocalJavaHome">
-      <set>
-        <option value="$PROJECT_DIR$" />
-      </set>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/misc.xml b/Lab4/EXO1/.idea/misc.xml
deleted file mode 100644
index 0ad17cbd33a2f389d524bc4bfef9c52e1f7ab490..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/misc.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ExternalStorageConfigurationManager" enabled="true" />
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/build/classes" />
-  </component>
-  <component name="ProjectType">
-    <option name="id" value="Android" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/other.xml b/Lab4/EXO1/.idea/other.xml
deleted file mode 100644
index 22069ff90528ba945e7276322da9379a838de361..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/other.xml
+++ /dev/null
@@ -1,549 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="direct_access_persist.xml">
-    <option name="deviceSelectionList">
-      <list>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="27" />
-          <option name="brand" value="DOCOMO" />
-          <option name="codename" value="F01L" />
-          <option name="id" value="F01L" />
-          <option name="manufacturer" value="FUJITSU" />
-          <option name="name" value="F-01L" />
-          <option name="screenDensity" value="360" />
-          <option name="screenX" value="720" />
-          <option name="screenY" value="1280" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="OnePlus" />
-          <option name="codename" value="OP5552L1" />
-          <option name="id" value="OP5552L1" />
-          <option name="manufacturer" value="OnePlus" />
-          <option name="name" value="CPH2415" />
-          <option name="screenDensity" value="480" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2412" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="OPPO" />
-          <option name="codename" value="OP573DL1" />
-          <option name="id" value="OP573DL1" />
-          <option name="manufacturer" value="OPPO" />
-          <option name="name" value="CPH2557" />
-          <option name="screenDensity" value="480" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="28" />
-          <option name="brand" value="DOCOMO" />
-          <option name="codename" value="SH-01L" />
-          <option name="id" value="SH-01L" />
-          <option name="manufacturer" value="SHARP" />
-          <option name="name" value="AQUOS sense2 SH-01L" />
-          <option name="screenDensity" value="480" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2160" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="Lenovo" />
-          <option name="codename" value="TB370FU" />
-          <option name="id" value="TB370FU" />
-          <option name="manufacturer" value="Lenovo" />
-          <option name="name" value="Tab P12" />
-          <option name="screenDensity" value="340" />
-          <option name="screenX" value="1840" />
-          <option name="screenY" value="2944" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="a15" />
-          <option name="id" value="a15" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="A15" />
-          <option name="screenDensity" value="450" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2340" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="a35x" />
-          <option name="id" value="a35x" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="A35" />
-          <option name="screenDensity" value="450" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2340" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="31" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="a51" />
-          <option name="id" value="a51" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy A51" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="akita" />
-          <option name="id" value="akita" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 8a" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="motorola" />
-          <option name="codename" value="arcfox" />
-          <option name="id" value="arcfox" />
-          <option name="manufacturer" value="Motorola" />
-          <option name="name" value="razr plus 2024" />
-          <option name="screenDensity" value="360" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="1272" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="motorola" />
-          <option name="codename" value="austin" />
-          <option name="id" value="austin" />
-          <option name="manufacturer" value="Motorola" />
-          <option name="name" value="moto g 5G (2022)" />
-          <option name="screenDensity" value="280" />
-          <option name="screenX" value="720" />
-          <option name="screenY" value="1600" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="b0q" />
-          <option name="id" value="b0q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy S22 Ultra" />
-          <option name="screenDensity" value="600" />
-          <option name="screenX" value="1440" />
-          <option name="screenY" value="3088" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="32" />
-          <option name="brand" value="google" />
-          <option name="codename" value="bluejay" />
-          <option name="id" value="bluejay" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 6a" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="caiman" />
-          <option name="id" value="caiman" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 9 Pro" />
-          <option name="screenDensity" value="360" />
-          <option name="screenX" value="960" />
-          <option name="screenY" value="2142" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="comet" />
-          <option name="id" value="comet" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 9 Pro Fold" />
-          <option name="screenDensity" value="390" />
-          <option name="screenX" value="2076" />
-          <option name="screenY" value="2152" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="29" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="crownqlteue" />
-          <option name="id" value="crownqlteue" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy Note9" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="2220" />
-          <option name="screenY" value="1080" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="dm2q" />
-          <option name="id" value="dm2q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="S23 Plus" />
-          <option name="screenDensity" value="450" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2340" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="dm3q" />
-          <option name="id" value="dm3q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy S23 Ultra" />
-          <option name="screenDensity" value="600" />
-          <option name="screenX" value="1440" />
-          <option name="screenY" value="3088" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="e1q" />
-          <option name="id" value="e1q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy S24" />
-          <option name="screenDensity" value="480" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2340" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="e3q" />
-          <option name="id" value="e3q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy S24 Ultra" />
-          <option name="screenDensity" value="450" />
-          <option name="screenX" value="1440" />
-          <option name="screenY" value="3120" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="google" />
-          <option name="codename" value="eos" />
-          <option name="id" value="eos" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Eos" />
-          <option name="screenDensity" value="320" />
-          <option name="screenX" value="384" />
-          <option name="screenY" value="384" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="google" />
-          <option name="codename" value="felix" />
-          <option name="id" value="felix" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel Fold" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="2208" />
-          <option name="screenY" value="1840" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="felix" />
-          <option name="id" value="felix" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel Fold" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="2208" />
-          <option name="screenY" value="1840" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="google" />
-          <option name="codename" value="felix_camera" />
-          <option name="id" value="felix_camera" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel Fold (Camera-enabled)" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="2208" />
-          <option name="screenY" value="1840" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="motorola" />
-          <option name="codename" value="fogona" />
-          <option name="id" value="fogona" />
-          <option name="manufacturer" value="Motorola" />
-          <option name="name" value="moto g play - 2024" />
-          <option name="screenDensity" value="280" />
-          <option name="screenX" value="720" />
-          <option name="screenY" value="1600" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="g0q" />
-          <option name="id" value="g0q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="SM-S906U1" />
-          <option name="screenDensity" value="450" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2340" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="gta9pwifi" />
-          <option name="id" value="gta9pwifi" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="SM-X210" />
-          <option name="screenDensity" value="240" />
-          <option name="screenX" value="1200" />
-          <option name="screenY" value="1920" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="gts7xllite" />
-          <option name="id" value="gts7xllite" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="SM-T738U" />
-          <option name="screenDensity" value="340" />
-          <option name="screenX" value="1600" />
-          <option name="screenY" value="2560" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="gts8uwifi" />
-          <option name="id" value="gts8uwifi" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy Tab S8 Ultra" />
-          <option name="screenDensity" value="320" />
-          <option name="screenX" value="1848" />
-          <option name="screenY" value="2960" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="gts8wifi" />
-          <option name="id" value="gts8wifi" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy Tab S8" />
-          <option name="screenDensity" value="274" />
-          <option name="screenX" value="1600" />
-          <option name="screenY" value="2560" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="gts9fe" />
-          <option name="id" value="gts9fe" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy Tab S9 FE 5G" />
-          <option name="screenDensity" value="280" />
-          <option name="screenX" value="1440" />
-          <option name="screenY" value="2304" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="husky" />
-          <option name="id" value="husky" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 8 Pro" />
-          <option name="screenDensity" value="390" />
-          <option name="screenX" value="1008" />
-          <option name="screenY" value="2244" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="30" />
-          <option name="brand" value="motorola" />
-          <option name="codename" value="java" />
-          <option name="id" value="java" />
-          <option name="manufacturer" value="Motorola" />
-          <option name="name" value="G20" />
-          <option name="screenDensity" value="280" />
-          <option name="screenX" value="720" />
-          <option name="screenY" value="1600" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="komodo" />
-          <option name="id" value="komodo" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 9 Pro XL" />
-          <option name="screenDensity" value="360" />
-          <option name="screenX" value="1008" />
-          <option name="screenY" value="2244" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="google" />
-          <option name="codename" value="lynx" />
-          <option name="id" value="lynx" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 7a" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="motorola" />
-          <option name="codename" value="maui" />
-          <option name="id" value="maui" />
-          <option name="manufacturer" value="Motorola" />
-          <option name="name" value="moto g play - 2023" />
-          <option name="screenDensity" value="280" />
-          <option name="screenX" value="720" />
-          <option name="screenY" value="1600" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="o1q" />
-          <option name="id" value="o1q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy S21" />
-          <option name="screenDensity" value="421" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="31" />
-          <option name="brand" value="google" />
-          <option name="codename" value="oriole" />
-          <option name="id" value="oriole" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 6" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="google" />
-          <option name="codename" value="panther" />
-          <option name="id" value="panther" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 7" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="q5q" />
-          <option name="id" value="q5q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy Z Fold5" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1812" />
-          <option name="screenY" value="2176" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="q6q" />
-          <option name="id" value="q6q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy Z Fold6" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1856" />
-          <option name="screenY" value="2160" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="30" />
-          <option name="brand" value="google" />
-          <option name="codename" value="r11" />
-          <option name="id" value="r11" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel Watch" />
-          <option name="screenDensity" value="320" />
-          <option name="screenX" value="384" />
-          <option name="screenY" value="384" />
-          <option name="type" value="WEAR_OS" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="r11q" />
-          <option name="id" value="r11q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="SM-S711U" />
-          <option name="screenDensity" value="450" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2340" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="30" />
-          <option name="brand" value="google" />
-          <option name="codename" value="redfin" />
-          <option name="id" value="redfin" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 5" />
-          <option name="screenDensity" value="440" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2340" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="shiba" />
-          <option name="id" value="shiba" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 8" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="samsung" />
-          <option name="codename" value="t2q" />
-          <option name="id" value="t2q" />
-          <option name="manufacturer" value="Samsung" />
-          <option name="name" value="Galaxy S21 Plus" />
-          <option name="screenDensity" value="394" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2400" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="33" />
-          <option name="brand" value="google" />
-          <option name="codename" value="tangorpro" />
-          <option name="id" value="tangorpro" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel Tablet" />
-          <option name="screenDensity" value="320" />
-          <option name="screenX" value="1600" />
-          <option name="screenY" value="2560" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="34" />
-          <option name="brand" value="google" />
-          <option name="codename" value="tokay" />
-          <option name="id" value="tokay" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 9" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2424" />
-        </PersistentDeviceSelectionData>
-        <PersistentDeviceSelectionData>
-          <option name="api" value="35" />
-          <option name="brand" value="google" />
-          <option name="codename" value="tokay" />
-          <option name="id" value="tokay" />
-          <option name="manufacturer" value="Google" />
-          <option name="name" value="Pixel 9" />
-          <option name="screenDensity" value="420" />
-          <option name="screenX" value="1080" />
-          <option name="screenY" value="2424" />
-        </PersistentDeviceSelectionData>
-      </list>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/.idea/vcs.xml b/Lab4/EXO1/.idea/vcs.xml
deleted file mode 100644
index b2bdec2d71b6a5ce4ae49efc37516809c50e4d5e..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerApiService.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerApiService.kt
deleted file mode 100644
index c8584b68ce3ca3229db29e62598301959a08140a..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerApiService.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.example.deezersearch
-
-import retrofit2.Call
-import retrofit2.http.GET
-import retrofit2.http.Query
-
-interface DeezerApiService {
-    @GET("search")
-    fun searchTracks(@Query("q") query: String): Call<DeezerSearchResponse>
-}
diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerSearchResponse.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerSearchResponse.kt
deleted file mode 100644
index b33f935bb101df4334c4194d998633d88f56d45a..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerSearchResponse.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.example.deezersearch
-
-data class DeezerSearchResponse(
-    val data : List<Track>
-)
-data class Track(
-    val id:String,
-    val title: String,
-    val duration:String,
-    val artist:Artist,
-    val album: Album
-)
-
-data class Album(
-    val id:String,
-    val title:String,
-    val cover:String,
-    val tracks:List<Track>
-)
-
-data class Artist(
-    val id:String,
-    val name:String,
-    val picture:String
-)
diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerViewModel.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerViewModel.kt
deleted file mode 100644
index f762e68ec78e5e3af6a5bd2762e9a41cd87c2f8b..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerViewModel.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.example.deezersearch
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-import retrofit2.Call
-import retrofit2.Callback
-import retrofit2.Response
-import retrofit2.Retrofit
-import retrofit2.converter.gson.GsonConverterFactory
-
-class DeezerViewModel : ViewModel() {
-    // LiveData pour les résultats des morceaux
-    private val _tracks = MutableLiveData<List<Track>>()
-    val tracks: LiveData<List<Track>> get() = _tracks
-
-    private val api: DeezerApiService
-
-    init {
-        // Initialisation de Retrofit avec le converter Gson
-        val retrofit = Retrofit.Builder()
-            .baseUrl("https://api.deezer.com/")
-            .addConverterFactory(GsonConverterFactory.create())
-            .build()
-
-        // Création de l'implémentation de l'interface DeezerApiService
-        api = retrofit.create(DeezerApiService::class.java)
-    }
-
-    // Fonction de recherche
-    fun search(query: String) {
-        api.searchTracks(query).enqueue(object : Callback<DeezerSearchResponse> {
-            override fun onResponse(
-                call: Call<DeezerSearchResponse>,
-                response: Response<DeezerSearchResponse>
-            ) {
-                if (response.isSuccessful) {
-                    // Mise à jour des LiveData avec les morceaux reçus
-                    _tracks.value = response.body()?.data ?: emptyList()
-                } else {
-                    _tracks.value = emptyList()
-                }
-            }
-
-            override fun onFailure(call: Call<DeezerSearchResponse>, t: Throwable) {
-                // En cas d'erreur réseau
-                _tracks.value = emptyList()
-            }
-        })
-    }
-}
diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/TrackAdapter.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/TrackAdapter.kt
deleted file mode 100644
index 26d482bb496fee77f44f3d45ab425c3b1c79dc0c..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/TrackAdapter.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.example.deezersearch
-
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.TextView
-import androidx.recyclerview.widget.RecyclerView
-
-class TrackAdapter(private var trackList: List<Track>) :
-    RecyclerView.Adapter<TrackAdapter.TrackViewHolder>() {
-
-    inner class TrackViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
-        val titleText: TextView = itemView.findViewById(android.R.id.text1)
-    }
-
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TrackViewHolder {
-        val view = LayoutInflater.from(parent.context)
-            .inflate(android.R.layout.simple_list_item_1, parent, false)
-        return TrackViewHolder(view)
-    }
-
-    override fun onBindViewHolder(holder: TrackViewHolder, position: Int) {
-        val track = trackList[position]
-        holder.titleText.text = "${track.title} - ${track.artist.name}"
-    }
-
-    override fun getItemCount(): Int = trackList.size
-
-    fun updateTracks(newTracks: List<Track>) {
-        trackList = newTracks
-        notifyDataSetChanged()
-    }
-}
diff --git a/Lab4/EXO1/app/src/main/res/values/strings.xml b/Lab4/EXO1/app/src/main/res/values/strings.xml
deleted file mode 100644
index e982761a31533fd8ab13f2e4b83bc0e98ed82695..0000000000000000000000000000000000000000
--- a/Lab4/EXO1/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<resources>
-    <string name="app_name">Deezersearch</string>
-</resources>
\ No newline at end of file
diff --git a/Lab4/EXO1/app/.gitignore b/Lab4/app/.gitignore
similarity index 100%
rename from Lab4/EXO1/app/.gitignore
rename to Lab4/app/.gitignore
diff --git a/Lab4/EXO1/app/build.gradle.kts b/Lab4/app/build.gradle.kts
similarity index 80%
rename from Lab4/EXO1/app/build.gradle.kts
rename to Lab4/app/build.gradle.kts
index 75cf4c8959005886fb17d4792088eaeb08a07138..dd6489a7926f4d406bc2478882361de3e61c516a 100644
--- a/Lab4/EXO1/app/build.gradle.kts
+++ b/Lab4/app/build.gradle.kts
@@ -1,6 +1,8 @@
 plugins {
     alias(libs.plugins.android.application)
     alias(libs.plugins.jetbrains.kotlin.android)
+    id("kotlin-kapt")
+
 }
 
 android {
@@ -36,6 +38,7 @@ android {
 }
 
 dependencies {
+
     implementation(libs.androidx.core.ktx)
     implementation(libs.androidx.appcompat)
     implementation(libs.material)
@@ -44,12 +47,12 @@ dependencies {
     testImplementation(libs.junit)
     androidTestImplementation(libs.androidx.junit)
     androidTestImplementation(libs.androidx.espresso.core)
-
-    // Retrofit & Gson converter
-    implementation("com.squareup.retrofit2:retrofit:2.9.0")
-    implementation("com.squareup.retrofit2:converter-gson:2.9.0")
-
-    // ViewModel & LiveData
+    implementation("com.squareup.retrofit2:retrofit:2.11.0")
+    implementation("com.squareup.retrofit2:converter-gson:2.11.0")
+    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
     implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
     implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")
-}
+    implementation("com.github.bumptech.glide:glide:4.16.0")
+    kapt("com.github.bumptech.glide:compiler:4.16.0")
+
+}
\ No newline at end of file
diff --git a/Lab4/EXO1/app/proguard-rules.pro b/Lab4/app/proguard-rules.pro
similarity index 100%
rename from Lab4/EXO1/app/proguard-rules.pro
rename to Lab4/app/proguard-rules.pro
diff --git a/Lab4/EXO1/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt b/Lab4/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt
similarity index 100%
rename from Lab4/EXO1/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt
rename to Lab4/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt
diff --git a/Lab4/EXO1/app/src/main/AndroidManifest.xml b/Lab4/app/src/main/AndroidManifest.xml
similarity index 93%
rename from Lab4/EXO1/app/src/main/AndroidManifest.xml
rename to Lab4/app/src/main/AndroidManifest.xml
index ab75ab544f3d74a5935c3fab5686ed38d6829436..7157ba3ff1755a4b3f3d6f126490e12438372719 100644
--- a/Lab4/EXO1/app/src/main/AndroidManifest.xml
+++ b/Lab4/app/src/main/AndroidManifest.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools">
+    <uses-permission android:name="android.permission.INTERNET" />
 
     <application
         android:allowBackup="true"
diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/MainActivity.kt b/Lab4/app/src/main/java/com/example/deezersearch/MainActivity.kt
similarity index 51%
rename from Lab4/EXO1/app/src/main/java/com/example/deezersearch/MainActivity.kt
rename to Lab4/app/src/main/java/com/example/deezersearch/MainActivity.kt
index 06fea375cca02336377f0cf5c79a28d9d32c7138..32135e2be0211c33bf5039f94af9102b3e97e987 100644
--- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/MainActivity.kt
+++ b/Lab4/app/src/main/java/com/example/deezersearch/MainActivity.kt
@@ -5,12 +5,15 @@ import android.widget.Button
 import android.widget.EditText
 import androidx.activity.ComponentActivity
 import androidx.activity.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.RecyclerView
+import com.example.deezersearch.adapter.TrackAdapter
+import com.example.deezersearch.viewmodel.TracksViewModel
 
 class MainActivity : ComponentActivity() {
-    private val viewModel: DeezerViewModel by viewModels()
-    private lateinit var adapter: TrackAdapter
+
+    private val viewModel: TracksViewModel by viewModels()
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -20,17 +23,19 @@ class MainActivity : ComponentActivity() {
         val searchButton: Button = findViewById(R.id.search_button)
         val recyclerView: RecyclerView = findViewById(R.id.recycler_view)
 
-        adapter = TrackAdapter(emptyList())
-        recyclerView.layoutManager = LinearLayoutManager(this)
-        recyclerView.adapter = adapter
+        recyclerView.layoutManager = GridLayoutManager(this, 2)
 
-        searchButton.setOnClickListener {
-            val query = searchInput.text.toString()
-            viewModel.search(query)
+        val observer = Observer<com.example.deezersearch.model.DeezerSearchResponse> { response ->
+            recyclerView.adapter = TrackAdapter(response.data)
         }
 
-        viewModel.tracks.observe(this) { tracks ->
-            adapter.updateTracks(tracks)
+        viewModel.data.observe(this, observer)
+
+        searchButton.setOnClickListener {
+            val query = searchInput.text.toString().trim()
+            if (query.isNotEmpty()) {
+                viewModel.searchTracks(query)
+            }
         }
     }
 }
diff --git a/Lab4/app/src/main/java/com/example/deezersearch/adapter/TrackAdapter.kt b/Lab4/app/src/main/java/com/example/deezersearch/adapter/TrackAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..448fb86ef9f9dfdd332445ef14a9c6ac0f954067
--- /dev/null
+++ b/Lab4/app/src/main/java/com/example/deezersearch/adapter/TrackAdapter.kt
@@ -0,0 +1,41 @@
+package com.example.deezersearch.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.example.deezersearch.R
+import com.example.deezersearch.model.Track
+
+class TrackAdapter(private val tracks: List<Track>) :
+    RecyclerView.Adapter<TrackAdapter.TrackViewHolder>() {
+
+    inner class TrackViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+        val albumTitleTextView: TextView = itemView.findViewById(R.id.albumTitleTextView)
+        val songTitleTextView: TextView = itemView.findViewById(R.id.songTitleTextView)
+        val artistNameTextView: TextView = itemView.findViewById(R.id.artistNameTextView)
+        val coverImageView: ImageView = itemView.findViewById(R.id.coverImageView)
+    }
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TrackViewHolder {
+        val view = LayoutInflater.from(parent.context).inflate(R.layout.track_item, parent, false)
+        return TrackViewHolder(view)
+    }
+
+    override fun onBindViewHolder(holder: TrackViewHolder, position: Int) {
+        val track = tracks[position]
+        holder.albumTitleTextView.text = track.album.title
+        holder.songTitleTextView.text = track.title
+        holder.artistNameTextView.text = track.artist.name
+
+        Glide.with(holder.itemView.context)
+            .load(track.album.cover)
+            .placeholder(R.drawable.placeholder_image)
+            .into(holder.coverImageView)
+    }
+
+    override fun getItemCount(): Int = tracks.size
+}
diff --git a/Lab4/app/src/main/java/com/example/deezersearch/model/DeezerSearchResponse.kt b/Lab4/app/src/main/java/com/example/deezersearch/model/DeezerSearchResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6a650e111c4fc2091774a8d77bb5333da13dbbc8
--- /dev/null
+++ b/Lab4/app/src/main/java/com/example/deezersearch/model/DeezerSearchResponse.kt
@@ -0,0 +1,25 @@
+package com.example.deezersearch.model
+
+data class DeezerSearchResponse(
+    val data: List<Track>
+)
+
+data class Track(
+    val id: String,
+    val title: String,
+    val duration: String,
+    val artist: Artist,
+    val album: Album
+)
+
+data class Artist(
+    val id: String,
+    val name: String,
+    val picture: String
+)
+
+data class Album(
+    val id: String,
+    val title: String,
+    val cover: String
+)
diff --git a/Lab4/app/src/main/java/com/example/deezersearch/network/DeezerApiInterface.kt b/Lab4/app/src/main/java/com/example/deezersearch/network/DeezerApiInterface.kt
new file mode 100644
index 0000000000000000000000000000000000000000..31c1416daed46f8c0a8bd31b5fbc058215d91096
--- /dev/null
+++ b/Lab4/app/src/main/java/com/example/deezersearch/network/DeezerApiInterface.kt
@@ -0,0 +1,10 @@
+package com.example.deezersearch.network
+
+import com.example.deezersearch.model.DeezerSearchResponse
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+interface DeezerApiInterface {
+    @GET("search")
+    suspend fun searchTracks(@Query("q") query: String): DeezerSearchResponse
+}
diff --git a/Lab4/app/src/main/java/com/example/deezersearch/network/RetrofitInstance.kt b/Lab4/app/src/main/java/com/example/deezersearch/network/RetrofitInstance.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9a1bfa94304a229242fbe1d6a9754bf79cc50b25
--- /dev/null
+++ b/Lab4/app/src/main/java/com/example/deezersearch/network/RetrofitInstance.kt
@@ -0,0 +1,15 @@
+package com.example.deezersearch.network
+
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+object RetrofitInstance {
+    private const val BASE_URL = "https://api.deezer.com/"
+
+    fun getInstance(): Retrofit {
+        return Retrofit.Builder()
+            .baseUrl(BASE_URL)
+            .addConverterFactory(GsonConverterFactory.create())
+            .build()
+    }
+}
diff --git a/Lab4/app/src/main/java/com/example/deezersearch/viewmodel/TracksViewModel.kt b/Lab4/app/src/main/java/com/example/deezersearch/viewmodel/TracksViewModel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5c00e306b097b0e42ede364b8902257c8a67e450
--- /dev/null
+++ b/Lab4/app/src/main/java/com/example/deezersearch/viewmodel/TracksViewModel.kt
@@ -0,0 +1,25 @@
+package com.example.deezersearch.viewmodel
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import com.example.deezersearch.model.DeezerSearchResponse
+import com.example.deezersearch.network.DeezerApiInterface
+import com.example.deezersearch.network.RetrofitInstance
+import kotlinx.coroutines.launch
+
+class TracksViewModel : ViewModel() {
+    val data = MutableLiveData<DeezerSearchResponse>()
+    private val api = RetrofitInstance.getInstance().create(DeezerApiInterface::class.java)
+
+    fun searchTracks(query: String) {
+        viewModelScope.launch {
+            try {
+                val response = api.searchTracks(query)
+                data.value = response
+            } catch (e: Exception) {
+                data.value = DeezerSearchResponse(emptyList())
+            }
+        }
+    }
+}
diff --git a/Lab4/EXO1/app/src/main/res/drawable/ic_launcher_background.xml b/Lab4/app/src/main/res/drawable/ic_launcher_background.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/drawable/ic_launcher_background.xml
rename to Lab4/app/src/main/res/drawable/ic_launcher_background.xml
diff --git a/Lab4/EXO1/app/src/main/res/drawable/ic_launcher_foreground.xml b/Lab4/app/src/main/res/drawable/ic_launcher_foreground.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/drawable/ic_launcher_foreground.xml
rename to Lab4/app/src/main/res/drawable/ic_launcher_foreground.xml
diff --git a/Lab4/img/track_item.png b/Lab4/app/src/main/res/drawable/placeholder_image.png
similarity index 100%
rename from Lab4/img/track_item.png
rename to Lab4/app/src/main/res/drawable/placeholder_image.png
diff --git a/Lab4/EXO1/app/src/main/res/layout/activity_main.xml b/Lab4/app/src/main/res/layout/activity_main.xml
similarity index 80%
rename from Lab4/EXO1/app/src/main/res/layout/activity_main.xml
rename to Lab4/app/src/main/res/layout/activity_main.xml
index 1d44f971bd59fed7f1b19f91a4857ddf35aba624..85e40685ba7215d0043c92dcd7c0d6f301cd7f23 100644
--- a/Lab4/EXO1/app/src/main/res/layout/activity_main.xml
+++ b/Lab4/app/src/main/res/layout/activity_main.xml
@@ -4,20 +4,18 @@
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:padding="16dp"
-    android:gravity="center_horizontal"
-    android:background="#FFF5FAF8">
+    android:gravity="center_horizontal">
 
     <TextView
-        android:text="Lab4: request Deezer Api"
+        android:text="Lab 4: Deezer API Search"
         android:textSize="20sp"
-        android:textStyle="bold"
         android:layout_marginBottom="16dp"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
+        android:layout_height="wrap_content"/>
 
     <EditText
         android:id="@+id/search_input"
-        android:hint="Enter your search"
+        android:hint="Enter artist name"
         android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
diff --git a/Lab4/app/src/main/res/layout/track_item.xml b/Lab4/app/src/main/res/layout/track_item.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9b5e1b59c72e05d98c34ba10aeaf03e056772923
--- /dev/null
+++ b/Lab4/app/src/main/res/layout/track_item.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_margin="8dp"
+    android:elevation="4dp"
+    android:foreground="?attr/selectableItemBackground">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:padding="8dp">
+
+        <ImageView
+            android:id="@+id/coverImageView"
+            android:layout_width="100dp"
+            android:layout_height="100dp"
+            android:scaleType="centerCrop"
+            android:contentDescription="@string/cover_image" />
+
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingStart="8dp">
+
+            <TextView
+                android:id="@+id/albumTitleTextView"
+                android:textStyle="bold"
+                android:textSize="16sp"
+                android:textColor="#000000"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content" />
+
+            <TextView
+                android:id="@+id/songTitleTextView"
+                android:textSize="14sp"
+                android:textColor="#333333"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content" />
+
+            <TextView
+                android:id="@+id/artistNameTextView"
+                android:textSize="14sp"
+                android:textStyle="italic"
+                android:textColor="#666666"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content" />
+        </LinearLayout>
+    </LinearLayout>
+</androidx.cardview.widget.CardView>
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher.xml
rename to Lab4/app/src/main/res/mipmap-anydpi/ic_launcher.xml
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
rename to Lab4/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to Lab4/app/src/main/res/mipmap-hdpi/ic_launcher.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
rename to Lab4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to Lab4/app/src/main/res/mipmap-mdpi/ic_launcher.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
rename to Lab4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
rename to Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
rename to Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
rename to Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
diff --git a/Lab4/EXO1/app/src/main/res/values-night/themes.xml b/Lab4/app/src/main/res/values-night/themes.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/values-night/themes.xml
rename to Lab4/app/src/main/res/values-night/themes.xml
diff --git a/Lab4/EXO1/app/src/main/res/values/colors.xml b/Lab4/app/src/main/res/values/colors.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/values/colors.xml
rename to Lab4/app/src/main/res/values/colors.xml
diff --git a/Lab4/app/src/main/res/values/strings.xml b/Lab4/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..703ee789a57ef51d935090083fe3244c80505509
--- /dev/null
+++ b/Lab4/app/src/main/res/values/strings.xml
@@ -0,0 +1,6 @@
+<resources>
+    <string name="app_name">DeezerSearch</string>
+    <string name="cover_image">Album cover image</string>
+    <string name="search">Search</string>
+    <string name="hint_search">Enter your search</string>
+</resources>
diff --git a/Lab4/EXO1/app/src/main/res/values/themes.xml b/Lab4/app/src/main/res/values/themes.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/values/themes.xml
rename to Lab4/app/src/main/res/values/themes.xml
diff --git a/Lab4/EXO1/app/src/main/res/xml/backup_rules.xml b/Lab4/app/src/main/res/xml/backup_rules.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/xml/backup_rules.xml
rename to Lab4/app/src/main/res/xml/backup_rules.xml
diff --git a/Lab4/EXO1/app/src/main/res/xml/data_extraction_rules.xml b/Lab4/app/src/main/res/xml/data_extraction_rules.xml
similarity index 100%
rename from Lab4/EXO1/app/src/main/res/xml/data_extraction_rules.xml
rename to Lab4/app/src/main/res/xml/data_extraction_rules.xml
diff --git a/Lab4/EXO1/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt b/Lab4/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt
similarity index 100%
rename from Lab4/EXO1/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt
rename to Lab4/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt
diff --git a/Lab4/EXO1/build.gradle.kts b/Lab4/build.gradle.kts
similarity index 100%
rename from Lab4/EXO1/build.gradle.kts
rename to Lab4/build.gradle.kts
diff --git a/Lab4/EXO1/gradle.properties b/Lab4/gradle.properties
similarity index 100%
rename from Lab4/EXO1/gradle.properties
rename to Lab4/gradle.properties
diff --git a/Lab4/EXO1/gradle/libs.versions.toml b/Lab4/gradle/libs.versions.toml
similarity index 100%
rename from Lab4/EXO1/gradle/libs.versions.toml
rename to Lab4/gradle/libs.versions.toml
diff --git a/Lab4/EXO1/gradle/wrapper/gradle-wrapper.jar b/Lab4/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from Lab4/EXO1/gradle/wrapper/gradle-wrapper.jar
rename to Lab4/gradle/wrapper/gradle-wrapper.jar
diff --git a/Lab4/EXO1/gradle/wrapper/gradle-wrapper.properties b/Lab4/gradle/wrapper/gradle-wrapper.properties
similarity index 86%
rename from Lab4/EXO1/gradle/wrapper/gradle-wrapper.properties
rename to Lab4/gradle/wrapper/gradle-wrapper.properties
index 4ea2bb433b8d24709fa7c60b04631dcd846bc698..2d07dea848340fc9dbd40669d02c5257c4e7c7a0 100644
--- a/Lab4/EXO1/gradle/wrapper/gradle-wrapper.properties
+++ b/Lab4/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-#Wed Apr 02 10:06:33 CEST 2025
+#Wed Apr 02 10:56:24 CEST 2025
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
diff --git a/Lab4/EXO1/gradlew b/Lab4/gradlew
similarity index 100%
rename from Lab4/EXO1/gradlew
rename to Lab4/gradlew
diff --git a/Lab4/EXO1/gradlew.bat b/Lab4/gradlew.bat
similarity index 100%
rename from Lab4/EXO1/gradlew.bat
rename to Lab4/gradlew.bat
diff --git a/Lab4/img/placeholder_image.png b/Lab4/img/placeholder_image.png
new file mode 100644
index 0000000000000000000000000000000000000000..cdc0de0f7d37d47a1ac4722913b5a51dee7629ec
Binary files /dev/null and b/Lab4/img/placeholder_image.png differ
diff --git a/Lab4/EXO1/settings.gradle.kts b/Lab4/settings.gradle.kts
similarity index 100%
rename from Lab4/EXO1/settings.gradle.kts
rename to Lab4/settings.gradle.kts