diff --git a/.currentLang = 2 b/.currentLang = 2
deleted file mode 100644
index c07548c0..00000000
--- a/.currentLang = 2	
+++ /dev/null
@@ -1,224 +0,0 @@
-
-                   SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS
-
-      Commands marked with * may be preceded by a number, _N.
-      Notes in parentheses indicate the behavior if _N is given.
-      A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.
-
-  h  H                 Display this help.
-  q  :q  Q  :Q  ZZ     Exit.
- ---------------------------------------------------------------------------
-
-                           MMOOVVIINNGG
-
-  e  ^E  j  ^N  CR  *  Forward  one line   (or _N lines).
-  y  ^Y  k  ^K  ^P  *  Backward one line   (or _N lines).
-  f  ^F  ^V  SPACE  *  Forward  one window (or _N lines).
-  b  ^B  ESC-v      *  Backward one window (or _N lines).
-  z                 *  Forward  one window (and set window to _N).
-  w                 *  Backward one window (and set window to _N).
-  ESC-SPACE         *  Forward  one window, but don't stop at end-of-file.
-  d  ^D             *  Forward  one half-window (and set half-window to _N).
-  u  ^U             *  Backward one half-window (and set half-window to _N).
-  ESC-)  RightArrow *  Right one half screen width (or _N positions).
-  ESC-(  LeftArrow  *  Left  one half screen width (or _N positions).
-  ESC-}  ^RightArrow   Right to last column displayed.
-  ESC-{  ^LeftArrow    Left  to first column.
-  F                    Forward forever; like "tail -f".
-  ESC-F                Like F but stop when search pattern is found.
-  r  ^R  ^L            Repaint screen.
-  R                    Repaint screen, discarding buffered input.
-        ---------------------------------------------------
-        Default "window" is the screen height.
-        Default "half-window" is half of the screen height.
- ---------------------------------------------------------------------------
-
-                          SSEEAARRCCHHIINNGG
-
-  /_p_a_t_t_e_r_n          *  Search forward for (_N-th) matching line.
-  ?_p_a_t_t_e_r_n          *  Search backward for (_N-th) matching line.
-  n                 *  Repeat previous search (for _N-th occurrence).
-  N                 *  Repeat previous search in reverse direction.
-  ESC-n             *  Repeat previous search, spanning files.
-  ESC-N             *  Repeat previous search, reverse dir. & spanning files.
-  ESC-u                Undo (toggle) search highlighting.
-  &_p_a_t_t_e_r_n          *  Display only matching lines
-        ---------------------------------------------------
-        A search pattern may begin with one or more of:
-        ^N or !  Search for NON-matching lines.
-        ^E or *  Search multiple files (pass thru END OF FILE).
-        ^F or @  Start search at FIRST file (for /) or last file (for ?).
-        ^K       Highlight matches, but don't move (KEEP position).
-        ^R       Don't use REGULAR EXPRESSIONS.
- ---------------------------------------------------------------------------
-
-                           JJUUMMPPIINNGG
-
-  g  <  ESC-<       *  Go to first line in file (or line _N).
-  G  >  ESC->       *  Go to last line in file (or line _N).
-  p  %              *  Go to beginning of file (or _N percent into file).
-  t                 *  Go to the (_N-th) next tag.
-  T                 *  Go to the (_N-th) previous tag.
-  {  (  [           *  Find close bracket } ) ].
-  }  )  ]           *  Find open bracket { ( [.
-  ESC-^F _<_c_1_> _<_c_2_>  *  Find close bracket _<_c_2_>.
-  ESC-^B _<_c_1_> _<_c_2_>  *  Find open bracket _<_c_1_> 
-        ---------------------------------------------------
-        Each "find close bracket" command goes forward to the close bracket 
-          matching the (_N-th) open bracket in the top line.
-        Each "find open bracket" command goes backward to the open bracket 
-          matching the (_N-th) close bracket in the bottom line.
-
-  m_<_l_e_t_t_e_r_>            Mark the current top line with <letter>.
-  M_<_l_e_t_t_e_r_>            Mark the current bottom line with <letter>.
-  '_<_l_e_t_t_e_r_>            Go to a previously marked position.
-  ''                   Go to the previous position.
-  ^X^X                 Same as '.
-  ESC-M_<_l_e_t_t_e_r_>        Clear a mark.
-        ---------------------------------------------------
-        A mark is any upper-case or lower-case letter.
-        Certain marks are predefined:
-             ^  means  beginning of the file
-             $  means  end of the file
- ---------------------------------------------------------------------------
-
-                        CCHHAANNGGIINNGG FFIILLEESS
-
-  :e [_f_i_l_e]            Examine a new file.
-  ^X^V                 Same as :e.
-  :n                *  Examine the (_N-th) next file from the command line.
-  :p                *  Examine the (_N-th) previous file from the command line.
-  :x                *  Examine the first (or _N-th) file from the command line.
-  :d                   Delete the current file from the command line list.
-  =  ^G  :f            Print current file name.
- ---------------------------------------------------------------------------
-
-                    MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS
-
-  -_<_f_l_a_g_>              Toggle a command line option [see OPTIONS below].
-  --_<_n_a_m_e_>             Toggle a command line option, by name.
-  __<_f_l_a_g_>              Display the setting of a command line option.
-  ___<_n_a_m_e_>             Display the setting of an option, by name.
-  +_c_m_d                 Execute the less cmd each time a new file is examined.
-
-  !_c_o_m_m_a_n_d             Execute the shell command with $SHELL.
-  |XX_c_o_m_m_a_n_d            Pipe file between current pos & mark XX to shell command.
-  s _f_i_l_e               Save input to a file.
-  v                    Edit the current file with $VISUAL or $EDITOR.
-  V                    Print version number of "less".
- ---------------------------------------------------------------------------
-
-                           OOPPTTIIOONNSS
-
-        Most options may be changed either on the command line,
-        or from within less by using the - or -- command.
-        Options may be given in one of two forms: either a single
-        character preceded by a -, or a name preceded by --.
-
-  -?  ........  --help
-                  Display help (from command line).
-  -a  ........  --search-skip-screen
-                  Search skips current screen.
-  -A  ........  --SEARCH-SKIP-SCREEN
-                  Search starts just after target line.
-  -b [_N]  ....  --buffers=[_N]
-                  Number of buffers.
-  -B  ........  --auto-buffers
-                  Don't automatically allocate buffers for pipes.
-  -c  ........  --clear-screen
-                  Repaint by clearing rather than scrolling.
-  -d  ........  --dumb
-                  Dumb terminal.
-  -D [_x_n_._n]  .  --color=_x_n_._n
-                  Set screen colors. (MS-DOS only)
-  -e  -E  ....  --quit-at-eof  --QUIT-AT-EOF
-                  Quit at end of file.
-  -f  ........  --force
-                  Force open non-regular files.
-  -F  ........  --quit-if-one-screen
-                  Quit if entire file fits on first screen.
-  -g  ........  --hilite-search
-                  Highlight only last match for searches.
-  -G  ........  --HILITE-SEARCH
-                  Don't highlight any matches for searches.
-  -h [_N]  ....  --max-back-scroll=[_N]
-                  Backward scroll limit.
-  -i  ........  --ignore-case
-                  Ignore case in searches that do not contain uppercase.
-  -I  ........  --IGNORE-CASE
-                  Ignore case in all searches.
-  -j [_N]  ....  --jump-target=[_N]
-                  Screen position of target lines.
-  -J  ........  --status-column
-                  Display a status column at left edge of screen.
-  -k [_f_i_l_e]  .  --lesskey-file=[_f_i_l_e]
-                  Use a lesskey file.
-  -K  ........  --quit-on-intr
-                  Exit less in response to ctrl-C.
-  -L  ........  --no-lessopen
-                  Ignore the LESSOPEN environment variable.
-  -m  -M  ....  --long-prompt  --LONG-PROMPT
-                  Set prompt style.
-  -n  -N  ....  --line-numbers  --LINE-NUMBERS
-                  Don't use line numbers.
-  -o [_f_i_l_e]  .  --log-file=[_f_i_l_e]
-                  Copy to log file (standard input only).
-  -O [_f_i_l_e]  .  --LOG-FILE=[_f_i_l_e]
-                  Copy to log file (unconditionally overwrite).
-  -p [_p_a_t_t_e_r_n]  --pattern=[_p_a_t_t_e_r_n]
-                  Start at pattern (from command line).
-  -P [_p_r_o_m_p_t]   --prompt=[_p_r_o_m_p_t]
-                  Define new prompt.
-  -q  -Q  ....  --quiet  --QUIET  --silent --SILENT
-                  Quiet the terminal bell.
-  -r  -R  ....  --raw-control-chars  --RAW-CONTROL-CHARS
-                  Output "raw" control characters.
-  -s  ........  --squeeze-blank-lines
-                  Squeeze multiple blank lines.
-  -S  ........  --chop-long-lines
-                  Chop (truncate) long lines rather than wrapping.
-  -t [_t_a_g]  ..  --tag=[_t_a_g]
-                  Find a tag.
-  -T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e]
-                  Use an alternate tags file.
-  -u  -U  ....  --underline-special  --UNDERLINE-SPECIAL
-                  Change handling of backspaces.
-  -V  ........  --version
-                  Display the version number of "less".
-  -w  ........  --hilite-unread
-                  Highlight first new line after forward-screen.
-  -W  ........  --HILITE-UNREAD
-                  Highlight first new line after any forward movement.
-  -x [_N[,...]]  --tabs=[_N[,...]]
-                  Set tab stops.
-  -X  ........  --no-init
-                  Don't use termcap init/deinit strings.
-  -y [_N]  ....  --max-forw-scroll=[_N]
-                  Forward scroll limit.
-  -z [_N]  ....  --window=[_N]
-                  Set size of window.
-  -" [_c[_c]]  .  --quotes=[_c[_c]]
-                  Set shell quote characters.
-  -~  ........  --tilde
-                  Don't display tildes after end of file.
-  -# [_N]  ....  --shift=[_N]
-                  Horizontal scroll amount (0 = one half screen width)
-                --follow-name
-                  The F command changes files if the input file is renamed.
-                --mouse
-                  Enable mouse input.
-                --no-keypad
-                  Don't send termcap keypad init/deinit strings.
-                --no-histdups
-                  Remove duplicates from command history.
-                --rscroll=C
-                  Set the character used to mark truncated lines.
-                --save-marks
-                  Retain marks across invocations of less.
-                --use-backslash
-                  Subsequent options use backslash as escape char.
-                --wheel-lines=N
-                  Each click of the mouse wheel moves N lines.
-
-
- ---------------------------------------------------------------------------
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/package.json b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/package.json
deleted file mode 100644
index 36d3264c..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "com.huawei.cordovahmsgmscheckplugin",
-  "version": "1.0.0",
-  "description": "Account Check Kit 4.0",
-  "cordova": {
-    "id": "com.huawei.cordovahmsgmscheckplugin",
-    "platforms": [
-      "android"
-    ]
-  },
-  "keywords": [
-    "ecosystem:cordova",
-    "cordova-android"
-  ],
-  "author": "",
-  "license": "ISC"
-}
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/plugin.xml b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/plugin.xml
deleted file mode 100644
index 63d1d203..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/plugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<plugin id="com.huawei.cordovahmsgmscheckplugin" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
-    <name>CordovaHMSGMSCheckPlugin</name>
-    <js-module name="CordovaHMSGMSCheckPlugin" src="www/CordovaHMSGMSCheckPlugin.js">
-        <clobbers target="cordova.plugins.CordovaHMSGMSCheckPlugin" />
-    </js-module>
-    <platform name="android">
-        <!-- hook for add maven repositories and agc plugin-->
-        <hook src="scripts/android/after_plugin_install.js" type="after_plugin_install" />
-        <hook src="scripts/android/before_plugin_uninstall.js" type="before_plugin_uninstall" />
-
-        <framework custom="true" src="src/android/build.gradle" type="gradleReference" />
-        <!-- Account Kit dependency-->
-        <framework src="com.huawei.hms:base:5.0.4.301" />
-        <!-- <framework src="com.google.android.gms:play-services-base:17.2.1" /> -->
-        
-        <config-file parent="/*" target="res/xml/config.xml">
-            <feature name="CordovaHMSGMSCheckPlugin">
-                <param name="android-package"
-                    value="com.huawei.cordovahmsgmscheckplugin.CordovaHMSGMSCheckPlugin" />
-            </feature>
-        </config-file>
-        <config-file parent="/*" target="AndroidManifest.xml"></config-file>
-        <source-file src="src/android/CordovaHMSGMSCheckPlugin.java"
-            target-dir="src/com/huawei/cordovahmsgmscheckplugin" />
-    </platform>
-    <!-- Script help to copy agconnect-services.json to right places-->
-    <hook src="scripts/after_prepare.js" type="after_prepare" />
-</plugin>
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/after_prepare.js b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/after_prepare.js
deleted file mode 100644
index b3da28cf..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/after_prepare.js
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env node
-
-"use strict";
-
-/**
- * This hook makes sure projects using [cordova-plugin-firebase](https://github.com/arnesson/cordova-plugin-firebase)
- * will build properly and have the required key files copied to the proper destinations when the app is build on Ionic Cloud using the package command.
- * Credits: https://github.com/arnesson.
- */
-var fs = require("fs");
-var path = require("path");
-var utilities = require("./lib/utilities");
-
-var config = fs.readFileSync("config.xml").toString();
-var name = utilities.getValue(config, "name");
-
-var ANDROID_DIR = "platforms/android";
-
-var PLATFORM = {
-  ANDROID: {
-    dest: [ANDROID_DIR + "/app/agconnect-services.json"],
-    src: ["agconnect-services.json"],
-  },
-};
-
-module.exports = function (context) {
-  //get platform from the context supplied by cordova
-  var platforms = context.opts.platforms;
-  // Copy key files to their platform specific folders
-  if (
-    platforms.indexOf("android") !== -1 &&
-    utilities.directoryExists(ANDROID_DIR)
-  ) {
-    console.log("Preparing HMS GMS Check Kit on Android");
-    // utilities.copyKey(PLATFORM.ANDROID);
-  }
-};
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/after_plugin_install.js b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/after_plugin_install.js
deleted file mode 100644
index 09e73419..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/after_plugin_install.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var helper = require('./helper');
-
-module.exports = function(context) {
-
-    // Modify the Gradle build file to add a task that will upload the debug symbols
-    // at build time.
-    helper.restoreRootBuildGradle();
-    helper.modifyRootBuildGradle();
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/before_plugin_uninstall.js b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/before_plugin_uninstall.js
deleted file mode 100644
index 9c32e552..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/before_plugin_uninstall.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var helper = require('./helper');
-
-module.exports = function(context) {
-
-    // Remove the Gradle modifications that were added when the plugin was installed.
-    helper.restoreRootBuildGradle();
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/helper.js b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/helper.js
deleted file mode 100644
index cd4b8111..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/android/helper.js
+++ /dev/null
@@ -1,131 +0,0 @@
-var fs = require("fs");
-var path = require("path");
-
-function rootBuildGradleExists() {
-  var target = path.join("platforms", "android", "build.gradle");
-  return fs.existsSync(target);
-}
-
-/*
- * Helper function to read the build.gradle that sits at the root of the project
- */
-function readRootBuildGradle() {
-  var target = path.join("platforms", "android", "build.gradle");
-  return fs.readFileSync(target, "utf-8");
-}
-
-/*
- * Added a dependency on 'com.google.gms' based on the position of the know 'com.android.tools.build' dependency in the build.gradle
- */
-function addDependencies(buildGradle) {
-  // find the known line to match
-  var match = buildGradle.match(
-    /^(\s*)classpath 'com.android.tools.build(.*)/m
-  );
-  var whitespace = match[1];
-
-  // modify the line to add the necessary dependencies
-  var agcDependency =
-    whitespace + "classpath 'com.huawei.agconnect:agcp:1.2.0.300'";
-
-  var modifiedLine = match[0] + "\n" + agcDependency;
-
-  // modify the actual line
-  return buildGradle.replace(
-    /^(\s*)classpath 'com.android.tools.build(.*)/m,
-    modifiedLine
-  );
-}
-
-/*
- * Add 'google()' and Crashlytics to the repository repo list
- */
-function addRepos(buildGradle) {
-  // find the known line to match
-  var match = buildGradle.match(/^(\s*)jcenter\(\)/m);
-  var whitespace = match[1];
-
-  // modify the line to add the necessary repo
-  var huaweiMavenRepo =
-    whitespace + "maven { url 'http://developer.huawei.com/repo/' }";
-  var modifiedLine = match[0] + "\n" + huaweiMavenRepo;
-
-  // modify the actual line
-  buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-
-  // update the all projects grouping
-  var allProjectsIndex = buildGradle.indexOf("allprojects");
-  if (allProjectsIndex > 0) {
-    // split the string on allprojects because jcenter is in both groups and we need to modify the 2nd instance
-    var firstHalfOfFile = buildGradle.substring(0, allProjectsIndex);
-    var secondHalfOfFile = buildGradle.substring(allProjectsIndex);
-
-    // Add google() to the allprojects section of the string
-    match = secondHalfOfFile.match(/^(\s*)jcenter\(\)/m);
-    var huaweiMavenRepo =
-      whitespace + "maven { url 'http://developer.huawei.com/repo/' }";
-    modifiedLine = match[0] + "\n" + huaweiMavenRepo;
-    // modify the part of the string that is after 'allprojects'
-    secondHalfOfFile = secondHalfOfFile.replace(
-      /^(\s*)jcenter\(\)/m,
-      modifiedLine
-    );
-
-    // recombine the modified line
-    buildGradle = firstHalfOfFile + secondHalfOfFile;
-  } else {
-    // this should not happen, but if it does, we should try to add the dependency to the buildscript
-    match = buildGradle.match(/^(\s*)jcenter\(\)/m);
-    var huaweiMavenRepo =
-      whitespace + "maven { url 'http://developer.huawei.com/repo/' }";
-    modifiedLine = match[0] + "\n" + huaweiMavenRepo;
-    // modify the part of the string that is after 'allprojects'
-    buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-  }
-
-  return buildGradle;
-}
-
-/*
- * Helper function to write to the build.gradle that sits at the root of the project
- */
-function writeRootBuildGradle(contents) {
-  var target = path.join("platforms", "android", "build.gradle");
-  fs.writeFileSync(target, contents);
-}
-
-module.exports = {
-  modifyRootBuildGradle: function () {
-    // be defensive and don't crash if the file doesn't exist
-    if (!rootBuildGradleExists) {
-      return;
-    }
-
-    var buildGradle = readRootBuildGradle();
-
-    // Add Google Play Services Dependency
-    buildGradle = addDependencies(buildGradle);
-
-    // Add Google's Maven Repo
-    buildGradle = addRepos(buildGradle);
-
-    writeRootBuildGradle(buildGradle);
-  },
-
-  restoreRootBuildGradle: function () {
-    // be defensive and don't crash if the file doesn't exist
-    if (!rootBuildGradleExists) {
-      return;
-    }
-
-    var buildGradle = readRootBuildGradle();
-
-    // remove any lines we added
-    buildGradle = buildGradle.replace(
-      /(?:^|\r?\n)(.*)com.huawei.cordovahmsgmscheckplugin*?(?=$|\r?\n)/g,
-      ""
-    );
-
-    writeRootBuildGradle(buildGradle);
-  },
-};
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/lib/utilities.js b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/lib/utilities.js
deleted file mode 100644
index 89ecc01f..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/scripts/lib/utilities.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Utilities and shared functionality for the build hooks.
- */
-var fs = require("fs");
-var path = require("path");
-
-fs.ensureDirSync = function (dir) {
-  if (!fs.existsSync(dir)) {
-    dir.split(path.sep).reduce(function (currentPath, folder) {
-      currentPath += folder + path.sep;
-      if (!fs.existsSync(currentPath)) {
-        fs.mkdirSync(currentPath);
-      }
-      return currentPath;
-    }, "");
-  }
-};
-
-module.exports = {
-  /**
-   * Used to get the name of the application as defined in the config.xml.
-   *
-   * @param {object} context - The Cordova context.
-   * @returns {string} The value of the name element in config.xml.
-   */
-  getAppName: function (context) {
-    var ConfigParser = context.requireCordovaModule("cordova-lib").configparser;
-    var config = new ConfigParser("config.xml");
-    return config.name();
-  },
-
-  /**
-   * The ID of the plugin; this should match the ID in plugin.xml.
-   */
-  getPluginId: function () {
-    return "com.huawei.cordovahmsgmscheckplugin";
-  },
-
-  copyKey: function (platform) {
-    for (var i = 0; i < platform.src.length; i++) {
-      var file = platform.src[i];
-      if (this.fileExists(file)) {
-        try {
-          var contents = fs.readFileSync(file).toString();
-
-          try {
-            platform.dest.forEach(function (destinationPath) {
-              var folder = destinationPath.substring(
-                0,
-                destinationPath.lastIndexOf("/")
-              );
-              fs.ensureDirSync(folder);
-              fs.writeFileSync(destinationPath, contents);
-            });
-          } catch (e) {
-            // skip
-          }
-        } catch (err) {
-          console.log(err);
-        }
-
-        break;
-      }
-    }
-  },
-
-  getValue: function (config, name) {
-    var value = config.match(
-      new RegExp("<" + name + "(.*?)>(.*?)</" + name + ">", "i")
-    );
-    if (value && value[2]) {
-      return value[2];
-    } else {
-      return null;
-    }
-  },
-
-  fileExists: function (path) {
-    try {
-      return fs.statSync(path).isFile();
-    } catch (e) {
-      return false;
-    }
-  },
-
-  directoryExists: function (path) {
-    try {
-      return fs.statSync(path).isDirectory();
-    } catch (e) {
-      return false;
-    }
-  },
-};
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/src/android/CordovaHMSGMSCheckPlugin.java b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/src/android/CordovaHMSGMSCheckPlugin.java
deleted file mode 100644
index 86307e6b..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/src/android/CordovaHMSGMSCheckPlugin.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.huawei.cordovahmsgmscheckplugin;
-
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-
-import com.huawei.hms.api.HuaweiApiAvailability;
-// import com.google.android.gms.common.GoogleApiAvailability;
- 
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaInterfaceImpl;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CallbackContext;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * This class echoes a string called from JavaScript.
- */
-public class CordovaHMSGMSCheckPlugin extends CordovaPlugin {
-
-    private static final String TAG = CordovaHMSGMSCheckPlugin.class.getSimpleName();
-    private CallbackContext mCallbackContext;
-
-    @Override
-    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
-        switch (action) {
-            case "isHmsAvailable":
-                mCallbackContext = callbackContext;
-                cordova.getThreadPool().execute(this::isHmsAvailable);
-                return true;
-            case "isGmsAvailable":
-                // mCallbackContext = callbackContext;
-                // cordova.getThreadPool().execute(this::isGmsAvailable);
-                return false;
-        }
-        return false;
-    }
-
-    private void isHmsAvailable() {
-        boolean isAvailable = false;
-        Context context = cordova.getContext();
-        if (null != cordova.getContext()) {
-            int result = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(context);
-            isAvailable = (com.huawei.hms.api.ConnectionResult.SUCCESS == result);
-        }
-        Log.i("Cordova", "isHmsAvailable: " + isAvailable);
-        String msg = "false";
-        if(isAvailable){
-            msg = "true";
-        }
-        outputCallbackContext(0, msg);
-    }
-
-    // private void isGmsAvailable() {
-    //     boolean isAvailable = false;
-    //     Context context = cordova.getContext();
-    //     if (null != context) {
-    //         int result = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
-    //         isAvailable = (com.google.android.gms.common.ConnectionResult.SUCCESS == result);
-    //     }
-    //     Log.i("Cordova",  "isGmsAvailable: " + isAvailable);
-    //     String msg = "false";
-    //     if(isAvailable){
-    //         msg = "true";
-    //     }
-    //     outputCallbackContext(0, msg);
-    // }
-
-    /**
-     * @param type 0-success,1-error
-     * @param msg message
-     */
-    private void outputCallbackContext(int type, String msg) {
-        if (mCallbackContext != null) {
-            switch (type) {
-                case 0:
-                    mCallbackContext.success(msg);
-                    break;
-                case 1:
-                    mCallbackContext.error(msg);
-                    break;
-            }
-        }
-    }
-}
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/src/android/build.gradle b/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/src/android/build.gradle
deleted file mode 100644
index 30dda1bf..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSGMSCheckPlugin/src/android/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
-    repositories {
-        google()
-        jcenter()
-        // huawei maven
-        maven { url 'http://developer.huawei.com/repo/' }
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:3.2.0'
-        // classpath 'com.huawei.agconnect:agcp:1.2.0.300'
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        jcenter()
-        // huawei maven
-        maven { url 'http://developer.huawei.com/repo/' }
-    }
-}
-
-cdvPluginPostBuildExtras.add({
-    apply plugin: 'com.huawei.agconnect'
-})
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/package.json b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/package.json
deleted file mode 100644
index 8b3323cf..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "com.huawei.cordovahmslocationplugin",
-  "version": "1.0.0",
-  "description": "Location Service",
-  "cordova": {
-    "id": "com.huawei.cordovahmslocationplugin",
-    "platforms": [
-      "android"
-    ]
-  },
-  "keywords": [
-    "ecosystem:cordova",
-    "cordova-android"
-  ],
-  "author": "",
-  "license": "ISC"
-}
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/plugin.xml b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/plugin.xml
deleted file mode 100644
index 126ffbc8..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/plugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<plugin xmlns:android="http://schemas.android.com/apk/res/android" id="com.huawei.cordovahmslocationplugin"
-    version="1.0.0"
-    xmlns="http://apache.org/cordova/ns/plugins/1.0">
-    <name>CordovaHMSLocationPlugin</name>
-    <js-module name="CordovaHMSLocationPlugin" src="www/CordovaHMSLocationPlugin.js">
-        <clobbers target="cordova.plugins.CordovaHMSLocationPlugin" />
-    </js-module>
-    <platform name="android">
-        <!-- hook for add maven repositories and agc plugin-->
-        <hook src="scripts/android/after_plugin_install.js" type="after_plugin_install" />
-        <hook src="scripts/android/before_plugin_uninstall.js" type="before_plugin_uninstall" />
-
-        <framework custom="true" src="src/android/build.gradle" type="gradleReference" />
-        <!-- Location Kit dependency-->
-        <framework src="com.huawei.hms:location:4.0.0.300" />
-        <config-file parent="/*" target="res/xml/config.xml">
-            <feature name="CordovaHMSLocationPlugin">
-                <param name="android-package"
-                    value="com.huawei.cordovahmslocationplugin.CordovaHMSLocationPlugin" />
-            </feature>
-        </config-file>
-        <config-file parent="/*" target="AndroidManifest.xml"></config-file>
-        <source-file src="src/android/CordovaHMSLocationPlugin.java"
-            target-dir="src/com/huawei/cordovahmslocationplugin" />
-    </platform>
-    <!-- Script help to copy agconnect-services.json to right places-->
-    <hook src="scripts/after_prepare.js" type="after_prepare" />
-</plugin>
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/after_prepare.js b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/after_prepare.js
deleted file mode 100644
index adc5a480..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/after_prepare.js
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-/**
- * This hook makes sure projects using [cordova-plugin-firebase](https://github.com/arnesson/cordova-plugin-firebase)
- * will build properly and have the required key files copied to the proper destinations when the app is build on Ionic Cloud using the package command.
- * Credits: https://github.com/arnesson.
- */
-var fs = require('fs');
-var path = require('path');
-var utilities = require("./lib/utilities");
-
-var config = fs.readFileSync('config.xml').toString();
-var name = utilities.getValue(config, 'name');
-
-var ANDROID_DIR = 'platforms/android';
-
-var PLATFORM = {
-  ANDROID: {
-    dest: [
-      ANDROID_DIR + '/app/agconnect-services.json'
-    ],
-    src: [
-      'agconnect-services.json'
-    ],
-  }
-};
-
-module.exports = function (context) {
-  //get platform from the context supplied by cordova
-  var platforms = context.opts.platforms;
-  // Copy key files to their platform specific folders
-  if (platforms.indexOf('android') !== -1 && utilities.directoryExists(ANDROID_DIR)) {
-    console.log('Preparing HMS Location Kit on Android');
-    utilities.copyKey(PLATFORM.ANDROID);
-  }
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/after_plugin_install.js b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/after_plugin_install.js
deleted file mode 100644
index 09e73419..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/after_plugin_install.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var helper = require('./helper');
-
-module.exports = function(context) {
-
-    // Modify the Gradle build file to add a task that will upload the debug symbols
-    // at build time.
-    helper.restoreRootBuildGradle();
-    helper.modifyRootBuildGradle();
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/before_plugin_uninstall.js b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/before_plugin_uninstall.js
deleted file mode 100644
index 9c32e552..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/before_plugin_uninstall.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var helper = require('./helper');
-
-module.exports = function(context) {
-
-    // Remove the Gradle modifications that were added when the plugin was installed.
-    helper.restoreRootBuildGradle();
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/helper.js b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/helper.js
deleted file mode 100644
index da715c24..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/android/helper.js
+++ /dev/null
@@ -1,117 +0,0 @@
-var fs = require("fs");
-var path = require("path");
-
-function rootBuildGradleExists() {
-  var target = path.join("platforms", "android", "build.gradle");
-  return fs.existsSync(target);
-}
-
-/*
- * Helper function to read the build.gradle that sits at the root of the project
- */
-function readRootBuildGradle() {
-  var target = path.join("platforms", "android", "build.gradle");
-  return fs.readFileSync(target, "utf-8");
-}
-
-/*
- * Added a dependency on 'com.google.gms' based on the position of the know 'com.android.tools.build' dependency in the build.gradle
- */
-function addDependencies(buildGradle) {
-  // find the known line to match
-  var match = buildGradle.match(/^(\s*)classpath 'com.android.tools.build(.*)/m);
-  var whitespace = match[1];
-  
-  // modify the line to add the necessary dependencies
-  var agcDependency = whitespace + 'classpath \'com.huawei.agconnect:agcp:1.2.0.300\'' 
-
-  var modifiedLine = match[0] + '\n' + agcDependency;
-  
-  // modify the actual line
-  return buildGradle.replace(/^(\s*)classpath 'com.android.tools.build(.*)/m, modifiedLine);
-}
-
-/*
- * Add 'google()' and Crashlytics to the repository repo list
- */
-function addRepos(buildGradle) {
-  // find the known line to match
-  var match = buildGradle.match(/^(\s*)jcenter\(\)/m);
-  var whitespace = match[1];
-
-  // modify the line to add the necessary repo
-  var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
-  var modifiedLine = match[0] + '\n' + huaweiMavenRepo;
-
-  // modify the actual line
-  buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-
-  // update the all projects grouping
-  var allProjectsIndex = buildGradle.indexOf('allprojects');
-  if (allProjectsIndex > 0) {
-    // split the string on allprojects because jcenter is in both groups and we need to modify the 2nd instance
-    var firstHalfOfFile = buildGradle.substring(0, allProjectsIndex);
-    var secondHalfOfFile = buildGradle.substring(allProjectsIndex);
-
-    // Add google() to the allprojects section of the string
-    match = secondHalfOfFile.match(/^(\s*)jcenter\(\)/m);
-    var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
-    modifiedLine = match[0] + '\n' + huaweiMavenRepo;
-    // modify the part of the string that is after 'allprojects'
-    secondHalfOfFile = secondHalfOfFile.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-
-    // recombine the modified line
-    buildGradle = firstHalfOfFile + secondHalfOfFile;
-  } else {
-    // this should not happen, but if it does, we should try to add the dependency to the buildscript
-    match = buildGradle.match(/^(\s*)jcenter\(\)/m);
-    var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
-    modifiedLine = match[0] + '\n' + huaweiMavenRepo;
-    // modify the part of the string that is after 'allprojects'
-    buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-  }
-
-  return buildGradle;
-}
-
-/*
- * Helper function to write to the build.gradle that sits at the root of the project
- */
-function writeRootBuildGradle(contents) {
-  var target = path.join("platforms", "android", "build.gradle");
-  fs.writeFileSync(target, contents);
-}
-
-module.exports = {
-
-  modifyRootBuildGradle: function() {
-    // be defensive and don't crash if the file doesn't exist
-    if (!rootBuildGradleExists) {
-      return;
-    }
-
-    var buildGradle = readRootBuildGradle();
-
-    // Add Google Play Services Dependency
-    buildGradle = addDependencies(buildGradle);
-  
-    // Add Google's Maven Repo
-    buildGradle = addRepos(buildGradle);
-
-    writeRootBuildGradle(buildGradle);
-  },
-
-  restoreRootBuildGradle: function() {
-    // be defensive and don't crash if the file doesn't exist
-    if (!rootBuildGradleExists) {
-      return;
-    }
-
-    var buildGradle = readRootBuildGradle();
-
-    // remove any lines we added
-    buildGradle = buildGradle.replace(/(?:^|\r?\n)(.*)com.huawei.cordovahmspushplugin*?(?=$|\r?\n)/g, '');
-  
-    writeRootBuildGradle(buildGradle);
-  }
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/lib/utilities.js b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/lib/utilities.js
deleted file mode 100644
index 015f6831..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/scripts/lib/utilities.js
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Utilities and shared functionality for the build hooks.
- */
-var fs = require('fs');
-var path = require("path");
-
-fs.ensureDirSync = function (dir) {
-  if (!fs.existsSync(dir)) {
-    dir.split(path.sep).reduce(function (currentPath, folder) {
-      currentPath += folder + path.sep;
-      if (!fs.existsSync(currentPath)) {
-        fs.mkdirSync(currentPath);
-      }
-      return currentPath;
-    }, '');
-  }
-};
-
-module.exports = {
-  /**
-     * Used to get the name of the application as defined in the config.xml.
-     *
-     * @param {object} context - The Cordova context.
-     * @returns {string} The value of the name element in config.xml.
-     */
-  getAppName: function (context) {
-    var ConfigParser = context.requireCordovaModule("cordova-lib").configparser;
-    var config = new ConfigParser("config.xml");
-    return config.name();
-  },
-
-  /**
-     * The ID of the plugin; this should match the ID in plugin.xml.
-     */
-  getPluginId: function () {
-    return "com.huawei.cordovahmspushplugin";
-  },
-
-  copyKey: function (platform) {
-    for (var i = 0; i < platform.src.length; i++) {
-      var file = platform.src[i];
-      if (this.fileExists(file)) {
-        try {
-          var contents = fs.readFileSync(file).toString();
-
-          try {
-            platform.dest.forEach(function (destinationPath) {
-              var folder = destinationPath.substring(0, destinationPath.lastIndexOf('/'));
-              fs.ensureDirSync(folder);
-              fs.writeFileSync(destinationPath, contents);
-            });
-          } catch (e) {
-            // skip
-          }
-        } catch (err) {
-          console.log(err);
-        }
-
-        break;
-      }
-    }
-  },
-
-  getValue: function (config, name) {
-    var value = config.match(new RegExp('<' + name + '(.*?)>(.*?)</' + name + '>', 'i'));
-    if (value && value[2]) {
-      return value[2]
-    } else {
-      return null
-    }
-  },
-
-  fileExists: function (path) {
-    try {
-      return fs.statSync(path).isFile();
-    } catch (e) {
-      return false;
-    }
-  },
-
-  directoryExists: function (path) {
-    try {
-      return fs.statSync(path).isDirectory();
-    } catch (e) {
-      return false;
-    }
-  }
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/src/android/CordovaHMSLocationPlugin.java b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/src/android/CordovaHMSLocationPlugin.java
deleted file mode 100644
index 4b094ad5..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/src/android/CordovaHMSLocationPlugin.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package com.huawei.cordovahmslocationplugin;
-
-import android.Manifest;
-import android.content.IntentSender;
-import android.location.Location;
-import android.os.Build;
-import android.os.Looper;
-import android.util.Log;
-
-import com.huawei.hms.common.ApiException;
-import com.huawei.hms.common.ResolvableApiException;
-import com.huawei.hms.location.FusedLocationProviderClient;
-import com.huawei.hms.location.LocationCallback;
-import com.huawei.hms.location.LocationRequest;
-import com.huawei.hms.location.LocationResult;
-import com.huawei.hms.location.LocationServices;
-import com.huawei.hms.location.LocationSettingsRequest;
-import com.huawei.hms.location.LocationSettingsStatusCodes;
-import com.huawei.hms.location.SettingsClient;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-/**
- *
- */
- // https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-References-V1/data-types-0000001056511617-V1#section2512153819346
-public class CordovaHMSLocationPlugin extends CordovaPlugin {
-
-    private static final String TAG = CordovaHMSLocationPlugin.class.getSimpleName();
-
-    private FusedLocationProviderClient fusedLocationProviderClient;
-    private LocationRequest mLocationRequest;
-    private LocationCallback mLocationCallback;
-    private CallbackContext mCallbackContext;
-
-    @Override
-    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
-        requestPermission();
-        if (fusedLocationProviderClient == null) {
-            fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(cordova.getContext());
-        }
-        switch (action) {
-            case "requestLocation":
-                this.setLocationRequest();
-                this.setLocationCallback();
-                this.checkLocationSetting(callbackContext);
-                return true;
-            case "removeLocation":
-                this.stopLocation();
-                return true;
-            case "getLastlocation":
-                this.getLastlocation(callbackContext);
-                return true;
-            default:
-                return false;
-        }
-    }
-
-    private void returnLocation(Location location) {
-        if (mCallbackContext != null) {
-            Log.d(TAG, "returnLocation");
-            String message = location.getLatitude() + "," + location.getLongitude() + "," + location.isFromMockProvider();
-            PluginResult result = new PluginResult(PluginResult.Status.OK, message);
-            result.setKeepCallback(true);
-            mCallbackContext.sendPluginResult(result);
-        }
-    }
-
-    private void getLastlocation(CallbackContext callbackContext) {
-        fusedLocationProviderClient.getLastLocation().addOnSuccessListener(location -> {
-            Log.d(TAG, "getLastlocation success");
-            if (location == null) {
-                return;
-            }
-            // Location对象的处理逻辑
-            String message = location.getLatitude() + "," + location.getLongitude();
-            callbackContext.success(message);
-        }).addOnFailureListener(e -> {
-            // 异常处理逻辑
-            callbackContext.error("getLastlocation fail");
-        });
-    }
-
-    private void stopLocation() {
-        if (fusedLocationProviderClient == null) {
-            Log.d(TAG, "fusedLocationProviderClient is null");
-            return;
-        }
-        // 注意：停止位置更新时，mLocationCallback必须与requestLocationUpdates方法中的LocationCallback参数为同一对象。
-        fusedLocationProviderClient.removeLocationUpdates(mLocationCallback)
-            .addOnSuccessListener(aVoid -> {
-                // 停止位置更新成功
-                Log.d(TAG, "stop success");
-                mCallbackContext = null;
-            })
-            .addOnFailureListener(e -> {
-                // 停止位置更新失败
-                Log.d(TAG, "stop fail");
-            });
-    }
-
-    private void setLocationCallback() {
-        mLocationCallback = new LocationCallback() {
-            @Override
-            public void onLocationResult(LocationResult locationResult) {
-                if (locationResult != null) {
-                    //处理位置回调结果
-                    if (mLocationCallback != null) {
-                        Log.d(TAG, "onLocationResult");
-                        Location location = locationResult.getLocations().get(0);
-                        returnLocation(location);
-                    }
-                }
-            }
-        };
-    }
-
-    private void setLocationRequest() {
-        mLocationRequest = new LocationRequest();
-        // 设置位置更新的间隔(毫秒为单位)
-        mLocationRequest.setInterval(10000);
-//        mLocationRequest.setNumUpdates(1);
-        // 设置权重
-        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
-    }
-
-    private void checkLocationSetting(CallbackContext callbackContext) {
-        SettingsClient settingsClient = LocationServices.getSettingsClient(cordova.getContext());
-        LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
-        builder.addLocationRequest(mLocationRequest);
-        LocationSettingsRequest locationSettingsRequest = builder.build();
-        // 检查设备定位设置
-        settingsClient.checkLocationSettings(locationSettingsRequest)
-            .addOnSuccessListener(locationSettingsResponse -> {
-                
-                // 设置满足定位条件，再发起位置请求
-                fusedLocationProviderClient
-                    .requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.getMainLooper())
-                    .addOnSuccessListener(aVoid -> {
-                        // 接口调用成功的处理
-                        Log.d(TAG, "request success");
-                        mCallbackContext = callbackContext;
-                    });
-            })
-            .addOnFailureListener(e -> {
-                // 设置不满足定位条件
-                int statusCode = ((ApiException) e).getStatusCode();
-                switch (statusCode) {
-                    case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
-                        try {
-                            ResolvableApiException rae = (ResolvableApiException) e;
-                            // 调用startResolutionForResult可以弹窗提示用户打开相应权限
-                            rae.startResolutionForResult(cordova.getActivity(), 0);
-                        } catch (IntentSender.SendIntentException sie) {
-                            Log.d(TAG, sie.getMessage());
-                        }
-                        break;
-                }
-            });
-    }
-
-    private void requestPermission() {
-        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
-            Log.i(TAG, "sdk < 29 Q");
-            if (!cordova.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)
-                || !cordova.hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)) {
-                String[] strings =
-                    {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
-                cordova.requestPermissions(this, 1, strings);
-            }
-        } else {
-            if (!cordova.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)
-                || !cordova.hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
-                || !cordova.hasPermission("android.permission.ACCESS_BACKGROUND_LOCATION")) {
-                String[] strings = {android.Manifest.permission.ACCESS_FINE_LOCATION,
-                    android.Manifest.permission.ACCESS_COARSE_LOCATION,
-                    "android.permission.ACCESS_BACKGROUND_LOCATION"};
-                cordova.requestPermissions(this, 2, strings);
-            }
-        }
-    }
-}
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/src/android/build.gradle b/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/src/android/build.gradle
deleted file mode 100644
index 23296fb7..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSLocationPlugin/src/android/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
-    repositories {
-        google()
-        jcenter()
-        // huawei maven
-        maven { url 'http://developer.huawei.com/repo/' }
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:3.2.0'
-        classpath 'com.huawei.agconnect:agcp:1.2.0.300'
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        jcenter()
-        // huawei maven
-        maven { url 'http://developer.huawei.com/repo/' }
-    }
-}
-
-cdvPluginPostBuildExtras.add({
-    apply plugin: 'com.huawei.agconnect'
-})
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/package.json b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/package.json
deleted file mode 100644
index 9be71e48..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-  "name": "cordovahmspushplugin",
-  "version": "1.0.0",
-  "description": "For Hms Push",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "test",
-  "license": "ISC",
-  "cordova": {
-    "id": "com.huawei.cordovahmspushplugin",
-    "platforms": [
-      "android"
-    ]
-  },
-  "keywords": [
-    "ecosystem:cordova",
-    "cordova-android"
-  ]
-}
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/plugin.xml b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/plugin.xml
deleted file mode 100644
index d7ccbfa7..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/plugin.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?><!-- Plugin Id and Version-->
-<plugin xmlns:android="http://schemas.android.com/apk/res/android"
-    id="com.huawei.cordovahmspushplugin" version="1.0.0"
-    xmlns="http://apache.org/cordova/ns/plugins/1.0">
-    <js-module name="CordovaHMSPushPlugin" src="www/CordovaHMSPushPlugin.js">
-        <clobbers target="cordova.plugins.CordovaHMSPushPlugin" />
-    </js-module>
-    <!-- Plugin Name -->
-    <name>CordovaHMSPushPlugin</name>
-    <platform name="android">
-        <!-- hook for add maven repositories and agc plugin-->
-        <hook src="scripts/android/after_plugin_install.js" type="after_plugin_install" />
-        <hook src="scripts/android/before_plugin_uninstall.js" type="before_plugin_uninstall" />
-
-        <framework custom="true" src="src/android/build.gradle" type="gradleReference" />
-        <!-- Push Kit dependency-->
-        <framework src="com.huawei.hms:push:4.0.0.300" />
-        <config-file parent="/*" target="res/xml/config.xml">
-            <feature name="CordovaHMSPushPlugin">
-                <param name="android-package"
-                    value="com.huawei.cordovahmspushplugin.CordovaHMSPushPlugin" />
-            </feature>
-        </config-file>
-        <config-file parent="/manifest/application" target="AndroidManifest.xml">
-			<service android:exported="false" android:name="com.huawei.cordovahmspushplugin.MessageService">
-				<intent-filter>
-					<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
-				</intent-filter>
-			</service>
-		</config-file>
-        <source-file src="src/android/CordovaHMSPushPlugin.java"
-            target-dir="src/com/huawei/cordovahmspushplugin" />
-		<source-file src="src/android/MessageService.java"
-			target-dir="src/com/huawei/cordovahmspushplugin" />
-    </platform>
-    <!-- Script help to copy agconnect-services.json to right places-->
-    <hook src="scripts/after_prepare.js" type="after_prepare" />
-</plugin>
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/after_prepare.js b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/after_prepare.js
deleted file mode 100644
index ab6c7b7e..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/after_prepare.js
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-/**
- * This hook makes sure projects using [cordova-plugin-firebase](https://github.com/arnesson/cordova-plugin-firebase)
- * will build properly and have the required key files copied to the proper destinations when the app is build on Ionic Cloud using the package command.
- * Credits: https://github.com/arnesson.
- */
-var fs = require('fs');
-var path = require('path');
-var utilities = require("./lib/utilities");
-
-var config = fs.readFileSync('config.xml').toString();
-var name = utilities.getValue(config, 'name');
-
-var ANDROID_DIR = 'platforms/android';
-
-var PLATFORM = {
-  ANDROID: {
-    dest: [
-      ANDROID_DIR + '/app/agconnect-services.json'
-    ],
-    src: [
-      'agconnect-services.json'
-    ],
-  }
-};
-
-module.exports = function (context) {
-  //get platform from the context supplied by cordova
-  var platforms = context.opts.platforms;
-  // Copy key files to their platform specific folders
-  if (platforms.indexOf('android') !== -1 && utilities.directoryExists(ANDROID_DIR)) {
-    console.log('Preparing HMS Push Kit on Android');
-    utilities.copyKey(PLATFORM.ANDROID);
-  }
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/after_plugin_install.js b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/after_plugin_install.js
deleted file mode 100644
index 09e73419..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/after_plugin_install.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var helper = require('./helper');
-
-module.exports = function(context) {
-
-    // Modify the Gradle build file to add a task that will upload the debug symbols
-    // at build time.
-    helper.restoreRootBuildGradle();
-    helper.modifyRootBuildGradle();
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/before_plugin_uninstall.js b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/before_plugin_uninstall.js
deleted file mode 100644
index 9c32e552..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/before_plugin_uninstall.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var helper = require('./helper');
-
-module.exports = function(context) {
-
-    // Remove the Gradle modifications that were added when the plugin was installed.
-    helper.restoreRootBuildGradle();
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/helper.js b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/helper.js
deleted file mode 100644
index da715c24..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/android/helper.js
+++ /dev/null
@@ -1,117 +0,0 @@
-var fs = require("fs");
-var path = require("path");
-
-function rootBuildGradleExists() {
-  var target = path.join("platforms", "android", "build.gradle");
-  return fs.existsSync(target);
-}
-
-/*
- * Helper function to read the build.gradle that sits at the root of the project
- */
-function readRootBuildGradle() {
-  var target = path.join("platforms", "android", "build.gradle");
-  return fs.readFileSync(target, "utf-8");
-}
-
-/*
- * Added a dependency on 'com.google.gms' based on the position of the know 'com.android.tools.build' dependency in the build.gradle
- */
-function addDependencies(buildGradle) {
-  // find the known line to match
-  var match = buildGradle.match(/^(\s*)classpath 'com.android.tools.build(.*)/m);
-  var whitespace = match[1];
-  
-  // modify the line to add the necessary dependencies
-  var agcDependency = whitespace + 'classpath \'com.huawei.agconnect:agcp:1.2.0.300\'' 
-
-  var modifiedLine = match[0] + '\n' + agcDependency;
-  
-  // modify the actual line
-  return buildGradle.replace(/^(\s*)classpath 'com.android.tools.build(.*)/m, modifiedLine);
-}
-
-/*
- * Add 'google()' and Crashlytics to the repository repo list
- */
-function addRepos(buildGradle) {
-  // find the known line to match
-  var match = buildGradle.match(/^(\s*)jcenter\(\)/m);
-  var whitespace = match[1];
-
-  // modify the line to add the necessary repo
-  var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
-  var modifiedLine = match[0] + '\n' + huaweiMavenRepo;
-
-  // modify the actual line
-  buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-
-  // update the all projects grouping
-  var allProjectsIndex = buildGradle.indexOf('allprojects');
-  if (allProjectsIndex > 0) {
-    // split the string on allprojects because jcenter is in both groups and we need to modify the 2nd instance
-    var firstHalfOfFile = buildGradle.substring(0, allProjectsIndex);
-    var secondHalfOfFile = buildGradle.substring(allProjectsIndex);
-
-    // Add google() to the allprojects section of the string
-    match = secondHalfOfFile.match(/^(\s*)jcenter\(\)/m);
-    var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
-    modifiedLine = match[0] + '\n' + huaweiMavenRepo;
-    // modify the part of the string that is after 'allprojects'
-    secondHalfOfFile = secondHalfOfFile.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-
-    // recombine the modified line
-    buildGradle = firstHalfOfFile + secondHalfOfFile;
-  } else {
-    // this should not happen, but if it does, we should try to add the dependency to the buildscript
-    match = buildGradle.match(/^(\s*)jcenter\(\)/m);
-    var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
-    modifiedLine = match[0] + '\n' + huaweiMavenRepo;
-    // modify the part of the string that is after 'allprojects'
-    buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
-  }
-
-  return buildGradle;
-}
-
-/*
- * Helper function to write to the build.gradle that sits at the root of the project
- */
-function writeRootBuildGradle(contents) {
-  var target = path.join("platforms", "android", "build.gradle");
-  fs.writeFileSync(target, contents);
-}
-
-module.exports = {
-
-  modifyRootBuildGradle: function() {
-    // be defensive and don't crash if the file doesn't exist
-    if (!rootBuildGradleExists) {
-      return;
-    }
-
-    var buildGradle = readRootBuildGradle();
-
-    // Add Google Play Services Dependency
-    buildGradle = addDependencies(buildGradle);
-  
-    // Add Google's Maven Repo
-    buildGradle = addRepos(buildGradle);
-
-    writeRootBuildGradle(buildGradle);
-  },
-
-  restoreRootBuildGradle: function() {
-    // be defensive and don't crash if the file doesn't exist
-    if (!rootBuildGradleExists) {
-      return;
-    }
-
-    var buildGradle = readRootBuildGradle();
-
-    // remove any lines we added
-    buildGradle = buildGradle.replace(/(?:^|\r?\n)(.*)com.huawei.cordovahmspushplugin*?(?=$|\r?\n)/g, '');
-  
-    writeRootBuildGradle(buildGradle);
-  }
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/lib/utilities.js b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/lib/utilities.js
deleted file mode 100644
index 015f6831..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/scripts/lib/utilities.js
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Utilities and shared functionality for the build hooks.
- */
-var fs = require('fs');
-var path = require("path");
-
-fs.ensureDirSync = function (dir) {
-  if (!fs.existsSync(dir)) {
-    dir.split(path.sep).reduce(function (currentPath, folder) {
-      currentPath += folder + path.sep;
-      if (!fs.existsSync(currentPath)) {
-        fs.mkdirSync(currentPath);
-      }
-      return currentPath;
-    }, '');
-  }
-};
-
-module.exports = {
-  /**
-     * Used to get the name of the application as defined in the config.xml.
-     *
-     * @param {object} context - The Cordova context.
-     * @returns {string} The value of the name element in config.xml.
-     */
-  getAppName: function (context) {
-    var ConfigParser = context.requireCordovaModule("cordova-lib").configparser;
-    var config = new ConfigParser("config.xml");
-    return config.name();
-  },
-
-  /**
-     * The ID of the plugin; this should match the ID in plugin.xml.
-     */
-  getPluginId: function () {
-    return "com.huawei.cordovahmspushplugin";
-  },
-
-  copyKey: function (platform) {
-    for (var i = 0; i < platform.src.length; i++) {
-      var file = platform.src[i];
-      if (this.fileExists(file)) {
-        try {
-          var contents = fs.readFileSync(file).toString();
-
-          try {
-            platform.dest.forEach(function (destinationPath) {
-              var folder = destinationPath.substring(0, destinationPath.lastIndexOf('/'));
-              fs.ensureDirSync(folder);
-              fs.writeFileSync(destinationPath, contents);
-            });
-          } catch (e) {
-            // skip
-          }
-        } catch (err) {
-          console.log(err);
-        }
-
-        break;
-      }
-    }
-  },
-
-  getValue: function (config, name) {
-    var value = config.match(new RegExp('<' + name + '(.*?)>(.*?)</' + name + '>', 'i'));
-    if (value && value[2]) {
-      return value[2]
-    } else {
-      return null
-    }
-  },
-
-  fileExists: function (path) {
-    try {
-      return fs.statSync(path).isFile();
-    } catch (e) {
-      return false;
-    }
-  },
-
-  directoryExists: function (path) {
-    try {
-      return fs.statSync(path).isDirectory();
-    } catch (e) {
-      return false;
-    }
-  }
-};
\ No newline at end of file
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/CordovaHMSPushPlugin.java b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/CordovaHMSPushPlugin.java
deleted file mode 100644
index d2ef10b4..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/CordovaHMSPushPlugin.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.huawei.cordovahmspushplugin;
-
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.huawei.agconnect.config.AGConnectServicesConfig;
-import com.huawei.hms.aaid.HmsInstanceId;
-import com.huawei.hms.push.HmsMessaging;
-import com.huawei.hmf.tasks.OnCompleteListener;
-import com.huawei.hmf.tasks.Task;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-/**
- * This class echoes a string called from JavaScript.
- */
-public class CordovaHMSPushPlugin extends CordovaPlugin {
-
-	private static final String TAG = CordovaHMSPushPlugin.class.getSimpleName();
-
-	private static CallbackContext mCallbackContext;
-    private static CallbackContext mTokenCallback;
-
-    @Override
-    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
-        switch (action) {
-            case "getToken":
-                this.getToken(callbackContext);
-                return true;
-            case "getMessageCallback":
-                Log.d(TAG, "getMessageCallback");
-                mCallbackContext = callbackContext;
-                return true;
-            case "subscribeTopic":
-				Log.d(TAG, "subscribeTopic");
-                try {
-                    String topic = args.getString(0); 
-                    this.subscribeTopic(topic, callbackContext);
-                } catch (JSONException e) {
-                    return true;
-                }
-				return true;
-            default:
-                return false;
-        }
-    }
-
-    public static void returnMessage(String message) {
-        if (mCallbackContext != null) {
-            Log.d(TAG, "returnMessage");
-            PluginResult result = new PluginResult(PluginResult.Status.OK, message);
-            result.setKeepCallback(true);
-            mCallbackContext.sendPluginResult(result);
-        }
-    }
-
-    public static void returnToken(String token) {
-        if (mTokenCallback != null) {
-            mTokenCallback.success(token);
-            mTokenCallback = null;
-        }
-    }
-
-    /**
-     * get push token
-     */
-    private void getToken(CallbackContext callbackContext) {
-        Log.i(TAG, "get token: begin");
-
-        try {
-            String appId = AGConnectServicesConfig.fromContext(cordova.getContext()).getString("client/app_id");
-            String pushToken = HmsInstanceId.getInstance(cordova.getContext()).getToken(appId, "HCM");
-            if (!TextUtils.isEmpty(pushToken)) {
-                Log.i(TAG, "get token:" + pushToken);
-                callbackContext.success(pushToken);
-            }else {
-                mTokenCallback = callbackContext;
-            }
-		} catch (Exception e) {
-			Log.e(TAG, "getToken Failed, " + e);
-			callbackContext.error("getToken Failed, error : " + e.getMessage());
-		}
-	}
-
-   public void subscribeTopic(String topic, final CallbackContext callBack) {
-		// callBack.success("user subscribe to topic named as: "+ topic);
-        if (topic == null || topic.toString().equals("")) {
-			callBack.error("topic is empty!");
-            return;
-        }
-        try {
-            HmsMessaging.getInstance(cordova.getContext()).subscribe(topic).
-                    addOnCompleteListener(new OnCompleteListener<Void>() {
-                        @Override
-                        public void onComplete(Task<Void> task) {
-                            if (task.isSuccessful()) {
-                                callBack.success("user subscribe to topic: "+ topic);
-                            } else {
-                                callBack.error("getToken Failed, error : " + task.getException().getMessage());
-                            }
-                        }
-                    });
-        } catch (Exception e) {
-            callBack.error("getToken Failed, error : " + e.getMessage());
-        }
-    }
-
-}
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/MessageService.java b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/MessageService.java
deleted file mode 100644
index d32542ef..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/MessageService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.huawei.cordovahmspushplugin;
-
-import com.huawei.cordovahmspushplugin.CordovaHMSPushPlugin;
-import com.huawei.hms.push.HmsMessageService;
-import com.huawei.hms.push.RemoteMessage;
-
-import android.util.Log;
-
-public class MessageService extends HmsMessageService {
-
-    private static final String TAG = MessageService.class.getSimpleName();
-
-    @Override
-    public void onMessageReceived(RemoteMessage remoteMessage) {
-        super.onMessageReceived(remoteMessage);
-        Log.d(TAG, "onMessageReceived");
-        if (remoteMessage != null) {
-            String message = remoteMessage.getData();
-            Log.d(TAG, message);
-            CordovaHMSPushPlugin.returnMessage(message);
-        }
-    }
-
-    @Override
-    public void onNewToken(String s) {
-        super.onNewToken(s);
-        if (s != null) {
-            Log.d(TAG, "token:" + s);
-            CordovaHMSPushPlugin.returnToken(s);
-        }
-    }
-}
diff --git a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/build.gradle b/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/build.gradle
deleted file mode 100644
index 23296fb7..00000000
--- a/Mohem/CordovaHMSPlugin/CordovaHMSPushPlugin/src/android/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
-    repositories {
-        google()
-        jcenter()
-        // huawei maven
-        maven { url 'http://developer.huawei.com/repo/' }
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:3.2.0'
-        classpath 'com.huawei.agconnect:agcp:1.2.0.300'
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        jcenter()
-        // huawei maven
-        maven { url 'http://developer.huawei.com/repo/' }
-    }
-}
-
-cdvPluginPostBuildExtras.add({
-    apply plugin: 'com.huawei.agconnect'
-})
diff --git a/Mohem/package.json b/Mohem/package.json
index aab0bf8d..b1132541 100644
--- a/Mohem/package.json
+++ b/Mohem/package.json
@@ -144,8 +144,6 @@
     "@types/jasminewd2": "~2.0.3",
     "@types/node": "~10.12.0",
     "codelyzer": "~4.5.0",
-    "com.huawei.cordovahmsgmscheckplugin": "file:CordovaHMSPlugin/CordovaHMSGMSCheckPlugin",
-    "com.huawei.cordovahmslocationplugin": "file:CordovaHMSPlugin/CordovaHMSLocationPlugin",
     "cordova-ios": "^6.2.0",
     "cordova-plugin-wifiwizard2": "^3.1.1",
     "es6-promise-plugin": "^4.1.0",
@@ -211,8 +209,6 @@
       },
       "phonegap-nfc": {},
       "wifiwizard2": {},
-      "com.huawei.cordovahmsgmscheckplugin": {},
-      "com.huawei.cordovahmslocationplugin": {},
       "cordova-plugin-x-socialsharing": {},
       "cordova-plugin-firebasex": {
         "FIREBASE_ANALYTICS_COLLECTION_ENABLED": "true",
diff --git a/WifiWizard2.java b/WifiWizard2.java
deleted file mode 100644
index 03647d0a..00000000
--- a/WifiWizard2.java
+++ /dev/null
@@ -1,1891 +0,0 @@
-// /*
-//  * Copyright 2018 Myles McNamara
-//  *
-//  * Licensed under the Apache License, Version 2.0 (the "License");
-//  * you may not use this file except in compliance with the License.
-//  * You may obtain a copy of the License at
-//  *
-//  *      http://www.apache.org/licenses/LICENSE-2.0
-//  *  Unless required by applicable law or agreed to in writing, software
-//  *  distributed under the License is distributed on an "AS IS" BASIS,
-//  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  *  See the License for the specific language governing permissions and
-//  *  limitations under the License.
-//  */
-// package wifiwizard2;
-
-// import org.apache.cordova.*;
-
-// import java.util.List;
-// import java.lang.InterruptedException;
-
-// import org.json.JSONArray;
-// import org.json.JSONException;
-// import org.json.JSONObject;
-
-// import android.annotation.SuppressLint;
-// import android.app.PendingIntent;
-// import android.content.pm.PackageManager;
-// import android.content.BroadcastReceiver;
-// import android.content.Intent;
-// import android.content.IntentFilter;
-
-// import android.net.Network;
-// import android.net.NetworkCapabilities;
-// import android.net.NetworkInfo;
-// import android.net.NetworkRequest;
-// import android.net.DhcpInfo;
-
-// import android.net.wifi.WifiManager;
-// import android.net.wifi.WifiConfiguration;
-// import android.net.wifi.ScanResult;
-// import android.net.wifi.WifiInfo;
-// import android.net.wifi.SupplicantState;
-// import android.net.wifi.WifiNetworkSpecifier;
-// import android.net.ConnectivityManager;
-
-// import android.content.Context;
-// import android.os.AsyncTask;
-// import android.util.Log;
-// import android.os.Build.VERSION;
-// import android.os.PatternMatcher;
-
-// import java.net.URL;
-// import java.net.InetAddress;
-// import java.net.Inet4Address;
-// import java.net.InterfaceAddress;
-// import java.net.NetworkInterface;
-// import java.net.HttpURLConnection;
-
-// import java.net.UnknownHostException;
-
-// public class WifiWizard2 extends CordovaPlugin {
-//   private boolean hiddenSSID = false;
-
-//   private static final String TAG = "WifiWizard2";
-//   private static final int API_VERSION = VERSION.SDK_INT;
-
-//   private static final String ADD_NETWORK = "add";
-//   private static final String REMOVE_NETWORK = "remove";
-//   private static final String CONNECT_NETWORK = "connect";
-//   private static final String DISCONNECT_NETWORK = "disconnectNetwork";
-//   private static final String DISCONNECT = "disconnect";
-//   private static final String LIST_NETWORKS = "listNetworks";
-//   private static final String START_SCAN = "startScan";
-//   private static final String GET_SCAN_RESULTS = "getScanResults";
-//   private static final String GET_CONNECTED_SSID = "getConnectedSSID";
-//   private static final String GET_CONNECTED_BSSID = "getConnectedBSSID";
-//   private static final String GET_CONNECTED_NETWORKID = "getConnectedNetworkID";
-//   private static final String IS_WIFI_ENABLED = "isWifiEnabled";
-//   private static final String SET_WIFI_ENABLED = "setWifiEnabled";
-//   private static final String SCAN = "scan";
-//   private static final String ENABLE_NETWORK = "enable";
-//   private static final String DISABLE_NETWORK = "disable";
-//   private static final String GET_SSID_NET_ID = "getSSIDNetworkID";
-//   private static final String REASSOCIATE = "reassociate";
-//   private static final String RECONNECT = "reconnect";
-//   private static final String REQUEST_FINE_LOCATION = "requestFineLocation";
-//   private static final String GET_WIFI_IP_ADDRESS = "getWifiIP";
-//   private static final String GET_WIFI_ROUTER_IP_ADDRESS = "getWifiRouterIP";
-//   private static final String CAN_PING_WIFI_ROUTER = "canPingWifiRouter";
-//   private static final String CAN_CONNECT_TO_ROUTER = "canConnectToRouter";
-//   private static final String CAN_CONNECT_TO_INTERNET = "canConnectToInternet";
-//   private static final String IS_CONNECTED_TO_INTERNET = "isConnectedToInternet";
-//   private static final String RESET_BIND_ALL = "resetBindAll";
-//   private static final String SET_BIND_ALL = "setBindAll";
-//   private static final String GET_WIFI_IP_INFO = "getWifiIPInfo";
-
-
-
-//   private static final int SCAN_RESULTS_CODE = 0; // Permissions request code for getScanResults()
-//   private static final int SCAN_CODE = 1; // Permissions request code for scan()
-//   private static final int LOCATION_REQUEST_CODE = 2; // Permissions request code
-//   private static final int WIFI_SERVICE_INFO_CODE = 3;
-//   private static final String ACCESS_FINE_LOCATION = android.Manifest.permission.ACCESS_FINE_LOCATION;
-
-//   private static int LAST_NET_ID = -1;
-//   // This is for when SSID or BSSID is requested but permissions have not been granted for location
-//   // we store whether or not BSSID was requested, to recall the getWifiServiceInfo fn after permissions are granted
-//   private static boolean bssidRequested = false;
-
-//   private WifiManager wifiManager;
-//   private CallbackContext callbackContext;
-//   private JSONArray passedData;
-
-//   private ConnectivityManager connectivityManager;
-//   private ConnectivityManager.NetworkCallback networkCallback;
-
-//   // Store AP, previous, and desired wifi info
-//   private AP previous, desired;
-
-//   private PendingIntent pending_intent_net_req_received;
-//   private final BroadcastReceiver networkChangedReceiver = new NetworkChangedReceiver();
-//   private static final IntentFilter NETWORK_STATE_CHANGED_FILTER = new IntentFilter();
-
-//   static {
-//     NETWORK_STATE_CHANGED_FILTER.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
-//   }
-
-//   /**
-//    * WEP has two kinds of password, a hex value that specifies the key or a character string used to
-//    * generate the real hex. This checks what kind of password has been supplied. The checks
-//    * correspond to WEP40, WEP104 & WEP232
-//    */
-//   private static boolean getHexKey(String s) {
-//     if (s == null) {
-//       return false;
-//     }
-
-//     int len = s.length();
-//     if (len != 10 && len != 26 && len != 58) {
-//       return false;
-//     }
-
-//     for (int i = 0; i < len; ++i) {
-//       char c = s.charAt(i);
-//       if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))) {
-//         return false;
-//       }
-//     }
-//     return true;
-//   }
-
-//   @Override
-//   public void initialize(CordovaInterface cordova, CordovaWebView webView) {
-//     super.initialize(cordova, webView);
-//     this.wifiManager = (WifiManager) cordova.getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
-//     this.connectivityManager = (ConnectivityManager) cordova.getActivity().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-//   }
-
-//   @Override
-//   public boolean execute(String action, JSONArray data, CallbackContext callbackContext)
-//           throws JSONException {
-
-//     this.callbackContext = callbackContext;
-//     this.passedData = data;
-
-//     // Actions that do not require WiFi to be enabled
-//     if (action.equals(IS_WIFI_ENABLED)) {
-//       this.isWifiEnabled(callbackContext);
-//       return true;
-//     } else if (action.equals(SET_WIFI_ENABLED)) {
-//       this.setWifiEnabled(callbackContext, data);
-//       return true;
-//     } else if (action.equals(REQUEST_FINE_LOCATION)) {
-//       this.requestLocationPermission(LOCATION_REQUEST_CODE);
-//       return true;
-//     } else if (action.equals(GET_WIFI_ROUTER_IP_ADDRESS)) {
-
-//       String ip = getWiFiRouterIP();
-
-//       if ( ip == null || ip.equals("0.0.0.0")) {
-//         callbackContext.error("NO_VALID_ROUTER_IP_FOUND");
-//         return true;
-//       } else {
-//         callbackContext.success(ip);
-//         return true;
-//       }
-
-//     } else if (action.equals(GET_WIFI_IP_ADDRESS) || action.equals(GET_WIFI_IP_INFO)) {
-//       String[] ipInfo = getWiFiIPAddress();
-//       String ip = ipInfo[0];
-//       String subnet = ipInfo[1];
-//       if (ip == null || ip.equals("0.0.0.0")) {
-//         callbackContext.error("NO_VALID_IP_IDENTIFIED");
-//         return true;
-//       }
-
-//       // Return only IP address
-//       if( action.equals( GET_WIFI_IP_ADDRESS ) ){
-//         callbackContext.success(ip);
-//         return true;
-//       }
-
-//       // Return Wifi IP Info (subnet and IP as JSON object)
-//       JSONObject result = new JSONObject();
-
-//       result.put("ip", ip);
-//       result.put("subnet", subnet);
-
-//       callbackContext.success(result);
-//       return true;
-//     }
-
-//     boolean wifiIsEnabled = verifyWifiEnabled();
-//     if (!wifiIsEnabled) {
-//       callbackContext.error("WIFI_NOT_ENABLED");
-//       return true; // Even though enable wifi failed, we still return true and handle error in callback
-//     }
-
-//     // Actions that DO require WiFi to be enabled
-//     if (action.equals(ADD_NETWORK)) {
-//       this.add(callbackContext, data);
-//     } else if (action.equals(IS_CONNECTED_TO_INTERNET)) {
-//       this.canConnectToInternet(callbackContext, true);
-//     } else if (action.equals(CAN_CONNECT_TO_INTERNET)) {
-//       this.canConnectToInternet(callbackContext, false);
-//     } else if (action.equals(CAN_PING_WIFI_ROUTER)) {
-//       this.canConnectToRouter(callbackContext, true);
-//     } else if (action.equals(CAN_CONNECT_TO_ROUTER)) {
-//       this.canConnectToRouter(callbackContext, false);
-//     } else if (action.equals(ENABLE_NETWORK)) {
-//       this.enable(callbackContext, data);
-//     } else if (action.equals(DISABLE_NETWORK)) {
-//       this.disable(callbackContext, data);
-//     } else if (action.equals(GET_SSID_NET_ID)) {
-//       this.getSSIDNetworkID(callbackContext, data);
-//     } else if (action.equals(REASSOCIATE)) {
-//       this.reassociate(callbackContext);
-//     } else if (action.equals(RECONNECT)) {
-//       this.reconnect(callbackContext);
-//     } else if (action.equals(SCAN)) {
-//       this.scan(callbackContext, data);
-//     } else if (action.equals(REMOVE_NETWORK)) {
-//       this.remove(callbackContext, data);
-//     } else if (action.equals(CONNECT_NETWORK)) {
-//       this.connect(callbackContext, data);
-//     } else if (action.equals(DISCONNECT_NETWORK)) {
-//       this.disconnectNetwork(callbackContext, data);
-//     } else if (action.equals(LIST_NETWORKS)) {
-//       this.listNetworks(callbackContext);
-//     } else if (action.equals(START_SCAN)) {
-//       this.startScan(callbackContext);
-//     } else if (action.equals(GET_SCAN_RESULTS)) {
-//       this.getScanResults(callbackContext, data);
-//     } else if (action.equals(DISCONNECT)) {
-//       this.disconnect(callbackContext);
-//     } else if (action.equals(GET_CONNECTED_SSID)) {
-//       this.getConnectedSSID(callbackContext);
-//     } else if (action.equals(GET_CONNECTED_BSSID)) {
-//       this.getConnectedBSSID(callbackContext);
-//     } else if (action.equals(GET_CONNECTED_NETWORKID)) {
-//       this.getConnectedNetworkID(callbackContext);
-//     } else if (action.equals(RESET_BIND_ALL)) {
-//       this.resetBindAll(callbackContext);
-//     } else if (action.equals(SET_BIND_ALL)) {
-//       this.setBindAll(callbackContext);
-//     } else {
-//       callbackContext.error("Incorrect action parameter: " + action);
-//       // The ONLY time to return FALSE is when action does not exist that was called
-//       // Returning false results in an INVALID_ACTION error, which translates to an error callback invoked on the JavaScript side
-//       // All other errors should be handled with the fail callback (callbackContext.error)
-//       // @see https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html
-//       return false;
-//     }
-
-//     return true;
-//   }
-
-//   /**
-//    * Scans networks and sends the list back on the success callback
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSONArray with [0] == JSONObject
-//    * @return true
-//    */
-//   private boolean scan(final CallbackContext callbackContext, final JSONArray data) {
-//     Log.v(TAG, "Entering startScan");
-//     final ScanSyncContext syncContext = new ScanSyncContext();
-
-//     final BroadcastReceiver receiver = new BroadcastReceiver() {
-//       public void onReceive(Context context, Intent intent) {
-//         Log.v(TAG, "Entering onReceive");
-
-//         synchronized (syncContext) {
-//           if (syncContext.finished) {
-//             Log.v(TAG, "In onReceive, already finished");
-//             return;
-//           }
-//           syncContext.finished = true;
-//           context.unregisterReceiver(this);
-//         }
-
-//         Log.v(TAG, "In onReceive, success");
-//         getScanResults(callbackContext, data);
-//       }
-//     };
-
-//     final Context context = cordova.getActivity().getApplicationContext();
-
-//     Log.v(TAG, "Submitting timeout to threadpool");
-
-//     cordova.getThreadPool().submit(new Runnable() {
-
-//       public void run() {
-
-//         Log.v(TAG, "Entering timeout");
-
-//         final int TEN_SECONDS = 10000;
-
-//         try {
-//           Thread.sleep(TEN_SECONDS);
-//         } catch (InterruptedException e) {
-//           Log.e(TAG, "Received InterruptedException e, " + e);
-//           // keep going into error
-//         }
-
-//         Log.v(TAG, "Thread sleep done");
-
-//         synchronized (syncContext) {
-//           if (syncContext.finished) {
-//             Log.v(TAG, "In timeout, already finished");
-//             return;
-//           }
-//           syncContext.finished = true;
-//           context.unregisterReceiver(receiver);
-//         }
-
-//         Log.v(TAG, "In timeout, error");
-//         callbackContext.error("TIMEOUT_WAITING_FOR_SCAN");
-//       }
-
-//     });
-
-//     Log.v(TAG, "Registering broadcastReceiver");
-//     context.registerReceiver(
-//             receiver,
-//             new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
-//     );
-
-//     if (!wifiManager.startScan()) {
-//       Log.v(TAG, "Scan failed");
-//       callbackContext.error("SCAN_FAILED");
-//       return false;
-//     }
-
-//     Log.v(TAG, "Starting wifi scan");
-//     return true;
-//   }
-
-//   /**
-//    * This methods adds a network to the list of available WiFi networks. If the network already
-//    * exists, then it updates it.
-//    *
-//    * @return true    if add successful, false if add fails
-//    * @params callbackContext     A Cordova callback context.
-//    * @params data                JSON Array with [0] == SSID, [1] == password
-//    */
-//   private boolean add(CallbackContext callbackContext, JSONArray data) {
-
-//     Log.d(TAG, "WifiWizard2: add entered.");
-
-
-//     try {
-//       // data's order for ANY object is
-//       // 0: SSID
-//       // 1: authentication algorithm,
-//       // 2: authentication information
-//       // 3: whether or not the SSID is hidden
-//       String newSSID = data.getString(0);
-//       String newPass = data.getString(2);
-//       String authType = data.getString(1);
-//       boolean isHiddenSSID = data.getBoolean(3);
-
-//       if(API_VERSION >= 29){
-//         // Remove Double Quotes
-//         newSSID = newSSID.replace("\"", "");
-//         newPass = newPass.replace("\"", "");
-
-//         this.networkCallback = new ConnectivityManager.NetworkCallback() {
-//           @Override
-//           public void onAvailable(Network network) {
-//             connectivityManager.bindProcessToNetwork(network);
-//             Log.d(TAG, "onAvailable");
-//             callbackContext.success("onAvailable");
-//           }
-//           @Override
-//           public void onUnavailable() {
-//             super.onUnavailable();
-//             Log.d(TAG, "onUnavailable");
-//             callbackContext.error("onUnavailable");
-//           }
-//         };
-
-//         // Connect Wifi using WifiNetworkSpecifier
-//         WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
-//         builder.setIsHiddenSsid(this.hiddenSSID);
-
-//         if (newSSID.endsWith("#")) {
-//           newSSID = newSSID.replace("#", "");
-//           builder.setSsidPattern(new PatternMatcher(newSSID, PatternMatcher.PATTERN_PREFIX));
-//         }else {
-//           builder.setSsid(newSSID);
-//         }
-//         builder.setWpa2Passphrase(newPass);
-
-//         WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();
-
-//         NetworkRequest.Builder networkRequestBuilder1 = new NetworkRequest.Builder();
-//         networkRequestBuilder1.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
-//         //removeCapability added for hotspots without internet
-//         networkRequestBuilder1.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
-//         networkRequestBuilder1.setNetworkSpecifier(wifiNetworkSpecifier);
-
-//         NetworkRequest nr = networkRequestBuilder1.build();
-//         //timeout add because "No devices found" wasn't handled correct and doesn't throw Unavailable
-//         connectivityManager.requestNetwork(nr, this.networkCallback, 30000);
-
-//       }else{
-
-//         // Initialize the WifiConfiguration object
-//         WifiConfiguration wifi = new WifiConfiguration();
-//         wifi.hiddenSSID = this.hiddenSSID;
-//         wifi.SSID = newSSID;
-//         wifi.preSharedKey = newPass;
-//         wifi.status = WifiConfiguration.Status.ENABLED;
-//         wifi.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
-//         wifi.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
-//         wifi.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
-//         wifi.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
-//         wifi.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
-//         wifi.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
-//         wifi.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
-
-//         wifi.networkId = ssidToNetworkId(newSSID);
-
-//         // Set network to highest priority (deprecated in API >= 26)
-//         if(API_VERSION < 26) {
-//           wifi.priority = getMaxWifiPriority(wifiManager) + 1;
-//         }
-
-//         // After processing authentication types, add or update network
-//         if(wifi.networkId == -1) { // -1 means SSID configuration does not exist yet
-
-//           int newNetId = wifiManager.addNetwork(wifi);
-//           if( newNetId > -1 ){
-//             callbackContext.success( newNetId );
-//           } else {
-//             callbackContext.error( "ERROR_ADDING_NETWORK" );
-//           }
-
-//         } else {
-
-//           int updatedNetID = wifiManager.updateNetwork(wifi);
-
-//           if(updatedNetID == -1)
-//             updatedNetID = wifiManager.addNetwork(wifi);
-
-//           if(updatedNetID > -1) {
-//             callbackContext.success( updatedNetID );
-//           } else {
-//             callbackContext.error("ERROR_UPDATING_NETWORK");
-//           }
-
-//         }
-
-//         // WifiManager configurations are presistent for API 26+
-//         if(API_VERSION < 26) {
-//           wifiManager.saveConfiguration(); // Call saveConfiguration for older < 26 API
-//         }
-//       }
-
-//       return true;
-
-
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * This method connects a network.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSON Array, with [0] being SSID to connect
-//    */
-//   private void enable(CallbackContext callbackContext, JSONArray data) {
-//     Log.d(TAG, "WifiWizard2: enable entered.");
-
-//     if (!validateData(data)) {
-//       callbackContext.error("ENABLE_INVALID_DATA");
-//       Log.d(TAG, "WifiWizard2: enable invalid data.");
-//       return;
-//     }
-
-//     String ssidToEnable = "";
-//     String bindAll = "false";
-//     String waitForConnection = "false";
-
-//     try {
-//       ssidToEnable = data.getString(0);
-//       bindAll = data.getString(1);
-//       waitForConnection = data.getString(2);
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return;
-//     }
-
-//     int networkIdToEnable = ssidToNetworkId(ssidToEnable);
-
-//     try {
-
-//       if(networkIdToEnable > -1) {
-
-//         Log.d(TAG, "Valid networkIdToEnable: attempting connection");
-
-//         // Bind all requests to WiFi network (only necessary for Lollipop+ - API 21+)
-//         if(bindAll.equals("true")) {
-//           registerBindALL(networkIdToEnable);
-//         }
-
-//         if(wifiManager.enableNetwork(networkIdToEnable, true)) {
-
-//           if( waitForConnection.equals("true") ){
-//             callbackContext.success("NETWORK_ENABLED");
-//             return;
-//           } else {
-//             new ConnectAsync().execute(callbackContext, networkIdToEnable);
-//             return;
-//           }
-
-//         } else {
-//           callbackContext.error("ERROR_ENABLING_NETWORK");
-//           return;
-//         }
-
-//       } else {
-//         callbackContext.error("UNABLE_TO_ENABLE");
-//         return;
-//       }
-
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return;
-//     }
-
-//   }
-
-//   /**
-//    * This method disables a network.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSON Array, with [0] being SSID to connect
-//    * @return true if network disconnected, false if failed
-//    */
-//   private boolean disable(CallbackContext callbackContext, JSONArray data) {
-//     Log.d(TAG, "WifiWizard2: disable entered.");
-
-//     if (!validateData(data)) {
-//       callbackContext.error("DISABLE_INVALID_DATA");
-//       Log.d(TAG, "WifiWizard2: disable invalid data");
-//       return false;
-//     }
-
-//     String ssidToDisable = "";
-
-//     try {
-//       ssidToDisable = data.getString(0);
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-
-//     int networkIdToDisconnect = ssidToNetworkId(ssidToDisable);
-
-//     try {
-
-//       if (networkIdToDisconnect > 0) {
-//         if(wifiManager.disableNetwork(networkIdToDisconnect)){
-//           maybeResetBindALL();
-//           callbackContext.success("Network " + ssidToDisable + " disabled!");
-//         } else {
-//           callbackContext.error("UNABLE_TO_DISABLE");
-//         }
-//         return true;
-//       } else {
-//         callbackContext.error("DISABLE_NETWORK_NOT_FOUND");
-//         Log.d(TAG, "WifiWizard2: Network not found to disable.");
-//         return false;
-//       }
-
-//     } catch (Exception e) {
-
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-
-//     }
-//   }
-
-//   /**
-//    * This method removes a network from the list of configured networks.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSON Array, with [0] being SSID to remove
-//    * @return true if network removed, false if failed
-//    */
-//   private boolean remove(CallbackContext callbackContext, JSONArray data) {
-//     Log.d(TAG, "WifiWizard2: remove entered.");
-
-//     if (!validateData(data)) {
-//       callbackContext.error("REMOVE_INVALID_DATA");
-//       Log.d(TAG, "WifiWizard2: remove data invalid");
-//       return false;
-//     }
-
-//     // TODO: Verify the type of data!
-//     try {
-//       String ssidToDisconnect = data.getString(0);
-
-//       if(API_VERSION >= 29){
-//         if (networkCallback != null) {
-//           connectivityManager.unregisterNetworkCallback(networkCallback);
-//           networkCallback = null;
-//         }
-//         connectivityManager.releaseNetworkRequest(pending_intent_net_req_received);
-// //        WifiNetworkSuggestion wifiNetworkSuggestion = new WifiNetworkSuggestion.Builder()
-// //                .setSsid(ssidToDisconnect)
-// //                .build();
-// //        List<WifiNetworkSuggestion> list = new ArrayList();
-// //        list.add(wifiNetworkSuggestion);
-// //        wifiManager.removeNetworkSuggestions(list);
-//         callbackContext.success("NETWORK_REMOVED");
-//         return true;
-//       }
-
-
-//       int networkIdToRemove = ssidToNetworkId(ssidToDisconnect);
-
-//       if (networkIdToRemove > -1) {
-
-//         if( wifiManager.removeNetwork(networkIdToRemove) ){
-
-//           // Configurations persist by default in API 26+
-//           if (API_VERSION < 26) {
-//             wifiManager.saveConfiguration();
-//           }
-
-//           callbackContext.success("NETWORK_REMOVED");
-
-//         } else {
-
-//           callbackContext.error( "UNABLE_TO_REMOVE" );
-//         }
-
-//         return true;
-//       } else {
-//         callbackContext.error("REMOVE_NETWORK_NOT_FOUND");
-//         Log.d(TAG, "WifiWizard2: Network not found, can't remove.");
-//         return false;
-//       }
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * This method connects a network.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSON Array, with [0] being SSID to connect
-//    */
-//   private void connect(CallbackContext callbackContext, JSONArray data) {
-//     Log.d(TAG, "WifiWizard2: connect entered.");
-
-//     if(API_VERSION >= 29){
-//       // No need to connect, its already connected via WifiNetworkSpecifier at add(...) method
-//       callbackContext.success("NETWORK_CONNECTION_COMPLETED");
-//       return;
-//     }
-
-//     if (!validateData(data)) {
-//       callbackContext.error("CONNECT_INVALID_DATA");
-//       Log.d(TAG, "WifiWizard2: connect invalid data.");
-//       return;
-//     }
-
-//     String ssidToConnect = "";
-//     String bindAll = "false";
-
-//     try {
-//       ssidToConnect = data.getString(0);
-//       bindAll = data.getString(1);
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return;
-//     }
-
-//     int networkIdToConnect = ssidToNetworkId(ssidToConnect);
-
-//     if (networkIdToConnect > -1) {
-//       // We disable the network before connecting, because if this was the last connection before
-//       // a disconnect(), this will not reconnect.
-
-//       Log.d(TAG, "Valid networkIdToConnect: attempting connection");
-
-//       // Bind all requests to WiFi network (only necessary for Lollipop+ - API 21+)
-//       if( bindAll.equals("true") ){
-//         registerBindALL(networkIdToConnect);
-//       }
-
-//       if (API_VERSION >= 26) {
-// //                wifiManager.disconnect();
-//       } else {
-//         wifiManager.disableNetwork(networkIdToConnect);
-//       }
-
-//       wifiManager.enableNetwork(networkIdToConnect, true);
-
-//       if (API_VERSION >= 26) {
-// //        wifiManager.reassociate();
-//       }
-
-//       new ConnectAsync().execute(callbackContext, networkIdToConnect);
-//       return;
-
-//     } else {
-//       callbackContext.error("INVALID_NETWORK_ID_TO_CONNECT");
-//       return;
-//     }
-//   }
-
-//   /**
-//    * Wait for connection before returning error or success
-//    *
-//    * This method will wait up to 60 seconds for WiFi connection to specified network ID be in COMPLETED state, otherwise will return error.
-//    *
-//    * @param callbackContext
-//    * @param networkIdToConnect
-//    * @return
-//    */
-//   private class ConnectAsync extends AsyncTask<Object, Void, String[]> {
-//     CallbackContext callbackContext;
-//     @Override
-//     protected void onPostExecute(String[] results) {
-//       String error = results[0];
-//       String success = results[1];
-//       if (error != null) {
-//         this.callbackContext.error(error);
-//       } else {
-//         this.callbackContext.success(success);
-//       }
-//     }
-
-//     @Override
-//     protected String[] doInBackground(Object... params) {
-//       this.callbackContext = (CallbackContext) params[0];
-//       int networkIdToConnect = (Integer) params[1];
-
-//       final int TIMES_TO_RETRY = 15;
-//       for (int i = 0; i < TIMES_TO_RETRY; i++) {
-
-//         WifiInfo info = wifiManager.getConnectionInfo();
-//         NetworkInfo.DetailedState connectionState = info
-//                 .getDetailedStateOf(info.getSupplicantState());
-
-//         boolean isConnected =
-//                 // need to ensure we're on correct network because sometimes this code is
-//                 // reached before the initial network has disconnected
-//                 info.getNetworkId() == networkIdToConnect && (
-//                         connectionState == NetworkInfo.DetailedState.CONNECTED ||
-//                                 // Android seems to sometimes get stuck in OBTAINING_IPADDR after it has received one
-//                                 (connectionState == NetworkInfo.DetailedState.OBTAINING_IPADDR
-//                                         && info.getIpAddress() != 0)
-//                 );
-
-//         if (isConnected) {
-//           return new String[]{ null, "NETWORK_CONNECTION_COMPLETED" };
-//         }
-
-//         Log.d(TAG, "WifiWizard: Got " + connectionState.name() + " on " + (i + 1) + " out of " + TIMES_TO_RETRY);
-//         final int ONE_SECOND = 1000;
-
-//         try {
-//           Thread.sleep(ONE_SECOND);
-//         } catch (InterruptedException e) {
-//           Log.e(TAG, e.getMessage());
-//           return new String[]{ "INTERRUPT_EXCEPT_WHILE_CONNECTING", null };
-//         }
-//       }
-//       Log.d(TAG, "WifiWizard: Network failed to finish connecting within the timeout");
-//       return new String[]{ "CONNECT_FAILED_TIMEOUT", null };
-//     }
-//   }
-
-//   /**
-//    * This method disconnects a network.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSON Array, with [0] being SSID to connect
-//    * @return true if network disconnected, false if failed
-//    */
-//   private boolean disconnectNetwork(CallbackContext callbackContext, JSONArray data) {
-//     Log.d(TAG, "WifiWizard2: disconnectNetwork entered.");
-//     if (!validateData(data)) {
-//       callbackContext.error("DISCONNECT_NET_INVALID_DATA");
-//       Log.d(TAG, "WifiWizard2: disconnectNetwork invalid data");
-//       return false;
-//     }
-
-//     String ssidToDisconnect = "";
-
-//     // TODO: Verify type of data here!
-//     try {
-//       ssidToDisconnect = data.getString(0);
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-
-//     if(API_VERSION < 29){
-//       int networkIdToDisconnect = ssidToNetworkId(ssidToDisconnect);
-
-//       if(networkIdToDisconnect > 0) {
-
-//         if(wifiManager.disableNetwork(networkIdToDisconnect)) {
-
-//           maybeResetBindALL();
-
-//           // We also remove the configuration from the device (use "disable" to keep config)
-//           if( wifiManager.removeNetwork(networkIdToDisconnect) ){
-//             callbackContext.success("Network " + ssidToDisconnect + " disconnected and removed!");
-//           } else {
-//             callbackContext.error("DISCONNECT_NET_REMOVE_ERROR");
-//             Log.d(TAG, "WifiWizard2: Unable to remove network!");
-//             return false;
-//           }
-
-//         } else {
-//           callbackContext.error("DISCONNECT_NET_DISABLE_ERROR");
-//           Log.d(TAG, "WifiWizard2: Unable to disable network!");
-//           return false;
-//         }
-
-//         return true;
-//       } else {
-//         callbackContext.error("DISCONNECT_NET_ID_NOT_FOUND");
-//         Log.d(TAG, "WifiWizard2: Network not found to disconnect.");
-//         return false;
-//       }
-//     } else {
-//       try{
-//         ConnectivityManager cm = (ConnectivityManager) cordova.getActivity().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-//         cm.unregisterNetworkCallback(this.networkCallback);
-//         connectivityManager.bindProcessToNetwork(null);
-//         return true;
-//       }
-//       catch(Exception e) {
-//         callbackContext.error(e.getMessage());
-//         return false;
-//       }
-//     }
-//   }
-
-//   /**
-//    * This method disconnects the currently connected network.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @return true if network disconnected, false if failed
-//    */
-//   private boolean disconnect(CallbackContext callbackContext) {
-//     Log.d(TAG, "WifiWizard2: disconnect entered.");
-
-//     if (wifiManager.disconnect()) {
-//       maybeResetBindALL();
-//       callbackContext.success("Disconnected from current network");
-//       return true;
-//     } else {
-//       callbackContext.error("ERROR_DISCONNECT");
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * Reconnect Network
-//    * <p>
-//    * Reconnect to the currently active access point, if we are currently disconnected. This may
-//    * result in the asynchronous delivery of state change events.
-//    */
-//   private boolean reconnect(CallbackContext callbackContext) {
-//     Log.d(TAG, "WifiWizard2: reconnect entered.");
-
-//     if (wifiManager.reconnect()) {
-//       callbackContext.success("Reconnected network");
-//       return true;
-//     } else {
-//       callbackContext.error("ERROR_RECONNECT");
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * Reassociate Network
-//    * <p>
-//    * Reconnect to the currently active access point, even if we are already connected. This may
-//    * result in the asynchronous delivery of state change events.
-//    */
-//   private boolean reassociate(CallbackContext callbackContext) {
-//     Log.d(TAG, "WifiWizard2: reassociate entered.");
-
-//     if (wifiManager.reassociate()) {
-//       callbackContext.success("Reassociated network");
-//       return true;
-//     } else {
-//       callbackContext.error("ERROR_REASSOCIATE");
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * This method uses the callbackContext.success method to send a JSONArray of the currently
-//    * configured networks.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @return true if network disconnected, false if failed
-//    */
-//   private boolean listNetworks(CallbackContext callbackContext) {
-//     Log.d(TAG, "WifiWizard2: listNetworks entered.");
-//     @SuppressLint("MissingPermission") List<WifiConfiguration> wifiList = wifiManager.getConfiguredNetworks();
-
-//     JSONArray returnList = new JSONArray();
-
-//     for (WifiConfiguration wifi : wifiList) {
-//       returnList.put(wifi.SSID);
-//     }
-
-//     callbackContext.success(returnList);
-
-//     return true;
-//   }
-
-//   /**
-//    * This method uses the callbackContext.success method to send a JSONArray of the scanned
-//    * networks.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSONArray with [0] == JSONObject
-//    * @return true
-//    */
-//   private boolean getScanResults(CallbackContext callbackContext, JSONArray data) {
-
-//     if (cordova.hasPermission(ACCESS_FINE_LOCATION)) {
-
-//       List<ScanResult> scanResults = wifiManager.getScanResults();
-
-//       JSONArray returnList = new JSONArray();
-
-//       Integer numLevels = null;
-
-//       if (!validateData(data)) {
-//         callbackContext.error("GET_SCAN_RESULTS_INVALID_DATA");
-//         Log.d(TAG, "WifiWizard2: getScanResults invalid data");
-//         return false;
-//       } else if (!data.isNull(0)) {
-//         try {
-//           JSONObject options = data.getJSONObject(0);
-
-//           if (options.has("numLevels")) {
-//             Integer levels = options.optInt("numLevels");
-
-//             if (levels > 0) {
-//               numLevels = levels;
-//             } else if (options.optBoolean("numLevels", false)) {
-//               // use previous default for {numLevels: true}
-//               numLevels = 5;
-//             }
-//           }
-//         } catch (JSONException e) {
-//           e.printStackTrace();
-//           callbackContext.error(e.toString());
-//           return false;
-//         }
-//       }
-
-//       for (ScanResult scan : scanResults) {
-//         /*
-//          * @todo - breaking change, remove this notice when tidying new release and explain changes, e.g.:
-//          *   0.y.z includes a breaking change to WifiWizard2.getScanResults().
-//          *   Earlier versions set scans' level attributes to a number derived from wifiManager.calculateSignalLevel.
-//          *   This update returns scans' raw RSSI value as the level, per Android spec / APIs.
-//          *   If your application depends on the previous behaviour, we have added an options object that will modify behaviour:
-//          *   - if `(n == true || n < 2)`, `*.getScanResults({numLevels: n})` will return data as before, split in 5 levels;
-//          *   - if `(n > 1)`, `*.getScanResults({numLevels: n})` will calculate the signal level, split in n levels;
-//          *   - if `(n == false)`, `*.getScanResults({numLevels: n})` will use the raw signal level;
-//          */
-
-//         int level;
-
-//         if (numLevels == null) {
-//           level = scan.level;
-//         } else {
-//           level = wifiManager.calculateSignalLevel(scan.level, numLevels);
-//         }
-
-//         JSONObject lvl = new JSONObject();
-//         try {
-//           lvl.put("level", level);
-//           lvl.put("SSID", scan.SSID);
-//           lvl.put("BSSID", scan.BSSID);
-//           lvl.put("frequency", scan.frequency);
-//           lvl.put("capabilities", scan.capabilities);
-//           lvl.put("timestamp", scan.timestamp);
-
-//           if (API_VERSION >= 23) { // Marshmallow
-//             lvl.put("channelWidth", scan.channelWidth);
-//             lvl.put("centerFreq0", scan.centerFreq0);
-//             lvl.put("centerFreq1", scan.centerFreq1);
-//           } else {
-//             lvl.put("channelWidth", JSONObject.NULL);
-//             lvl.put("centerFreq0", JSONObject.NULL);
-//             lvl.put("centerFreq1", JSONObject.NULL);
-//           }
-
-//           returnList.put(lvl);
-//         } catch (JSONException e) {
-//           e.printStackTrace();
-//           callbackContext.error(e.toString());
-//           return false;
-//         }
-//       }
-
-//       callbackContext.success(returnList);
-//       return true;
-
-//     } else {
-
-//       requestLocationPermission(SCAN_RESULTS_CODE);
-//       return true;
-//     }
-
-//   }
-
-//   /**
-//    * This method uses the callbackContext.success method. It starts a wifi scanning
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @return true if started was successful
-//    */
-//   private boolean startScan(CallbackContext callbackContext) {
-
-//     if (wifiManager.startScan()) {
-//       callbackContext.success();
-//       return true;
-//     } else {
-//       callbackContext.error("STARTSCAN_FAILED");
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * This method returns the connected WiFi network ID (if connected)
-//    *
-//    * @return -1 if no network connected, or network id if connected
-//    */
-//   private int getConnectedNetId() {
-//     int networkId = -1;
-
-//     WifiInfo info = wifiManager.getConnectionInfo();
-
-//     if (info == null) {
-//       Log.d(TAG, "Unable to read wifi info");
-//       return networkId;
-//     }
-
-//     networkId = info.getNetworkId();
-
-//     if (networkId == -1) {
-//       Log.d(TAG, "NO_CURRENT_NETWORK_FOUND");
-//     }
-
-//     return networkId;
-//   }
-
-//   /**
-//    * Get Network ID from SSID
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param data JSON Array, with [0] being SSID to connect
-//    * @return true if network connected, false if failed
-//    */
-//   private boolean getSSIDNetworkID(CallbackContext callbackContext, JSONArray data) {
-//     Log.d(TAG, "WifiWizard2: getSSIDNetworkID entered.");
-
-//     if (!validateData(data)) {
-//       callbackContext.error("GET_SSID_INVALID_DATA");
-//       Log.d(TAG, "WifiWizard2: getSSIDNetworkID invalid data.");
-//       return false;
-//     }
-
-//     String ssidToGetNetworkID = "";
-
-//     try {
-//       ssidToGetNetworkID = data.getString(0);
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-
-//     int networkIdToConnect = ssidToNetworkId(ssidToGetNetworkID);
-//     callbackContext.success(networkIdToConnect);
-
-//     return true;
-//   }
-
-//   /**
-//    * This method returns the connected WiFi network ID (if connected)
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @return -1 if no network connected, or network id if connected
-//    */
-//   private boolean getConnectedNetworkID(CallbackContext callbackContext) {
-//     int networkId = getConnectedNetId();
-
-//     if (networkId == -1) {
-//       callbackContext.error("GET_CONNECTED_NET_ID_ERROR");
-//       return false;
-//     }
-
-//     callbackContext.success(networkId);
-//     return true;
-//   }
-
-//   /**
-//    * This method retrieves the SSID for the currently connected network
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @return true if SSID found, false if not.
-//    */
-//   private boolean getConnectedSSID(CallbackContext callbackContext) {
-//     return getWifiServiceInfo(callbackContext, false);
-//   }
-
-//   /**
-//    * This method retrieves the BSSID for the currently connected network
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @return true if SSID found, false if not.
-//    */
-//   private boolean getConnectedBSSID(CallbackContext callbackContext) {
-//     return getWifiServiceInfo(callbackContext, true);
-//   }
-
-//   /**
-//    * This method retrieves the WifiInformation for the (SSID or BSSID) currently connected network.
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @param basicIdentifier A flag to get BSSID if true or SSID if false.
-//    * @return true if SSID found, false if not.
-//    */
-//   private boolean getWifiServiceInfo(CallbackContext callbackContext, boolean basicIdentifier) {
-//     if (API_VERSION >= 23 && !cordova.hasPermission(ACCESS_FINE_LOCATION)) { //Android 9 (Pie) or newer
-//       requestLocationPermission(WIFI_SERVICE_INFO_CODE);
-//       bssidRequested = basicIdentifier;
-//       return true;
-//     } else {
-//       WifiInfo info = wifiManager.getConnectionInfo();
-
-//       if (info == null) {
-//         callbackContext.error("UNABLE_TO_READ_WIFI_INFO");
-//         return false;
-//       }
-
-//       // Only return SSID or BSSID when actually connected to a network
-//       SupplicantState state = info.getSupplicantState();
-//       if (!state.equals(SupplicantState.COMPLETED)) {
-//         callbackContext.error("CONNECTION_NOT_COMPLETED");
-//         return false;
-//       }
-
-//       String serviceInfo;
-//       if (basicIdentifier) {
-//         serviceInfo = info.getBSSID();
-//       } else {
-//         serviceInfo = info.getSSID();
-//       }
-
-//       if (serviceInfo == null || serviceInfo.isEmpty() || serviceInfo == "0x") {
-//         callbackContext.error("WIFI_INFORMATION_EMPTY");
-//         return false;
-//       }
-
-//       // http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getSSID()
-//       if (serviceInfo.startsWith("\"") && serviceInfo.endsWith("\"")) {
-//         serviceInfo = serviceInfo.substring(1, serviceInfo.length() - 1);
-//       }
-
-//       callbackContext.success(serviceInfo);
-//       return true;
-//     }
-//   }
-
-//   /**
-//    * This method retrieves the current WiFi status
-//    *
-//    * @param callbackContext A Cordova callback context
-//    * @return true if WiFi is enabled, fail will be called if not.
-//    */
-//   private boolean isWifiEnabled(CallbackContext callbackContext) {
-//     boolean isEnabled = wifiManager.isWifiEnabled();
-//     callbackContext.success(isEnabled ? "1" : "0");
-//     return isEnabled;
-//   }
-
-//   /**
-//    * This method takes a given String, searches the current list of configured WiFi networks, and
-//    * returns the networkId for the network if the SSID matches. If not, it returns -1.
-//    */
-//   private int ssidToNetworkId(String ssid) {
-
-//     try {
-
-//       int maybeNetId = Integer.parseInt(ssid);
-//       Log.d(TAG, "ssidToNetworkId passed SSID is integer, probably a Network ID: " + ssid);
-//       return maybeNetId;
-
-//     } catch (NumberFormatException e) {
-
-//       List<WifiConfiguration> currentNetworks = wifiManager.getConfiguredNetworks();
-//       int networkId = -1;
-
-//       // For each network in the list, compare the SSID with the given one
-//       for (WifiConfiguration test : currentNetworks) {
-//         if (test.SSID != null && test.SSID.equals(ssid)) {
-//           networkId = test.networkId;
-//         }
-//       }
-
-//       return networkId;
-
-//     }
-//   }
-
-//   /**
-//    * This method enables or disables the wifi
-//    */
-//   private boolean setWifiEnabled(CallbackContext callbackContext, JSONArray data) {
-//     if (!validateData(data)) {
-//       callbackContext.error("SETWIFIENABLED_INVALID_DATA");
-//       Log.d(TAG, "WifiWizard2: setWifiEnabled invalid data");
-//       return false;
-//     }
-
-//     String status = "";
-
-//     try {
-//       status = data.getString(0);
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-
-//     if (wifiManager.setWifiEnabled(status.equals("true"))) {
-//       callbackContext.success();
-//       return true;
-//     } else {
-//       callbackContext.error("ERROR_SETWIFIENABLED");
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * This method will check if WiFi is enabled, and enable it if not, waiting up to 10 seconds for
-//    * it to enable
-//    *
-//    * @return True if wifi is enabled, false if unable to enable wifi
-//    */
-//   private boolean verifyWifiEnabled() {
-
-//     Log.d(TAG, "WifiWizard2: verifyWifiEnabled entered.");
-
-//     if (!wifiManager.isWifiEnabled()) {
-
-//       Log.i(TAG, "Enabling wi-fi...");
-
-//       if (wifiManager.setWifiEnabled(true)) {
-//         Log.i(TAG, "Wi-fi enabled");
-//       } else {
-//         Log.e(TAG, "VERIFY_ERROR_ENABLE_WIFI");
-//         return false;
-//       }
-
-//       // This happens very quickly, but need to wait for it to enable. A little busy wait?
-//       int count = 0;
-
-//       while (!wifiManager.isWifiEnabled()) {
-//         if (count >= 10) {
-//           Log.i(TAG, "Took too long to enable wi-fi, quitting");
-//           return false;
-//         }
-
-//         Log.i(TAG, "Still waiting for wi-fi to enable...");
-
-//         try {
-//           Thread.sleep(1000L);
-//         } catch (InterruptedException ie) {
-//           // continue
-//         }
-
-//         count++;
-//       }
-
-//       // If we make it this far, wifi should be enabled by now
-//       return true;
-
-//     } else {
-
-//       return true;
-
-//     }
-
-//   }
-
-//   /**
-//    * Format and return WiFi IPv4 Address
-//    * @return
-//    */
-//   private String[] getWiFiIPAddress() {
-//     WifiInfo wifiInfo = wifiManager.getConnectionInfo();
-//     int ip = wifiInfo.getIpAddress();
-
-//     String ipString = formatIP(ip);
-//     String subnet = "";
-
-//     try {
-//       InetAddress inetAddress = InetAddress.getByName(ipString);
-//       subnet = getIPv4Subnet(inetAddress);
-//     } catch (Exception e) {
-//     }
-
-//     return new String[]{ipString, subnet};
-//   }
-
-//   /**
-//    * Get WiFi Router IP from DHCP
-//    * @return
-//    */
-//   private String getWiFiRouterIP() {
-//     DhcpInfo dhcp = wifiManager.getDhcpInfo();
-//     int ip = dhcp.gateway;
-//     return formatIP(ip);
-//   }
-
-//   /**
-//    * Format IPv4 Address
-//    * @param ip
-//    * @return
-//    */
-//   private String formatIP(int ip) {
-//     return String.format(
-//             "%d.%d.%d.%d",
-//             (ip & 0xff),
-//             (ip >> 8 & 0xff),
-//             (ip >> 16 & 0xff),
-//             (ip >> 24 & 0xff)
-//     );
-//   }
-
-//   /**
-//    * Get IPv4 Subnet
-//    * @param inetAddress
-//    * @return
-//    */
-//   public static String getIPv4Subnet(InetAddress inetAddress) {
-//     try {
-//       NetworkInterface ni = NetworkInterface.getByInetAddress(inetAddress);
-//       List<InterfaceAddress> intAddrs = ni.getInterfaceAddresses();
-//       for (InterfaceAddress ia : intAddrs) {
-//         if (!ia.getAddress().isLoopbackAddress() && ia.getAddress() instanceof Inet4Address) {
-//           return getIPv4SubnetFromNetPrefixLength(ia.getNetworkPrefixLength()).getHostAddress()
-//                   .toString();
-//         }
-//       }
-//     } catch (Exception e) {
-//     }
-//     return "";
-//   }
-
-//   /**
-//    * Get Subnet from Prefix Length
-//    * @param netPrefixLength
-//    * @return
-//    */
-//   public static InetAddress getIPv4SubnetFromNetPrefixLength(int netPrefixLength) {
-//     try {
-//       int shift = (1 << 31);
-//       for (int i = netPrefixLength - 1; i > 0; i--) {
-//         shift = (shift >> 1);
-//       }
-//       String subnet =
-//               Integer.toString((shift >> 24) & 255) + "." + Integer.toString((shift >> 16) & 255) + "."
-//                       + Integer.toString((shift >> 8) & 255) + "." + Integer.toString(shift & 255);
-//       return InetAddress.getByName(subnet);
-//     } catch (Exception e) {
-//     }
-//     return null;
-//   }
-
-//   /**
-//    * Validate JSON data
-//    */
-//   private boolean validateData(JSONArray data) {
-//     try {
-//       if (data == null || data.get(0) == null) {
-//         callbackContext.error("DATA_IS_NULL");
-//         return false;
-//       }
-//       return true;
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//     }
-//     return false;
-//   }
-
-//   /**
-//    * Request ACCESS_FINE_LOCATION Permission
-//    * @param requestCode
-//    */
-//   protected void requestLocationPermission(int requestCode) {
-//     cordova.requestPermission(this, requestCode, ACCESS_FINE_LOCATION);
-//   }
-
-//   /**
-//    * Handle Android Permission Requests
-//    */
-//   public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults)
-//           throws JSONException {
-
-//     for (int r : grantResults) {
-//       if (r == PackageManager.PERMISSION_DENIED) {
-//         callbackContext.error( "PERMISSION_DENIED" );
-//         return;
-//       }
-//     }
-
-//     switch (requestCode) {
-//       case SCAN_RESULTS_CODE:
-//         getScanResults(callbackContext, passedData); // Call method again after permissions approved
-//         break;
-//       case SCAN_CODE:
-//         scan(callbackContext, passedData); // Call method again after permissions approved
-//         break;
-//       case LOCATION_REQUEST_CODE:
-//         callbackContext.success("PERMISSION_GRANTED");
-//         break;
-//       case WIFI_SERVICE_INFO_CODE:
-//         getWifiServiceInfo(callbackContext, bssidRequested);
-//         break;
-//     }
-//   }
-
-//   /**
-//    * Figure out what the highest priority network in the network list is and return that priority
-//    */
-//   private static int getMaxWifiPriority(final WifiManager wifiManager) {
-//     final List<WifiConfiguration> configurations = wifiManager.getConfiguredNetworks();
-//     int maxPriority = 0;
-//     for (WifiConfiguration config : configurations) {
-//       if (config.priority > maxPriority) {
-//         maxPriority = config.priority;
-//       }
-//     }
-
-//     Log.d(TAG, "WifiWizard: Found max WiFi priority of "
-//             + maxPriority);
-
-//     return maxPriority;
-//   }
-
-//   /**
-//    * Check if device is connected to Internet
-//    */
-//   private boolean canConnectToInternet(CallbackContext callbackContext, boolean doPing) {
-
-//     try {
-
-//       if ( hasInternetConnection(doPing) ) {
-//         // Send success as 1 to return true from Promise (handled in JS)
-//         callbackContext.success("1");
-//         return true;
-//       } else {
-//         callbackContext.success("0");
-//         return false;
-//       }
-
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * Check if we can conenct to router via HTTP connection
-//    *
-//    * @param callbackContext
-//    * @param doPing
-//    * @return boolean
-//    */
-//   private boolean canConnectToRouter(CallbackContext callbackContext, boolean doPing) {
-
-//     try {
-
-//       if (hasConnectionToRouter(doPing)) {
-//         // Send success as 1 to return true from Promise (handled in JS)
-//         callbackContext.success("1");
-//         return true;
-//       } else {
-//         callbackContext.success("0");
-//         return false;
-//       }
-
-//     } catch (Exception e) {
-//       callbackContext.error(e.getMessage());
-//       Log.d(TAG, e.getMessage());
-//       return false;
-//     }
-//   }
-
-//   /**
-//    * Check if The Device Is Connected to Internet
-//    *
-//    * @return true if device connect to Internet or return false if not
-//    */
-//   public boolean hasInternetConnection(boolean doPing) {
-//     if (connectivityManager != null) {
-//       NetworkInfo info = connectivityManager.getActiveNetworkInfo();
-//       if (info != null) {
-//         if (info.isConnected()) {
-//           if( doPing ){
-//             return pingCmd("8.8.8.8");
-//           } else {
-//             return isHTTPreachable("http://www.google.com/");
-//           }
-//         }
-//       }
-//     }
-//     return false;
-//   }
-
-//   /**
-//    * Check for connection to router by pinging router IP
-//    * @return
-//    */
-//   public boolean hasConnectionToRouter( boolean doPing ) {
-
-//     String ip = getWiFiRouterIP();
-
-//     if ( ip == null || ip.equals("0.0.0.0") || connectivityManager == null) {
-
-//       return false;
-
-//     } else {
-
-//       NetworkInfo info = connectivityManager.getActiveNetworkInfo();
-
-//       if (info != null && info.isConnected()) {
-
-//         if( doPing ){
-//           return pingCmd(ip);
-//         } else {
-//           return isHTTPreachable("http://" + ip + "/");
-//         }
-//       } else {
-//         return false;
-//       }
-
-//     }
-
-//   }
-
-//   /**
-//    * Check if HTTP connection to URL is reachable
-//    *
-//    * @param checkURL
-//    * @return boolean
-//    */
-//   public static boolean isHTTPreachable(String checkURL) {
-//     try {
-//       // make a URL to a known source
-//       URL url = new URL(checkURL);
-
-//       // open a connection to that source
-//       HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
-
-//       // trying to retrieve data from the source. If there
-//       // is no connection, this line will fail
-//       Object objData = urlConnect.getContent();
-
-//     } catch (Exception e) {
-//       e.printStackTrace();
-//       return false;
-//     }
-
-//     return true;
-//   }
-
-//   /**
-//    * Method to Ping IP Address
-//    *
-//    * @param addr IP address you want to ping it
-//    * @return true if the IP address is reachable
-//    */
-//   public boolean pingCmd(String addr) {
-
-//     try {
-
-//       String ping = "ping  -c 1 -W 3 " + addr;
-//       Runtime run = Runtime.getRuntime();
-//       Process pro = run.exec(ping);
-
-//       try {
-//         pro.waitFor();
-//       } catch (InterruptedException e) {
-//         Log.e(TAG, "InterruptedException error.", e);
-//       }
-
-//       int exit = pro.exitValue();
-
-//       Log.d(TAG, "pingCmd exitValue" + exit);
-
-//       if (exit == 0) {
-//         return true;
-//       } else {
-//         // ip address is not reachable
-//         return false;
-//       }
-//     } catch (UnknownHostException e) {
-//       Log.d(TAG, "UnknownHostException: " + e.getMessage());
-//     } catch (Exception e) {
-//       Log.d(TAG, e.getMessage());
-//     }
-
-//     return false;
-//   }
-
-//   /**
-//    * Network Changed Broadcast Receiver
-//    */
-//   private class NetworkChangedReceiver extends BroadcastReceiver {
-
-//     @Override
-//     public void onReceive(final Context context, final Intent intent) {
-
-//       if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {
-
-//         Log.d(TAG, "NETWORK_STATE_CHANGED_ACTION");
-
-//         NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
-//         WifiInfo info = WifiWizard2.this.wifiManager.getConnectionInfo();
-
-//         // Checks that you're connected to the desired network
-//         if (networkInfo.isConnected() && info.getNetworkId() > -1) {
-
-//           final String ssid = info.getSSID().replaceAll("\"", "");
-//           final String bssid = info.getBSSID();
-
-//           Log.d(TAG, "Connected to '" + ssid + "' @ " + bssid);
-
-//           // Verify the desired network ID is what we actually connected to
-//           if ( desired != null && info.getNetworkId() == desired.apId ) {
-//             onSuccessfulConnection();
-//           } else {
-//             Log.e(TAG, "Could not connect to the desired ssid: " + ssid);
-//           }
-
-//         }
-
-//       }
-
-//     }
-
-//   }
-
-//   /**
-//    * Register Receiver for Network Changed to handle BindALL
-//    * @param netID
-//    */
-//   private void registerBindALL(int netID){
-
-//     // Bind all requests to WiFi network (only necessary for Lollipop+ - API 21+)
-//     if( API_VERSION > 21 ){
-//       Log.d(TAG, "registerBindALL: registering net changed receiver");
-//       desired = new AP(netID,null,null);
-//       cordova.getActivity().getApplicationContext().registerReceiver(networkChangedReceiver, NETWORK_STATE_CHANGED_FILTER);
-//     } else {
-//       Log.d(TAG, "registerBindALL: API older than 21, bindall ignored.");
-//     }
-//   }
-
-//   /**
-//    * Maybe reset bind all after disconnect/disable
-//    *
-//    * This method unregisters the network changed receiver, as well as setting null for
-//    * bindProcessToNetwork or setProcessDefaultNetwork to prevent future sockets from application
-//    * being routed through Wifi.
-//    */
-//   private void maybeResetBindALL(){
-
-//     Log.d(TAG, "maybeResetBindALL");
-
-//     // desired should have a value if receiver is registered
-//     if( desired != null ){
-
-//       if( API_VERSION > 21 ){
-
-//         try {
-//           // Unregister net changed receiver -- should only be registered in API versions > 21
-//           cordova.getActivity().getApplicationContext().unregisterReceiver(networkChangedReceiver);
-//         } catch (Exception e) {}
-
-//       }
-
-//       // Lollipop OS or newer
-//       if ( API_VERSION >= 23 ) {
-//         connectivityManager.bindProcessToNetwork(null);
-//       } else if( API_VERSION >= 21 && API_VERSION < 23 ){
-//         connectivityManager.setProcessDefaultNetwork(null);
-//       }
-
-//       if ( API_VERSION > 21 && networkCallback != null) {
-
-//         try {
-//           // Same behavior as releaseNetworkRequest
-//           connectivityManager.unregisterNetworkCallback(networkCallback); // Added in API 21
-//         } catch (Exception e) {}
-//       }
-
-//       networkCallback = null;
-//       previous = null;
-//       desired = null;
-
-//     }
-
-//   }
-
-//   /**
-//    * Will un-bind to network (use Cellular network)
-//    *
-//    * @param callbackContext A Cordova callback context
-//    */
-//   private void resetBindAll(CallbackContext callbackContext) {
-//     Log.d(TAG, "WifiWizard2: resetBindALL");
-
-//     try {
-//       maybeResetBindALL();
-//       callbackContext.success("Successfully reset BindALL");
-//     } catch (Exception e) {
-//       Log.e(TAG, "InterruptedException error.", e);
-//       callbackContext.error("ERROR_NO_BIND_ALL");
-//     }
-//   }
-
-//   /**
-//    * Will bind to network (use Wifi network)
-//    *
-//    * @param callbackContext A Cordova callback context
-//    */
-//   private void setBindAll(CallbackContext callbackContext) {
-//     Log.d(TAG, "WifiWizard2: setBindALL");
-
-//     try {
-//       int networkId = getConnectedNetId();
-//       registerBindALL(networkId);
-//       callbackContext.success("Successfully bindAll to network");
-//     } catch (Exception e) {
-//       Log.e(TAG, "InterruptedException error.", e);
-//       callbackContext.error("ERROR_CANT_BIND_ALL");
-//     }
-//   }
-
-
-//   /**
-//    * Called after successful connection to WiFi when using BindAll feature
-//    *
-//    * This method is called by the NetworkChangedReceiver after network changed action, and confirming that we are in fact connected to wifi,
-//    * and the wifi we're connected to, is the correct network set in enable, or connect.
-//    */
-//   private void onSuccessfulConnection() {
-//     // On Lollipop+ the OS routes network requests through mobile data
-//     // when phone is attached to a wifi that doesn't have Internet connection
-//     // We use the ConnectivityManager to force bind all requests from our process
-//     // to the wifi without internet
-//     // see https://android-developers.googleblog.com/2016/07/connecting-your-app-to-wi-fi-device.html
-
-//     // Marshmallow OS or newer
-//     if ( API_VERSION >= 23 ) {
-
-//       Log.d(TAG, "BindALL onSuccessfulConnection API >= 23");
-
-//       // Marshmallow (API 23+) or newer uses bindProcessToNetwork
-//       final NetworkRequest request = new NetworkRequest.Builder()
-//               .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
-//               .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) //removeCapability added for hotspots without internet
-//               .build();
-
-//       networkCallback = new ConnectivityManager.NetworkCallback() {
-//         @Override
-//         public void onAvailable(Network network) {
-//           if( connectivityManager.bindProcessToNetwork(network) ){
-//             Log.d(TAG, "bindProcessToNetwork TRUE onSuccessfulConnection");
-//           } else {
-//             Log.d(TAG, "bindProcessToNetwork FALSE onSuccessfulConnection");
-//           }
-//         }
-//       };
-
-//       connectivityManager.requestNetwork(request, networkCallback);
-
-//       // Only lollipop (API 21 && 22) use setProcessDefaultNetwork, API < 21 already does this by default
-//     } else if( API_VERSION >= 21 && API_VERSION < 23 ){
-
-//       Log.d(TAG, "BindALL onSuccessfulConnection API >= 21 && < 23");
-
-//       // Lollipop (API 21-22) use setProcessDefaultNetwork (deprecated in API 23 - Marshmallow)
-//       final NetworkRequest request = new NetworkRequest.Builder()
-//               .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
-//               .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) //removeCapability addded for hotspots without internet
-//               .build();
-
-//       networkCallback = new ConnectivityManager.NetworkCallback() {
-//         @Override
-//         public void onAvailable(Network network) {
-//           connectivityManager.setProcessDefaultNetwork(network);
-//         }
-//       };
-
-//       connectivityManager.requestNetwork(request, networkCallback);
-
-//     } else {
-//       // Technically we should never reach this with older API, but just in case
-//       Log.d(TAG, "BindALL onSuccessfulConnection API older than 21, no need to do any binding");
-//       networkCallback = null;
-//       previous = null;
-//       desired = null;
-
-//     }
-//   }
-
-//   /**
-//    * Class to store finished boolean in
-//    */
-//   private class ScanSyncContext {
-
-//     public boolean finished = false;
-//   }
-
-//   /**
-//    * Used for storing access point information
-//    */
-//   private static class AP {
-//     final String ssid, bssid;
-//     final int apId;
-
-//     AP(int apId, final String ssid, final String bssid) {
-//       this.apId = apId;
-//       this.ssid = ssid;
-//       this.bssid = bssid;
-//     }
-
-//   }
-// }
\ No newline at end of file
diff --git a/app document/CS/Android/google-services.json b/app document/CS/Android/google-services.json
deleted file mode 100644
index 62fbaeae..00000000
--- a/app document/CS/Android/google-services.json	
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "project_info": {
-    "project_number": "679409052782",
-    "firebase_url": "https://mohemm-dce93.firebaseio.com",
-    "project_id": "mohemm-dce93",
-    "storage_bucket": "mohemm-dce93.appspot.com"
-  },
-  "client": [
-    {
-      "client_info": {
-        "mobilesdk_app_id": "1:679409052782:android:dba155ac0859d7fea78a7f",
-        "android_client_info": {
-          "package_name": "hmg.cloudSolutions.mohem"
-        }
-      },
-      "oauth_client": [
-        {
-          "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
-      "api_key": [
-        {
-          "current_key": "AIzaSyDgWjuSBIKGghWxYg_KGBRIZTi-O_UA8mU"
-        }
-      ],
-      "services": {
-        "appinvite_service": {
-          "other_platform_oauth_client": [
-            {
-              "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
-              "client_type": 3
-            }
-          ]
-        }
-      }
-    }
-  ],
-  "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/app document/CS/IOS/google-services.json b/app document/CS/IOS/google-services.json
deleted file mode 100644
index 9fdb04b8..00000000
--- a/app document/CS/IOS/google-services.json	
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "project_info": {
-    "project_number": "608631731238",
-    "firebase_url": "https://mohemm-cs.firebaseio.com",
-    "project_id": "mohemm-cs",
-    "storage_bucket": "mohemm-cs.appspot.com"
-  },
-  "client": [
-    {
-      "client_info": {
-        "mobilesdk_app_id": "1:608631731238:android:3a8384007f8700ec",
-        "android_client_info": {
-          "package_name": "com.cloudsolutions.mohemm"
-        }
-      },
-      "oauth_client": [
-        {
-          "client_id": "608631731238-83a5qndedia496ssa6ekkd3db5jo8khr.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
-      "api_key": [
-        {
-          "current_key": "AIzaSyB5zpz9vC2NOxsU1dPr0TK0dVaMY5D4Mjg"
-        }
-      ],
-      "services": {
-        "appinvite_service": {
-          "other_platform_oauth_client": [
-            {
-              "client_id": "608631731238-83a5qndedia496ssa6ekkd3db5jo8khr.apps.googleusercontent.com",
-              "client_type": 3
-            }
-          ]
-        }
-      }
-    }
-  ],
-  "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/app document/HMG/google-services.json b/app document/HMG/google-services.json
deleted file mode 100644
index 4dfaa0d3..00000000
--- a/app document/HMG/google-services.json	
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "project_info": {
-    "project_number": "448880075189",
-    "firebase_url": "https://al-habib-mohemm.firebaseio.com",
-    "project_id": "al-habib-mohemm",
-    "storage_bucket": "al-habib-mohemm.appspot.com"
-  },
-  "client": [
-    {
-      "client_info": {
-        "mobilesdk_app_id": "1:448880075189:android:5bb4821d515a826d88b9fc",
-        "android_client_info": {
-          "package_name": "com.cloudsolutions.alhabibmohemm"
-        }
-      },
-      "oauth_client": [
-        {
-          "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
-      "api_key": [
-        {
-          "current_key": "AIzaSyC8nrli7eyuRNow8nF-QHvDMOxqUkj6fEw"
-        }
-      ],
-      "services": {
-        "appinvite_service": {
-          "other_platform_oauth_client": [
-            {
-              "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
-              "client_type": 3
-            }
-          ]
-        }
-      }
-    }
-  ],
-  "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/.DS_Store
deleted file mode 100644
index ff88d06d..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/.DS_Store
deleted file mode 100644
index 841515fe..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/.DS_Store
deleted file mode 100644
index d02ecfa5..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/.DS_Store
deleted file mode 100644
index dbcf9a1f..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/AuthKey_W3CF7M96TP.p8 b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/AuthKey_W3CF7M96TP.p8
deleted file mode 100644
index dfbb576a..00000000
--- a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/AL HABIB MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/AuthKey_W3CF7M96TP.p8	
+++ /dev/null
@@ -1,6 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgpFHLFUMeYsa60Ljq
-iLNjrd5vW54LWW29shqYplVrbJGgCgYIKoZIzj0DAQehRANCAATtOB42ERmP9URQ
-ERKOSOsNs84YYhYOYgJWzEl8vawi4mUI2MaliCdXkTxzqChTWuPw2YN4n1ebAclM
-GEIcObMj
------END PRIVATE KEY-----
\ No newline at end of file
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/.DS_Store
deleted file mode 100644
index 5008ddfc..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/GoogleService-Info.plist b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/GoogleService-Info.plist
deleted file mode 100644
index 61e37a83..00000000
--- a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/GoogleService-Info.plist	
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CLIENT_ID</key>
-	<string>448880075189-tcgggmh2ua9tsmdr97c1ttcgrmf5kg5m.apps.googleusercontent.com</string>
-	<key>REVERSED_CLIENT_ID</key>
-	<string>com.googleusercontent.apps.448880075189-tcgggmh2ua9tsmdr97c1ttcgrmf5kg5m</string>
-	<key>API_KEY</key>
-	<string>AIzaSyB--KUTUYVpcdxpETCEsdhKs5cV3QawW7Q</string>
-	<key>GCM_SENDER_ID</key>
-	<string>448880075189</string>
-	<key>PLIST_VERSION</key>
-	<string>1</string>
-	<key>BUNDLE_ID</key>
-	<string>com.cloudsolutions.alhabibmohemm</string>
-	<key>PROJECT_ID</key>
-	<string>al-habib-mohemm</string>
-	<key>STORAGE_BUCKET</key>
-	<string>al-habib-mohemm.appspot.com</string>
-	<key>IS_ADS_ENABLED</key>
-	<false></false>
-	<key>IS_ANALYTICS_ENABLED</key>
-	<false></false>
-	<key>IS_APPINVITE_ENABLED</key>
-	<true></true>
-	<key>IS_GCM_ENABLED</key>
-	<true></true>
-	<key>IS_SIGNIN_ENABLED</key>
-	<true></true>
-	<key>GOOGLE_APP_ID</key>
-	<string>1:448880075189:ios:c6fd2b86fe7b388088b9fc</string>
-	<key>DATABASE_URL</key>
-	<string>https://al-habib-mohemm.firebaseio.com</string>
-</dict>
-</plist>
\ No newline at end of file
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/google-services.json b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/google-services.json
deleted file mode 100644
index 81453f28..00000000
--- a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/AL HABIB MOHEMM/GOOGLE SERVICES/google-services.json	
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "project_info": {
-    "project_number": "448880075189",
-    "firebase_url": "https://al-habib-mohemm.firebaseio.com",
-    "project_id": "al-habib-mohemm",
-    "storage_bucket": "al-habib-mohemm.appspot.com"
-  },
-  "client": [
-    {
-      "client_info": {
-        "mobilesdk_app_id": "1:448880075189:android:5bb4821d515a826d88b9fc",
-        "android_client_info": {
-          "package_name": "com.cloudsolutions.alhabibmohemm"
-        }
-      },
-      "oauth_client": [
-        {
-          "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
-      "api_key": [
-        {
-          "current_key": "AIzaSyC8nrli7eyuRNow8nF-QHvDMOxqUkj6fEw"
-        }
-      ],
-      "services": {
-        "appinvite_service": {
-          "other_platform_oauth_client": [
-            {
-              "client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
-              "client_type": 3
-            },
-            {
-              "client_id": "448880075189-tcgggmh2ua9tsmdr97c1ttcgrmf5kg5m.apps.googleusercontent.com",
-              "client_type": 2,
-              "ios_info": {
-                "bundle_id": "com.cloudsolutions.alhabibmohemm"
-              }
-            }
-          ]
-        }
-      }
-    }
-  ],
-  "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/.DS_Store
deleted file mode 100644
index 4a90ff6c..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/.DS_Store
deleted file mode 100644
index dd2ccbb6..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/.DS_Store b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/.DS_Store
deleted file mode 100644
index ffe132c2..00000000
Binary files a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/.DS_Store and /dev/null differ
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/AuthKey_67L2G322GR.p8 b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/AuthKey_67L2G322GR.p8
deleted file mode 100644
index eddd4c6a..00000000
--- a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM DEVELOPMENT SSL CERTIFICATE/PUSH NOTIFICATIONS/AuthKey_67L2G322GR.p8	
+++ /dev/null
@@ -1,6 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg+oBl9YdOiMRXfQZe
-nIe6tR1tojoOvvcohNJmJtH+SsagCgYIKoZIzj0DAQehRANCAATDY9E82MAgMI/g
-bKF1t4zLHJ1Yt9uoOnedNYsfyZLhh3l3ZyXRj02uDXz04AsNbNFjkLJXPc4xY9ad
-+A4rY70x
------END PRIVATE KEY-----
\ No newline at end of file
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/GOOGLE SERVICES/GoogleService-Info.plist b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/GOOGLE SERVICES/GoogleService-Info.plist
deleted file mode 100644
index 89817c12..00000000
--- a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/GOOGLE SERVICES/GoogleService-Info.plist	
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CLIENT_ID</key>
-	<string>679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt.apps.googleusercontent.com</string>
-	<key>REVERSED_CLIENT_ID</key>
-	<string>com.googleusercontent.apps.679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt</string>
-	<key>API_KEY</key>
-	<string>AIzaSyCjMjhbeS7qilBoP4SH0t3SgkkHryf34JA</string>
-	<key>GCM_SENDER_ID</key>
-	<string>679409052782</string>
-	<key>PLIST_VERSION</key>
-	<string>1</string>
-	<key>BUNDLE_ID</key>
-	<string>com.cloudsolutions.mohemm</string>
-	<key>PROJECT_ID</key>
-	<string>mohemm-dce93</string>
-	<key>STORAGE_BUCKET</key>
-	<string>mohemm-dce93.appspot.com</string>
-	<key>IS_ADS_ENABLED</key>
-	<false></false>
-	<key>IS_ANALYTICS_ENABLED</key>
-	<false></false>
-	<key>IS_APPINVITE_ENABLED</key>
-	<true></true>
-	<key>IS_GCM_ENABLED</key>
-	<true></true>
-	<key>IS_SIGNIN_ENABLED</key>
-	<true></true>
-	<key>GOOGLE_APP_ID</key>
-	<string>1:679409052782:ios:ace07cf8ba043b48a78a7f</string>
-	<key>DATABASE_URL</key>
-	<string>https://mohemm-dce93.firebaseio.com</string>
-</dict>
-</plist>
\ No newline at end of file
diff --git a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/GOOGLE SERVICES/google-services.json b/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/GOOGLE SERVICES/google-services.json
deleted file mode 100644
index 46d93642..00000000
--- a/app document/Mohemm Updated Documents Android IOS/CLOUD SOLUTIONS MOHEMM/CLOUD SOLUTIONS MOHEMM/GOOGLE SERVICES/google-services.json	
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "project_info": {
-    "project_number": "679409052782",
-    "firebase_url": "https://mohemm-dce93.firebaseio.com",
-    "project_id": "mohemm-dce93",
-    "storage_bucket": "mohemm-dce93.appspot.com"
-  },
-  "client": [
-    {
-      "client_info": {
-        "mobilesdk_app_id": "1:679409052782:android:dba155ac0859d7fea78a7f",
-        "android_client_info": {
-          "package_name": "hmg.cloudSolutions.mohem"
-        }
-      },
-      "oauth_client": [
-        {
-          "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
-      "api_key": [
-        {
-          "current_key": "AIzaSyDgWjuSBIKGghWxYg_KGBRIZTi-O_UA8mU"
-        }
-      ],
-      "services": {
-        "appinvite_service": {
-          "other_platform_oauth_client": [
-            {
-              "client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
-              "client_type": 3
-            },
-            {
-              "client_id": "679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt.apps.googleusercontent.com",
-              "client_type": 2,
-              "ios_info": {
-                "bundle_id": "com.cloudsolutions.mohemm"
-              }
-            }
-          ]
-        }
-      }
-    }
-  ],
-  "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/app document/Mohemm Updated Documents Android IOS/CertificateSigningRequest.certSigningRequest b/app document/Mohemm Updated Documents Android IOS/CertificateSigningRequest.certSigningRequest
deleted file mode 100644
index f39f2a2b..00000000
--- a/app document/Mohemm Updated Documents Android IOS/CertificateSigningRequest.certSigningRequest	
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICoTCCAYkCAQAwXDEzMDEGCSqGSIb3DQEJARYkQ2hvdWRocnkuTWFzb29kQGNs
-b3Vkc29sdXRpb24tc2EuY29tMRgwFgYDVQQDDA9DaG91ZGhyeSBNYXNvb2QxCzAJ
-BgNVBAYTAlNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApkQA87EF
-GiHTVqx7SWD+3qaVSHTFrTCro9DJZ5na/WGsF06xfoZJT/S5jFW5DlWHWsJak/vx
-BqsuH3VGTEneoEiWc+Zyh6Lb6SvgDmfee2MB+k8E6dHE4Z5Z7aiBXSTjIjKcWEjj
-41++FVihddY+p9723WFhcEWcA2Nq2p9KSZlKZNqui5xU/16z6RW7YSu0ylBUE8+g
-E5GLzRgALzoSNT5OedXqdIoR9k1Jds2ep+DKqjl35hKOX215b3tzfyamPK2i1UHB
-eaYBXnObkyJe4EIcqlTM8Eeo23yxsHYyRrJmJDDm4GaXRXrQ2193XpLHNlq88no5
-wgI+yYsb7zvwowIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAIQsZ1fP8XImSQ+L
-TvR4mT98DI5Ld/xLnw/LXRNJrZVtxMjdUwwcMhvxbfGX4Ji4wpttkzbkr86Jyh+U
-dbfVqHKLIGo8xjYl4uCcjYIqnY2hBduv+/aWWoFAJ9w5tv8Oo/3hasF97zQi+vZh
-Uzqdp/8IWb8/QGE2HRqKbSUMKBeUzDmyQTnM7QeS5kuT5MQZjDnFLV2v3Sxa383L
-9jFqNQjS7b1mcVJ4/HsW7yUYoDZ8C90fUp2zs5k4SFad8MG4J1IsoshXuBgBvcFg
-haDt0P+hh6QVk9yf4zGgcbU7501ya5T5MgZ8moxnlklf3mqGUCK2IU8PBc2IquyG
-2PrSkpI=
------END CERTIFICATE REQUEST-----
diff --git a/app document/Packadge Name.txt b/app document/Packadge Name.txt
deleted file mode 100644
index da313ecb..00000000
--- a/app document/Packadge Name.txt	
+++ /dev/null
@@ -1,6 +0,0 @@
-CS :
-android:hmg.cloudSolutions.mohem
-IOS :com.cloudsolutions.mohemm
-
-HMG :
-com.cloudsolutions.alhabibmohemm
\ No newline at end of file
diff --git a/app document/icons.zip b/app document/icons.zip
deleted file mode 100644
index 5e769895..00000000
Binary files a/app document/icons.zip and /dev/null differ
diff --git a/app document/phase 2 documents/ESS API Integration V 0 34.doc b/app document/phase 2 documents/ESS API Integration V 0 34.doc
deleted file mode 100644
index 408fb5c5..00000000
Binary files a/app document/phase 2 documents/ESS API Integration V 0 34.doc and /dev/null differ
diff --git a/app document/phase 2 documents/ESS Phase 2 methods.txt b/app document/phase 2 documents/ESS Phase 2 methods.txt
deleted file mode 100644
index a136e98f..00000000
--- a/app document/phase 2 documents/ESS Phase 2 methods.txt	
+++ /dev/null
@@ -1,48 +0,0 @@
-GET_SHIFT_TYPES
-GET_TIME_CARD_SUMMARY
-GET_DAY_HOURS_TYPE_DETAILS
-GET_SCHEDULE_SHIFTS_DETAILS
-GET_SWIPES
-GET_PAYSLIP
-GET_SUMMARY_OF_PAYMENT
-GET_EARNINGS
-GET_DEDUCTIONS
-GET_PAYMENT_INFORMATION
-GET_MO_NOTIFICATION_BODY
-GET_PR_NOTIFICATION_BODY
-GET_PO_NOTIFICATION_BODY
-GET_PO_ITEM_HISTORY
-GET_QUOTATION_ANALYSIS
-GET_PENDING_REQ_FUNCTIONS
-GET_PENDING_REQ_DETAILS
-UPDATE_EMPLOYEE_IMAGE
-GET_OBJECT_VALUES
-GET_EMPLOYEE_PHONES
-SUBMIT_PHONES_TRANSACTION
-START_PHONES_APPROVAL_PROCESS
-GET_PHONES_NOTIFICATION_BODY
-GET_EMPLOYEE_BASIC_DETAILS
-GET_BASIC_DET_COLS_STRUCTURE
-GET_BASIC_DET_DFF_STRUCTURE
-SUBMIT_BASIC_DET_TRANSACTION
-START_BASIC_DET_APPR_PROCESS
-GET_BASIC_DET_NTF_BODY
-GET_MO_ITEM_HISTORY
-GET_COUNTRIES
-GET_EMPLOYEE_ADDRESS
-GET_ADDRESS_DFF_STRUCTURE
-SUBMIT_ADDRESS_TRANSACTION
-START_ADDRESS_APPROVAL_PROCESS
-GET_ADDRESS_NOTIFICATION_BODY
-GET_EMPLOYEE_CONTACTS
-GET_CONTACT_DETAILS
-GET_CONTACT_COLS_STRUCTURE
-GET_CONTACT_DFF_STRUCTURE
-SUBMIT_CONTACT_TRANSACTION
-START_CONTACT_APPROVAL_PROCESS
-GET_TERM_COLS_STRUCTURE
-GET_TERM_DFF_STRUCTURE
-SUBMIT_TERM_TRANSACTION
-START_TERM_APPROVAL_PROCESS
-GET_TERM_NOTIFICATION_BODY
-GET_CONTACT_NOTIFICATION_BODY
\ No newline at end of file
diff --git a/app document/phase 2 documents/ITG Form Integration V1 2.docx b/app document/phase 2 documents/ITG Form Integration V1 2.docx
deleted file mode 100644
index d64f55cb..00000000
Binary files a/app document/phase 2 documents/ITG Form Integration V1 2.docx and /dev/null differ
diff --git a/app document/phase 2 documents/cr-3629-employee app 2.pdf b/app document/phase 2 documents/cr-3629-employee app 2.pdf
deleted file mode 100644
index f4c92c05..00000000
Binary files a/app document/phase 2 documents/cr-3629-employee app 2.pdf and /dev/null differ
diff --git a/app document/phase 2 documents/~$G Form Integration V1 2.docx b/app document/phase 2 documents/~$G Form Integration V1 2.docx
deleted file mode 100644
index f08a34a5..00000000
Binary files a/app document/phase 2 documents/~$G Form Integration V1 2.docx and /dev/null differ
