├── app
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── values
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── colors.xml
│ │ │ │ ├── styles.xml
│ │ │ │ └── strings.xml
│ │ │ ├── drawable
│ │ │ │ ├── assist_flat.png
│ │ │ │ ├── rect_border.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── layout
│ │ │ │ ├── activity_join.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ └── content_join.xml
│ │ │ └── drawable-v24
│ │ │ │ └── ic_launcher_foreground.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── zoho
│ │ │ │ └── assist
│ │ │ │ └── customer
│ │ │ │ └── demo
│ │ │ │ ├── Constants.kt
│ │ │ │ ├── MainApplication.kt
│ │ │ │ ├── ISessionCallbacks.kt
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── JoinActivity.kt
│ │ ├── AndroidManifest.xml
│ │ └── assets
│ │ │ ├── loader.json
│ │ │ └── error.json
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── zoho
│ │ │ └── assist
│ │ │ └── customer
│ │ │ └── demo
│ │ │ └── ExampleUnitTest.kt
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── zoho
│ │ └── assist
│ │ └── customer
│ │ └── demo
│ │ └── ExampleInstrumentedTest.kt
├── proguard-rules.pro
├── build.gradle
└── app.iml
├── .idea
├── compiler.xml
├── kotlinc.xml
├── misc.xml
├── deploymentTargetDropDown.xml
└── shelf
│ ├── Uncommitted_changes_before_Checkout_at_24_01_24__4_20pm__Changes_.xml
│ ├── Uncommitted_changes_before_Checkout_at_24_01_24__4_20pm__Changes_1.xml
│ └── Uncommitted_changes_before_Checkout_at_24_01_24,_4_20 pm_[Changes]1
│ └── shelved.patch
├── gradle
└── wrapper
│ └── gradle-wrapper.properties
├── README.md
├── settings.gradle
├── Assist-Customer-Android-SDK-demo.iml
├── gradle.properties
├── .gitignore
├── gradlew.bat
├── gradlew
└── assets
├── loader.json
└── error.json
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 50dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/assist_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/drawable/assist_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zoho/Assist-Customer-Android-SDK-Demo/master/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/kotlinc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #008577
4 | #00574B
5 | #D81B60
6 |
7 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/deploymentTargetDropDown.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rect_border.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zoho/assist/customer/demo/Constants.kt:
--------------------------------------------------------------------------------
1 | package com.zoho.assist.customer.demo
2 |
3 | object Constants {
4 | const val SDK_TOKEN: String = "AuthToken"
5 | const val SESSION_KEY: String = "SESSION_KEY"
6 |
7 | const val NOTIFICATION_ACTION: String = "com.zoho.assist.customer.demo"
8 | const val NOTIFICATION_PENDING_INTENT_ID: Int = 1020
9 | }
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/shelf/Uncommitted_changes_before_Checkout_at_24_01_24__4_20pm__Changes_.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/shelf/Uncommitted_changes_before_Checkout_at_24_01_24__4_20pm__Changes_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/test/java/com/zoho/assist/customer/demo/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.zoho.assist.customer.demo
2 |
3 | //import org.junit.Test
4 | //
5 | //import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | //class ExampleUnitTest {
13 | // @Test
14 | // fun addition_isCorrect() {
15 | // assertEquals(4, 2 + 2)
16 | // }
17 | //}
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Assist-Customer-Android-SDK-Demo
2 |
3 | The Zoho Assist Software Development Kit (SDK) for Android will help you build a custom app with the features and functionalities your customers need to join a session in Zoho Assist to share their screens. The design of the app UI can be based on your requirements and style guidelines, while the back-end of the app can be powered with the SDK.
4 |
5 | Go through the [documentation](https://www.zoho.com/assist/resources/mobilesdk/android/getting-started.html) to get started.
6 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zoho/assist/customer/demo/MainApplication.kt:
--------------------------------------------------------------------------------
1 | package com.zoho.assist.customer.demo
2 |
3 | import android.app.Application
4 | import com.zoho.assist.customer.AssistSDKApplication
5 | import com.zoho.assist.customer.AssistSession
6 |
7 | class MainApplication : AssistSDKApplication() {
8 |
9 | override fun onCreate() {
10 | super.onCreate()
11 | AssistSession.INSTANCE.setContext(this)
12 | AssistSession.INSTANCE.setAuthToken("") // Set your auth token here to enable some features
13 |
14 |
15 | }
16 |
17 | }
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 |
2 | pluginManagement {
3 | repositories {
4 | google()
5 | mavenCentral()
6 | gradlePluginPortal()
7 | maven { url "https://maven.zohodl.com/"}
8 | }
9 | }
10 |
11 | dependencyResolutionManagement {
12 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
13 | repositories {
14 | google()
15 | mavenCentral()
16 | gradlePluginPortal()
17 | maven { url "https://maven.zohodl.com/"}
18 | }
19 | }
20 | include ':app'
21 | rootProject.name='Assist-Customer-Android-SDK-demo'
22 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Assist-Customer-Android-SDK-Demo
3 | Send a message
4 | Session Key
5 | Enroll
6 | Un-Enroll
7 | Service Queue
8 | Result
9 | Description
10 |
11 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/zoho/assist/customer/demo/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.zoho.assist.customer.demo
2 |
3 | //import androidx.test.platform.app.InstrumentationRegistry
4 | //import androidx.test.ext.junit.runners.AndroidJUnit4
5 | //
6 | //import org.junit.Test
7 | //import org.junit.runner.RunWith
8 | //
9 | //import org.junit.Assert.*
10 | //
11 | ///**
12 | // * Instrumented test, which will execute on an Android device.
13 | // *
14 | // * See [testing documentation](http://d.android.com/tools/testing).
15 | // */
16 | //@RunWith(AndroidJUnit4::class)
17 | //class ExampleInstrumentedTest {
18 | // @Test
19 | // fun useAppContext() {
20 | // // Context of the app under test.
21 | // val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | // assertEquals("com.zoho.assist.customer.demo", appContext.packageName)
23 | // }
24 | //}
25 |
--------------------------------------------------------------------------------
/Assist-Customer-Android-SDK-demo.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Specifies the JVM arguments used for the daemon process.
2 | # The setting is particularly useful for tweaking memory settings.
3 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
4 | android.enableJetifier=true
5 | android.useAndroidX=true
6 | org.gradle.jvmargs=-Xmx3g -Dfile.encoding=UTF-8 --add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
7 | #org.gradle.jvmargs=-Xmx3g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
8 | #org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
9 | #org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 --add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
10 | #android.enableAapt2=false
11 | kapt.use.worker.api=false
12 | kapt.incremental.apt=false
13 | #org.gradle.unsafe.configuration-cache=true
14 | #org.gradle.unsafe.configuration-cache-problems=warn'
15 | # Kotlin code style for this project: "official" or "obsolete":
16 | kotlin.code.style=official
17 | android.injected.testOnly=false
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.aar
4 | *.ap_
5 | *.aab
6 |
7 | # Files for the ART/Dalvik VM
8 | *.dex
9 |
10 | # Java class files
11 | *.class
12 |
13 | # Generated files
14 | bin/
15 | gen/
16 | out/
17 | # Uncomment the following line in case you need and you don't have the release build type files in your app
18 | # release/
19 |
20 | # Gradle files
21 | .gradle/
22 | build/
23 |
24 | # Local configuration file (sdk path, etc)
25 | local.properties
26 |
27 | # Proguard folder generated by Eclipse
28 | proguard/
29 |
30 | # Log Files
31 | *.log
32 |
33 | # Android Studio Navigation editor temp files
34 | .navigation/
35 |
36 | # Android Studio captures folder
37 | captures/
38 |
39 | # IntelliJ
40 | *.iml
41 | .idea/workspace.xml
42 | .idea/tasks.xml
43 | .idea/gradle.xml
44 | .idea/assetWizardSettings.xml
45 | .idea/dictionaries
46 | .idea/libraries
47 | # Android Studio 3 in .gitignore file.
48 | .idea/caches
49 | .idea/modules.xml
50 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you
51 | .idea/navEditor.xml
52 |
53 | # Keystore files
54 | # Uncomment the following lines if you do not want to check your keystore files in.
55 | #*.jks
56 | #*.keystore
57 |
58 | # External native build folder generated in Android Studio 2.2 and later
59 | .externalNativeBuild
60 | .cxx/
61 |
62 | # Google Services (e.g. APIs or Firebase)
63 | # google-services.json
64 |
65 | # Freeline
66 | freeline.py
67 | freeline/
68 | freeline_project_description.json
69 |
70 | # fastlane
71 | fastlane/report.xml
72 | fastlane/Preview.html
73 | fastlane/screenshots
74 | fastlane/test_output
75 | fastlane/readme.md
76 |
77 | # Version control
78 | vcs.xml
79 |
80 | # lint
81 | lint/intermediates/
82 | lint/generated/
83 | lint/outputs/
84 | lint/tmp/
85 | # lint/reports/
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_join.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
15 |
16 |
26 |
27 |
28 |
29 |
31 |
32 |
39 |
40 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-parcelize'
4 | apply plugin: 'kotlin-kapt'
5 | android {
6 | compileSdk 35
7 | namespace "com.zoho.assist.customer.demo"
8 | defaultConfig {
9 | applicationId "com.zoho.assist.customer.demo"
10 | minSdkVersion 21
11 | targetSdk 35
12 | versionCode 1
13 | versionName "1.0"
14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15 | }
16 | compileOptions {
17 | sourceCompatibility JavaVersion.VERSION_17
18 | targetCompatibility = JavaVersion.VERSION_17
19 | }
20 | kotlinOptions {
21 | jvmTarget = "17"
22 | }
23 | buildFeatures {
24 | buildConfig true
25 | viewBinding true
26 | // compose true
27 | dataBinding true
28 | }
29 | buildTypes {
30 | release {
31 | minifyEnabled false
32 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
33 | }
34 | }
35 | }
36 |
37 | configurations {
38 | cleanedAnnotations
39 | implementation.exclude group: 'org.jetbrains' , module:'annotations'
40 | }
41 |
42 | dependencies {
43 | implementation fileTree(dir: 'libs', include: ['*.jar'])
44 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
45 | implementation 'androidx.appcompat:appcompat:1.7.1'
46 | implementation 'androidx.core:core-ktx:1.16.0'
47 | implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
48 | implementation 'com.google.android.material:material:1.13.0'
49 | implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
50 | api 'com.zoho.assist:customer:1.8.3'
51 |
52 | // testImplementation 'junit:junit:4.12'
53 | // androidTestImplementation 'androidx.test.ext:junit:1.1.0'
54 | // androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
55 |
56 | }
57 |
58 |
59 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
11 |
13 |
14 |
15 |
29 |
30 |
31 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
40 |
42 |
43 |
44 |
45 |
46 |
49 |
50 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
29 |
30 |
36 |
37 |
44 |
45 |
46 |
50 |
51 |
58 |
59 |
66 |
67 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
103 |
104 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 |
86 | # Determine the Java command to use to start the JVM.
87 | if [ -n "$JAVA_HOME" ] ; then
88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89 | # IBM's JDK on AIX uses strange locations for the executables
90 | JAVACMD="$JAVA_HOME/jre/sh/java"
91 | else
92 | JAVACMD="$JAVA_HOME/bin/java"
93 | fi
94 | if [ ! -x "$JAVACMD" ] ; then
95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96 |
97 | Please set the JAVA_HOME variable in your environment to match the
98 | location of your Java installation."
99 | fi
100 | else
101 | JAVACMD="java"
102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103 |
104 | Please set the JAVA_HOME variable in your environment to match the
105 | location of your Java installation."
106 | fi
107 |
108 | # Increase the maximum file descriptors if we can.
109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110 | MAX_FD_LIMIT=`ulimit -H -n`
111 | if [ $? -eq 0 ] ; then
112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113 | MAX_FD="$MAX_FD_LIMIT"
114 | fi
115 | ulimit -n $MAX_FD
116 | if [ $? -ne 0 ] ; then
117 | warn "Could not set maximum file descriptor limit: $MAX_FD"
118 | fi
119 | else
120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121 | fi
122 | fi
123 |
124 | # For Darwin, add options to specify how the application appears in the dock
125 | if $darwin; then
126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127 | fi
128 |
129 | # For Cygwin or MSYS, switch paths to Windows format before running java
130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133 |
134 | JAVACMD=`cygpath --unix "$JAVACMD"`
135 |
136 | # We build the pattern for arguments to be converted via cygpath
137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138 | SEP=""
139 | for dir in $ROOTDIRSRAW ; do
140 | ROOTDIRS="$ROOTDIRS$SEP$dir"
141 | SEP="|"
142 | done
143 | OURCYGPATTERN="(^($ROOTDIRS))"
144 | # Add a user-defined pattern to the cygpath arguments
145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147 | fi
148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
149 | i=0
150 | for arg in "$@" ; do
151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153 |
154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156 | else
157 | eval `echo args$i`="\"$arg\""
158 | fi
159 | i=`expr $i + 1`
160 | done
161 | case $i in
162 | 0) set -- ;;
163 | 1) set -- "$args0" ;;
164 | 2) set -- "$args0" "$args1" ;;
165 | 3) set -- "$args0" "$args1" "$args2" ;;
166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172 | esac
173 | fi
174 |
175 | # Escape application args
176 | save () {
177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178 | echo " "
179 | }
180 | APP_ARGS=`save "$@"`
181 |
182 | # Collect all arguments for the java command, following the shell quoting and substitution rules
183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184 |
185 | exec "$JAVACMD" "$@"
186 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zoho/assist/customer/demo/ISessionCallbacks.kt:
--------------------------------------------------------------------------------
1 | package com.zoho.assist.customer.demo
2 |
3 | import android.app.Activity
4 | import android.content.Intent
5 | import android.widget.Toast
6 | import com.zoho.assist.customer.AssistSession
7 | import com.zoho.assist.customer.SessionCallbacks
8 | import com.zoho.assist.customer.SessionStartFailure
9 | import com.zoho.assist.customer.demo.databinding.ActivityMainBinding
10 | import com.zoho.assist.customer.model.ChatModel
11 | import com.zoho.assist.customer.model.ParticipantState
12 | import java.util.logging.Level
13 |
14 |
15 | class ISessionCallbacks(private val activity: Activity, private val binding: ActivityMainBinding) :
16 | SessionCallbacks {
17 |
18 | /**
19 | * param - response
20 | * To perform any operation using the response from validating the token and session key
21 | */
22 |
23 |
24 | /**
25 | * Callback used to perform any operation using the response gotten from validating the token and session key.
26 | */
27 | override fun onValidationResponse(response: String, responseCode: AssistSession.ApiResponse) {
28 | Toast.makeText(activity, response, Toast.LENGTH_SHORT).show()
29 | when (responseCode) {
30 | AssistSession.ApiResponse.SUCCESS -> {
31 | binding.logView.text = ("Validation successful")
32 | // activity.onDismiss()
33 | }
34 | AssistSession.ApiResponse.ERROR -> {
35 | Toast.makeText(activity, "Validation failed $response", Toast.LENGTH_SHORT).show()
36 | returnToJoinSessionActivity()
37 | }
38 | }
39 | }
40 |
41 | override fun reconnectionLimitExceeded() {
42 | Toast.makeText(activity,"Reconnection Limit reached",Toast.LENGTH_SHORT).show()
43 | }
44 |
45 | /**
46 | * To perform any operation when session gets connected successfully
47 | */
48 | override fun onSessionStarted() {
49 | binding.logView.append("\nStarting Session")//no i18n
50 | binding.closeSession.isEnabled = true
51 | binding.sendMessage.isEnabled = true
52 | binding.startSession.isEnabled = false
53 | if (AssistSession.INSTANCE.isScreenSharing()) {
54 | binding.startShare.isEnabled = false
55 | binding.stopShare.isEnabled = true
56 | } else {
57 | binding.startShare.isEnabled = true
58 | binding.stopShare.isEnabled = false
59 | }
60 | }
61 |
62 | /**
63 | * To handle session start failure cases
64 | */
65 |
66 | override fun onSessionStartFailed(failure: SessionStartFailure) {
67 | when (failure) {
68 | SessionStartFailure.BELOW_MIN_API_LEVEL -> {}
69 | SessionStartFailure.CONTEXT_NOT_AVAILABLE -> {}
70 | SessionStartFailure.INVALID_SDK_TOKEN -> {}
71 | SessionStartFailure.INVALID_SESSION_KEY -> {}
72 | SessionStartFailure.POST_NOTIFICATION_PERMISSION_DENIED -> {}
73 | else -> {}
74 | }
75 | Toast.makeText(activity.applicationContext, failure.message, Toast.LENGTH_SHORT).show()
76 | // activity.finish()
77 | returnToJoinSessionActivity()
78 | }
79 |
80 |
81 | /**
82 | * To perform any operation after session ended
83 | */
84 | override fun onSessionEnded() {
85 | binding.logView.append("\nSession Ended")//no i18n
86 | returnToJoinSessionActivity()
87 | }
88 |
89 | /**
90 | * To request screen share manually if not enabled in shareScreenOnStart
91 | */
92 | override fun onScreenShareRequest() {
93 | /**
94 | * true - Approve
95 | * false - Reject
96 | */
97 | AssistSession.INSTANCE.startScreenSharing(true)
98 | }
99 |
100 | /**
101 | * param - chatModel
102 | * To manipulate the chat message object for addition to the chat history list and other info
103 | */
104 | override fun onMessageReceived(model: ChatModel) {
105 | activity. runOnUiThread {
106 | (activity as MainActivity).getChatFragment().onReceived(model)
107 | }
108 | // if (model.type == ChatModel.ChatMode.RECEIVED) {
109 | // binding.logView.append("\n${model.senderName}: ${model.msg}")
110 | // binding.logViewScrollView.postDelayed({
111 | // binding.logViewScrollView.fullScroll(View.FOCUS_DOWN)
112 | // }, 200)
113 | // }
114 | }
115 |
116 | /**
117 | * Switch the role of customer into technician
118 | */
119 | override fun onRoleChangeRequest() {
120 | /**
121 | * true - Approve
122 | * false - Reject
123 | */
124 | AssistSession.INSTANCE.onRoleChangeRequestAccepted(true)
125 | }
126 |
127 | /**
128 | * Called when screen share is started, and can be used in conjunction
129 | * with `startRemoteControlOnStart(false)` to prompt user for remote control permission
130 | */
131 | override fun onScreenShareStarted() {
132 | // AssistSession.INSTANCE.startAddon()
133 | if (AssistSession.INSTANCE.isScreenSharing()) {
134 | binding.startShare.isEnabled = false
135 | binding.stopShare.isEnabled = true
136 | } else {
137 | binding.startShare.isEnabled = true
138 | binding.stopShare.isEnabled = false
139 | }
140 | }
141 |
142 | /**
143 | * Called when participant status changes
144 | */
145 | override fun onParticipantStateChange(participantState: ParticipantState, participantName: String) {
146 | when(participantState){
147 | ParticipantState.DOWN->{
148 |
149 | }
150 | ParticipantState.LOST->{
151 |
152 | }
153 | ParticipantState.UP->{
154 |
155 | }
156 | }
157 | }
158 |
159 | /**
160 | * Share name
161 | * Optional
162 | */
163 | override fun getClientName(): String? {
164 | return null
165 | }
166 |
167 | override fun logMsg(level: Level, msg: String) {
168 | }
169 |
170 | /**
171 | * Requesting the customer to trigger the addon download via playstore.
172 | */
173 | override fun onAddOnAvailableForDownload() {
174 | // AssistSession.INSTANCE.startAddon()
175 | }
176 |
177 | private fun returnToJoinSessionActivity() {
178 | if (activity.isTaskRoot) {
179 | activity.startActivity(Intent(activity, JoinActivity::class.java).setAction("your.custom.action"))
180 | activity.finish()
181 | } else {
182 | activity.onBackPressed()
183 | }
184 | }
185 |
186 |
187 |
188 |
189 |
190 |
191 | }
192 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_join.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
21 |
22 |
30 |
31 |
32 |
41 |
42 |
48 |
49 |
55 |
56 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
83 |
94 |
95 |
103 |
112 |
123 |
124 |
125 |
131 |
139 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
--------------------------------------------------------------------------------
/assets/loader.json:
--------------------------------------------------------------------------------
1 | {"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Null 1","ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.268],"y":[1]},"o":{"x":[0.73],"y":[0]},"n":["0p268_1_0p73_0"],"t":0,"s":[0],"e":[180]},{"t":33}]},"p":{"k":[{"i":{"x":0.857,"y":0.68},"o":{"x":0.632,"y":0},"n":"0p857_0p68_0p632_0","t":0,"s":[210,154,0],"e":[162.332,205.902,0],"to":[-7.69311904907227,-0.37835010886192,0],"ti":[22.6169624328613,-0.57375526428223,0]},{"i":{"x":0.203,"y":1},"o":{"x":0.18,"y":0.354},"n":"0p203_1_0p18_0p354","t":15,"s":[162.332,205.902,0],"e":[88,148,0],"to":[-50.3907470703125,1.27833068370819,0],"ti":[12.6402139663696,0.62164986133575,0]},{"t":33}]},"a":{"k":[0,0,0]},"s":{"k":[200,200,100]}},"ao":0,"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 4","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.26,"y":1},"o":{"x":0.731,"y":0},"n":"0p26_1_0p731_0","t":6,"s":[14.5,-1.375,0],"e":[14.5,28.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.267,"y":1},"o":{"x":0.716,"y":0},"n":"0p267_1_0p716_0","t":19,"s":[14.5,28.625,0],"e":[14.5,-1.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":32}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":6,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":19,"s":[150,150,100],"e":[75,75,100]},{"t":32}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.551],"y":[1]},"o":{"x":[0.564],"y":[0]},"n":["0p551_1_0p564_0"],"t":0,"s":[0.06,0.63,0.97,1],"e":[0.18,0.78,0.24,1]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":10,"s":[0.18,0.78,0.24,1],"e":[0.18,0.78,0.24,1]},{"i":{"x":[0.49],"y":[1]},"o":{"x":[0.445],"y":[0]},"n":["0p49_1_0p445_0"],"t":23,"s":[0.18,0.78,0.24,1],"e":[0.06,0.63,0.97,1]},{"t":33}]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 3","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.281,"y":1},"o":{"x":0.73,"y":0},"n":"0p281_1_0p73_0","t":4,"s":[-15.5,-1.375,0],"e":[-15.5,-31.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.266,"y":1},"o":{"x":0.737,"y":0},"n":"0p266_1_0p737_0","t":17,"s":[-15.5,-31.375,0],"e":[-15.5,-1.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":30}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":4,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":17,"s":[150,150,100],"e":[75,75,100]},{"t":30}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.551],"y":[1]},"o":{"x":[0.564],"y":[0]},"n":["0p551_1_0p564_0"],"t":0,"s":[0.06,0.63,0.97,1],"e":[0.93,0.84,0.05,1]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":10,"s":[0.93,0.84,0.05,1],"e":[0.93,0.84,0.05,1]},{"i":{"x":[0.49],"y":[1]},"o":{"x":[0.445],"y":[0]},"n":["0p49_1_0p445_0"],"t":23,"s":[0.93,0.84,0.05,1],"e":[0.06,0.63,0.97,1]},{"t":33}]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 2","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.729,"y":0},"n":"0p28_1_0p729_0","t":2,"s":[-45.5,-1.375,0],"e":[-45.5,28.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.287,"y":1},"o":{"x":0.714,"y":0},"n":"0p287_1_0p714_0","t":15,"s":[-45.5,28.625,0],"e":[-45.5,-1.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":28}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":2,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":15,"s":[150,150,100],"e":[75,75,100]},{"t":28}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.551],"y":[1]},"o":{"x":[0.564],"y":[0]},"n":["0p551_1_0p564_0"],"t":0,"s":[0.06,0.63,0.97,1],"e":[0.92,0.35,0.22,1]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":10,"s":[0.92,0.35,0.22,1],"e":[0.92,0.35,0.22,1]},{"i":{"x":[0.49],"y":[1]},"o":{"x":[0.445],"y":[0]},"n":["0p49_1_0p445_0"],"t":23,"s":[0.92,0.35,0.22,1],"e":[0.06,0.63,0.97,1]},{"t":33}]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 1","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.279,"y":1},"o":{"x":0.728,"y":0},"n":"0p279_1_0p728_0","t":0,"s":[-75.5,-1.375,0],"e":[-75.5,-31.375,0],"to":[0,-5,0],"ti":[0,0,0]},{"i":{"x":0.264,"y":1},"o":{"x":0.735,"y":0},"n":"0p264_1_0p735_0","t":13,"s":[-75.5,-31.375,0],"e":[-75.5,-1.375,0],"to":[0,0,0],"ti":[0,-5,0]},{"t":26}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":0,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":13,"s":[150,150,100],"e":[75,75,100]},{"t":26}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1}],"v":"4.5.3","ddd":0,"ip":0,"op":33,"fr":25,"w":300,"h":300}
--------------------------------------------------------------------------------
/app/src/main/assets/loader.json:
--------------------------------------------------------------------------------
1 | {"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Null 1","ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.268],"y":[1]},"o":{"x":[0.73],"y":[0]},"n":["0p268_1_0p73_0"],"t":0,"s":[0],"e":[180]},{"t":33}]},"p":{"k":[{"i":{"x":0.857,"y":0.68},"o":{"x":0.632,"y":0},"n":"0p857_0p68_0p632_0","t":0,"s":[210,154,0],"e":[162.332,205.902,0],"to":[-7.69311904907227,-0.37835010886192,0],"ti":[22.6169624328613,-0.57375526428223,0]},{"i":{"x":0.203,"y":1},"o":{"x":0.18,"y":0.354},"n":"0p203_1_0p18_0p354","t":15,"s":[162.332,205.902,0],"e":[88,148,0],"to":[-50.3907470703125,1.27833068370819,0],"ti":[12.6402139663696,0.62164986133575,0]},{"t":33}]},"a":{"k":[0,0,0]},"s":{"k":[200,200,100]}},"ao":0,"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 4","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.26,"y":1},"o":{"x":0.731,"y":0},"n":"0p26_1_0p731_0","t":6,"s":[14.5,-1.375,0],"e":[14.5,28.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.267,"y":1},"o":{"x":0.716,"y":0},"n":"0p267_1_0p716_0","t":19,"s":[14.5,28.625,0],"e":[14.5,-1.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":32}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":6,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":19,"s":[150,150,100],"e":[75,75,100]},{"t":32}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.551],"y":[1]},"o":{"x":[0.564],"y":[0]},"n":["0p551_1_0p564_0"],"t":0,"s":[0.06,0.63,0.97,1],"e":[0.18,0.78,0.24,1]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":10,"s":[0.18,0.78,0.24,1],"e":[0.18,0.78,0.24,1]},{"i":{"x":[0.49],"y":[1]},"o":{"x":[0.445],"y":[0]},"n":["0p49_1_0p445_0"],"t":23,"s":[0.18,0.78,0.24,1],"e":[0.06,0.63,0.97,1]},{"t":33}]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 3","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.281,"y":1},"o":{"x":0.73,"y":0},"n":"0p281_1_0p73_0","t":4,"s":[-15.5,-1.375,0],"e":[-15.5,-31.375,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.266,"y":1},"o":{"x":0.737,"y":0},"n":"0p266_1_0p737_0","t":17,"s":[-15.5,-31.375,0],"e":[-15.5,-1.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":30}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":4,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":17,"s":[150,150,100],"e":[75,75,100]},{"t":30}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.551],"y":[1]},"o":{"x":[0.564],"y":[0]},"n":["0p551_1_0p564_0"],"t":0,"s":[0.06,0.63,0.97,1],"e":[0.93,0.84,0.05,1]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":10,"s":[0.93,0.84,0.05,1],"e":[0.93,0.84,0.05,1]},{"i":{"x":[0.49],"y":[1]},"o":{"x":[0.445],"y":[0]},"n":["0p49_1_0p445_0"],"t":23,"s":[0.93,0.84,0.05,1],"e":[0.06,0.63,0.97,1]},{"t":33}]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 2","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.729,"y":0},"n":"0p28_1_0p729_0","t":2,"s":[-45.5,-1.375,0],"e":[-45.5,28.625,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.287,"y":1},"o":{"x":0.714,"y":0},"n":"0p287_1_0p714_0","t":15,"s":[-45.5,28.625,0],"e":[-45.5,-1.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":28}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":2,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":15,"s":[150,150,100],"e":[75,75,100]},{"t":28}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[{"i":{"x":[0.551],"y":[1]},"o":{"x":[0.564],"y":[0]},"n":["0p551_1_0p564_0"],"t":0,"s":[0.06,0.63,0.97,1],"e":[0.92,0.35,0.22,1]},{"i":{"x":[0.667],"y":[0.667]},"o":{"x":[0.333],"y":[0.333]},"n":["0p667_0p667_0p333_0p333"],"t":10,"s":[0.92,0.35,0.22,1],"e":[0.92,0.35,0.22,1]},{"i":{"x":[0.49],"y":[1]},"o":{"x":[0.445],"y":[0]},"n":["0p49_1_0p445_0"],"t":23,"s":[0.92,0.35,0.22,1],"e":[0.06,0.63,0.97,1]},{"t":33}]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 1","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.279,"y":1},"o":{"x":0.728,"y":0},"n":"0p279_1_0p728_0","t":0,"s":[-75.5,-1.375,0],"e":[-75.5,-31.375,0],"to":[0,-5,0],"ti":[0,0,0]},{"i":{"x":0.264,"y":1},"o":{"x":0.735,"y":0},"n":"0p264_1_0p735_0","t":13,"s":[-75.5,-31.375,0],"e":[-75.5,-1.375,0],"to":[0,0,0],"ti":[0,-5,0]},{"t":26}]},"a":{"k":[-99.5,-5.375,0]},"s":{"k":[{"i":{"x":[0.279,0.279,0.667],"y":[1,1,0.667]},"o":{"x":[0.728,0.728,0.333],"y":[0,0,0.333]},"n":["0p279_1_0p728_0","0p279_1_0p728_0","0p667_0p667_0p333_0p333"],"t":0,"s":[75,75,100],"e":[150,150,100]},{"i":{"x":[0.275,0.275,0.667],"y":[1,1,0.667]},"o":{"x":[0.729,0.729,0.333],"y":[0,0,0.333]},"n":["0p275_1_0p729_0","0p275_1_0p729_0","0p667_0p667_0p333_0p333"],"t":13,"s":[150,150,100],"e":[75,75,100]},{"t":26}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[20.969,20.969]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","fillEnabled":true,"c":{"k":[0.64,0.16,0.16,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-99.516,-5.516],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":33,"st":0,"bm":0,"sr":1}],"v":"4.5.3","ddd":0,"ip":0,"op":33,"fr":25,"w":300,"h":300}
--------------------------------------------------------------------------------
/app/src/main/java/com/zoho/assist/customer/demo/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.zoho.assist.customer.demo
2 |
3 | import android.annotation.SuppressLint
4 | import android.app.Notification
5 | import android.app.NotificationChannel
6 | import android.app.NotificationManager
7 | import android.app.PendingIntent
8 | import android.content.Intent
9 | import android.os.Build
10 | import android.os.Bundle
11 | import android.util.TypedValue
12 | import android.view.View
13 | import androidx.activity.enableEdgeToEdge
14 | import androidx.appcompat.app.AppCompatActivity
15 | import androidx.core.app.NotificationCompat
16 | import androidx.core.view.ViewCompat
17 | import androidx.core.view.WindowCompat
18 | import androidx.core.view.WindowInsetsCompat
19 | import androidx.core.view.updatePadding
20 | import androidx.databinding.DataBindingUtil
21 | import androidx.lifecycle.AndroidViewModel
22 | import androidx.lifecycle.ViewModelProviders
23 | import com.zoho.assist.customer.AssistSession
24 | import com.zoho.assist.customer.chat.view.ChatFragment
25 | import com.zoho.assist.customer.chat.viewmodel.ChatViewModel
26 | import com.zoho.assist.customer.demo.JoinActivity.Companion.SESSION_KEY
27 | import com.zoho.assist.customer.demo.databinding.ActivityMainBinding
28 | import com.zoho.assist.customer.demo.BR
29 | import com.zoho.assist.customer.util.Constants
30 | import java.util.*
31 |
32 | @SuppressLint("Registered")
33 | class MainActivity : AppCompatActivity() {
34 |
35 | private lateinit var chatFragemnt: ChatFragment
36 | lateinit var viewDataBinding: ActivityMainBinding
37 | private val viewModelClass: Class
38 | get() = ChatViewModel::class.java
39 |
40 | private val viewModel: AndroidViewModel by lazy {
41 | ViewModelProviders.of(this).get(viewModelClass)
42 | }
43 |
44 |
45 |
46 | override fun onCreate(savedInstanceState: Bundle?) {
47 | super.onCreate(savedInstanceState)
48 | WindowCompat.setDecorFitsSystemWindows(window, false)
49 | enableEdgeToEdge()
50 | viewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
51 | callback = ISessionCallbacks(this, viewDataBinding)
52 | /**
53 | * callback - Retains the callback instance
54 | */
55 | AssistSession.INSTANCE.onCreate(this, callback)
56 |
57 | val result = viewDataBinding.setVariable(BR.chatScreenViewModel, viewModel)
58 | if (!result) {
59 | throw RuntimeException("ViewModel variable not set. Check the types")
60 | }
61 | chatFragemnt = ChatFragment()
62 | supportFragmentManager.beginTransaction().replace(R.id.chat_container, getChatFragment())
63 | .commit()
64 | onViewCreate(savedInstanceState)
65 | viewDataBinding.executePendingBindings()
66 | if (::viewDataBinding.isInitialized) {
67 | viewDataBinding.root.let {
68 | ViewCompat.setOnApplyWindowInsetsListener(it) { v: View, insets: WindowInsetsCompat ->
69 | val systemBar =
70 | insets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout() or WindowInsetsCompat.Type.ime())
71 | val dp8 = TypedValue.applyDimension(
72 | TypedValue.COMPLEX_UNIT_DIP, 8f, resources.displayMetrics
73 | ).toInt()
74 | viewDataBinding.mainContentView.updatePadding(left = systemBar.left, right = systemBar.right, top = systemBar.top, bottom = systemBar.bottom+dp8)
75 | chatFragemnt.rootView?.updatePadding()
76 | insets
77 | }
78 |
79 | }
80 | }
81 | }
82 | /**
83 | *
84 | */
85 | override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
86 | super.onActivityResult(requestCode, resultCode, data)
87 | resetStartStopButtons()
88 | if (requestCode == 100) {
89 |
90 | }
91 | }
92 |
93 | /**
94 | * ===============================================================================
95 | * onStop(), onResume() are needed only when the Floating Head feature is enabled
96 | *
97 | *
98 | */
99 |
100 | /**
101 | * Called when the app is no longer visible to the user
102 | */
103 |
104 | override fun onStop() {
105 | super.onStop()
106 | AssistSession.INSTANCE.onStop()
107 | }
108 |
109 | /**
110 | *Called after your app starts interacting with the user. This is an indicator that the app became active and visible to the user.
111 | */
112 | override fun onResume() {
113 | super.onResume()
114 | AssistSession.INSTANCE.onResume()
115 | }
116 |
117 | /**
118 | * ===============================================================================
119 | */
120 |
121 | private lateinit var callback: ISessionCallbacks
122 |
123 | private fun resetStartStopButtons() {
124 | if (AssistSession.INSTANCE.isScreenSharing()) {
125 | viewDataBinding.startShare.isEnabled = false
126 | viewDataBinding.stopShare.isEnabled = true
127 | } else {
128 | viewDataBinding.startShare.isEnabled = true
129 | viewDataBinding.stopShare.isEnabled = false
130 | }
131 | }
132 |
133 | private fun onViewCreate(savedInstanceState: Bundle?) {
134 | if (AssistSession.INSTANCE.isSessionAlive()) {
135 | callback.onSessionStarted()
136 | resetStartStopButtons()
137 | } else {
138 | if (intent != null) {
139 | if (intent.getStringExtra(SESSION_KEY).isNullOrEmpty() && !AssistSession.INSTANCE.isSessionAlive()) {
140 | openSessionDialog()
141 | finish()
142 | } else if (intent.action == null) {
143 | val authToken = intent.getStringExtra("AuthToken")
144 | intent.getStringExtra(SESSION_KEY)?.let {
145 | if (authToken != null) {
146 | onStartSession(
147 | it,
148 | authToken
149 | )
150 | }
151 | }
152 | }
153 | }
154 | }
155 |
156 | //click listeners
157 | viewDataBinding.closeSession.setOnClickListener {
158 |
159 | AssistSession.INSTANCE.onCustomerEndSession()
160 | viewDataBinding.startShare.isEnabled = false
161 | viewDataBinding.stopShare.isEnabled = false
162 | viewDataBinding.sendMessage.isEnabled = false
163 | viewDataBinding.startSession.isEnabled = true
164 | viewDataBinding.closeSession.isEnabled = false
165 | intent.putExtra(SESSION_KEY, "")
166 | openSessionDialog()
167 | }
168 | viewDataBinding.startSession.setOnClickListener(View.OnClickListener {
169 | //to stop the screen sharing
170 |
171 | if (intent.getStringExtra(SESSION_KEY).isNullOrEmpty()) {
172 | openSessionDialog()
173 |
174 | } else if (intent.action == null && intent.hasExtra("AuthToken") && intent.hasExtra(SESSION_KEY)
175 | ) {
176 | val authToken = intent.getStringExtra("AuthToken")
177 | intent.getStringExtra(SESSION_KEY)
178 | ?.let { it1 ->
179 | if (authToken != null) {
180 | onStartSession(key=it1, authToken=authToken )
181 | }
182 | }
183 | }
184 |
185 | })
186 |
187 | viewDataBinding.startShare.setOnClickListener(View.OnClickListener {
188 | /***
189 | *
190 | */
191 | AssistSession.INSTANCE.onStartShare()
192 | viewDataBinding.startShare.isEnabled = false
193 | viewDataBinding.stopShare.isEnabled = true
194 | })
195 |
196 | viewDataBinding.stopShare.setOnClickListener(View.OnClickListener {
197 | /**
198 | *
199 | */
200 | AssistSession.INSTANCE.onStopShare()
201 | viewDataBinding.stopShare.isEnabled = false
202 | viewDataBinding.startShare.isEnabled = true
203 | })
204 |
205 | viewDataBinding.sendMessage.setOnClickListener(View.OnClickListener {
206 | //send a chat message to the viewers
207 | var chatModel = AssistSession.INSTANCE.onSendMessage("message:: ${Date()}")
208 | chatFragemnt.notifyDatasetChanged()
209 | })
210 |
211 | }
212 |
213 |
214 | private fun openSessionDialog() {
215 | this@MainActivity.startActivity(Intent(this@MainActivity, JoinActivity::class.java))
216 |
217 | }
218 |
219 | @SuppressLint("ServiceCast")
220 | private fun onStartSession(key: String, authToken: String ) {
221 |
222 | AssistSession.INSTANCE
223 | .setCallbacks(callback) //pass over an instance of class implementing SessionCallbacks.
224 | .setCustomerDetails(
225 | "surendran",
226 | "email@emailcom"
227 | ) // share username and userEmail - Default value is Guest
228 | .setAuthToken(authToken)
229 | .setPluginToast(true)
230 | .enableFloatingHead(true)
231 | .shareScreenOnStart(true)
232 | .downloadAddonOnStart(true)
233 | .setQuality(Constants.ColorQualityFactors.QUALITY75)
234 | .setKeepAliveNotification(getNotification())
235 |
236 | .start(
237 | key,
238 | MainActivity::class.java,
239 | R.drawable.assist_flat
240 | )
241 | }
242 |
243 | fun getNotification(): Notification? {
244 | val channelId = getString(com.zoho.assist.customer.R.string.miscellaneous)
245 | val channelName = getString(com.zoho.assist.customer.R.string.miscellaneous)
246 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
247 | val serviceChannel = NotificationChannel(
248 | channelId,
249 | channelName,
250 | NotificationManager.IMPORTANCE_DEFAULT
251 | )
252 |
253 | val manager = getSystemService(NotificationManager::class.java)
254 | manager?.createNotificationChannel(serviceChannel)
255 | }
256 |
257 | val notificationIntent = Intent(this, MainActivity::class.java)
258 | notificationIntent.action = "com.zoho.assist.agent.main"
259 | notificationIntent.flags =
260 | Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
261 | val pendingIntent = PendingIntent.getActivity(
262 | this,
263 | 1427,
264 | notificationIntent,
265 | PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
266 | )
267 | val title = String.format(getApplicationName())
268 | val message = String.format(
269 | "%s is currently running and the technician can see whatever is displayed on your screen",
270 | getApplicationName()
271 | )
272 | return NotificationCompat.Builder(this, channelId)
273 | .setContentTitle(title)
274 | .setContentText(message)
275 | .setSmallIcon(com.zoho.assist.customer.R.drawable.assist_flat)
276 | .setContentIntent(pendingIntent)
277 | .build()
278 | }
279 |
280 | private fun getApplicationName(): String {
281 | return try {
282 | val applicationInfo = applicationInfo
283 | val stringId = applicationInfo.labelRes
284 | if (stringId == 0) applicationInfo.nonLocalizedLabel.toString() else getString(stringId)
285 | } catch (ex: Exception) {
286 | ""
287 | }
288 | }
289 |
290 |
291 | override fun onBackPressed() {
292 | if (!AssistSession.INSTANCE.isSessionAlive()) {
293 | super.onBackPressed()
294 | } else {
295 | AssistSession.INSTANCE.onCustomerEndSession()
296 | viewDataBinding.startShare.isEnabled = false
297 | viewDataBinding.stopShare.isEnabled = false
298 | viewDataBinding.sendMessage.isEnabled = false
299 | viewDataBinding.startSession.isEnabled = true
300 | viewDataBinding.closeSession.isEnabled = false
301 | intent.putExtra("session_key", "")
302 | openSessionDialog()
303 | viewDataBinding.startSession.visibility = View.GONE
304 | finish()
305 | }
306 |
307 | }
308 |
309 | fun getChatFragment(): ChatFragment {
310 | return chatFragemnt
311 | }
312 |
313 | }
314 |
315 |
316 |
317 |
318 |
--------------------------------------------------------------------------------
/.idea/shelf/Uncommitted_changes_before_Checkout_at_24_01_24,_4_20 pm_[Changes]1/shelved.patch:
--------------------------------------------------------------------------------
1 | Index: app/src/main/res/layout/activity_main.xml
2 | IDEA additional info:
3 | Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
4 | <+>\n\n \n \n \n \n\n \n\n \n\n \n\n \n\n \n \n\n \n\n \n\n \n\n \n\n \n\n\n\n\n \n\n \n\n \n \n \n \n \n \n\n\n \n\n \n \n\n \n\n\n
5 | Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
6 | <+>UTF-8
7 | ===================================================================
8 | diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
9 | --- a/app/src/main/res/layout/activity_main.xml
10 | +++ b/app/src/main/res/layout/activity_main.xml
11 | @@ -14,7 +14,7 @@
12 | android:layout_width="match_parent"
13 | android:layout_height="match_parent"
14 | android:orientation="vertical"
15 | - tools:context=".MainActivity">
16 | + tools:context="com.zoho.assistagentlib.MainActivity">
17 |
18 |
25 | + android:text="Stop the session"
26 | + tools:ignore="HardcodedText" />
27 |
28 |
29 |
34 | +
41 | +
42 |
43 |
48 |
49 | -
50 | -
51 | -
52 | -
53 | -
54 | -
55 | -
56 | -
57 |
65 | + android:layout_weight="1"
66 | + android:visibility="gone"
67 | + >
68 |
69 |
77 | + android:text="Hello World!" />
78 |
79 |
80 |
81 | Index: app/src/main/res/layout/content_join.xml
82 | IDEA additional info:
83 | Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
84 | <+>\n\n\n \n\n \n\n\n \n\n \n\n \n\n\n \n
85 | Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
86 | <+>UTF-8
87 | ===================================================================
88 | diff --git a/app/src/main/res/layout/content_join.xml b/app/src/main/res/layout/content_join.xml
89 | --- a/app/src/main/res/layout/content_join.xml
90 | +++ b/app/src/main/res/layout/content_join.xml
91 | @@ -14,7 +14,14 @@
92 | android:orientation="vertical"
93 | android:padding="30dp">
94 |
95 | -
102 | +
103 | +
109 |
110 |
111 | -
122 |
123 |
124 | @@ -68,6 +74,34 @@
125 |
126 |
127 |
128 | +
129 | +
134 | +
135 | +
139 | +
140 | +
145 | +
146 | +
150 | +
151 | +
156 |
157 |
158 | apply plugin: 'com.android.application'\napply plugin: 'kotlin-android'\napply plugin: 'kotlin-parcelize'\napply plugin: 'kotlin-kapt'\nandroid {\n compileSdk 34\n namespace \"com.zoho.assist.customer.demo\"\n defaultConfig {\n applicationId \"com.zoho.assist.customer.demo\"\n minSdkVersion 21\n targetSdkVersion 34\n versionCode 1\n versionName \"1.0\"\n testInstrumentationRunner \"androidx.test.runner.AndroidJUnitRunner\"\n }\n compileOptions {\n sourceCompatibility JavaVersion.VERSION_17\n targetCompatibility = JavaVersion.VERSION_17\n }\n kotlinOptions {\n jvmTarget = \"17\"\n }\n buildFeatures {\n buildConfig true\n viewBinding true\n// compose true\n dataBinding true\n }\n buildTypes {\n release {\n minifyEnabled false\n proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\n }\n }\n}\n\nconfigurations {\n cleanedAnnotations\n implementation.exclude group: 'org.jetbrains' , module:'annotations'\n}\n\ndependencies {\n implementation fileTree(dir: 'libs', include: ['*.jar'])\n implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"\n implementation 'androidx.appcompat:appcompat:1.0.2'\n implementation 'androidx.core:core-ktx:1.0.2'\n implementation 'androidx.constraintlayout:constraintlayout:1.1.3'\n implementation 'com.google.android.material:material:1.5.0'\n implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'\n api 'com.zoho.assist:customer:1.3'\n\n testImplementation 'junit:junit:4.12'\n androidTestImplementation 'androidx.test.ext:junit:1.1.0'\n androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'\n\n}\n\n\n
163 | Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
164 | <+>UTF-8
165 | ===================================================================
166 | diff --git a/app/build.gradle b/app/build.gradle
167 | --- a/app/build.gradle
168 | +++ b/app/build.gradle
169 | @@ -1,30 +1,27 @@
170 | apply plugin: 'com.android.application'
171 | +
172 | apply plugin: 'kotlin-android'
173 | -apply plugin: 'kotlin-parcelize'
174 | -apply plugin: 'kotlin-kapt'
175 | +
176 | +apply plugin: 'kotlin-android-extensions'
177 | +
178 | android {
179 | - compileSdk 34
180 | - namespace "com.zoho.assist.customer.demo"
181 | + compileSdkVersion 30
182 | + repositories {
183 | + maven {
184 | + url "https://maven.zohodl.com/"
185 | + }
186 | + }
187 | defaultConfig {
188 | applicationId "com.zoho.assist.customer.demo"
189 | minSdkVersion 21
190 | - targetSdkVersion 34
191 | + targetSdkVersion 30
192 | versionCode 1
193 | versionName "1.0"
194 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
195 | }
196 | - compileOptions {
197 | - sourceCompatibility JavaVersion.VERSION_17
198 | - targetCompatibility = JavaVersion.VERSION_17
199 | - }
200 | - kotlinOptions {
201 | - jvmTarget = "17"
202 | - }
203 | - buildFeatures {
204 | - buildConfig true
205 | - viewBinding true
206 | -// compose true
207 | - dataBinding true
208 | + dataBinding {
209 | + //noinspection DataBindingWithoutKapt
210 | + enabled = true
211 | }
212 | buildTypes {
213 | release {
214 | @@ -34,25 +31,18 @@
215 | }
216 | }
217 |
218 | -configurations {
219 | - cleanedAnnotations
220 | - implementation.exclude group: 'org.jetbrains' , module:'annotations'
221 | -}
222 | -
223 | dependencies {
224 | implementation fileTree(dir: 'libs', include: ['*.jar'])
225 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
226 | implementation 'androidx.appcompat:appcompat:1.0.2'
227 | implementation 'androidx.core:core-ktx:1.0.2'
228 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
229 | - implementation 'com.google.android.material:material:1.5.0'
230 | - implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
231 | - api 'com.zoho.assist:customer:1.3'
232 | -
233 | testImplementation 'junit:junit:4.12'
234 | androidTestImplementation 'androidx.test.ext:junit:1.1.0'
235 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
236 |
237 | + api 'com.zoho.assist:customerEMM:1.3'
238 | +
239 | }
240 |
241 |
242 |
--------------------------------------------------------------------------------
/app/src/main/java/com/zoho/assist/customer/demo/JoinActivity.kt:
--------------------------------------------------------------------------------
1 | package com.zoho.assist.customer.demo
2 |
3 | import android.Manifest
4 | import android.app.Activity
5 | import android.app.ActivityManager
6 | import android.app.ProgressDialog
7 | import android.content.Context
8 | import android.content.Intent
9 | import android.content.pm.PackageManager
10 | import android.net.Uri
11 | import android.os.Bundle
12 | import android.os.Handler
13 | import android.os.Looper
14 | import android.util.Log
15 | import android.util.TypedValue
16 | import android.view.View
17 | import android.view.ViewGroup
18 | import android.view.inputmethod.InputMethodManager
19 | import android.widget.RadioGroup
20 | import android.widget.Toast
21 | import androidx.activity.enableEdgeToEdge
22 | import androidx.appcompat.app.AppCompatActivity
23 | import androidx.core.app.ActivityCompat
24 | import androidx.core.content.ContextCompat
25 | import androidx.core.view.ViewCompat
26 | import androidx.core.view.WindowCompat
27 | import androidx.core.view.WindowInsetsCompat
28 | import androidx.core.view.updatePadding
29 | import androidx.lifecycle.lifecycleScope
30 | import com.zoho.assist.customer.AssistSession
31 | import com.zoho.assist.customer.demo.databinding.ActivityJoinBinding
32 | import com.zoho.assist.customer.deviceregistration.enrollment.BaseUrl
33 | import com.zoho.assist.customer.listener.AddonAvailabilityCallback
34 | import com.zoho.unattendedaccess.connectivity.Request
35 | import com.zoho.unattendedaccess.connectivity.ServiceQueueCallBack
36 | import com.zoho.unattendedaccess.connectivity.ServiceQueueResponse
37 | import com.zoho.unattendedaccess.deviceregistration.enrollment.EnrollmentCallback
38 | import com.zoho.unattendedaccess.deviceregistration.unenrollment.UnEnrollmentCallback
39 | import kotlinx.coroutines.CoroutineScope
40 | import kotlinx.coroutines.Dispatchers
41 | import kotlinx.coroutines.launch
42 | import java.util.logging.Level
43 |
44 | class JoinActivity : AppCompatActivity(), ServiceQueueCallBack,
45 | ServiceQueueResponse {
46 |
47 | companion object {
48 | const val SESSION_KEY = "Session_key"
49 |
50 | }
51 |
52 | private lateinit var binding: ActivityJoinBinding
53 | var authToken=""
54 | override fun onCreate(savedInstanceState: Bundle?) {
55 | super.onCreate(savedInstanceState)
56 | WindowCompat.setDecorFitsSystemWindows(window, false)
57 | enableEdgeToEdge()
58 | binding= ActivityJoinBinding.inflate(layoutInflater)
59 | setContentView(binding.root)
60 |
61 | if (::binding.isInitialized) {
62 | setToolbarProperties()
63 | binding.root.let {
64 | ViewCompat.setOnApplyWindowInsetsListener(it) { v: View, insets: WindowInsetsCompat ->
65 | val systemBar =
66 | insets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout() or WindowInsetsCompat.Type.ime())
67 | val dp16 = TypedValue.applyDimension(
68 | TypedValue.COMPLEX_UNIT_DIP, 16f, resources.displayMetrics
69 | ).toInt()
70 | val dp30 = TypedValue.applyDimension(
71 | TypedValue.COMPLEX_UNIT_DIP, 30f, resources.displayMetrics
72 | ).toInt()
73 | val dp50 = TypedValue.applyDimension(
74 | TypedValue.COMPLEX_UNIT_DIP, 50f, resources.displayMetrics
75 | ).toInt()
76 | val dp80 = TypedValue.applyDimension(
77 | TypedValue.COMPLEX_UNIT_DIP, 80f, resources.displayMetrics
78 | ).toInt()
79 | binding.toolbar.updatePadding(
80 | left = systemBar.left,
81 | right = systemBar.right,
82 | top = systemBar.top+dp16,
83 | bottom = dp16
84 | )
85 |
86 | binding.contentLayoutId.layoutContainer.updatePadding(
87 | left = systemBar.left+dp30,
88 | right = systemBar.right+dp30,
89 | bottom = systemBar.bottom+dp30,
90 | top = dp30
91 | )
92 |
93 | binding.fab.apply {
94 | val params = layoutParams as? ViewGroup.MarginLayoutParams
95 | params?.setMargins(dp50, systemBar.top+dp80, systemBar.right+dp50, dp50)
96 | layoutParams = params
97 | }
98 |
99 | insets
100 | }
101 |
102 | }
103 | }
104 |
105 | binding.contentLayoutId.sdkToken.setText(authToken)
106 | binding.contentLayoutId.sessionKey.setText("")
107 | binding.fab.setOnClickListener { view ->
108 | AssistSession.INSTANCE.setLogLevel(Level.ALL)
109 | var sessionKey = binding.contentLayoutId.sessionKey.text.toString()
110 | sessionKey.let {
111 | Log.i("Done", sessionKey)
112 | var key = if (sessionKey.isEmpty()) {
113 | ""
114 | } else {
115 | sessionKey
116 | }
117 |
118 | if(!binding.contentLayoutId.sdkToken.text.toString().isEmpty()) {
119 | onStartSession(sessionKey, binding.contentLayoutId.sdkToken.text.toString())
120 | }else{
121 | binding.contentLayoutId.sdkToken.error = "Please enter the AuthToken"
122 | }
123 | val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
124 | imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0)
125 | }
126 | }
127 | binding.contentLayoutId.checkAddon.setOnClickListener {
128 | disableScreen()
129 | AssistSession.INSTANCE.checkAddonAvailability(object : AddonAvailabilityCallback {
130 | override fun onAddonInstalled() {
131 | binding.contentLayoutId.addonAvailabilityState.text = "Addon already installed"
132 | enableScreen()
133 | }
134 |
135 | override fun onAddonAvailable(addonApplicationId: String) {
136 | binding.contentLayoutId.addonAvailabilityState.text = "Addon available : $addonApplicationId"
137 | this@JoinActivity.startActivityForResult(
138 | Intent(
139 | Intent.ACTION_VIEW,
140 | Uri.parse("https://play.google.com/store/apps/details?id=${addonApplicationId}")
141 | ), 14892
142 | )
143 | enableScreen()
144 | }
145 |
146 | override fun onAddonUnavailable() {
147 | binding.contentLayoutId.addonAvailabilityState.text = "Addon is unavailable"
148 | enableScreen()
149 | }
150 | })
151 | }
152 | if(ContextCompat.checkSelfPermission(this@JoinActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE).toInt()== PackageManager.PERMISSION_DENIED)
153 | {
154 | // Permission is not granted
155 | checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, STORAGE_PERMISSION_CODE)
156 | }
157 |
158 | //Service Queue Code changes
159 | AssistSession.INSTANCE.setAuthToken(binding.contentLayoutId.sdkToken.text.toString()) // Set your auth token here to enable some features
160 | binding.contentLayoutId.enrollButton.setText(if(AssistSession.INSTANCE.isEnrolled(this)) "Unenroll" else "Enroll")
161 | binding.contentLayoutId.serviceQueueButton.visibility = if(AssistSession.INSTANCE.isEnrolled(this)) View.VISIBLE else View.GONE
162 | binding.contentLayoutId.ServiceRequestResult.visibility = if(AssistSession.INSTANCE.isEnrolled(this)) View.VISIBLE else View.GONE
163 | binding.contentLayoutId.descriptionBox.visibility = if(AssistSession.INSTANCE.isEnrolled(this)) View.VISIBLE else View.GONE
164 |
165 | AssistSession.serviceQueueResponseCallback = this
166 | if(AssistSession.INSTANCE.isEnrolled(this)){
167 | AssistSession.INSTANCE.checkAndStartSession()
168 | }
169 |
170 | binding.contentLayoutId.enrollButton.setOnClickListener {
171 | try {
172 | if (AssistSession.INSTANCE.isEnrolled(this)) {
173 | initUnEnroll()
174 | } else {
175 | initEnrollment()
176 | }
177 | }catch (ex:Exception){
178 | }
179 | }
180 |
181 | binding.contentLayoutId.serviceQueueButton.setOnClickListener {
182 | if(binding.contentLayoutId.descriptionBox.text.toString().isNotEmpty() && binding.contentLayoutId.descriptionBox.text.toString().length<=500){
183 |
184 | AssistSession.INSTANCE.requestServiceQueue(binding.contentLayoutId.descriptionBox.text.toString(),"zoho", serviceQueueCallBack = object : ServiceQueueCallBack {
185 | override fun requestResponse(request: Request) {
186 | when(request){
187 | Request.SUCCESS -> {
188 | lifecycleScope.launch{
189 | Toast.makeText(this@JoinActivity,"Your request raised successfully", Toast.LENGTH_SHORT).show()
190 | updateRequestStatus("Your request raised successfully")
191 | binding.contentLayoutId.serviceQueueButton.isEnabled = false
192 | binding.fab.isEnabled = false
193 | }
194 | }
195 |
196 | Request.FAILURE -> {
197 | lifecycleScope.launch {
198 | Toast.makeText(
199 | this@JoinActivity,
200 | "Something went wrong.Please try again later",
201 | Toast.LENGTH_SHORT
202 | ).show()
203 | }
204 | binding.contentLayoutId.serviceQueueButton.isEnabled = true
205 | binding.fab.isEnabled = true
206 | }
207 | Request.IN_QUEUE -> {
208 | lifecycleScope.launch{
209 | Toast.makeText(this@JoinActivity,"Previous request is still in queue. Please wait for the Technician response.",Toast.LENGTH_SHORT).show()
210 | updateRequestStatus("Previous request is still in queue. Please wait for the Technician response.")
211 | }
212 | binding.contentLayoutId.serviceQueueButton.isEnabled = false
213 | binding.fab.isEnabled = false
214 | }
215 |
216 | }
217 |
218 |
219 | }
220 |
221 | })
222 | }else{
223 | if (binding.contentLayoutId.descriptionBox.text.isNullOrEmpty()){
224 | binding.contentLayoutId.descriptionBox.error = "Please enter the description"
225 | }else if(binding.contentLayoutId.descriptionBox.text.toString().length>500){
226 | binding.contentLayoutId.descriptionBox.error = "Description should not exist 500"
227 | }
228 | }
229 |
230 | }
231 |
232 | if(AssistSession.INSTANCE.isEnrolled(this)){
233 | disableScreen()
234 | try {
235 | Handler(Looper.getMainLooper()).postDelayed({
236 | enableScreen()
237 | binding.fab.isEnabled = !AssistSession.INSTANCE.hasActiveServiceQueue()
238 | updateRequestStatus(if(AssistSession.INSTANCE.hasActiveServiceQueue())"Previous request in queue" else "No active request is available")
239 | binding.contentLayoutId.serviceQueueButton.visibility = View.VISIBLE
240 | binding.contentLayoutId.serviceQueueButton.isEnabled = !AssistSession.INSTANCE.hasActiveServiceQueue()
241 | },2000L)
242 | }catch (ex:Exception){
243 | println("Resume : ${ex.message} ")
244 | ex.printStackTrace()
245 | enableScreen()
246 | }
247 | }
248 |
249 |
250 | }
251 |
252 | private fun disableScreen() {
253 | binding.contentLayoutId. sessionKey.isEnabled = false
254 | binding.contentLayoutId. sdkToken.isEnabled = false
255 | binding .fab.isEnabled = false
256 | binding.contentLayoutId.checkAddon.isEnabled = false
257 | binding.contentLayoutId.serviceQueueButton.isEnabled = false
258 | }
259 |
260 | private fun enableScreen() {
261 | binding.contentLayoutId.sessionKey.isEnabled = true
262 | binding.contentLayoutId. sdkToken.isEnabled = true
263 | binding. fab.isEnabled = true
264 | binding.contentLayoutId. checkAddon.isEnabled = true
265 | if(AssistSession.INSTANCE.isEnrolled(this)){
266 | binding.contentLayoutId.serviceQueueButton.visibility = View.VISIBLE
267 | binding.contentLayoutId.serviceQueueButton.isEnabled = !AssistSession.INSTANCE.hasActiveServiceQueue()
268 | }
269 |
270 | }
271 |
272 | private fun isMyServiceRunning(serviceClass: Class<*>): Boolean {
273 | val manager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
274 | for (service in manager.getRunningServices(Integer.MAX_VALUE)) {
275 | if (serviceClass.name == service.service.getClassName()) {
276 | Log.i("isMyServiceRunning?", true.toString() + "")
277 | return true
278 | }
279 | }
280 | Log.i("isMyServiceRunning?", false.toString() + "")
281 | return false
282 | }
283 |
284 |
285 | private fun onStartSession(sessionKey: String, authToken: String) {
286 | val intent = Intent(this@JoinActivity, MainActivity::class.java)
287 | intent.putExtra(SESSION_KEY, sessionKey)
288 | intent.putExtra("AuthToken", authToken)
289 | startActivity(intent)
290 | }
291 |
292 | val progressBar: ProgressDialog? = null
293 | fun onDismiss() {
294 | try {
295 | progressBar?.let {
296 | it.dismiss()
297 | }
298 | } catch (ex: Exception) {
299 |
300 | }
301 | }
302 |
303 | fun checkPermission(permission: String, requestCode: Int) {
304 |
305 | // Checking if permission is not granted
306 | if (ContextCompat.checkSelfPermission(this@JoinActivity, permission) == PackageManager.PERMISSION_DENIED) {
307 | ActivityCompat.requestPermissions(this@JoinActivity, arrayOf(permission), requestCode)
308 | } else {
309 | Toast.makeText(this@JoinActivity, "Permission already granted", Toast.LENGTH_SHORT).show()
310 | }
311 | }
312 | private val STORAGE_PERMISSION_CODE = 100
313 | override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
314 | super.onRequestPermissionsResult(requestCode, permissions, grantResults)
315 | if (requestCode == STORAGE_PERMISSION_CODE ) {
316 | var permission="Camera"
317 | if(requestCode == STORAGE_PERMISSION_CODE){
318 | permission="STORAGE"
319 | try {
320 | if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
321 | // Showing the toast message
322 | Toast.makeText(this@JoinActivity,
323 | " onRequestPermissionsResult $permission Permission Granted",
324 | Toast.LENGTH_SHORT).show()
325 | } else {
326 | Toast.makeText(this@JoinActivity,
327 | "onRequestPermissionsResult $permission Permission Denied",
328 | Toast.LENGTH_SHORT).show()
329 | }
330 | }catch (ex: Exception){
331 | ex.printStackTrace()
332 | }
333 | }
334 |
335 | }
336 | }
337 |
338 |
339 | //Service Queue functions added
340 | override fun onResume() {
341 | super.onResume()
342 |
343 | }
344 |
345 | private fun initEnrollment(){
346 | AssistSession.INSTANCE.setAuthToken(binding.contentLayoutId.sdkToken.text.toString())
347 | AssistSession.INSTANCE.enrollDevice(BaseUrl.COM, callback = object :
348 | EnrollmentCallback {
349 | override fun onEnrollmentSuccess() {
350 | binding.contentLayoutId.serviceQueueButton.visibility = View.VISIBLE
351 | binding.contentLayoutId.ServiceRequestResult.visibility = View.VISIBLE
352 | binding.contentLayoutId.descriptionBox.visibility = View.VISIBLE
353 | binding.contentLayoutId.serviceQueueButton.isEnabled = true
354 | binding.contentLayoutId.enrollButton.setText(resources.getString(R.string.app_un_enroll))
355 | Toast.makeText(applicationContext,"Enrollment success.",Toast.LENGTH_SHORT).show()
356 | }
357 |
358 | override fun onEnrollmentFailure(exception: String) {
359 | binding.contentLayoutId.serviceQueueButton.isEnabled = false
360 | Toast.makeText(applicationContext,"Enrollment failed. Check you input details!.",Toast.LENGTH_SHORT).show()
361 | }
362 | })
363 | }
364 |
365 | private fun initUnEnroll(){
366 | AssistSession.INSTANCE.unEnroll(object : UnEnrollmentCallback {
367 | override fun onUnEnrollmentFailure(exception: Exception) {
368 | Toast.makeText(
369 | this@JoinActivity,
370 | "Un-Enrollment failed : ${exception.message}",
371 | Toast.LENGTH_SHORT
372 | ).show()
373 | exception.message?.let { it1 -> Log.w("UN_Enrollment", "exception : $it1") }
374 | }
375 |
376 | override fun onUnEnrollmentSuccess() {
377 | Toast.makeText(this@JoinActivity, "Unenrolled successfully", Toast.LENGTH_SHORT)
378 | .show()
379 | binding.contentLayoutId.enrollButton.setText(resources.getString(R.string.app_enroll))
380 | binding.contentLayoutId.serviceQueueButton.visibility = View.GONE
381 | binding.contentLayoutId.ServiceRequestResult.visibility = View.GONE
382 | binding.contentLayoutId.descriptionBox.visibility = View.GONE
383 | }
384 | })
385 | }
386 |
387 | private fun updateRequestStatus(s:String){
388 | binding.contentLayoutId.ServiceRequestResult.setText(s)
389 | }
390 |
391 | override fun requestResponse(request: Request) {
392 | when(request){
393 | Request.FAILURE->{
394 | updateRequestStatus("Something went wrong try again later")
395 | binding.contentLayoutId.serviceQueueButton.isEnabled = true
396 | }
397 |
398 | Request.SUCCESS -> {
399 | updateRequestStatus("Request raised successfully. Kindly wait for the technician response")
400 | binding.contentLayoutId.serviceQueueButton.isEnabled = false
401 | binding.fab.isEnabled = false
402 | }
403 |
404 | Request.IN_QUEUE -> {
405 | updateRequestStatus("Previous request still in pending")
406 | binding.contentLayoutId.serviceQueueButton.isEnabled = false
407 | binding.fab.isEnabled = false
408 | }
409 | }
410 | }
411 |
412 | override fun sessionEnded(reason: String) {
413 | CoroutineScope(Dispatchers.Main).launch{
414 | Toast.makeText(this@JoinActivity,"Your previous session has $reason",Toast.LENGTH_SHORT).show()
415 | }
416 | binding.contentLayoutId.serviceQueueButton.visibility = View.VISIBLE
417 | binding.contentLayoutId.serviceQueueButton.isEnabled = true
418 | }
419 |
420 | override fun sessionInitiated(sessionKey: String) {
421 | if(!binding.contentLayoutId.sdkToken.text.toString().isEmpty()) {
422 | lifecycleScope.launch (Dispatchers.Main) {
423 | updateRequestStatus("Your session starting....")
424 | onStartSession(sessionKey, binding.contentLayoutId.sdkToken.text.toString())
425 | }
426 | }else{
427 | binding.contentLayoutId.sdkToken.error = "Please enter the AuthToken"
428 | }
429 | }
430 |
431 | private fun setToolbarProperties() {
432 | supportActionBar?.hide()
433 | binding.toolbar?.let { toolbar ->
434 | actionBar?.setHomeButtonEnabled(true)
435 | actionBar?.setDisplayHomeAsUpEnabled(true)
436 | actionBar?.setDisplayShowHomeEnabled(true)
437 | toolbar.title = getString(R.string.app_name)
438 | }
439 | }
440 |
441 |
442 | }
443 |
--------------------------------------------------------------------------------
/assets/error.json:
--------------------------------------------------------------------------------
1 | {"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Null 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[327.5,292.5,0]},"a":{"k":[50,50,0]},"s":{"k":[115,115,100]}},"ao":0,"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"hole_mask","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[8.5,179.5,0]},"a":{"k":[540,960,0]},"s":{"k":[80,80,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-40.965,23.35],[0,0],[0,0],[0,0],[-4.637,-7.885],[0,0]],"o":[[28.424,-16.202],[0,0],[0,0],[0,0],[11.307,19.226],[0,0]],"v":[[747.701,875.023],[697.236,1029.44],[434.512,1017.502],[383,901.287],[404.746,873.203],[558.805,898.91]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"hand_l","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[472.812,861.562,0]},"a":{"k":[428,752.25,0]},"s":{"k":[125,125,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}],"e":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[418,718]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[418,718]],"c":false}],"e":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}],"e":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}]},{"t":52}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.58,0.84,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"face","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[539.155,947.529,0]},"a":{"k":[540,960,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":3,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[-10.377,0.723],[0,0]],"o":[[-6.265,0.547],[0,0],[10.207,-0.712],[-0.547,-6.265]],"v":[[562.964,860.494],[552.006,864.568],[563.336,866.404],[574.693,862.586]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":5,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[-10.377,0.723],[0,0]],"o":[[-6.265,0.547],[0,0],[10.207,-0.712],[-0.547,-6.265]],"v":[[562.964,860.494],[552.006,864.568],[563.336,866.404],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":36,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}]},{"t":41}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}],"e":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}],"e":[{"i":[[-0.243,-3.064],[-2.784,0.267],[0.243,3.064],[2.784,-0.267]],"o":[[0.243,3.063],[2.785,-0.267],[-0.243,-3.064],[-2.785,0.267]],"v":[[535.143,838.249],[540.625,843.312],[545.226,837.279],[539.745,832.217]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":5,"s":[{"i":[[-0.243,-3.064],[-2.784,0.267],[0.243,3.064],[2.784,-0.267]],"o":[[0.243,3.063],[2.785,-0.267],[-0.243,-3.064],[-2.785,0.267]],"v":[[535.143,838.249],[540.625,843.312],[545.226,837.279],[539.745,832.217]],"c":true}],"e":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}],"e":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":49,"s":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}],"e":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":51,"s":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}],"e":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}]},{"t":53}]},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}],"e":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}],"e":[{"i":[[-0.243,-3.063],[-2.785,0.268],[0.243,3.065],[2.784,-0.267]],"o":[[0.243,3.065],[2.785,-0.268],[-0.243,-3.063],[-2.786,0.267]],"v":[[574.217,834.493],[579.699,839.557],[584.3,833.523],[578.819,828.461]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":5,"s":[{"i":[[-0.243,-3.063],[-2.785,0.268],[0.243,3.065],[2.784,-0.267]],"o":[[0.243,3.065],[2.785,-0.268],[-0.243,-3.063],[-2.786,0.267]],"v":[[574.217,834.493],[579.699,839.557],[584.3,833.523],[578.819,828.461]],"c":true}],"e":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}],"e":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":49,"s":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}],"e":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":51,"s":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}],"e":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}]},{"t":53}]},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 3","mn":"ADBE Vector Graphic - Fill"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"body","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[0],"e":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[6],"e":[-1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[-1],"e":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":22,"s":[6],"e":[-1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":32,"s":[-1],"e":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":41,"s":[5],"e":[0]},{"i":{"x":[0.641],"y":[0.986]},"o":{"x":[0.167],"y":[0]},"n":["0p641_0p986_0p167_0"],"t":49,"s":[0],"e":[4]},{"i":{"x":[0.663],"y":[0.986]},"o":{"x":[0.357],"y":[0.013]},"n":["0p663_0p986_0p357_0p013"],"t":68,"s":[4],"e":[0]},{"t":87}]},"p":{"s":true,"x":{"k":22.5},"y":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[206.221],"e":[212.221]},{"i":{"x":[0.378],"y":[0.831]},"o":{"x":[0.333],"y":[0]},"n":["0p378_0p831_0p333_0"],"t":3,"s":[212.221],"e":[174.221]},{"i":{"x":[0.513],"y":[1.002]},"o":{"x":[0.637],"y":[-0.156]},"n":["0p513_1p002_0p637_-0p156"],"t":13,"s":[174.221],"e":[212.221]},{"i":{"x":[0.436],"y":[1.085]},"o":{"x":[0.482],"y":[0.003]},"n":["0p436_1p085_0p482_0p003"],"t":22,"s":[212.221],"e":[174.221]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.594],"y":[0.08]},"n":["0p667_1_0p594_0p08"],"t":32,"s":[174.221],"e":[212.221]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":41,"s":[212.221],"e":[206.221]},{"t":45}]}},"a":{"k":[557.5,972.5,0]},"s":{"k":[80,80,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.288,0.025],[0,0],[0.024,0.288],[0,0],[0.288,-0.025],[0,0],[-0.025,-0.288],[0,0]],"o":[[0,0],[0.288,-0.025],[0,0],[-0.024,-0.287],[0,0],[-0.288,0.026],[0,0],[0.024,0.288]],"v":[[-15.167,2.149],[15.311,-0.513],[15.787,-1.079],[15.734,-1.674],[15.169,-2.149],[-15.31,0.513],[-15.786,1.08],[-15.734,1.674]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[545.246,735.241],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.122,-1.392],[-1.392,0.121],[0.121,1.392],[1.392,-0.122]],"o":[[0.122,1.392],[1.392,-0.122],[-0.122,-1.393],[-1.393,0.121]],"v":[[-2.521,0.22],[0.22,2.521],[2.521,-0.22],[-0.22,-2.521]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[521.182,737.343],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.84,0.161],[0,0],[0.16,1.84],[0,0],[1.84,-0.16],[0,0],[-0.161,-1.84],[0,0]],"o":[[0,0],[1.839,-0.161],[0,0],[-0.161,-1.839],[0,0],[-1.839,0.16],[0,0],[0.161,1.84]],"v":[[-49.199,119.674],[69.206,109.331],[72.245,105.709],[52.823,-116.635],[49.201,-119.675],[-69.204,-109.331],[-72.244,-105.709],[-52.821,116.634]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"w":{"k":1.61},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[553.229,861.723],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.84,0.161],[0,0],[0.16,1.84],[0,0],[1.84,-0.16],[0,0],[-0.161,-1.84],[0,0]],"o":[[0,0],[1.839,-0.161],[0,0],[-0.161,-1.839],[0,0],[-1.839,0.16],[0,0],[0.161,1.84]],"v":[[-49.199,119.674],[69.206,109.331],[72.245,105.709],[52.823,-116.635],[49.201,-119.675],[-69.204,-109.331],[-72.244,-105.709],[-52.821,116.634]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[553.229,861.723],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.838,0.423],[0,0],[0.423,4.838],[0,0],[4.838,-0.423],[0,0],[-0.422,-4.837],[0,0]],"o":[[0,0],[4.838,-0.422],[0,0],[-0.423,-4.838],[0,0],[-4.837,0.422],[0,0],[0.422,4.838]],"v":[[-52.934,140.623],[76.514,129.315],[84.508,119.792],[62.459,-132.63],[52.934,-140.624],[-76.515,-129.315],[-84.509,-119.792],[-62.458,132.63]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"w":{"k":2.416},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[552.062,855.038],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.838,0.423],[0,0],[0.423,4.838],[0,0],[4.838,-0.423],[0,0],[-0.422,-4.837],[0,0]],"o":[[0,0],[4.838,-0.422],[0,0],[-0.423,-4.838],[0,0],[-4.837,0.422],[0,0],[0.422,4.838]],"v":[[-52.934,140.623],[76.514,129.315],[84.508,119.792],[62.459,-132.63],[52.934,-140.624],[-76.515,-129.315],[-84.509,-119.792],[-62.458,132.63]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[552.062,855.038],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.879,0.427],[0,0],[0.425,4.879],[0,0],[4.879,-0.426],[0,0],[-0.426,-4.879],[0,0]],"o":[[0,0],[4.88,-0.427],[0,0],[-0.426,-4.879],[0,0],[-4.879,0.426],[0,0],[0.426,4.879]],"v":[[-53.388,141.829],[77.17,130.425],[85.234,120.818],[62.994,-133.768],[53.388,-141.83],[-77.171,-130.425],[-85.233,-120.819],[-62.994,133.766]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[541.474,855.963],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"hand_R","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[625.625,857.5,0]},"a":{"k":[428,752.25,0]},"s":{"k":[-125,125,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.527,718.049]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.527,718.049]],"c":false}],"e":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[411.014,721.571]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[411.014,721.571]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[424.72,716.17]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[424.72,716.17]],"c":false}],"e":[{"i":[[0,0],[1.028,22.561]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[416.223,716.826]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[1.028,22.561]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[416.223,716.826]],"c":false}],"e":[{"i":[[0,0],[-0.997,21.245]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.081,719.803]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[-0.997,21.245]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.081,719.803]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[420.603,718.786]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[420.603,718.786]],"c":false}],"e":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}]},{"t":52}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.58,0.84,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"hole","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[8.5,179.5,0]},"a":{"k":[540,960,0]},"s":{"k":[80,80,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-13.602],[-94.41,0],[0,13.602],[94.41,0]],"o":[[0,13.602],[94.41,0],[0,-13.602],[-94.41,0]],"v":[[404.875,870.836],[575.819,895.463],[746.764,870.836],[575.819,846.209]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.65,0.87,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"bg_elements Outlines","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[15,88,0],"e":[5,82.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[5,82.5,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,-5.404],[1.755,-1.846],[5.682,-1.276],[2.841,1.493],[3.512,5.404],[0,3.558],[-3.513,5.404],[-2.841,1.493],[-5.682,-1.276],[-1.757,-1.846]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[386.368,88.084],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"bg_elements Outlines 2","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[15,88,0],"e":[8.5,92.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[8.5,92.25,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.791,-4.334],[4.334,-5.791],[5.792,4.333],[-4.333,5.791]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[141.093,58.788],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"bg_elements Outlines 3","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[5.5,91.5,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[15,88,0],"e":[5.5,91.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.26],[0,0],[3.26,0],[0,3.259],[-3.26,0]],"o":[[0,0],[0,3.259],[-3.26,0],[0,-3.26],[3.26,0]],"v":[[5.902,0],[5.902,0],[0,5.902],[-5.902,0],[0,-5.902]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[93.419,180.985],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"bg_elements Outlines 4","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[15,88,0],"e":[21.5,83.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[21.5,83.75,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.576,-1.784],[-1.465,-1.265],[1.559,-2.167],[0.989,-0.716],[1.634,-0.04],[0,0],[0,0],[-0.767,1.474],[0,0],[-1.975,-1.704]],"o":[[1.68,-0.832],[1.975,1.704],[0,0],[-1.346,0.975],[0,0],[0,0],[-0.2,-1.621],[0.565,-1.083],[1.916,-1.858],[1.466,1.265]],"v":[[1.5,-1.835],[6.693,-1.228],[7.074,5.559],[5.751,6.858],[1.152,8.375],[-7.434,8.518],[-8.468,0.074],[-7.641,-4.697],[-6.549,-6.197],[0.221,-6.814]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.96,0.96,0.96,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[377.788,161.799],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"bg_elements Outlines 5","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[-1.25,79,0],"e":[2.5,81.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[2.5,81.75,0],"e":[-1.25,79,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.899,3.724],[1.899,-3.724]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[315.058,43.265],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.724,1.899],[-3.724,-1.899]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[315.136,43.034],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"mn":"ADBE Vector Group"},{"ty":"tr","p":{"k":[315.136,43.265],"ix":2},"a":{"k":[315.136,43.265],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"bg_elements Outlines 6","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[22,85,0],"e":[26.5,81.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[26.5,81.5,0],"e":[22,85,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.058,-2.852],[3.057,2.852]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[90.535,106.711],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.851,3.057],[2.851,-3.057]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[90.535,106.711],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"mn":"ADBE Vector Group"},{"ty":"tr","p":{"k":[90.535,106.711],"ix":2},"a":{"k":[90.535,106.711],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1}],"v":"4.5.3","ddd":0,"ip":0,"op":90,"fr":30,"w":600,"h":600}
--------------------------------------------------------------------------------
/app/src/main/assets/error.json:
--------------------------------------------------------------------------------
1 | {"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Null 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[327.5,292.5,0]},"a":{"k":[50,50,0]},"s":{"k":[115,115,100]}},"ao":0,"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"hole_mask","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[8.5,179.5,0]},"a":{"k":[540,960,0]},"s":{"k":[80,80,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-40.965,23.35],[0,0],[0,0],[0,0],[-4.637,-7.885],[0,0]],"o":[[28.424,-16.202],[0,0],[0,0],[0,0],[11.307,19.226],[0,0]],"v":[[747.701,875.023],[697.236,1029.44],[434.512,1017.502],[383,901.287],[404.746,873.203],[558.805,898.91]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"hand_l","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[472.812,861.562,0]},"a":{"k":[428,752.25,0]},"s":{"k":[125,125,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}],"e":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[418,718]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[418,718]],"c":false}],"e":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[406,722.5]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[414,721]],"c":false}],"e":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}]},{"t":52}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.58,0.84,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"face","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[539.155,947.529,0]},"a":{"k":[540,960,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"n":"0p833_0p833_0p333_0","t":3,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[-10.377,0.723],[0,0]],"o":[[-6.265,0.547],[0,0],[10.207,-0.712],[-0.547,-6.265]],"v":[[562.964,860.494],[552.006,864.568],[563.336,866.404],[574.693,862.586]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"n":"0p667_1_0p167_0p167","t":5,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[-10.377,0.723],[0,0]],"o":[[-6.265,0.547],[0,0],[10.207,-0.712],[-0.547,-6.265]],"v":[[562.964,860.494],[552.006,864.568],[563.336,866.404],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":36,"s":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}],"e":[{"i":[[6.266,-0.547],[-0.548,-6.265],[0,0],[0,0]],"o":[[-6.265,0.547],[0,0],[0,0],[-0.547,-6.265]],"v":[[562.358,852.233],[552.006,864.568],[563.102,863.591],[574.693,862.586]],"c":true}]},{"t":41}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}],"e":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}],"e":[{"i":[[-0.243,-3.064],[-2.784,0.267],[0.243,3.064],[2.784,-0.267]],"o":[[0.243,3.063],[2.785,-0.267],[-0.243,-3.064],[-2.785,0.267]],"v":[[535.143,838.249],[540.625,843.312],[545.226,837.279],[539.745,832.217]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":5,"s":[{"i":[[-0.243,-3.064],[-2.784,0.267],[0.243,3.064],[2.784,-0.267]],"o":[[0.243,3.063],[2.785,-0.267],[-0.243,-3.064],[-2.785,0.267]],"v":[[535.143,838.249],[540.625,843.312],[545.226,837.279],[539.745,832.217]],"c":true}],"e":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}],"e":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":49,"s":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}],"e":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":51,"s":[{"i":[[-0.284,-0.315],[-2.759,0.376],[0.285,0.315],[2.759,-0.376]],"o":[[0.284,0.315],[2.76,-0.377],[-0.284,-0.315],[-2.76,0.377]],"v":[[535.189,838.976],[540.7,838.864],[545.18,837.612],[539.67,837.724]],"c":true}],"e":[{"i":[[-0.243,-2.785],[-2.784,0.243],[0.244,2.784],[2.784,-0.244]],"o":[[0.243,2.784],[2.785,-0.243],[-0.243,-2.785],[-2.785,0.243]],"v":[[535.143,838.735],[540.625,843.336],[545.226,837.854],[539.745,833.253]],"c":true}]},{"t":53}]},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":2,"ty":"sh","ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":0,"s":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}],"e":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":3,"s":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}],"e":[{"i":[[-0.243,-3.063],[-2.785,0.268],[0.243,3.065],[2.784,-0.267]],"o":[[0.243,3.065],[2.785,-0.268],[-0.243,-3.063],[-2.786,0.267]],"v":[[574.217,834.493],[579.699,839.557],[584.3,833.523],[578.819,828.461]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":5,"s":[{"i":[[-0.243,-3.063],[-2.785,0.268],[0.243,3.065],[2.784,-0.267]],"o":[[0.243,3.065],[2.785,-0.268],[-0.243,-3.063],[-2.786,0.267]],"v":[[574.217,834.493],[579.699,839.557],[584.3,833.523],[578.819,828.461]],"c":true}],"e":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":7,"s":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}],"e":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":49,"s":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}],"e":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":51,"s":[{"i":[[-0.264,-0.24],[-2.773,0.26],[0.265,0.24],[2.772,-0.26]],"o":[[0.264,0.24],[2.773,-0.26],[-0.264,-0.24],[-2.774,0.26]],"v":[[574.239,835.353],[579.738,835.316],[584.278,834.41],[578.78,834.447]],"c":true}],"e":[{"i":[[-0.243,-2.784],[-2.785,0.243],[0.244,2.785],[2.784,-0.243]],"o":[[0.243,2.785],[2.785,-0.244],[-0.243,-2.784],[-2.786,0.243]],"v":[[574.217,835.321],[579.699,839.923],[584.3,834.44],[578.819,829.839]],"c":true}]},{"t":53}]},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 3","mn":"ADBE Vector Graphic - Fill"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"body","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[0],"e":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":3,"s":[6],"e":[-1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":13,"s":[-1],"e":[6]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":22,"s":[6],"e":[-1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":32,"s":[-1],"e":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":41,"s":[5],"e":[0]},{"i":{"x":[0.641],"y":[0.986]},"o":{"x":[0.167],"y":[0]},"n":["0p641_0p986_0p167_0"],"t":49,"s":[0],"e":[4]},{"i":{"x":[0.663],"y":[0.986]},"o":{"x":[0.357],"y":[0.013]},"n":["0p663_0p986_0p357_0p013"],"t":68,"s":[4],"e":[0]},{"t":87}]},"p":{"s":true,"x":{"k":22.5},"y":{"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":0,"s":[206.221],"e":[212.221]},{"i":{"x":[0.378],"y":[0.831]},"o":{"x":[0.333],"y":[0]},"n":["0p378_0p831_0p333_0"],"t":3,"s":[212.221],"e":[174.221]},{"i":{"x":[0.513],"y":[1.002]},"o":{"x":[0.637],"y":[-0.156]},"n":["0p513_1p002_0p637_-0p156"],"t":13,"s":[174.221],"e":[212.221]},{"i":{"x":[0.436],"y":[1.085]},"o":{"x":[0.482],"y":[0.003]},"n":["0p436_1p085_0p482_0p003"],"t":22,"s":[212.221],"e":[174.221]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.594],"y":[0.08]},"n":["0p667_1_0p594_0p08"],"t":32,"s":[174.221],"e":[212.221]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":41,"s":[212.221],"e":[206.221]},{"t":45}]}},"a":{"k":[557.5,972.5,0]},"s":{"k":[80,80,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.288,0.025],[0,0],[0.024,0.288],[0,0],[0.288,-0.025],[0,0],[-0.025,-0.288],[0,0]],"o":[[0,0],[0.288,-0.025],[0,0],[-0.024,-0.287],[0,0],[-0.288,0.026],[0,0],[0.024,0.288]],"v":[[-15.167,2.149],[15.311,-0.513],[15.787,-1.079],[15.734,-1.674],[15.169,-2.149],[-15.31,0.513],[-15.786,1.08],[-15.734,1.674]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[545.246,735.241],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.122,-1.392],[-1.392,0.121],[0.121,1.392],[1.392,-0.122]],"o":[[0.122,1.392],[1.392,-0.122],[-0.122,-1.393],[-1.393,0.121]],"v":[[-2.521,0.22],[0.22,2.521],[2.521,-0.22],[-0.22,-2.521]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[521.182,737.343],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.84,0.161],[0,0],[0.16,1.84],[0,0],[1.84,-0.16],[0,0],[-0.161,-1.84],[0,0]],"o":[[0,0],[1.839,-0.161],[0,0],[-0.161,-1.839],[0,0],[-1.839,0.16],[0,0],[0.161,1.84]],"v":[[-49.199,119.674],[69.206,109.331],[72.245,105.709],[52.823,-116.635],[49.201,-119.675],[-69.204,-109.331],[-72.244,-105.709],[-52.821,116.634]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"w":{"k":1.61},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[553.229,861.723],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-1.84,0.161],[0,0],[0.16,1.84],[0,0],[1.84,-0.16],[0,0],[-0.161,-1.84],[0,0]],"o":[[0,0],[1.839,-0.161],[0,0],[-0.161,-1.839],[0,0],[-1.839,0.16],[0,0],[0.161,1.84]],"v":[[-49.199,119.674],[69.206,109.331],[72.245,105.709],[52.823,-116.635],[49.201,-119.675],[-69.204,-109.331],[-72.244,-105.709],[-52.821,116.634]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[553.229,861.723],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.838,0.423],[0,0],[0.423,4.838],[0,0],[4.838,-0.423],[0,0],[-0.422,-4.837],[0,0]],"o":[[0,0],[4.838,-0.422],[0,0],[-0.423,-4.838],[0,0],[-4.837,0.422],[0,0],[0.422,4.838]],"v":[[-52.934,140.623],[76.514,129.315],[84.508,119.792],[62.459,-132.63],[52.934,-140.624],[-76.515,-129.315],[-84.509,-119.792],[-62.458,132.63]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"w":{"k":2.416},"lc":1,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[552.062,855.038],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.838,0.423],[0,0],[0.423,4.838],[0,0],[4.838,-0.423],[0,0],[-0.422,-4.837],[0,0]],"o":[[0,0],[4.838,-0.422],[0,0],[-0.423,-4.838],[0,0],[-4.837,0.422],[0,0],[0.422,4.838]],"v":[[-52.934,140.623],[76.514,129.315],[84.508,119.792],[62.459,-132.63],[52.934,-140.624],[-76.515,-129.315],[-84.509,-119.792],[-62.458,132.63]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[552.062,855.038],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-4.879,0.427],[0,0],[0.425,4.879],[0,0],[4.879,-0.426],[0,0],[-0.426,-4.879],[0,0]],"o":[[0,0],[4.88,-0.427],[0,0],[-0.426,-4.879],[0,0],[-4.879,0.426],[0,0],[0.426,4.879]],"v":[[-53.388,141.829],[77.17,130.425],[85.234,120.818],[62.994,-133.768],[53.388,-141.83],[-77.171,-130.425],[-85.233,-120.819],[-62.994,133.766]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.06,0.63,0.97,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[541.474,855.963],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"hand_R","parent":5,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[625.625,857.5,0]},"a":{"k":[428,752.25,0]},"s":{"k":[-125,125,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.527,718.049]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":10,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.527,718.049]],"c":false}],"e":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[411.014,721.571]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":16,"s":[{"i":[[0,0],[6,22]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[411.014,721.571]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[424.72,716.17]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":23,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[424.72,716.17]],"c":false}],"e":[{"i":[[0,0],[1.028,22.561]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[416.223,716.826]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":30,"s":[{"i":[[0,0],[1.028,22.561]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[416.223,716.826]],"c":false}],"e":[{"i":[[0,0],[-0.997,21.245]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.081,719.803]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":38,"s":[{"i":[[0,0],[-0.997,21.245]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[419.081,719.803]],"c":false}],"e":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[420.603,718.786]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[{"i":[[0,0],[-1,25]],"o":[[0,0],[0,0]],"v":[[427.803,753.148],[420.603,718.786]],"c":false}],"e":[{"i":[[0,0],[0.5,-26]],"o":[[0,0],[0,0]],"v":[[427.803,752.148],[420.25,791.25]],"c":false}]},{"t":52}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.06,0.58,0.84,1]},"o":{"k":100},"w":{"k":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"hole","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[8.5,179.5,0]},"a":{"k":[540,960,0]},"s":{"k":[80,80,100]}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-13.602],[-94.41,0],[0,13.602],[94.41,0]],"o":[[0,13.602],[94.41,0],[0,-13.602],[-94.41,0]],"v":[[404.875,870.836],[575.819,895.463],[746.764,870.836],[575.819,846.209]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.65,0.87,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"bg_elements Outlines","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[15,88,0],"e":[5,82.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":47,"s":[5,82.5,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0,-5.404],[1.755,-1.846],[5.682,-1.276],[2.841,1.493],[3.512,5.404],[0,3.558],[-3.513,5.404],[-2.841,1.493],[-5.682,-1.276],[-1.757,-1.846]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[386.368,88.084],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"bg_elements Outlines 2","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[15,88,0],"e":[8.5,92.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":42,"s":[8.5,92.25,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.791,-4.334],[4.334,-5.791],[5.792,4.333],[-4.333,5.791]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[141.093,58.788],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":10,"ty":4,"nm":"bg_elements Outlines 3","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[5.5,91.5,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":45,"s":[15,88,0],"e":[5.5,91.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.26],[0,0],[3.26,0],[0,3.259],[-3.26,0]],"o":[[0,0],[0,3.259],[-3.26,0],[0,-3.26],[3.26,0]],"v":[[5.902,0],[5.902,0],[0,5.902],[-5.902,0],[0,-5.902]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[93.419,180.985],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"bg_elements Outlines 4","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[15,88,0],"e":[21.5,83.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":48,"s":[21.5,83.75,0],"e":[15,88,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.576,-1.784],[-1.465,-1.265],[1.559,-2.167],[0.989,-0.716],[1.634,-0.04],[0,0],[0,0],[-0.767,1.474],[0,0],[-1.975,-1.704]],"o":[[1.68,-0.832],[1.975,1.704],[0,0],[-1.346,0.975],[0,0],[0,0],[-0.2,-1.621],[0.565,-1.083],[1.916,-1.858],[1.466,1.265]],"v":[[1.5,-1.835],[6.693,-1.228],[7.074,5.559],[5.751,6.858],[1.152,8.375],[-7.434,8.518],[-8.468,0.074],[-7.641,-4.697],[-6.549,-6.197],[0.221,-6.814]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.96,0.96,0.96,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[377.788,161.799],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":4,"nm":"bg_elements Outlines 5","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[-1.25,79,0],"e":[2.5,81.75,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":46,"s":[2.5,81.75,0],"e":[-1.25,79,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.899,3.724],[1.899,-3.724]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[315.058,43.265],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.724,1.899],[-3.724,-1.899]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[315.136,43.034],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"mn":"ADBE Vector Group"},{"ty":"tr","p":{"k":[315.136,43.265],"ix":2},"a":{"k":[315.136,43.265],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"bg_elements Outlines 6","parent":0,"ks":{"o":{"k":71},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[22,85,0],"e":[26.5,81.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":51,"s":[26.5,81.5,0],"e":[22,85,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90}]},"a":{"k":[234,200,0]},"s":{"k":[-100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.058,-2.852],[3.057,2.852]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[90.535,106.711],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.851,3.057],[2.851,-3.057]],"c":false}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","fillEnabled":true,"c":{"k":[0.71,0.74,0.76,1]},"o":{"k":100},"w":{"k":1.476},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[90.535,106.711],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"mn":"ADBE Vector Group"},{"ty":"tr","p":{"k":[90.535,106.711],"ix":2},"a":{"k":[90.535,106.711],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":90,"st":0,"bm":0,"sr":1}],"v":"4.5.3","ddd":0,"ip":0,"op":90,"fr":30,"w":600,"h":600}
--------------------------------------------------------------------------------
/app/app.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | generateDebugSources
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
--------------------------------------------------------------------------------