You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2017/05/02 23:43:44 UTC

[01/10] android commit: CB-12640: support for android sdk tools 26.0.1. simplified target parsing by using avdmanager instead of sdkmanager. flipped target parsing logic so that it always tries to use avdmanager to retrieve targets first, then falls back

Repository: cordova-android
Updated Branches:
  refs/heads/6.2.x 814aca2b6 -> c0df73c3c


CB-12640: support for android sdk tools 26.0.1. simplified target parsing by using avdmanager instead of sdkmanager. flipped target parsing logic so that it always tries to use avdmanager to retrieve targets first, then falls back to android command if avdmanager cannot be found (and errors with ENOENT). updated tests.


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/46e47a3c
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/46e47a3c
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/46e47a3c

Branch: refs/heads/6.2.x
Commit: 46e47a3c5cc0c7f36538e7a092fd4d079aa1996d
Parents: 814aca2
Author: filmaj <ma...@gmail.com>
Authored: Thu Apr 6 13:13:38 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 15:58:56 2017 -0700

----------------------------------------------------------------------
 bin/templates/cordova/lib/android_sdk.js        |   75 +-
 spec/fixtures/android_list_avd.txt              |    7 -
 spec/fixtures/android_list_targets.txt          |  116 --
 spec/fixtures/avdmanager_list_avd.txt           |   22 -
 spec/fixtures/sdk25.2-android_list_avd.txt      |    7 +
 spec/fixtures/sdk25.2-android_list_targets.txt  |  116 ++
 spec/fixtures/sdk25.3-avdmanager_list_avd.txt   |   22 +
 .../fixtures/sdk25.3-avdmanager_list_target.txt |    7 +
 spec/fixtures/sdkmanager_list.txt               | 1137 ------------------
 spec/unit/android_sdk.spec.js                   |   41 +-
 spec/unit/emulator.spec.js                      |    4 +-
 11 files changed, 192 insertions(+), 1362 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/bin/templates/cordova/lib/android_sdk.js
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/android_sdk.js b/bin/templates/cordova/lib/android_sdk.js
index 58d301e..79eeb1a 100755
--- a/bin/templates/cordova/lib/android_sdk.js
+++ b/bin/templates/cordova/lib/android_sdk.js
@@ -68,65 +68,38 @@ module.exports.version_string_to_api_level = {
     '7.1.1': 25
 };
 
-module.exports.list_targets_with_android = function() {
-    return superspawn.spawn('android', ['list', 'targets'])
-    .then(function(stdout) {
-        var target_out = stdout.split('\n');
-        var targets = [];
-        for (var i = target_out.length - 1; i >= 0; i--) {
-            if(target_out[i].match(/id:/)) {
-                targets.push(target_out[i].match(/"(.+)"/)[1]);
-            }
+function parse_targets(output) {
+    var target_out = output.split('\n');
+    var targets = [];
+    for (var i = target_out.length - 1; i >= 0; i--) {
+        if(target_out[i].match(/id:/)) { // if "id:" is in the line...
+            targets.push(target_out[i].match(/"(.+)"/)[1]); //.. match whatever is in quotes.
         }
-        return targets;
-    });
+    }
+    return targets;
+}
+
+module.exports.list_targets_with_android = function() {
+    return superspawn.spawn('android', ['list', 'target'])
+    .then(parse_targets);
 };
 
-module.exports.list_targets_with_sdkmanager = function() {
-    return superspawn.spawn('sdkmanager', ['--list'])
-    .then(function(stdout) {
-        var parsing_installed_packages = false;
-        var lines = stdout.split('\n');
-        var targets = [];
-        for (var i = 0, l = lines.length; i < l; i++) {
-            var line = lines[i];
-            if (line.match(/Installed packages/)) {
-                parsing_installed_packages = true;
-            } else if (line.match(/Available Packages/) || line.match(/Available Updates/)) {
-                // we are done working through installed packages, exit
-                break;
-            }
-            if (parsing_installed_packages) {
-                // Match stock android platform
-                if (line.match(/platforms;android-\d+/)) {
-                    targets.push(line.match(/(android-\d+)/)[1]);
-                }
-                // Match Google APIs
-                if (line.match(/addon-google_apis-google-\d+/)) {
-                    var description = lines[i + 1];
-                    // munge description to match output from old android sdk tooling
-                    var api_level = description.match(/Android (\d+)/); //[1];
-                    if (api_level) {
-                        targets.push('Google Inc.:Google APIs:' + api_level[1]);
-                    }
-                }
-                // TODO: match anything else?
-            }
-        }
-        return targets;
-    });
+module.exports.list_targets_with_avdmanager = function() {
+    return superspawn.spawn('avdmanager', ['list', 'target'])
+    .then(parse_targets);
 };
 
 module.exports.list_targets = function() {
-    return module.exports.list_targets_with_android()
+    return module.exports.list_targets_with_avdmanager()
     .catch(function(err) {
-        // there's a chance `android` no longer works.
-        // lets see if `sdkmanager` is available and we can figure it out
-        var avail_regex = /"?android"? command is no longer available/;
-        if (err.code && ((err.stdout && err.stdout.match(avail_regex)) || (err.stderr && err.stderr.match(avail_regex)))) {
-            return module.exports.list_targets_with_sdkmanager();
+        // If there's an error, like avdmanager could not be found, we can try
+        // as a last resort, to run `android`, in case this is a super old
+        // SDK installation.
+        if (err && err.code == 'ENOENT') {
+            return module.exports.list_targets_with_android();
         } else throw err;
-    }).then(function(targets) {
+    })
+    .then(function(targets) {
         if (targets.length === 0) {
             return Q.reject(new Error('No android targets (SDKs) installed!'));
         }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/android_list_avd.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/android_list_avd.txt b/spec/fixtures/android_list_avd.txt
deleted file mode 100644
index 22f80a4..0000000
--- a/spec/fixtures/android_list_avd.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Available Android Virtual Devices:
-    Name: QWR
-  Device: Nexus 5 (Google)
-    Path: /Users/shazron/.android/avd/QWR.avd
-  Target: Android 7.1.1 (API level 25)
- Tag/ABI: google_apis/x86_64
-    Skin: 1080x1920

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/android_list_targets.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/android_list_targets.txt b/spec/fixtures/android_list_targets.txt
deleted file mode 100644
index b21e4bd..0000000
--- a/spec/fixtures/android_list_targets.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-Available Android targets:
-----------
-id: 1 or "android-20"
-     Name: Android 4.4W.2
-     Type: Platform
-     API level: 20
-     Revision: 2
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : no ABIs.
-----------
-id: 2 or "android-21"
-     Name: Android 5.0.1
-     Type: Platform
-     API level: 21
-     Revision: 2
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, default/armeabi-v7a, default/x86, default/x86_64
-----------
-id: 3 or "android-22"
-     Name: Android 5.1.1
-     Type: Platform
-     API level: 22
-     Revision: 2
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, default/armeabi-v7a, default/x86, default/x86_64
-----------
-id: 4 or "android-MNC"
-     Name: Android M (Preview)
-     Type: Platform
-     API level: MNC
-     Revision: 1
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : no ABIs.
-----------
-id: 5 or "android-23"
-     Name: Android 6.0
-     Type: Platform
-     API level: 23
-     Revision: 3
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, default/x86, default/x86_64
-----------
-id: 6 or "android-N"
-     Name: Android N (Preview)
-     Type: Platform
-     API level: N
-     Revision: 3
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : no ABIs.
-----------
-id: 7 or "android-24"
-     Name: Android 7.0
-     Type: Platform
-     API level: 24
-     Revision: 2
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : android-tv/x86, default/x86, default/x86_64
-----------
-id: 8 or "android-25"
-     Name: Android 7.1.1
-     Type: Platform
-     API level: 25
-     Revision: 3
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : android-tv/x86, google_apis/x86, google_apis/x86_64
-----------
-id: 9 or "Google Inc.:Google APIs:21"
-     Name: Google APIs
-     Type: Add-On
-     Vendor: Google Inc.
-     Revision: 1
-     Description: Android + Google APIs
-     Based on Android 5.0.1 (API level 21)
-     Libraries:
-      * com.android.future.usb.accessory (usb.jar)
-          API for USB Accessories
-      * com.google.android.media.effects (effects.jar)
-          Collection of video effects
-      * com.google.android.maps (maps.jar)
-          API for Google Maps
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64
-----------
-id: 10 or "Google Inc.:Google APIs:22"
-     Name: Google APIs
-     Type: Add-On
-     Vendor: Google Inc.
-     Revision: 1
-     Description: Android + Google APIs
-     Based on Android 5.1.1 (API level 22)
-     Libraries:
-      * com.android.future.usb.accessory (usb.jar)
-          API for USB Accessories
-      * com.google.android.media.effects (effects.jar)
-          Collection of video effects
-      * com.google.android.maps (maps.jar)
-          API for Google Maps
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64
-----------
-id: 11 or "Google Inc.:Google APIs:23"
-     Name: Google APIs
-     Type: Add-On
-     Vendor: Google Inc.
-     Revision: 1
-     Description: Android + Google APIs
-     Based on Android 6.0 (API level 23)
-     Libraries:
-      * com.android.future.usb.accessory (usb.jar)
-          API for USB Accessories
-      * com.google.android.media.effects (effects.jar)
-          Collection of video effects
-      * com.google.android.maps (maps.jar)
-          API for Google Maps
-     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
- Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/avdmanager_list_avd.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/avdmanager_list_avd.txt b/spec/fixtures/avdmanager_list_avd.txt
deleted file mode 100644
index 92f77bb..0000000
--- a/spec/fixtures/avdmanager_list_avd.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Available Android Virtual Devices:
-    Name: nexus5-5.1
-  Device: Nexus 5 (Google)
-    Path: /Users/maj/.android/avd/nexus5-5.1.avd
-  Target: Google APIs
-          Based on: Android 5.1 (Lollipop) Tag/ABI: google_apis/x86_64
-    Skin: 1080x1920
-  Sdcard: 128M
----------
-    Name: Pixel_API_25
-  Device: pixel (Google)
-    Path: /Users/maj/.android/avd/Pixel_API_25.avd
-  Target: Google APIs
-          Based on: Android 7.1.1 (Nougat) Tag/ABI: google_apis/x86_64
-    Skin: pixel
-  Sdcard: 100M
----------
-    Name: stock51
-    Path: /Users/maj/.android/avd/stock51.avd
-  Target: Default
-          Based on: Android 5.1 (Lollipop) Tag/ABI: default/x86_64
-  Sdcard: 128M

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/sdk25.2-android_list_avd.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/sdk25.2-android_list_avd.txt b/spec/fixtures/sdk25.2-android_list_avd.txt
new file mode 100644
index 0000000..22f80a4
--- /dev/null
+++ b/spec/fixtures/sdk25.2-android_list_avd.txt
@@ -0,0 +1,7 @@
+Available Android Virtual Devices:
+    Name: QWR
+  Device: Nexus 5 (Google)
+    Path: /Users/shazron/.android/avd/QWR.avd
+  Target: Android 7.1.1 (API level 25)
+ Tag/ABI: google_apis/x86_64
+    Skin: 1080x1920

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/sdk25.2-android_list_targets.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/sdk25.2-android_list_targets.txt b/spec/fixtures/sdk25.2-android_list_targets.txt
new file mode 100644
index 0000000..b21e4bd
--- /dev/null
+++ b/spec/fixtures/sdk25.2-android_list_targets.txt
@@ -0,0 +1,116 @@
+Available Android targets:
+----------
+id: 1 or "android-20"
+     Name: Android 4.4W.2
+     Type: Platform
+     API level: 20
+     Revision: 2
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : no ABIs.
+----------
+id: 2 or "android-21"
+     Name: Android 5.0.1
+     Type: Platform
+     API level: 21
+     Revision: 2
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, default/armeabi-v7a, default/x86, default/x86_64
+----------
+id: 3 or "android-22"
+     Name: Android 5.1.1
+     Type: Platform
+     API level: 22
+     Revision: 2
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, default/armeabi-v7a, default/x86, default/x86_64
+----------
+id: 4 or "android-MNC"
+     Name: Android M (Preview)
+     Type: Platform
+     API level: MNC
+     Revision: 1
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : no ABIs.
+----------
+id: 5 or "android-23"
+     Name: Android 6.0
+     Type: Platform
+     API level: 23
+     Revision: 3
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : android-tv/armeabi-v7a, android-tv/x86, default/x86, default/x86_64
+----------
+id: 6 or "android-N"
+     Name: Android N (Preview)
+     Type: Platform
+     API level: N
+     Revision: 3
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : no ABIs.
+----------
+id: 7 or "android-24"
+     Name: Android 7.0
+     Type: Platform
+     API level: 24
+     Revision: 2
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : android-tv/x86, default/x86, default/x86_64
+----------
+id: 8 or "android-25"
+     Name: Android 7.1.1
+     Type: Platform
+     API level: 25
+     Revision: 3
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : android-tv/x86, google_apis/x86, google_apis/x86_64
+----------
+id: 9 or "Google Inc.:Google APIs:21"
+     Name: Google APIs
+     Type: Add-On
+     Vendor: Google Inc.
+     Revision: 1
+     Description: Android + Google APIs
+     Based on Android 5.0.1 (API level 21)
+     Libraries:
+      * com.android.future.usb.accessory (usb.jar)
+          API for USB Accessories
+      * com.google.android.media.effects (effects.jar)
+          Collection of video effects
+      * com.google.android.maps (maps.jar)
+          API for Google Maps
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64
+----------
+id: 10 or "Google Inc.:Google APIs:22"
+     Name: Google APIs
+     Type: Add-On
+     Vendor: Google Inc.
+     Revision: 1
+     Description: Android + Google APIs
+     Based on Android 5.1.1 (API level 22)
+     Libraries:
+      * com.android.future.usb.accessory (usb.jar)
+          API for USB Accessories
+      * com.google.android.media.effects (effects.jar)
+          Collection of video effects
+      * com.google.android.maps (maps.jar)
+          API for Google Maps
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64
+----------
+id: 11 or "Google Inc.:Google APIs:23"
+     Name: Google APIs
+     Type: Add-On
+     Vendor: Google Inc.
+     Revision: 1
+     Description: Android + Google APIs
+     Based on Android 6.0 (API level 23)
+     Libraries:
+      * com.android.future.usb.accessory (usb.jar)
+          API for USB Accessories
+      * com.google.android.media.effects (effects.jar)
+          Collection of video effects
+      * com.google.android.maps (maps.jar)
+          API for Google Maps
+     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
+ Tag/ABIs : google_apis/armeabi-v7a, google_apis/x86, google_apis/x86_64

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/sdk25.3-avdmanager_list_avd.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/sdk25.3-avdmanager_list_avd.txt b/spec/fixtures/sdk25.3-avdmanager_list_avd.txt
new file mode 100644
index 0000000..92f77bb
--- /dev/null
+++ b/spec/fixtures/sdk25.3-avdmanager_list_avd.txt
@@ -0,0 +1,22 @@
+Available Android Virtual Devices:
+    Name: nexus5-5.1
+  Device: Nexus 5 (Google)
+    Path: /Users/maj/.android/avd/nexus5-5.1.avd
+  Target: Google APIs
+          Based on: Android 5.1 (Lollipop) Tag/ABI: google_apis/x86_64
+    Skin: 1080x1920
+  Sdcard: 128M
+---------
+    Name: Pixel_API_25
+  Device: pixel (Google)
+    Path: /Users/maj/.android/avd/Pixel_API_25.avd
+  Target: Google APIs
+          Based on: Android 7.1.1 (Nougat) Tag/ABI: google_apis/x86_64
+    Skin: pixel
+  Sdcard: 100M
+---------
+    Name: stock51
+    Path: /Users/maj/.android/avd/stock51.avd
+  Target: Default
+          Based on: Android 5.1 (Lollipop) Tag/ABI: default/x86_64
+  Sdcard: 128M

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/sdk25.3-avdmanager_list_target.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/sdk25.3-avdmanager_list_target.txt b/spec/fixtures/sdk25.3-avdmanager_list_target.txt
new file mode 100644
index 0000000..23da57d
--- /dev/null
+++ b/spec/fixtures/sdk25.3-avdmanager_list_target.txt
@@ -0,0 +1,7 @@
+Available Android targets:
+----------
+id: 1 or "android-25"
+     Name: Android API 25
+     Type: Platform
+     API level: 25
+     Revision: 3

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/fixtures/sdkmanager_list.txt
----------------------------------------------------------------------
diff --git a/spec/fixtures/sdkmanager_list.txt b/spec/fixtures/sdkmanager_list.txt
deleted file mode 100644
index 40dc3e0..0000000
--- a/spec/fixtures/sdkmanager_list.txt
+++ /dev/null
@@ -1,1137 +0,0 @@
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-19/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-21/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-22/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-23/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-24/package.xml
-Info: Parsing /Users/maj/sdks/android/build-tools/25.0.2/package.xml
-Info: Parsing /Users/maj/sdks/android/emulator/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/android/m2repository/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/google/google_play_services/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/google/m2repository/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/intel/Hardware_Accelerated_Execution_Manager/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.2/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/m2repository/com/android/support/constraint/constraint-layout/1.0.2/package.xml
-Info: Parsing /Users/maj/sdks/android/patcher/v4/package.xml
-Info: Parsing /Users/maj/sdks/android/platform-tools/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-19/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-21/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-22/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-23/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-24/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-25/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-19/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-21/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-22/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-23/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-24/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-25/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-19/default/x86/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-19/google_apis/x86/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-21/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-21/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-22/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-22/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-23/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-23/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-24/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-24/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-25/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/tools/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-19/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-21/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-22/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-23/package.xml
-Info: Parsing /Users/maj/sdks/android/add-ons/addon-google_apis-google-24/package.xml
-Info: Parsing /Users/maj/sdks/android/build-tools/25.0.2/package.xml
-Info: Parsing /Users/maj/sdks/android/emulator/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/android/m2repository/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/google/google_play_services/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/google/m2repository/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/intel/Hardware_Accelerated_Execution_Manager/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.2/package.xml
-Info: Parsing /Users/maj/sdks/android/extras/m2repository/com/android/support/constraint/constraint-layout/1.0.2/package.xml
-Info: Parsing /Users/maj/sdks/android/patcher/v4/package.xml
-Info: Parsing /Users/maj/sdks/android/platform-tools/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-19/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-21/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-22/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-23/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-24/package.xml
-Info: Parsing /Users/maj/sdks/android/platforms/android-25/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-19/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-21/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-22/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-23/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-24/package.xml
-Info: Parsing /Users/maj/sdks/android/sources/android-25/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-19/default/x86/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-19/google_apis/x86/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-21/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-21/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-22/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-22/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-23/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-23/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-24/default/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-24/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/system-images/android-25/google_apis/x86_64/package.xml
-Info: Parsing /Users/maj/sdks/android/tools/package.xml
-Installed packages:
---------------------------------------
-add-ons;addon-google_apis-google-19
-    Description:        Google APIs, Android 19, rev 20
-    Version:            20.0.0
-    Installed Location: /Users/maj/sdks/android/add-ons/addon-google_apis-google-19
-
-add-ons;addon-google_apis-google-21
-    Description:        Google APIs, Android 21
-    Version:            1.0.0
-    Installed Location: /Users/maj/sdks/android/add-ons/addon-google_apis-google-21
-
-add-ons;addon-google_apis-google-22
-    Description:        Google APIs, Android 22
-    Version:            1.0.0
-    Installed Location: /Users/maj/sdks/android/add-ons/addon-google_apis-google-22
-
-add-ons;addon-google_apis-google-23
-    Description:        Google APIs, Android 23
-    Version:            1.0.0
-    Installed Location: /Users/maj/sdks/android/add-ons/addon-google_apis-google-23
-
-add-ons;addon-google_apis-google-24
-    Description:        Google APIs, Android 24
-    Version:            1.0.0
-    Installed Location: /Users/maj/sdks/android/add-ons/addon-google_apis-google-24
-
-build-tools;25.0.2
-    Description:        Android SDK Build-Tools 25.0.2
-    Version:            25.0.2
-    Installed Location: /Users/maj/sdks/android/build-tools/25.0.2
-
-emulator
-    Description:        Android Emulator
-    Version:            25.3.1
-    Installed Location: /Users/maj/sdks/android/emulator
-
-extras;android;m2repository
-    Description:        Android Support Repository
-    Version:            44.0.0
-    Installed Location: /Users/maj/sdks/android/extras/android/m2repository
-
-extras;google;google_play_services
-    Description:        Google Play services, rev 38
-    Version:            38.0.0
-    Installed Location: /Users/maj/sdks/android/extras/google/google_play_services
-
-extras;google;m2repository
-    Description:        Google Repository
-    Version:            44
-    Installed Location: /Users/maj/sdks/android/extras/google/m2repository
-
-extras;intel;Hardware_Accelerated_Execution_Manager
-    Description:        Intel x86 Emulator Accelerator (HAXM installer), rev 6.0.5
-    Version:            6.0.5
-    Installed Location: /Users/maj/sdks/android/extras/intel/Hardware_Accelerated_Execution_Manager
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2
-    Description:        Solver for ConstraintLayout 1.0.2
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.2
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2
-    Description:        ConstraintLayout for Android 1.0.2
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/extras/m2repository/com/android/support/constraint/constraint-layout/1.0.2
-
-patcher;v4
-    Description:        SDK Patch Applier v4
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/patcher/v4
-
-platform-tools
-    Description:        Android SDK Platform-Tools 25.0.3
-    Version:            25.0.3
-    Installed Location: /Users/maj/sdks/android/platform-tools
-
-platforms;android-19
-    Description:        Android SDK Platform 19, rev 4
-    Version:            4
-    Installed Location: /Users/maj/sdks/android/platforms/android-19
-
-platforms;android-21
-    Description:        Android SDK Platform 21, rev 2
-    Version:            2
-    Installed Location: /Users/maj/sdks/android/platforms/android-21
-
-platforms;android-22
-    Description:        Android SDK Platform 22, rev 2
-    Version:            2
-    Installed Location: /Users/maj/sdks/android/platforms/android-22
-
-platforms;android-23
-    Description:        Android SDK Platform 23, rev 3
-    Version:            3
-    Installed Location: /Users/maj/sdks/android/platforms/android-23
-
-platforms;android-24
-    Description:        Android SDK Platform 24, rev 2
-    Version:            2
-    Installed Location: /Users/maj/sdks/android/platforms/android-24
-
-platforms;android-25
-    Description:        Android SDK Platform 25, rev 3
-    Version:            3
-    Installed Location: /Users/maj/sdks/android/platforms/android-25
-
-sources;android-19
-    Description:        Sources for Android 19
-    Version:            2
-    Installed Location: /Users/maj/sdks/android/sources/android-19
-
-sources;android-21
-    Description:        Sources for Android 21
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/sources/android-21
-
-sources;android-22
-    Description:        Sources for Android 22
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/sources/android-22
-
-sources;android-23
-    Description:        Sources for Android 23
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/sources/android-23
-
-sources;android-24
-    Description:        Sources for Android 24
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/sources/android-24
-
-sources;android-25
-    Description:        Sources for Android 25
-    Version:            1
-    Installed Location: /Users/maj/sdks/android/sources/android-25
-
-system-images;android-19;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            5
-    Installed Location: /Users/maj/sdks/android/system-images/android-19/default/x86
-
-system-images;android-19;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            26
-    Installed Location: /Users/maj/sdks/android/system-images/android-19/google_apis/x86
-
-system-images;android-21;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            4
-    Installed Location: /Users/maj/sdks/android/system-images/android-21/default/x86_64
-
-system-images;android-21;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            18
-    Installed Location: /Users/maj/sdks/android/system-images/android-21/google_apis/x86_64
-
-system-images;android-22;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            5
-    Installed Location: /Users/maj/sdks/android/system-images/android-22/default/x86_64
-
-system-images;android-22;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            12
-    Installed Location: /Users/maj/sdks/android/system-images/android-22/google_apis/x86_64
-
-system-images;android-23;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            9
-    Installed Location: /Users/maj/sdks/android/system-images/android-23/default/x86_64
-
-system-images;android-23;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            19
-    Installed Location: /Users/maj/sdks/android/system-images/android-23/google_apis/x86_64
-
-system-images;android-24;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            7
-    Installed Location: /Users/maj/sdks/android/system-images/android-24/default/x86_64
-
-system-images;android-24;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            10
-    Installed Location: /Users/maj/sdks/android/system-images/android-24/google_apis/x86_64
-
-system-images;android-25;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            3
-    Installed Location: /Users/maj/sdks/android/system-images/android-25/google_apis/x86_64
-
-tools
-    Description:        Android SDK Tools
-    Version:            25.3.1
-    Installed Location: /Users/maj/sdks/android/tools
-
-Available Packages:
---------------------------------------
-add-ons;addon-google_apis-google-15
-    Description:        Google APIs
-    Version:            3
-
-add-ons;addon-google_apis-google-16
-    Description:        Google APIs
-    Version:            4
-
-add-ons;addon-google_apis-google-17
-    Description:        Google APIs
-    Version:            4
-
-add-ons;addon-google_apis-google-18
-    Description:        Google APIs
-    Version:            4
-
-add-ons;addon-google_apis-google-19
-    Description:        Google APIs
-    Version:            20
-
-add-ons;addon-google_apis-google-21
-    Description:        Google APIs
-    Version:            1
-
-add-ons;addon-google_apis-google-22
-    Description:        Google APIs
-    Version:            1
-
-add-ons;addon-google_apis-google-23
-    Description:        Google APIs
-    Version:            1
-
-add-ons;addon-google_apis-google-24
-    Description:        Google APIs
-    Version:            1
-
-add-ons;addon-google_gdk-google-19
-    Description:        Glass Development Kit Preview
-    Version:            11
-
-build-tools;19.1.0
-    Description:        Android SDK Build-Tools 19.1
-    Version:            19.1.0
-
-build-tools;20.0.0
-    Description:        Android SDK Build-Tools 20
-    Version:            20.0.0
-
-build-tools;21.1.2
-    Description:        Android SDK Build-Tools 21.1.2
-    Version:            21.1.2
-
-build-tools;22.0.1
-    Description:        Android SDK Build-Tools 22.0.1
-    Version:            22.0.1
-
-build-tools;23.0.1
-    Description:        Android SDK Build-Tools 23.0.1
-    Version:            23.0.1
-
-build-tools;23.0.2
-    Description:        Android SDK Build-Tools 23.0.2
-    Version:            23.0.2
-
-build-tools;23.0.3
-    Description:        Android SDK Build-Tools 23.0.3
-    Version:            23.0.3
-
-build-tools;24.0.0
-    Description:        Android SDK Build-Tools 24
-    Version:            24.0.0
-
-build-tools;24.0.1
-    Description:        Android SDK Build-Tools 24.0.1
-    Version:            24.0.1
-
-build-tools;24.0.2
-    Description:        Android SDK Build-Tools 24.0.2
-    Version:            24.0.2
-
-build-tools;24.0.3
-    Description:        Android SDK Build-Tools 24.0.3
-    Version:            24.0.3
-
-build-tools;25.0.0
-    Description:        Android SDK Build-Tools 25
-    Version:            25.0.0
-
-build-tools;25.0.1
-    Description:        Android SDK Build-Tools 25.0.1
-    Version:            25.0.1
-
-build-tools;25.0.2
-    Description:        Android SDK Build-Tools 25.0.2
-    Version:            25.0.2
-
-cmake;3.6.3155560
-    Description:        CMake 3.6.3155560
-    Version:            3.6.3155560
-
-docs
-    Description:        Documentation for Android SDK
-    Version:            1
-
-emulator
-    Description:        Android Emulator
-    Version:            25.3.1
-    Dependencies:
-        tools Revision 25.3
-
-extras;android;gapid;1
-    Description:        GPU Debugging tools
-    Version:            1.0.3
-
-extras;android;gapid;3
-    Description:        GPU Debugging tools
-    Version:            3.1.0
-
-extras;android;m2repository
-    Description:        Android Support Repository
-    Version:            45.0.0
-
-extras;google;auto
-    Description:        Android Auto Desktop Head Unit emulator
-    Version:            1.1
-
-extras;google;google_play_services
-    Description:        Google Play services
-    Version:            39
-    Dependencies:
-        patcher;v4
-
-extras;google;m2repository
-    Description:        Google Repository
-    Version:            44
-    Dependencies:
-        patcher;v4
-
-extras;google;market_apk_expansion
-    Description:        Google Play APK Expansion library
-    Version:            1
-
-extras;google;market_licensing
-    Description:        Google Play Licensing Library
-    Version:            1
-
-extras;google;play_billing
-    Description:        Google Play Billing Library
-    Version:            5
-
-extras;google;simulators
-    Description:        Android Auto API Simulators
-    Version:            1
-
-extras;google;webdriver
-    Description:        Google Web Driver
-    Version:            2
-
-extras;intel;Hardware_Accelerated_Execution_Manager
-    Description:        Intel x86 Emulator Accelerator (HAXM installer)
-    Version:            6.0.5
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0
-    Description:        Solver for ConstraintLayout 1.0.0
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha2
-    Description:        com.android.support.constraint:constraint-layout-solver:1.0.0-alpha2
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha3
-    Description:        com.android.support.constraint:constraint-layout-solver:1.0.0-alpha3
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4
-    Description:        com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha5
-    Description:        Solver for ConstraintLayout 1.0.0-alpha5
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha6
-    Description:        Solver for ConstraintLayout 1.0.0-alpha6
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha7
-    Description:        Solver for ConstraintLayout 1.0.0-alpha7
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8
-    Description:        Solver for ConstraintLayout 1.0.0-alpha8
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha9
-    Description:        Solver for ConstraintLayout 1.0.0-alpha9
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1
-    Description:        Solver for ConstraintLayout 1.0.0-beta1
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2
-    Description:        Solver for ConstraintLayout 1.0.0-beta2
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3
-    Description:        Solver for ConstraintLayout 1.0.0-beta3
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4
-    Description:        Solver for ConstraintLayout 1.0.0-beta4
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5
-    Description:        Solver for ConstraintLayout 1.0.0-beta5
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1
-    Description:        Solver for ConstraintLayout 1.0.1
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2
-    Description:        Solver for ConstraintLayout 1.0.2
-    Version:            1
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0
-    Description:        ConstraintLayout for Android 1.0.0
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha2
-    Description:        com.android.support.constraint:constraint-layout:1.0.0-alpha2
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha2
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha3
-    Description:        com.android.support.constraint:constraint-layout:1.0.0-alpha3
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha3
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4
-    Description:        com.android.support.constraint:constraint-layout:1.0.0-alpha4
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha5
-    Description:        ConstraintLayout for Android 1.0.0-alpha5
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha5
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha6
-    Description:        ConstraintLayout for Android 1.0.0-alpha6
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha6
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha7
-    Description:        ConstraintLayout for Android 1.0.0-alpha7
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha7
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8
-    Description:        ConstraintLayout for Android 1.0.0-alpha8
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha9
-    Description:        ConstraintLayout for Android 1.0.0-alpha9
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha9
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta1
-    Description:        ConstraintLayout for Android 1.0.0-beta1
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta2
-    Description:        ConstraintLayout for Android 1.0.0-beta2
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3
-    Description:        ConstraintLayout for Android 1.0.0-beta3
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta4
-    Description:        ConstraintLayout for Android 1.0.0-beta4
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta5
-    Description:        ConstraintLayout for Android 1.0.0-beta5
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1
-    Description:        ConstraintLayout for Android 1.0.1
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1
-
-extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2
-    Description:        ConstraintLayout for Android 1.0.2
-    Version:            1
-    Dependencies:
-        extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2
-
-lldb;2.0
-    Description:        LLDB 2.0
-    Version:            2.0.2558144
-
-lldb;2.1
-    Description:        LLDB 2.1
-    Version:            2.1.2852477
-
-lldb;2.2
-    Description:        LLDB 2.2
-    Version:            2.2.3271982
-    Dependencies:
-        patcher;v4
-
-lldb;2.3
-    Description:        LLDB 2.3
-    Version:            2.3.3614996
-    Dependencies:
-        patcher;v4
-
-ndk-bundle
-    Description:        NDK
-    Version:            14.0.3770861
-
-patcher;v4
-    Description:        SDK Patch Applier v4
-    Version:            1
-
-platform-tools
-    Description:        Android SDK Platform-Tools
-    Version:            25.0.3
-
-platforms;android-10
-    Description:        Android SDK Platform 10
-    Version:            2
-
-platforms;android-11
-    Description:        Android SDK Platform 11
-    Version:            2
-
-platforms;android-12
-    Description:        Android SDK Platform 12
-    Version:            3
-
-platforms;android-13
-    Description:        Android SDK Platform 13
-    Version:            1
-
-platforms;android-14
-    Description:        Android SDK Platform 14
-    Version:            4
-
-platforms;android-15
-    Description:        Android SDK Platform 15
-    Version:            5
-
-platforms;android-16
-    Description:        Android SDK Platform 16
-    Version:            5
-
-platforms;android-17
-    Description:        Android SDK Platform 17
-    Version:            3
-
-platforms;android-18
-    Description:        Android SDK Platform 18
-    Version:            3
-
-platforms;android-19
-    Description:        Android SDK Platform 19
-    Version:            4
-
-platforms;android-20
-    Description:        Android SDK Platform 20
-    Version:            2
-
-platforms;android-21
-    Description:        Android SDK Platform 21
-    Version:            2
-
-platforms;android-22
-    Description:        Android SDK Platform 22
-    Version:            2
-
-platforms;android-23
-    Description:        Android SDK Platform 23
-    Version:            3
-
-platforms;android-24
-    Description:        Android SDK Platform 24
-    Version:            2
-
-platforms;android-25
-    Description:        Android SDK Platform 25
-    Version:            3
-
-platforms;android-7
-    Description:        Android SDK Platform 7
-    Version:            3
-
-platforms;android-8
-    Description:        Android SDK Platform 8
-    Version:            3
-
-platforms;android-9
-    Description:        Android SDK Platform 9
-    Version:            2
-
-sources;android-15
-    Description:        Sources for Android 15
-    Version:            2
-
-sources;android-16
-    Description:        Sources for Android 16
-    Version:            2
-
-sources;android-17
-    Description:        Sources for Android 17
-    Version:            1
-
-sources;android-18
-    Description:        Sources for Android 18
-    Version:            1
-
-sources;android-19
-    Description:        Sources for Android 19
-    Version:            2
-
-sources;android-20
-    Description:        Sources for Android 20
-    Version:            1
-
-sources;android-21
-    Description:        Sources for Android 21
-    Version:            1
-
-sources;android-22
-    Description:        Sources for Android 22
-    Version:            1
-
-sources;android-23
-    Description:        Sources for Android 23
-    Version:            1
-
-sources;android-24
-    Description:        Sources for Android 24
-    Version:            1
-
-sources;android-25
-    Description:        Sources for Android 25
-    Version:            1
-
-system-images;android-10;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            4
-
-system-images;android-10;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            4
-
-system-images;android-10;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            5
-
-system-images;android-10;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            5
-
-system-images;android-14;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            2
-
-system-images;android-15;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            4
-    Dependencies:
-        patcher;v4
-
-system-images;android-15;default;mips
-    Description:        MIPS System Image
-    Version:            1
-
-system-images;android-15;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            4
-
-system-images;android-15;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            5
-
-system-images;android-15;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            5
-
-system-images;android-16;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            4
-
-system-images;android-16;default;mips
-    Description:        MIPS System Image
-    Version:            1
-
-system-images;android-16;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            5
-
-system-images;android-16;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            5
-
-system-images;android-16;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            5
-
-system-images;android-17;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            5
-    Dependencies:
-        patcher;v4
-
-system-images;android-17;default;mips
-    Description:        MIPS System Image
-    Version:            1
-
-system-images;android-17;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            3
-    Dependencies:
-        patcher;v4
-
-system-images;android-17;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            5
-
-system-images;android-17;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            5
-
-system-images;android-18;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            4
-    Dependencies:
-        patcher;v4
-
-system-images;android-18;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            3
-    Dependencies:
-        patcher;v4
-
-system-images;android-18;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            5
-
-system-images;android-18;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            5
-
-system-images;android-19;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            5
-    Dependencies:
-        patcher;v4
-
-system-images;android-19;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            5
-    Dependencies:
-        patcher;v4
-
-system-images;android-19;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            27
-    Dependencies:
-        patcher;v4
-
-system-images;android-19;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            27
-    Dependencies:
-        patcher;v4
-
-system-images;android-21;android-tv;armeabi-v7a
-    Description:        Android TV ARM EABI v7a System Image
-    Version:            3
-
-system-images;android-21;android-tv;x86
-    Description:        Android TV Intel x86 Atom System Image
-    Version:            3
-
-system-images;android-21;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            4
-    Dependencies:
-        patcher;v4
-
-system-images;android-21;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            4
-    Dependencies:
-        patcher;v4
-
-system-images;android-21;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            4
-    Dependencies:
-        patcher;v4
-
-system-images;android-21;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            19
-    Dependencies:
-        patcher;v4
-
-system-images;android-21;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            19
-    Dependencies:
-        patcher;v4
-
-system-images;android-21;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            19
-    Dependencies:
-        patcher;v4
-
-system-images;android-22;android-tv;armeabi-v7a
-    Description:        Android TV ARM EABI v7a System Image
-    Version:            1
-
-system-images;android-22;android-tv;x86
-    Description:        Android TV Intel x86 Atom System Image
-    Version:            3
-
-system-images;android-22;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            2
-    Dependencies:
-        patcher;v4
-
-system-images;android-22;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            5
-    Dependencies:
-        patcher;v4
-
-system-images;android-22;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            5
-    Dependencies:
-        patcher;v4
-
-system-images;android-22;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            13
-    Dependencies:
-        patcher;v4
-
-system-images;android-22;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            13
-    Dependencies:
-        patcher;v4
-
-system-images;android-22;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            13
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;android-tv;armeabi-v7a
-    Description:        Android TV ARM EABI v7a System Image
-    Version:            3
-
-system-images;android-23;android-tv;x86
-    Description:        Android TV Intel x86 Atom System Image
-    Version:            9
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;android-wear;armeabi-v7a
-    Description:        Android Wear ARM EABI v7a System Image
-    Version:            6
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;android-wear;x86
-    Description:        Android Wear Intel x86 Atom System Image
-    Version:            6
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            9
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            9
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            20
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            20
-    Dependencies:
-        patcher;v4
-
-system-images;android-23;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            20
-    Dependencies:
-        patcher;v4
-
-system-images;android-24;android-tv;x86
-    Description:        Android TV Intel x86 Atom System Image
-    Version:            10
-    Dependencies:
-        patcher;v4
-
-system-images;android-24;default;arm64-v8a
-    Description:        ARM 64 v8a System Image
-    Version:            7
-
-system-images;android-24;default;armeabi-v7a
-    Description:        ARM EABI v7a System Image
-    Version:            7
-    Dependencies:
-        patcher;v4
-
-system-images;android-24;default;x86
-    Description:        Intel x86 Atom System Image
-    Version:            7
-
-system-images;android-24;default;x86_64
-    Description:        Intel x86 Atom_64 System Image
-    Version:            7
-    Dependencies:
-        patcher;v4
-
-system-images;android-24;google_apis;arm64-v8a
-    Description:        Google APIs ARM 64 v8a System Image
-    Version:            11
-    Dependencies:
-        patcher;v4
-
-system-images;android-24;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            11
-    Dependencies:
-        patcher;v4
-
-system-images;android-24;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            11
-    Dependencies:
-        patcher;v4
-
-system-images;android-24;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            11
-    Dependencies:
-        patcher;v4
-
-system-images;android-25;android-tv;x86
-    Description:        Android TV Intel x86 Atom System Image
-    Version:            3
-
-system-images;android-25;android-wear;armeabi-v7a
-    Description:        Android Wear ARM EABI v7a System Image
-    Version:            3
-    Dependencies:
-        patcher;v4
-
-system-images;android-25;android-wear;x86
-    Description:        Android Wear Intel x86 Atom System Image
-    Version:            3
-    Dependencies:
-        patcher;v4
-
-system-images;android-25;google_apis;arm64-v8a
-    Description:        Google APIs ARM 64 v8a System Image
-    Version:            4
-
-system-images;android-25;google_apis;armeabi-v7a
-    Description:        Google APIs ARM EABI v7a System Image
-    Version:            4
-
-system-images;android-25;google_apis;x86
-    Description:        Google APIs Intel x86 Atom System Image
-    Version:            4
-
-system-images;android-25;google_apis;x86_64
-    Description:        Google APIs Intel x86 Atom_64 System Image
-    Version:            4
-
-tools
-    Description:        Android SDK Tools
-    Version:            25.3.1
-    Dependencies:
-        emulator
-        platform-tools Revision 20
-
-Available Updates:
---------------------------------------
-extras;android;m2repository
-    Local Version:  44.0.0
-    Remote Version: 45.0.0
-extras;google;google_play_services
-    Local Version:  38.0.0
-    Remote Version: 39
-system-images;android-19;google_apis;x86
-    Local Version:  26
-    Remote Version: 27
-system-images;android-21;google_apis;x86_64
-    Local Version:  18
-    Remote Version: 19
-system-images;android-22;google_apis;x86_64
-    Local Version:  12
-    Remote Version: 13
-system-images;android-23;google_apis;x86_64
-    Local Version:  19
-    Remote Version: 20
-system-images;android-24;google_apis;x86_64
-    Local Version:  10
-    Remote Version: 11
-system-images;android-25;google_apis;x86_64
-    Local Version:  3
-    Remote Version: 4
-done

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/unit/android_sdk.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/android_sdk.spec.js b/spec/unit/android_sdk.spec.js
index a796a98..b2117af 100644
--- a/spec/unit/android_sdk.spec.js
+++ b/spec/unit/android_sdk.spec.js
@@ -29,7 +29,7 @@ describe("android_sdk", function () {
         it("should parse and return results from `android list targets` command", function(done) {
             var deferred = Q.defer();
             spyOn(superspawn, "spawn").and.returnValue(deferred.promise);
-            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "android_list_targets.txt"), "utf-8"));
+            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "sdk25.2-android_list_targets.txt"), "utf-8"));
             return android_sdk.list_targets_with_android()
             .then(function(list) {
                 [ "Google Inc.:Google APIs:23",
@@ -53,26 +53,14 @@ describe("android_sdk", function () {
             });
         });
     });
-    describe("list_targets_with_sdkmanager", function() {
-        it("should parse and return results from `sdkmanager --list` command", function(done) {
+    describe("list_targets_with_avdmanager", function() {
+        it("should parse and return results from `avdmanager list target` command", function(done) {
             var deferred = Q.defer();
             spyOn(superspawn, "spawn").and.returnValue(deferred.promise);
-            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "sdkmanager_list.txt"), "utf-8"));
-            return android_sdk.list_targets_with_sdkmanager()
+            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "sdk25.3-avdmanager_list_target.txt"), "utf-8"));
+            return android_sdk.list_targets_with_avdmanager()
             .then(function(list) {
-                [ "Google Inc.:Google APIs:19",
-                  "Google Inc.:Google APIs:21",
-                  "Google Inc.:Google APIs:22",
-                  "Google Inc.:Google APIs:23",
-                  "Google Inc.:Google APIs:24",
-                  "android-19",
-                  "android-21",
-                  "android-22",
-                  "android-23",
-                  "android-24",
-                  "android-25" ].forEach(function(target) {
-                    expect(list).toContain(target);
-                  });
+                expect(list).toContain("android-25");
             }).fail(function(err) {
                 console.log(err);
                 expect(err).toBeUndefined();
@@ -82,25 +70,24 @@ describe("android_sdk", function () {
         });
     });
     describe("list_targets", function() {
-        it("should parse Android SDK installed target information with `android` command first", function() {
+        it("should parse Android SDK installed target information with `avdmanager` command first", function() {
             var deferred = Q.defer();
-            var android_spy = spyOn(android_sdk, "list_targets_with_android").and.returnValue(deferred.promise);
+            var avdmanager_spy = spyOn(android_sdk, "list_targets_with_avdmanager").and.returnValue(deferred.promise);
             android_sdk.list_targets();
-            expect(android_spy).toHaveBeenCalled();
+            expect(avdmanager_spy).toHaveBeenCalled();
         });
-        it("should parse Android SDK installed target information with `avdmanager` command if list_targets_with_android fails due to `android` command being obsolete", function(done) {
+        it("should parse Android SDK installed target information with `android` command if list_targets_with_avdmanager fails with ENOENT", function(done) {
             var deferred = Q.defer();
-            spyOn(android_sdk, "list_targets_with_android").and.returnValue(deferred.promise);
+            spyOn(android_sdk, "list_targets_with_avdmanager").and.returnValue(deferred.promise);
             deferred.reject({
-                code: 1,
-                stdout: "The android command is no longer available."
+                code: "ENOENT"
             });
             var twoferred = Q.defer();
             twoferred.resolve(["target1"]);
-            var sdkmanager_spy = spyOn(android_sdk, "list_targets_with_sdkmanager").and.returnValue(twoferred.promise);
+            var avdmanager_spy = spyOn(android_sdk, "list_targets_with_android").and.returnValue(twoferred.promise);
             return android_sdk.list_targets()
             .then(function(targets) {
-                expect(sdkmanager_spy).toHaveBeenCalled();
+                expect(avdmanager_spy).toHaveBeenCalled();
                 expect(targets[0]).toEqual("target1");
                 done();
             });

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/46e47a3c/spec/unit/emulator.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/emulator.spec.js b/spec/unit/emulator.spec.js
index 42f6938..c9298ea 100644
--- a/spec/unit/emulator.spec.js
+++ b/spec/unit/emulator.spec.js
@@ -28,7 +28,7 @@ describe("emulator", function () {
         it("should properly parse details of SDK Tools 25.3.1 `avdmanager` output", function(done) {
             var deferred = Q.defer();
             spyOn(cc.superspawn, "spawn").and.returnValue(deferred.promise);
-            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "avdmanager_list_avd.txt"), "utf-8"));
+            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "sdk25.3-avdmanager_list_avd.txt"), "utf-8"));
             return emu.list_images_using_avdmanager()
             .then(function(list) {
                 expect(list).toBeDefined();
@@ -47,7 +47,7 @@ describe("emulator", function () {
         it("should properly parse details of SDK Tools pre-25.3.1 `android list avd` output", function(done) {
             var deferred = Q.defer();
             spyOn(cc.superspawn, "spawn").and.returnValue(deferred.promise);
-            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "android_list_avd.txt"), "utf-8"));
+            deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "sdk25.2-android_list_avd.txt"), "utf-8"));
             return emu.list_images_using_android()
             .then(function(list) {
                 expect(list).toBeDefined();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[08/10] android commit: Set version to 6.2.3

Posted by fi...@apache.org.
Set version to 6.2.3


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/ce67804b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/ce67804b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/ce67804b

Branch: refs/heads/6.2.x
Commit: ce67804b65398051189fced5d7abc6f84c2a2d75
Parents: f3ded26
Author: filmaj <ma...@gmail.com>
Authored: Tue May 2 16:03:36 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 16:03:36 2017 -0700

----------------------------------------------------------------------
 VERSION                | 2 +-
 framework/build.gradle | 6 +++---
 package.json           | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/ce67804b/VERSION
----------------------------------------------------------------------
diff --git a/VERSION b/VERSION
index ca06394..bee9433 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-6.2.2
+6.2.3

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/ce67804b/framework/build.gradle
----------------------------------------------------------------------
diff --git a/framework/build.gradle b/framework/build.gradle
index 9baee03..da3b45b 100644
--- a/framework/build.gradle
+++ b/framework/build.gradle
@@ -40,7 +40,7 @@ apply plugin: 'com.github.dcendents.android-maven'
 apply plugin: 'com.jfrog.bintray'
 
 group = 'org.apache.cordova'
-version = '6.2.4-dev'
+version = '6.2.3'
 
 android {
     compileSdkVersion cdvCompileSdkVersion
@@ -127,9 +127,9 @@ bintray {
         licenses = ['Apache-2.0']
         labels = ['android', 'cordova', 'phonegap']
         version {
-            name = '6.2.4-dev'
+            name = '6.2.3'
             released  = new Date()
-            vcsTag = '6.2.4-dev'
+            vcsTag = '6.2.3'
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/ce67804b/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 9711bb3..84531ce 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cordova-android",
-  "version": "6.2.4-dev",
+  "version": "6.2.3",
   "description": "cordova-android release",
   "bin": {
     "create": "bin/create"


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[09/10] android commit: Update JS snapshot to version 6.2.3 (via coho)

Posted by fi...@apache.org.
Update JS snapshot to version 6.2.3 (via coho)


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/211a7fc6
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/211a7fc6
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/211a7fc6

Branch: refs/heads/6.2.x
Commit: 211a7fc6a82cc1759980b890f793c4b4151c0de7
Parents: ce67804
Author: filmaj <ma...@gmail.com>
Authored: Tue May 2 16:19:19 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 16:19:19 2017 -0700

----------------------------------------------------------------------
 bin/templates/project/assets/www/cordova.js | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/211a7fc6/bin/templates/project/assets/www/cordova.js
----------------------------------------------------------------------
diff --git a/bin/templates/project/assets/www/cordova.js b/bin/templates/project/assets/www/cordova.js
index f6c4c05..bda7c3e 100644
--- a/bin/templates/project/assets/www/cordova.js
+++ b/bin/templates/project/assets/www/cordova.js
@@ -1,5 +1,5 @@
 // Platform: android
-// 7c5fcc5a5adfbf3fb8ceaf36fbdd4bd970bd9c20
+// 7ef9f9c03167a4dde4372d869472241b6816fee9
 /*
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
@@ -19,7 +19,7 @@
  under the License.
 */
 ;(function() {
-var PLATFORM_VERSION_BUILD_LABEL = '6.2.2';
+var PLATFORM_VERSION_BUILD_LABEL = '6.2.3';
 // file: src/scripts/require.js
 
 /*jshint -W079 */
@@ -330,7 +330,7 @@ module.exports = cordova;
 
 });
 
-// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/android/nativeapiprovider.js
+// file: /Users/maj/src/cordova-android/cordova-js-src/android/nativeapiprovider.js
 define("cordova/android/nativeapiprovider", function(require, exports, module) {
 
 /**
@@ -353,7 +353,7 @@ module.exports = {
 
 });
 
-// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/android/promptbasednativeapi.js
+// file: /Users/maj/src/cordova-android/cordova-js-src/android/promptbasednativeapi.js
 define("cordova/android/promptbasednativeapi", function(require, exports, module) {
 
 /**
@@ -886,7 +886,7 @@ module.exports = channel;
 
 });
 
-// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/exec.js
+// file: /Users/maj/src/cordova-android/cordova-js-src/exec.js
 define("cordova/exec", function(require, exports, module) {
 
 /**
@@ -1649,7 +1649,7 @@ exports.reset();
 
 });
 
-// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/platform.js
+// file: /Users/maj/src/cordova-android/cordova-js-src/platform.js
 define("cordova/platform", function(require, exports, module) {
 
 // The last resume event that was received that had the result of a plugin call.
@@ -1759,7 +1759,7 @@ function onMessageFromNative(msg) {
 
 });
 
-// file: /Users/steveng/repo/cordova/cordova-android/cordova-js-src/plugin/android/app.js
+// file: /Users/maj/src/cordova-android/cordova-js-src/plugin/android/app.js
 define("cordova/plugin/android/app", function(require, exports, module) {
 
 var exec = require('cordova/exec');


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[07/10] android commit: CB-12746: updated release notes for impending 6.2.3 release, since some of the reported changes did not make it into 6.2.2.

Posted by fi...@apache.org.
CB-12746: updated release notes for impending 6.2.3 release, since some of the reported changes did not make it into 6.2.2.


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/f3ded26e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/f3ded26e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/f3ded26e

Branch: refs/heads/6.2.x
Commit: f3ded26e35dd107d82ccbdbd12f09301063d5126
Parents: 4b688f8
Author: filmaj <ma...@gmail.com>
Authored: Tue May 2 15:24:06 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 16:01:31 2017 -0700

----------------------------------------------------------------------
 RELEASENOTES.md | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/f3ded26e/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index fc41f5b..f35713b 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -20,6 +20,14 @@
 -->
 ## Release Notes for Cordova (Android) ##
 
+### 6.2.3 (May 2, 2017)
+* [CB-12640](https://issues.apache.org/jira/browse/CB-12640) better handling of unrecognized Android SDK commands on **Windows**.
+* [CB-12640](https://issues.apache.org/jira/browse/CB-12640) flipped avd parsing logic so that it always tries to use avdmanager to retrieve avds first, then falls back to android command if avdmanager cannot be found (and errors with ENOENT). updated tests - and added explicit tests to ensure to shell out to singular forms of sub-commands when executing `android`
+* [CB-12640](https://issues.apache.org/jira/browse/CB-12640) support for android sdk tools 26.0.1.
+
+### 6.2.2 (Apr 24, 2017)
+* [CB-12697](https://issues.apache.org/jira/browse/CB-12697) Updated checked-in `node_modules`
+
 ### 6.2.1 (Apr 02, 2017)
 * [CB-12621](https://issues.apache.org/jira/browse/CB-12621) reverted elementtree dep to 0.1.6
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[06/10] android commit: CB-12746: decrement working dev version on master to 6.2.4-dev, to align with impending patch release.

Posted by fi...@apache.org.
CB-12746: decrement working dev version on master to 6.2.4-dev, to align with impending patch release.


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/4b688f87
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/4b688f87
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/4b688f87

Branch: refs/heads/6.2.x
Commit: 4b688f871549de7e741583c60974f543f972fd9b
Parents: e3b3bcd
Author: filmaj <ma...@gmail.com>
Authored: Tue May 2 15:10:29 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 16:00:43 2017 -0700

----------------------------------------------------------------------
 framework/build.gradle | 6 +++---
 package.json           | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/4b688f87/framework/build.gradle
----------------------------------------------------------------------
diff --git a/framework/build.gradle b/framework/build.gradle
index 7c56caa..9baee03 100644
--- a/framework/build.gradle
+++ b/framework/build.gradle
@@ -40,7 +40,7 @@ apply plugin: 'com.github.dcendents.android-maven'
 apply plugin: 'com.jfrog.bintray'
 
 group = 'org.apache.cordova'
-version = '6.2.2'
+version = '6.2.4-dev'
 
 android {
     compileSdkVersion cdvCompileSdkVersion
@@ -127,9 +127,9 @@ bintray {
         licenses = ['Apache-2.0']
         labels = ['android', 'cordova', 'phonegap']
         version {
-            name = '6.2.2'
+            name = '6.2.4-dev'
             released  = new Date()
-            vcsTag = '6.2.2'
+            vcsTag = '6.2.4-dev'
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/4b688f87/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 8e7504d..9711bb3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cordova-android",
-  "version": "6.2.2",
+  "version": "6.2.4-dev",
   "description": "cordova-android release",
   "bin": {
     "create": "bin/create"


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[05/10] android commit: CB-12015: initial-scale values less than 1.0 are ignored on Android

Posted by fi...@apache.org.
CB-12015: initial-scale values less than 1.0 are ignored on Android

This closes #376


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/e3b3bcd7
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/e3b3bcd7
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/e3b3bcd7

Branch: refs/heads/6.2.x
Commit: e3b3bcd75fbc2070ad5d80adda98840254a13c90
Parents: 5a75903
Author: Simon MacDonald <si...@gmail.com>
Authored: Thu Apr 20 20:41:54 2017 -0400
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 15:59:34 2017 -0700

----------------------------------------------------------------------
 .../src/org/apache/cordova/engine/SystemWebViewEngine.java      | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/e3b3bcd7/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java b/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java
index 0fa0276..3be7d94 100755
--- a/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java
+++ b/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java
@@ -210,6 +210,11 @@ public class SystemWebViewEngine implements CordovaWebViewEngine {
         settings.setAppCachePath(databasePath);
         settings.setAppCacheEnabled(true);
 
+        // Enable scaling
+        // Fix for CB-12015
+        settings.setUseWideViewPort(true);
+        settings.setLoadWithOverviewMode(true);
+
         // Fix for CB-1405
         // Google issue 4641
         String defaultUserAgent = settings.getUserAgentString();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[02/10] android commit: CB-12640: flipped avd parsing logic so that it always tries to use avdmanager to retrieve avds first, then falls back to android command if avdmanager cannot be found (and errors with ENOENT). updated tests - and added explicit te

Posted by fi...@apache.org.
CB-12640: flipped avd parsing logic so that it always tries to use avdmanager to retrieve avds first, then falls back to android command if avdmanager cannot be found (and errors with ENOENT). updated tests - and added explicit tests to ensure to shell out to singular forms of sub-commands when executing `android`


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/bd94735b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/bd94735b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/bd94735b

Branch: refs/heads/6.2.x
Commit: bd94735ba2663da0ff581f6b548e6821f2c17646
Parents: 46e47a3
Author: filmaj <ma...@gmail.com>
Authored: Thu Apr 6 13:48:58 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 15:59:08 2017 -0700

----------------------------------------------------------------------
 bin/templates/cordova/lib/emulator.js | 16 +++++++------
 spec/unit/android_sdk.spec.js         |  6 +++++
 spec/unit/emulator.spec.js            | 38 +++++++++++++++++-------------
 3 files changed, 36 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/bd94735b/bin/templates/cordova/lib/emulator.js
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/emulator.js b/bin/templates/cordova/lib/emulator.js
index 2f36b9a..c60dcb5 100644
--- a/bin/templates/cordova/lib/emulator.js
+++ b/bin/templates/cordova/lib/emulator.js
@@ -116,7 +116,7 @@ module.exports.list_images_using_avdmanager = function () {
 };
 
 module.exports.list_images_using_android = function() {
-    return superspawn.spawn('android', ['list', 'avds'])
+    return superspawn.spawn('android', ['list', 'avd'])
     .then(function(output) {
         var response = output.split('\n');
         var emulator_list = [];
@@ -171,20 +171,20 @@ module.exports.list_images_using_android = function() {
    }
  */
 module.exports.list_images = function() {
-    if (forgivingWhichSync('android')) {
-        return module.exports.list_images_using_android()
+    if (forgivingWhichSync('avdmanager')) {
+        return module.exports.list_images_using_avdmanager()
         .catch(function(err) {
             // try to use `avdmanager` in case `android` reports it is no longer available.
             // this likely means the target machine is using a newer version of
             // the android sdk, and possibly `avdmanager` is available.
-            if (err.code == 1 && err.stdout.indexOf('android command is no longer available')) {
-                return module.exports.list_images_using_avdmanager();
+            if (err && err.code == 'ENOENT') {
+                return module.exports.list_images_using_android();
             } else {
                 throw err;
             }
         });
-    } else if (forgivingWhichSync('avdmanager')) {
-        return module.exports.list_images_using_avdmanager();
+    } else if (forgivingWhichSync('android')) {
+        return module.exports.list_images_using_android();
     } else {
         return Q().then(function() {
             throw new CordovaError('Could not find either `android` or `avdmanager` on your $PATH! Are you sure the Android SDK is installed and available?');
@@ -228,6 +228,7 @@ module.exports.list_started = function() {
 };
 
 // Returns a promise.
+// TODO: we should remove this, there's a more robust method under android_sdk.js
 module.exports.list_targets = function() {
     return superspawn.spawn('android', ['list', 'targets'], {cwd: os.tmpdir()})
     .then(function(output) {
@@ -399,6 +400,7 @@ module.exports.create_image = function(name, target) {
         });
     } else {
         console.log('WARNING : Project target not found, creating avd with a different target but the project may fail to install.');
+        // TODO: there's a more robust method for finding targets in android_sdk.js
         return superspawn.spawn('android', ['create', 'avd', '--name', name, '--target', this.list_targets()[0]])
         .then(function() {
             // TODO: This seems like another error case, even though it always happens.

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/bd94735b/spec/unit/android_sdk.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/android_sdk.spec.js b/spec/unit/android_sdk.spec.js
index b2117af..9434443 100644
--- a/spec/unit/android_sdk.spec.js
+++ b/spec/unit/android_sdk.spec.js
@@ -26,6 +26,12 @@ var Q = require("q");
 
 describe("android_sdk", function () {
     describe("list_targets_with_android", function() {
+        it("should invoke `android` with the `list target` command and _not_ the `list targets` command, as the plural form is not supported in some Android SDK Tools versions", function() {
+            var deferred = Q.defer();
+            spyOn(superspawn, "spawn").and.returnValue(deferred.promise);
+            android_sdk.list_targets_with_android();
+            expect(superspawn.spawn).toHaveBeenCalledWith("android", ["list", "target"]);
+        });
         it("should parse and return results from `android list targets` command", function(done) {
             var deferred = Q.defer();
             spyOn(superspawn, "spawn").and.returnValue(deferred.promise);

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/bd94735b/spec/unit/emulator.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/emulator.spec.js b/spec/unit/emulator.spec.js
index c9298ea..8812255 100644
--- a/spec/unit/emulator.spec.js
+++ b/spec/unit/emulator.spec.js
@@ -16,8 +16,8 @@
     specific language governing permissions and limitations
     under the License.
 */
-var cc = require("cordova-common");
 var emu = require("../../bin/templates/cordova/lib/emulator");
+var superspawn = require("cordova-common").superspawn;
 var Q = require("q");
 var fs = require("fs");
 var path = require("path");
@@ -27,7 +27,7 @@ describe("emulator", function () {
     describe("list_images_using_avdmanager", function() {
         it("should properly parse details of SDK Tools 25.3.1 `avdmanager` output", function(done) {
             var deferred = Q.defer();
-            spyOn(cc.superspawn, "spawn").and.returnValue(deferred.promise);
+            spyOn(superspawn, "spawn").and.returnValue(deferred.promise);
             deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "sdk25.3-avdmanager_list_avd.txt"), "utf-8"));
             return emu.list_images_using_avdmanager()
             .then(function(list) {
@@ -44,9 +44,15 @@ describe("emulator", function () {
         });
     });
     describe("list_images_using_android", function() {
+        it("should invoke `android` with the `list avd` command and _not_ the `list avds` command, as the plural form is not supported in some Android SDK Tools versions", function() {
+            var deferred = Q.defer();
+            spyOn(superspawn, "spawn").and.returnValue(deferred.promise);
+            emu.list_images_using_android();
+            expect(superspawn.spawn).toHaveBeenCalledWith("android", ["list", "avd"]);
+        });
         it("should properly parse details of SDK Tools pre-25.3.1 `android list avd` output", function(done) {
             var deferred = Q.defer();
-            spyOn(cc.superspawn, "spawn").and.returnValue(deferred.promise);
+            spyOn(superspawn, "spawn").and.returnValue(deferred.promise);
             deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "sdk25.2-android_list_avd.txt"), "utf-8"));
             return emu.list_images_using_android()
             .then(function(list) {
@@ -70,40 +76,38 @@ describe("emulator", function () {
                 return cmd;
             });
         });
-        it("should try to parse AVD information using `android`", function() {
+        it("should try to parse AVD information using `avdmanager` first", function() {
             spyOn(shelljs, "which").and.callFake(function(cmd) {
-                if (cmd == "android") {
+                if (cmd == "avdmanager") {
                     return true;
                 } else {
                     return false;
                 }
             });
-            var android_spy = spyOn(emu, "list_images_using_android").and.returnValue({catch:function(){}});
+            var avdmanager_spy = spyOn(emu, "list_images_using_avdmanager").and.returnValue({catch:function(){}});
             emu.list_images();
-            expect(android_spy).toHaveBeenCalled();
+            expect(avdmanager_spy).toHaveBeenCalled();
         });
-        it("should catch if `android` exits with non-zero code and specific stdout, and delegate to `avdmanager` if it can find it", function() {
+        it("should catch if `avdmanager` exits with non-zero code, and delegate to `android` if it can find it", function() {
             spyOn(shelljs, "which").and.callFake(function(cmd) {
-                if (cmd == "android") {
+                if (cmd == "avdmanager") {
                     return true;
                 } else {
                     return false;
                 }
             });
-            var avdmanager_spy = spyOn(emu, "list_images_using_avdmanager");
-            // Fake out the old promise to feign a failed `android` command
-            spyOn(emu, "list_images_using_android").and.returnValue({
+            spyOn(emu, "list_images_using_avdmanager").and.returnValue({
                 catch:function(cb) {
                     cb({
-                        code: 1,
-                        stdout: ["The android command is no longer available.",
-                                "For manual SDK and AVD management, please use Android Studio.",
-                                "For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager"].join("\n")
+                        code: "ENOENT"
                     });
                 }
             });
+
+            // Fake out the old promise to feign a failed `android` command
+            var android_spy = spyOn(emu, "list_images_using_android");
             emu.list_images();
-            expect(avdmanager_spy).toHaveBeenCalled();
+            expect(android_spy).toHaveBeenCalled();
         });
         it("should throw an error if neither `avdmanager` nor `android` are able to be found", function(done) {
             spyOn(shelljs, "which").and.returnValue(false);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[03/10] android commit: CB-12640: better handling of unrecognized commands on windows. removed error checking in emulator image listing when shelling out, as we already defensively dont shell out if the program is not on the PATH / not recognized. added

Posted by fi...@apache.org.
CB-12640: better handling of unrecognized commands on windows. removed error checking in emulator image listing when shelling out, as we already defensively dont shell out if the program is not on the PATH / not recognized. added additional test for windows unrecognized command errors for target listing. fixed up spying in a test.


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/af31c83e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/af31c83e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/af31c83e

Branch: refs/heads/6.2.x
Commit: af31c83ec1c0b4b6b13049e0c99a260bbe5139c0
Parents: bd94735
Author: filmaj <ma...@gmail.com>
Authored: Thu Apr 6 15:08:22 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 15:59:16 2017 -0700

----------------------------------------------------------------------
 bin/templates/cordova/lib/android_sdk.js |  4 +---
 bin/templates/cordova/lib/emulator.js    | 12 +-----------
 spec/unit/android_sdk.spec.js            | 19 ++++++++++++++++++-
 spec/unit/emulator.spec.js               | 15 +++------------
 4 files changed, 23 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/af31c83e/bin/templates/cordova/lib/android_sdk.js
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/android_sdk.js b/bin/templates/cordova/lib/android_sdk.js
index 79eeb1a..a1a806a 100755
--- a/bin/templates/cordova/lib/android_sdk.js
+++ b/bin/templates/cordova/lib/android_sdk.js
@@ -1,5 +1,3 @@
-
-
 /*
        Licensed to the Apache Software Foundation (ASF) under one
        or more contributor license agreements.  See the NOTICE file
@@ -95,7 +93,7 @@ module.exports.list_targets = function() {
         // If there's an error, like avdmanager could not be found, we can try
         // as a last resort, to run `android`, in case this is a super old
         // SDK installation.
-        if (err && err.code == 'ENOENT') {
+        if (err && (err.code == 'ENOENT' || (err.stderr && err.stderr.match(/not recognized/)))) {
             return module.exports.list_targets_with_android();
         } else throw err;
     })

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/af31c83e/bin/templates/cordova/lib/emulator.js
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/emulator.js b/bin/templates/cordova/lib/emulator.js
index c60dcb5..22209aa 100644
--- a/bin/templates/cordova/lib/emulator.js
+++ b/bin/templates/cordova/lib/emulator.js
@@ -172,17 +172,7 @@ module.exports.list_images_using_android = function() {
  */
 module.exports.list_images = function() {
     if (forgivingWhichSync('avdmanager')) {
-        return module.exports.list_images_using_avdmanager()
-        .catch(function(err) {
-            // try to use `avdmanager` in case `android` reports it is no longer available.
-            // this likely means the target machine is using a newer version of
-            // the android sdk, and possibly `avdmanager` is available.
-            if (err && err.code == 'ENOENT') {
-                return module.exports.list_images_using_android();
-            } else {
-                throw err;
-            }
-        });
+        return module.exports.list_images_using_avdmanager();
     } else if (forgivingWhichSync('android')) {
         return module.exports.list_images_using_android();
     } else {

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/af31c83e/spec/unit/android_sdk.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/android_sdk.spec.js b/spec/unit/android_sdk.spec.js
index 9434443..04322ce 100644
--- a/spec/unit/android_sdk.spec.js
+++ b/spec/unit/android_sdk.spec.js
@@ -98,9 +98,26 @@ describe("android_sdk", function () {
                 done();
             });
         });
+        it("should parse Android SDK installed target information with `android` command if list_targets_with_avdmanager fails with not-recognized error (Windows)", function(done) {
+            var deferred = Q.defer();
+            spyOn(android_sdk, "list_targets_with_avdmanager").and.returnValue(deferred.promise);
+            deferred.reject({
+                code: 1,
+                stderr: "'avdmanager' is not recognized as an internal or external commmand,\r\noperable program or batch file.\r\n"
+            });
+            var twoferred = Q.defer();
+            twoferred.resolve(["target1"]);
+            var avdmanager_spy = spyOn(android_sdk, "list_targets_with_android").and.returnValue(twoferred.promise);
+            return android_sdk.list_targets()
+            .then(function(targets) {
+                expect(avdmanager_spy).toHaveBeenCalled();
+                expect(targets[0]).toEqual("target1");
+                done();
+            });
+        });
         it("should throw an error if no Android targets were found.", function(done) {
             var deferred = Q.defer();
-            spyOn(android_sdk, "list_targets_with_android").and.returnValue(deferred.promise);
+            spyOn(android_sdk, "list_targets_with_avdmanager").and.returnValue(deferred.promise);
             deferred.resolve([]);
             return android_sdk.list_targets()
             .then(function(targets) {

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/af31c83e/spec/unit/emulator.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/emulator.spec.js b/spec/unit/emulator.spec.js
index 8812255..8aef5ef 100644
--- a/spec/unit/emulator.spec.js
+++ b/spec/unit/emulator.spec.js
@@ -88,23 +88,14 @@ describe("emulator", function () {
             emu.list_images();
             expect(avdmanager_spy).toHaveBeenCalled();
         });
-        it("should catch if `avdmanager` exits with non-zero code, and delegate to `android` if it can find it", function() {
+        it("should delegate to `android` if `avdmanager` cant be found and `android` can", function() {
             spyOn(shelljs, "which").and.callFake(function(cmd) {
                 if (cmd == "avdmanager") {
-                    return true;
-                } else {
                     return false;
+                } else {
+                    return true;
                 }
             });
-            spyOn(emu, "list_images_using_avdmanager").and.returnValue({
-                catch:function(cb) {
-                    cb({
-                        code: "ENOENT"
-                    });
-                }
-            });
-
-            // Fake out the old promise to feign a failed `android` command
             var android_spy = spyOn(emu, "list_images_using_android");
             emu.list_images();
             expect(android_spy).toHaveBeenCalled();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[04/10] android commit: CB-12697 Updated checked-in node_modules

Posted by fi...@apache.org.
CB-12697 Updated checked-in node_modules


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/5a759039
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/5a759039
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/5a759039

Branch: refs/heads/6.2.x
Commit: 5a7590397d9a69fabe2452b6033a9b1bf30128c4
Parents: af31c83
Author: Steve Gill <st...@gmail.com>
Authored: Mon Apr 24 21:56:28 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 15:59:23 2017 -0700

----------------------------------------------------------------------
 node_modules/big-integer/BigInteger.js          | 50 +++++++++++++-------
 node_modules/big-integer/BigInteger.min.js      |  2 +-
 node_modules/big-integer/README.md              |  7 +++
 node_modules/big-integer/package.json           | 20 ++++----
 node_modules/brace-expansion/README.md          |  1 +
 node_modules/brace-expansion/index.js           |  2 +-
 node_modules/brace-expansion/package.json       | 24 +++++-----
 node_modules/cordova-common/RELEASENOTES.md     |  7 +++
 node_modules/cordova-common/package.json        | 27 ++++++-----
 .../src/ConfigParser/ConfigParser.js            | 10 ++++
 .../cordova-common/src/PluginInfo/PluginInfo.js |  2 +
 node_modules/cordova-common/src/events.js       |  1 +
 12 files changed, 101 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/big-integer/BigInteger.js
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/BigInteger.js b/node_modules/big-integer/BigInteger.js
index aa270d7..9e5cee8 100644
--- a/node_modules/big-integer/BigInteger.js
+++ b/node_modules/big-integer/BigInteger.js
@@ -118,7 +118,7 @@ var bigInt = (function (undefined) {
     }
 
     BigInteger.prototype.add = function (v) {
-        var value, n = parseValue(v);
+        var n = parseValue(v);
         if (this.sign !== n.sign) {
             return this.subtract(n.negate());
         }
@@ -177,7 +177,7 @@ var bigInt = (function (undefined) {
     }
 
     function subtractAny(a, b, sign) {
-        var value, isSmall;
+        var value;
         if (compareAbs(a, b) >= 0) {
             value = subtract(a,b);
         } else {
@@ -326,7 +326,7 @@ var bigInt = (function (undefined) {
     }
 
     BigInteger.prototype.multiply = function (v) {
-        var value, n = parseValue(v),
+        var n = parseValue(v),
             a = this.value, b = n.value,
             sign = this.sign !== n.sign,
             abs;
@@ -826,23 +826,24 @@ var bigInt = (function (undefined) {
     BigInteger.prototype.modInv = function (n) {
         var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;
         while (!newR.equals(bigInt.zero)) {
-        	q = r.divide(newR);
-          lastT = t;
-          lastR = r;
-          t = newT;
-          r = newR;
-          newT = lastT.subtract(q.multiply(newT));
-          newR = lastR.subtract(q.multiply(newR));
+            q = r.divide(newR);
+            lastT = t;
+            lastR = r;
+            t = newT;
+            r = newR;
+            newT = lastT.subtract(q.multiply(newT));
+            newR = lastR.subtract(q.multiply(newR));
         }
         if (!r.equals(1)) throw new Error(this.toString() + " and " + n.toString() + " are not co-prime");
         if (t.compare(0) === -1) {
-        	t = t.add(n);
+            t = t.add(n);
         }
         if (this.isNegative()) {
             return t.negate();
         }
         return t;
-    }
+    };
+
     SmallInteger.prototype.modInv = BigInteger.prototype.modInv;
 
     BigInteger.prototype.next = function () {
@@ -1036,8 +1037,7 @@ var bigInt = (function (undefined) {
         return low.add(typeof result === "number" ? new SmallInteger(result) : new BigInteger(result, false));
     }
     var parseBase = function (text, base) {
-        var val = Integer[0], pow = Integer[1],
-            length = text.length;
+        var length = text.length;
         if (2 <= base && base <= 36) {
             if (length <= LOG_MAX_INT / Math.log(base)) {
                 return new SmallInteger(parseInt(text, base));
@@ -1059,13 +1059,17 @@ var bigInt = (function (undefined) {
             }
             else throw new Error(c + " is not a valid character");
         }
-        digits.reverse();
-        for (i = 0; i < digits.length; i++) {
+        return parseBaseFromArray(digits, base, isNegative);
+    };
+
+    function parseBaseFromArray(digits, base, isNegative) {
+        var val = Integer[0], pow = Integer[1], i;
+        for (i = digits.length - 1; i >= 0; i--) {
             val = val.add(digits[i].times(pow));
             pow = pow.times(base);
         }
         return isNegative ? val.negate() : val;
-    };
+    }
 
     function stringify(digit) {
         var v = digit.value;
@@ -1209,6 +1213,11 @@ var bigInt = (function (undefined) {
     Integer.lcm = lcm;
     Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger; };
     Integer.randBetween = randBetween;
+
+    Integer.fromArray = function (digits, base, isNegative) {
+        return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);
+    };
+
     return Integer;
 })();
 
@@ -1216,3 +1225,10 @@ var bigInt = (function (undefined) {
 if (typeof module !== "undefined" && module.hasOwnProperty("exports")) {
     module.exports = bigInt;
 }
+
+//amd check
+if ( typeof define === "function" && define.amd ) {  
+  define( "big-integer", [], function() {
+    return bigInt;
+  });
+}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/big-integer/BigInteger.min.js
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/BigInteger.min.js b/node_modules/big-integer/BigInteger.min.js
index 54f5d2b..83d7320 100644
--- a/node_modules/big-integer/BigInteger.min.js
+++ b/node_modules/big-integer/BigInteger.min.js
@@ -1 +1 @@
-var bigInt=function(undefined){"use strict";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),LOG_MAX_INT=Math.log(MAX_INT);function Integer(v,radix){if(typeof v==="undefined")return Integer[0];if(typeof radix!=="undefined")return+radix===10?parseValue(v):parseBase(v,radix);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(value){this.value=value;this.sign=value<0;this.isSmall=true}SmallInteger.prototype=Object.create(Integer.prototype);function isPrecise(n){return-MAX_INT<n&&n<MAX_INT}function smallToArray(n){if(n<1e7)return[n];if(n<1e14)return[n%1e7,Math.floor(n/1e7)];return[n%1e7,Math.floor(n/1e7)%1e7,Math.floor(n/1e14)]}function arrayToSmall(arr){trim(arr);var length=arr.length;if(length<4&&compareAbs(arr,MAX_INT_ARR)<0){switch(length){case 0:return 0;case 1:return arr[0];case 2:return arr[0]+arr[1]*BASE;default:return
  arr[0]+(arr[1]+arr[2]*BASE)*BASE}}return arr}function trim(v){var i=v.length;while(v[--i]===0);v.length=i+1}function createArray(length){var x=new Array(length);var i=-1;while(++i<length){x[i]=0}return x}function truncate(n){if(n>0)return Math.floor(n);return Math.ceil(n)}function add(a,b){var l_a=a.length,l_b=b.length,r=new Array(l_a),carry=0,base=BASE,sum,i;for(i=0;i<l_b;i++){sum=a[i]+b[i]+carry;carry=sum>=base?1:0;r[i]=sum-carry*base}while(i<l_a){sum=a[i]+carry;carry=sum===base?1:0;r[i++]=sum-carry*base}if(carry>0)r.push(carry);return r}function addAny(a,b){if(a.length>=b.length)return add(a,b);return add(b,a)}function addSmall(a,carry){var l=a.length,r=new Array(l),base=BASE,sum,i;for(i=0;i<l;i++){sum=a[i]-base+carry;carry=Math.floor(sum/base);r[i]=sum-carry*base;carry+=1}while(carry>0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}BigInteger.prototype.add=function(v){var value,n=parseValue(v);if(this.sign!==n.sign){return this.subtract(n.negate())}var a=this.value,b=
 n.value;if(n.isSmall){return new BigInteger(addSmall(a,Math.abs(b)),this.sign)}return new BigInteger(addAny(a,b),this.sign)};BigInteger.prototype.plus=BigInteger.prototype.add;SmallInteger.prototype.add=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.subtract(n.negate())}var b=n.value;if(n.isSmall){if(isPrecise(a+b))return new SmallInteger(a+b);b=smallToArray(Math.abs(b))}return new BigInteger(addSmall(b,Math.abs(a)),a<0)};SmallInteger.prototype.plus=SmallInteger.prototype.add;function subtract(a,b){var a_l=a.length,b_l=b.length,r=new Array(a_l),borrow=0,base=BASE,i,difference;for(i=0;i<b_l;i++){difference=a[i]-borrow-b[i];if(difference<0){difference+=base;borrow=1}else borrow=0;r[i]=difference}for(i=b_l;i<a_l;i++){difference=a[i]-borrow;if(difference<0)difference+=base;else{r[i++]=difference;break}r[i]=difference}for(;i<a_l;i++){r[i]=a[i]}trim(r);return r}function subtractAny(a,b,sign){var value,isSmall;if(compareAbs(a,b)>=0){value=subtract(a,b)}else{v
 alue=subtract(b,a);sign=!sign}value=arrayToSmall(value);if(typeof value==="number"){if(sign)value=-value;return new SmallInteger(value)}return new BigInteger(value,sign)}function subtractSmall(a,b,sign){var l=a.length,r=new Array(l),carry=-b,base=BASE,i,difference;for(i=0;i<l;i++){difference=a[i]+carry;carry=Math.floor(difference/base);difference%=base;r[i]=difference<0?difference+base:difference}r=arrayToSmall(r);if(typeof r==="number"){if(sign)r=-r;return new SmallInteger(r)}return new BigInteger(r,sign)}BigInteger.prototype.subtract=function(v){var n=parseValue(v);if(this.sign!==n.sign){return this.add(n.negate())}var a=this.value,b=n.value;if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign);return subtractAny(a,b,this.sign)};BigInteger.prototype.minus=BigInteger.prototype.subtract;SmallInteger.prototype.subtract=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.add(n.negate())}var b=n.value;if(n.isSmall){return new SmallInteger(a-b)}return subt
 ractSmall(b,Math.abs(a),a>=0)};SmallInteger.prototype.minus=SmallInteger.prototype.subtract;BigInteger.prototype.negate=function(){return new BigInteger(this.value,!this.sign)};SmallInteger.prototype.negate=function(){var sign=this.sign;var small=new SmallInteger(-this.value);small.sign=!sign;return small};BigInteger.prototype.abs=function(){return new BigInteger(this.value,false)};SmallInteger.prototype.abs=function(){return new SmallInteger(Math.abs(this.value))};function multiplyLong(a,b){var a_l=a.length,b_l=b.length,l=a_l+b_l,r=createArray(l),base=BASE,product,carry,i,a_i,b_j;for(i=0;i<a_l;++i){a_i=a[i];for(var j=0;j<b_l;++j){b_j=b[j];product=a_i*b_j+r[i+j];carry=Math.floor(product/base);r[i+j]=product-carry*base;r[i+j+1]+=carry}}trim(r);return r}function multiplySmall(a,b){var l=a.length,r=new Array(l),base=BASE,carry=0,product,i;for(i=0;i<l;i++){product=a[i]*b+carry;carry=Math.floor(product/base);r[i]=product-carry*base}while(carry>0){r[i++]=carry%base;carry=Math.floor(carry/
 base)}return r}function shiftLeft(x,n){var r=[];while(n-- >0)r.push(0);return r.concat(x)}function multiplyKaratsuba(x,y){var n=Math.max(x.length,y.length);if(n<=30)return multiplyLong(x,y);n=Math.ceil(n/2);var b=x.slice(n),a=x.slice(0,n),d=y.slice(n),c=y.slice(0,n);var ac=multiplyKaratsuba(a,c),bd=multiplyKaratsuba(b,d),abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d));var product=addAny(addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)),shiftLeft(bd,2*n));trim(product);return product}function useKaratsuba(l1,l2){return-.012*l1-.012*l2+15e-6*l1*l2>0}BigInteger.prototype.multiply=function(v){var value,n=parseValue(v),a=this.value,b=n.value,sign=this.sign!==n.sign,abs;if(n.isSmall){if(b===0)return Integer[0];if(b===1)return this;if(b===-1)return this.negate();abs=Math.abs(b);if(abs<BASE){return new BigInteger(multiplySmall(a,abs),sign)}b=smallToArray(abs)}if(useKaratsuba(a.length,b.length))return new BigInteger(multiplyKaratsuba(a,b),sign);return new BigInteger(multiplyLong(a,b),si
 gn)};BigInteger.prototype.times=BigInteger.prototype.multiply;function multiplySmallAndArray(a,b,sign){if(a<BASE){return new BigInteger(multiplySmall(b,a),sign)}return new BigInteger(multiplyLong(b,smallToArray(a)),sign)}SmallInteger.prototype._multiplyBySmall=function(a){if(isPrecise(a.value*this.value)){return new SmallInteger(a.value*this.value)}return multiplySmallAndArray(Math.abs(a.value),smallToArray(Math.abs(this.value)),this.sign!==a.sign)};BigInteger.prototype._multiplyBySmall=function(a){if(a.value===0)return Integer[0];if(a.value===1)return this;if(a.value===-1)return this.negate();return multiplySmallAndArray(Math.abs(a.value),this.value,this.sign!==a.sign)};SmallInteger.prototype.multiply=function(v){return parseValue(v)._multiplyBySmall(this)};SmallInteger.prototype.times=SmallInteger.prototype.multiply;function square(a){var l=a.length,r=createArray(l+l),base=BASE,product,carry,i,a_i,a_j;for(i=0;i<l;i++){a_i=a[i];for(var j=0;j<l;j++){a_j=a[j];product=a_i*a_j+r[i+j];c
 arry=Math.floor(product/base);r[i+j]=product-carry*base;r[i+j+1]+=carry}}trim(r);return r}BigInteger.prototype.square=function(){return new BigInteger(square(this.value),false)};SmallInteger.prototype.square=function(){var value=this.value*this.value;if(isPrecise(value))return new SmallInteger(value);return new BigInteger(square(smallToArray(Math.abs(this.value))),false)};function divMod1(a,b){var a_l=a.length,b_l=b.length,base=BASE,result=createArray(b.length),divisorMostSignificantDigit=b[b_l-1],lambda=Math.ceil(base/(2*divisorMostSignificantDigit)),remainder=multiplySmall(a,lambda),divisor=multiplySmall(b,lambda),quotientDigit,shift,carry,borrow,i,l,q;if(remainder.length<=a_l)remainder.push(0);divisor.push(0);divisorMostSignificantDigit=divisor[b_l-1];for(shift=a_l-b_l;shift>=0;shift--){quotientDigit=base-1;if(remainder[shift+b_l]!==divisorMostSignificantDigit){quotientDigit=Math.floor((remainder[shift+b_l]*base+remainder[shift+b_l-1])/divisorMostSignificantDigit)}carry=0;borrow=
 0;l=divisor.length;for(i=0;i<l;i++){carry+=quotientDigit*divisor[i];q=Math.floor(carry/base);borrow+=remainder[shift+i]-(carry-q*base);carry=q;if(borrow<0){remainder[shift+i]=borrow+base;borrow=-1}else{remainder[shift+i]=borrow;borrow=0}}while(borrow!==0){quotientDigit-=1;carry=0;for(i=0;i<l;i++){carry+=remainder[shift+i]-base+divisor[i];if(carry<0){remainder[shift+i]=carry+base;carry=0}else{remainder[shift+i]=carry;carry=1}}borrow+=carry}result[shift]=quotientDigit}remainder=divModSmall(remainder,lambda)[0];return[arrayToSmall(result),arrayToSmall(remainder)]}function divMod2(a,b){var a_l=a.length,b_l=b.length,result=[],part=[],base=BASE,guess,xlen,highx,highy,check;while(a_l){part.unshift(a[--a_l]);trim(part);if(compareAbs(part,b)<0){result.push(0);continue}xlen=part.length;highx=part[xlen-1]*base+part[xlen-2];highy=b[b_l-1]*base+b[b_l-2];if(xlen>b_l){highx=(highx+1)*base}guess=Math.ceil(highx/highy);do{check=multiplySmall(b,guess);if(compareAbs(check,part)<=0)break;guess--}while(
 guess);result.push(guess);part=subtract(part,check)}result.reverse();return[arrayToSmall(result),arrayToSmall(part)]}function divModSmall(value,lambda){var length=value.length,quotient=createArray(length),base=BASE,i,q,remainder,divisor;remainder=0;for(i=length-1;i>=0;--i){divisor=remainder*base+value[i];q=truncate(divisor/lambda);remainder=divisor-q*lambda;quotient[i]=q|0}return[quotient,remainder|0]}function divModAny(self,v){var value,n=parseValue(v);var a=self.value,b=n.value;var quotient;if(b===0)throw new Error("Cannot divide by zero");if(self.isSmall){if(n.isSmall){return[new SmallInteger(truncate(a/b)),new SmallInteger(a%b)]}return[Integer[0],self]}if(n.isSmall){if(b===1)return[self,Integer[0]];if(b==-1)return[self.negate(),Integer[0]];var abs=Math.abs(b);if(abs<BASE){value=divModSmall(a,abs);quotient=arrayToSmall(value[0]);var remainder=value[1];if(self.sign)remainder=-remainder;if(typeof quotient==="number"){if(self.sign!==n.sign)quotient=-quotient;return[new SmallInteger(
 quotient),new SmallInteger(remainder)]}return[new BigInteger(quotient,self.sign!==n.sign),new SmallInteger(remainder)]}b=smallToArray(abs)}var comparison=compareAbs(a,b);if(comparison===-1)return[Integer[0],self];if(comparison===0)return[Integer[self.sign===n.sign?1:-1],Integer[0]];if(a.length+b.length<=200)value=divMod1(a,b);else value=divMod2(a,b);quotient=value[0];var qSign=self.sign!==n.sign,mod=value[1],mSign=self.sign;if(typeof quotient==="number"){if(qSign)quotient=-quotient;quotient=new SmallInteger(quotient)}else quotient=new BigInteger(quotient,qSign);if(typeof mod==="number"){if(mSign)mod=-mod;mod=new SmallInteger(mod)}else mod=new BigInteger(mod,mSign);return[quotient,mod]}BigInteger.prototype.divmod=function(v){var result=divModAny(this,v);return{quotient:result[0],remainder:result[1]}};SmallInteger.prototype.divmod=BigInteger.prototype.divmod;BigInteger.prototype.divide=function(v){return divModAny(this,v)[0]};SmallInteger.prototype.over=SmallInteger.prototype.divide=B
 igInteger.prototype.over=BigInteger.prototype.divide;BigInteger.prototype.mod=function(v){return divModAny(this,v)[1]};SmallInteger.prototype.remainder=SmallInteger.prototype.mod=BigInteger.prototype.remainder=BigInteger.prototype.mod;BigInteger.prototype.pow=function(v){var n=parseValue(v),a=this.value,b=n.value,value,x,y;if(b===0)return Integer[1];if(a===0)return Integer[0];if(a===1)return Integer[1];if(a===-1)return n.isEven()?Integer[1]:Integer[-1];if(n.sign){return Integer[0]}if(!n.isSmall)throw new Error("The exponent "+n.toString()+" is too large.");if(this.isSmall){if(isPrecise(value=Math.pow(a,b)))return new SmallInteger(truncate(value))}x=this;y=Integer[1];while(true){if(b&1===1){y=y.times(x);--b}if(b===0)break;b/=2;x=x.square()}return y};SmallInteger.prototype.pow=BigInteger.prototype.pow;BigInteger.prototype.modPow=function(exp,mod){exp=parseValue(exp);mod=parseValue(mod);if(mod.isZero())throw new Error("Cannot take modPow with modulus 0");var r=Integer[1],base=this.mod(
 mod);while(exp.isPositive()){if(base.isZero())return Integer[0];if(exp.isOdd())r=r.multiply(base).mod(mod);exp=exp.divide(2);base=base.square().mod(mod)}return r};SmallInteger.prototype.modPow=BigInteger.prototype.modPow;function compareAbs(a,b){if(a.length!==b.length){return a.length>b.length?1:-1}for(var i=a.length-1;i>=0;i--){if(a[i]!==b[i])return a[i]>b[i]?1:-1}return 0}BigInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall)return 1;return compareAbs(a,b)};SmallInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=Math.abs(this.value),b=n.value;if(n.isSmall){b=Math.abs(b);return a===b?0:a>b?1:-1}return-1};BigInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(this.sign!==n.sign){return n.sign?1:-1}if(n.isSmall){return this.sign?-1:1}return compareAbs(a,b)*(this.sign?-1:1)};BigInteger.prototype.compareTo=BigInteger.prototype.compare;SmallInteg
 er.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall){return a==b?0:a>b?1:-1}if(a<0!==n.sign){return a<0?-1:1}return a<0?1:-1};SmallInteger.prototype.compareTo=SmallInteger.prototype.compare;BigInteger.prototype.equals=function(v){return this.compare(v)===0};SmallInteger.prototype.eq=SmallInteger.prototype.equals=BigInteger.prototype.eq=BigInteger.prototype.equals;BigInteger.prototype.notEquals=function(v){return this.compare(v)!==0};SmallInteger.prototype.neq=SmallInteger.prototype.notEquals=BigInteger.prototype.neq=BigInteger.prototype.notEquals;BigInteger.prototype.greater=function(v){return this.compare(v)>0};SmallInteger.prototype.gt=SmallInteger.prototype.greater=BigInteger.prototype.gt=BigInteger.prototype.greater;BigInteger.prototype.lesser=function(v){return this.compare(v)<0};SmallInteger.prototype.lt=SmallInteger.prototype.lesser=BigInteger.prototype.lt=BigInteger.prototype.lesser;Big
 Integer.prototype.greaterOrEquals=function(v){return this.compare(v)>=0};SmallInteger.prototype.geq=SmallInteger.prototype.greaterOrEquals=BigInteger.prototype.geq=BigInteger.prototype.greaterOrEquals;BigInteger.prototype.lesserOrEquals=function(v){return this.compare(v)<=0};SmallInteger.prototype.leq=SmallInteger.prototype.lesserOrEquals=BigInteger.prototype.leq=BigInteger.prototype.lesserOrEquals;BigInteger.prototype.isEven=function(){return(this.value[0]&1)===0};SmallInteger.prototype.isEven=function(){return(this.value&1)===0};BigInteger.prototype.isOdd=function(){return(this.value[0]&1)===1};SmallInteger.prototype.isOdd=function(){return(this.value&1)===1};BigInteger.prototype.isPositive=function(){return!this.sign};SmallInteger.prototype.isPositive=function(){return this.value>0};BigInteger.prototype.isNegative=function(){return this.sign};SmallInteger.prototype.isNegative=function(){return this.value<0};BigInteger.prototype.isUnit=function(){return false};SmallInteger.prototy
 pe.isUnit=function(){return Math.abs(this.value)===1};BigInteger.prototype.isZero=function(){return false};SmallInteger.prototype.isZero=function(){return this.value===0};BigInteger.prototype.isDivisibleBy=function(v){var n=parseValue(v);var value=n.value;if(value===0)return false;if(value===1)return true;if(value===2)return this.isEven();return this.mod(n).equals(Integer[0])};SmallInteger.prototype.isDivisibleBy=BigInteger.prototype.isDivisibleBy;function isBasicPrime(v){var n=v.abs();if(n.isUnit())return false;if(n.equals(2)||n.equals(3)||n.equals(5))return true;if(n.isEven()||n.isDivisibleBy(3)||n.isDivisibleBy(5))return false;if(n.lesser(25))return true}BigInteger.prototype.isPrime=function(){var isPrime=isBasicPrime(this);if(isPrime!==undefined)return isPrime;var n=this.abs(),nPrev=n.prev();var a=[2,3,5,7,11,13,17,19],b=nPrev,d,t,i,x;while(b.isEven())b=b.divide(2);for(i=0;i<a.length;i++){x=bigInt(a[i]).modPow(b,n);if(x.equals(Integer[1])||x.equals(nPrev))continue;for(t=true,d=b
 ;t&&d.lesser(nPrev);d=d.multiply(2)){x=x.square().mod(n);if(x.equals(nPrev))t=false}if(t)return false}return true};SmallInteger.prototype.isPrime=BigInteger.prototype.isPrime;BigInteger.prototype.isProbablePrime=function(iterations){var isPrime=isBasicPrime(this);if(isPrime!==undefined)return isPrime;var n=this.abs();var t=iterations===undefined?5:iterations;for(var i=0;i<t;i++){var a=bigInt.randBetween(2,n.minus(2));if(!a.modPow(n.prev(),n).isUnit())return false}return true};SmallInteger.prototype.isProbablePrime=BigInteger.prototype.isProbablePrime;BigInteger.prototype.modInv=function(n){var t=bigInt.zero,newT=bigInt.one,r=parseValue(n),newR=this.abs(),q,lastT,lastR;while(!newR.equals(bigInt.zero)){q=r.divide(newR);lastT=t;lastR=r;t=newT;r=newR;newT=lastT.subtract(q.multiply(newT));newR=lastR.subtract(q.multiply(newR))}if(!r.equals(1))throw new Error(this.toString()+" and "+n.toString()+" are not co-prime");if(t.compare(0)===-1){t=t.add(n)}if(this.isNegative()){return t.negate()}r
 eturn t};SmallInteger.prototype.modInv=BigInteger.prototype.modInv;BigInteger.prototype.next=function(){var value=this.value;if(this.sign){return subtractSmall(value,1,this.sign)}return new BigInteger(addSmall(value,1),this.sign)};SmallInteger.prototype.next=function(){var value=this.value;if(value+1<MAX_INT)return new SmallInteger(value+1);return new BigInteger(MAX_INT_ARR,false)};BigInteger.prototype.prev=function(){var value=this.value;if(this.sign){return new BigInteger(addSmall(value,1),true)}return subtractSmall(value,1,this.sign)};SmallInteger.prototype.prev=function(){var value=this.value;if(value-1>-MAX_INT)return new SmallInteger(value-1);return new BigInteger(MAX_INT_ARR,true)};var powersOfTwo=[1];while(powersOfTwo[powersOfTwo.length-1]<=BASE)powersOfTwo.push(2*powersOfTwo[powersOfTwo.length-1]);var powers2Length=powersOfTwo.length,highestPower2=powersOfTwo[powers2Length-1];function shift_isSmall(n){return(typeof n==="number"||typeof n==="string")&&+Math.abs(n)<=BASE||n i
 nstanceof BigInteger&&n.value.length<=1}BigInteger.prototype.shiftLeft=function(n){if(!shift_isSmall(n)){throw new Error(String(n)+" is too large for shifting.")}n=+n;if(n<0)return this.shiftRight(-n);var result=this;while(n>=powers2Length){result=result.multiply(highestPower2);n-=powers2Length-1}return result.multiply(powersOfTwo[n])};SmallInteger.prototype.shiftLeft=BigInteger.prototype.shiftLeft;BigInteger.prototype.shiftRight=function(n){var remQuo;if(!shift_isSmall(n)){throw new Error(String(n)+" is too large for shifting.")}n=+n;if(n<0)return this.shiftLeft(-n);var result=this;while(n>=powers2Length){if(result.isZero())return result;remQuo=divModAny(result,highestPower2);result=remQuo[1].isNegative()?remQuo[0].prev():remQuo[0];n-=powers2Length-1}remQuo=divModAny(result,powersOfTwo[n]);return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]};SmallInteger.prototype.shiftRight=BigInteger.prototype.shiftRight;function bitwise(x,y,fn){y=parseValue(y);var xSign=x.isNegative(),ySign
 =y.isNegative();var xRem=xSign?x.not():x,yRem=ySign?y.not():y;var xBits=[],yBits=[];var xStop=false,yStop=false;while(!xStop||!yStop){if(xRem.isZero()){xStop=true;xBits.push(xSign?1:0)}else if(xSign)xBits.push(xRem.isEven()?1:0);else xBits.push(xRem.isEven()?0:1);if(yRem.isZero()){yStop=true;yBits.push(ySign?1:0)}else if(ySign)yBits.push(yRem.isEven()?1:0);else yBits.push(yRem.isEven()?0:1);xRem=xRem.over(2);yRem=yRem.over(2)}var result=[];for(var i=0;i<xBits.length;i++)result.push(fn(xBits[i],yBits[i]));var sum=bigInt(result.pop()).negate().times(bigInt(2).pow(result.length));while(result.length){sum=sum.add(bigInt(result.pop()).times(bigInt(2).pow(result.length)))}return sum}BigInteger.prototype.not=function(){return this.negate().prev()};SmallInteger.prototype.not=BigInteger.prototype.not;BigInteger.prototype.and=function(n){return bitwise(this,n,function(a,b){return a&b})};SmallInteger.prototype.and=BigInteger.prototype.and;BigInteger.prototype.or=function(n){return bitwise(this
 ,n,function(a,b){return a|b})};SmallInteger.prototype.or=BigInteger.prototype.or;BigInteger.prototype.xor=function(n){return bitwise(this,n,function(a,b){return a^b})};SmallInteger.prototype.xor=BigInteger.prototype.xor;var LOBMASK_I=1<<30,LOBMASK_BI=(BASE&-BASE)*(BASE&-BASE)|LOBMASK_I;function roughLOB(n){var v=n.value,x=typeof v==="number"?v|LOBMASK_I:v[0]+v[1]*BASE|LOBMASK_BI;return x&-x}function max(a,b){a=parseValue(a);b=parseValue(b);return a.greater(b)?a:b}function min(a,b){a=parseValue(a);b=parseValue(b);return a.lesser(b)?a:b}function gcd(a,b){a=parseValue(a).abs();b=parseValue(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var c=Integer[1],d,t;while(a.isEven()&&b.isEven()){d=Math.min(roughLOB(a),roughLOB(b));a=a.divide(d);b=b.divide(d);c=c.multiply(d)}while(a.isEven()){a=a.divide(roughLOB(a))}do{while(b.isEven()){b=b.divide(roughLOB(b))}if(a.greater(b)){t=b;b=a;a=t}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function
  lcm(a,b){a=parseValue(a).abs();b=parseValue(b).abs();return a.divide(gcd(a,b)).multiply(b)}function randBetween(a,b){a=parseValue(a);b=parseValue(b);var low=min(a,b),high=max(a,b);var range=high.subtract(low);if(range.isSmall)return low.add(Math.round(Math.random()*range));var length=range.value.length-1;var result=[],restricted=true;for(var i=length;i>=0;i--){var top=restricted?range.value[i]:BASE;var digit=truncate(Math.random()*top);result.unshift(digit);if(digit<top)restricted=false}result=arrayToSmall(result);return low.add(typeof result==="number"?new SmallInteger(result):new BigInteger(result,false))}var parseBase=function(text,base){var val=Integer[0],pow=Integer[1],length=text.length;if(2<=base&&base<=36){if(length<=LOG_MAX_INT/Math.log(base)){return new SmallInteger(parseInt(text,base))}}base=parseValue(base);var digits=[];var i;var isNegative=text[0]==="-";for(i=isNegative?1:0;i<text.length;i++){var c=text[i].toLowerCase(),charCode=c.charCodeAt(0);if(48<=charCode&&charCo
 de<=57)digits.push(parseValue(c));else if(97<=charCode&&charCode<=122)digits.push(parseValue(c.charCodeAt(0)-87));else if(c==="<"){var start=i;do{i++}while(text[i]!==">");digits.push(parseValue(text.slice(start+1,i)))}else throw new Error(c+" is not a valid character")}digits.reverse();for(i=0;i<digits.length;i++){val=val.add(digits[i].times(pow));pow=pow.times(base)}return isNegative?val.negate():val};function stringify(digit){var v=digit.value;if(typeof v==="number")v=[v];if(v.length===1&&v[0]<=35){return"0123456789abcdefghijklmnopqrstuvwxyz".charAt(v[0])}return"<"+v+">"}function toBase(n,base){base=bigInt(base);if(base.isZero()){if(n.isZero())return"0";throw new Error("Cannot convert nonzero numbers to base 0.")}if(base.equals(-1)){if(n.isZero())return"0";if(n.isNegative())return new Array(1-n).join("10");return"1"+new Array(+n).join("01")}var minusSign="";if(n.isNegative()&&base.isPositive()){minusSign="-";n=n.abs()}if(base.equals(1)){if(n.isZero())return"0";return minusSign+new
  Array(+n+1).join(1)}var out=[];var left=n,divmod;while(left.isNegative()||left.compareAbs(base)>=0){divmod=left.divmod(base);left=divmod.quotient;var digit=divmod.remainder;if(digit.isNegative()){digit=base.minus(digit).abs();left=left.next()}out.push(stringify(digit))}out.push(stringify(left));return minusSign+out.reverse().join("")}BigInteger.prototype.toString=function(radix){if(radix===undefined)radix=10;if(radix!==10)return toBase(this,radix);var v=this.value,l=v.length,str=String(v[--l]),zeros="0000000",digit;while(--l>=0){digit=String(v[l]);str+=zeros.slice(digit.length)+digit}var sign=this.sign?"-":"";return sign+str};SmallInteger.prototype.toString=function(radix){if(radix===undefined)radix=10;if(radix!=10)return toBase(this,radix);return String(this.value)};BigInteger.prototype.valueOf=function(){return+this.toString()};BigInteger.prototype.toJSNumber=BigInteger.prototype.valueOf;SmallInteger.prototype.valueOf=function(){return this.value};SmallInteger.prototype.toJSNumbe
 r=SmallInteger.prototype.valueOf;function parseStringValue(v){if(isPrecise(+v)){var x=+v;if(x===truncate(x))return new SmallInteger(x);throw"Invalid integer: "+v}var sign=v[0]==="-";if(sign)v=v.slice(1);var split=v.split(/e/i);if(split.length>2)throw new Error("Invalid integer: "+split.join("e"));if(split.length===2){var exp=split[1];if(exp[0]==="+")exp=exp.slice(1);exp=+exp;if(exp!==truncate(exp)||!isPrecise(exp))throw new Error("Invalid integer: "+exp+" is not a valid exponent.");var text=split[0];var decimalPlace=text.indexOf(".");if(decimalPlace>=0){exp-=text.length-decimalPlace-1;text=text.slice(0,decimalPlace)+text.slice(decimalPlace+1)}if(exp<0)throw new Error("Cannot include negative exponent part for integers");text+=new Array(exp+1).join("0");v=text}var isValid=/^([0-9][0-9]*)$/.test(v);if(!isValid)throw new Error("Invalid integer: "+v);var r=[],max=v.length,l=LOG_BASE,min=max-l;while(max>0){r.push(+v.slice(min,max));min-=l;if(min<0)min=0;max-=l}trim(r);return new BigInteg
 er(r,sign)}function parseNumberValue(v){if(isPrecise(v)){if(v!==truncate(v))throw new Error(v+" is not an integer.");return new SmallInteger(v)}return parseStringValue(v.toString())}function parseValue(v){if(typeof v==="number"){return parseNumberValue(v)}if(typeof v==="string"){return parseStringValue(v)}return v}for(var i=0;i<1e3;i++){Integer[i]=new SmallInteger(i);if(i>0)Integer[-i]=new SmallInteger(-i)}Integer.one=Integer[1];Integer.zero=Integer[0];Integer.minusOne=Integer[-1];Integer.max=max;Integer.min=min;Integer.gcd=gcd;Integer.lcm=lcm;Integer.isInstance=function(x){return x instanceof BigInteger||x instanceof SmallInteger};Integer.randBetween=randBetween;return Integer}();if(typeof module!=="undefined"&&module.hasOwnProperty("exports")){module.exports=bigInt}
\ No newline at end of file
+var bigInt=function(undefined){"use strict";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),LOG_MAX_INT=Math.log(MAX_INT);function Integer(v,radix){if(typeof v==="undefined")return Integer[0];if(typeof radix!=="undefined")return+radix===10?parseValue(v):parseBase(v,radix);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(value){this.value=value;this.sign=value<0;this.isSmall=true}SmallInteger.prototype=Object.create(Integer.prototype);function isPrecise(n){return-MAX_INT<n&&n<MAX_INT}function smallToArray(n){if(n<1e7)return[n];if(n<1e14)return[n%1e7,Math.floor(n/1e7)];return[n%1e7,Math.floor(n/1e7)%1e7,Math.floor(n/1e14)]}function arrayToSmall(arr){trim(arr);var length=arr.length;if(length<4&&compareAbs(arr,MAX_INT_ARR)<0){switch(length){case 0:return 0;case 1:return arr[0];case 2:return arr[0]+arr[1]*BASE;default:return
  arr[0]+(arr[1]+arr[2]*BASE)*BASE}}return arr}function trim(v){var i=v.length;while(v[--i]===0);v.length=i+1}function createArray(length){var x=new Array(length);var i=-1;while(++i<length){x[i]=0}return x}function truncate(n){if(n>0)return Math.floor(n);return Math.ceil(n)}function add(a,b){var l_a=a.length,l_b=b.length,r=new Array(l_a),carry=0,base=BASE,sum,i;for(i=0;i<l_b;i++){sum=a[i]+b[i]+carry;carry=sum>=base?1:0;r[i]=sum-carry*base}while(i<l_a){sum=a[i]+carry;carry=sum===base?1:0;r[i++]=sum-carry*base}if(carry>0)r.push(carry);return r}function addAny(a,b){if(a.length>=b.length)return add(a,b);return add(b,a)}function addSmall(a,carry){var l=a.length,r=new Array(l),base=BASE,sum,i;for(i=0;i<l;i++){sum=a[i]-base+carry;carry=Math.floor(sum/base);r[i]=sum-carry*base;carry+=1}while(carry>0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}BigInteger.prototype.add=function(v){var n=parseValue(v);if(this.sign!==n.sign){return this.subtract(n.negate())}var a=this.value,b=n.valu
 e;if(n.isSmall){return new BigInteger(addSmall(a,Math.abs(b)),this.sign)}return new BigInteger(addAny(a,b),this.sign)};BigInteger.prototype.plus=BigInteger.prototype.add;SmallInteger.prototype.add=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.subtract(n.negate())}var b=n.value;if(n.isSmall){if(isPrecise(a+b))return new SmallInteger(a+b);b=smallToArray(Math.abs(b))}return new BigInteger(addSmall(b,Math.abs(a)),a<0)};SmallInteger.prototype.plus=SmallInteger.prototype.add;function subtract(a,b){var a_l=a.length,b_l=b.length,r=new Array(a_l),borrow=0,base=BASE,i,difference;for(i=0;i<b_l;i++){difference=a[i]-borrow-b[i];if(difference<0){difference+=base;borrow=1}else borrow=0;r[i]=difference}for(i=b_l;i<a_l;i++){difference=a[i]-borrow;if(difference<0)difference+=base;else{r[i++]=difference;break}r[i]=difference}for(;i<a_l;i++){r[i]=a[i]}trim(r);return r}function subtractAny(a,b,sign){var value;if(compareAbs(a,b)>=0){value=subtract(a,b)}else{value=subtract(
 b,a);sign=!sign}value=arrayToSmall(value);if(typeof value==="number"){if(sign)value=-value;return new SmallInteger(value)}return new BigInteger(value,sign)}function subtractSmall(a,b,sign){var l=a.length,r=new Array(l),carry=-b,base=BASE,i,difference;for(i=0;i<l;i++){difference=a[i]+carry;carry=Math.floor(difference/base);difference%=base;r[i]=difference<0?difference+base:difference}r=arrayToSmall(r);if(typeof r==="number"){if(sign)r=-r;return new SmallInteger(r)}return new BigInteger(r,sign)}BigInteger.prototype.subtract=function(v){var n=parseValue(v);if(this.sign!==n.sign){return this.add(n.negate())}var a=this.value,b=n.value;if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign);return subtractAny(a,b,this.sign)};BigInteger.prototype.minus=BigInteger.prototype.subtract;SmallInteger.prototype.subtract=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.add(n.negate())}var b=n.value;if(n.isSmall){return new SmallInteger(a-b)}return subtractSmall(b,Ma
 th.abs(a),a>=0)};SmallInteger.prototype.minus=SmallInteger.prototype.subtract;BigInteger.prototype.negate=function(){return new BigInteger(this.value,!this.sign)};SmallInteger.prototype.negate=function(){var sign=this.sign;var small=new SmallInteger(-this.value);small.sign=!sign;return small};BigInteger.prototype.abs=function(){return new BigInteger(this.value,false)};SmallInteger.prototype.abs=function(){return new SmallInteger(Math.abs(this.value))};function multiplyLong(a,b){var a_l=a.length,b_l=b.length,l=a_l+b_l,r=createArray(l),base=BASE,product,carry,i,a_i,b_j;for(i=0;i<a_l;++i){a_i=a[i];for(var j=0;j<b_l;++j){b_j=b[j];product=a_i*b_j+r[i+j];carry=Math.floor(product/base);r[i+j]=product-carry*base;r[i+j+1]+=carry}}trim(r);return r}function multiplySmall(a,b){var l=a.length,r=new Array(l),base=BASE,carry=0,product,i;for(i=0;i<l;i++){product=a[i]*b+carry;carry=Math.floor(product/base);r[i]=product-carry*base}while(carry>0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r
 }function shiftLeft(x,n){var r=[];while(n-->0)r.push(0);return r.concat(x)}function multiplyKaratsuba(x,y){var n=Math.max(x.length,y.length);if(n<=30)return multiplyLong(x,y);n=Math.ceil(n/2);var b=x.slice(n),a=x.slice(0,n),d=y.slice(n),c=y.slice(0,n);var ac=multiplyKaratsuba(a,c),bd=multiplyKaratsuba(b,d),abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d));var product=addAny(addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)),shiftLeft(bd,2*n));trim(product);return product}function useKaratsuba(l1,l2){return-.012*l1-.012*l2+15e-6*l1*l2>0}BigInteger.prototype.multiply=function(v){var n=parseValue(v),a=this.value,b=n.value,sign=this.sign!==n.sign,abs;if(n.isSmall){if(b===0)return Integer[0];if(b===1)return this;if(b===-1)return this.negate();abs=Math.abs(b);if(abs<BASE){return new BigInteger(multiplySmall(a,abs),sign)}b=smallToArray(abs)}if(useKaratsuba(a.length,b.length))return new BigInteger(multiplyKaratsuba(a,b),sign);return new BigInteger(multiplyLong(a,b),sign)};BigInteger.proto
 type.times=BigInteger.prototype.multiply;function multiplySmallAndArray(a,b,sign){if(a<BASE){return new BigInteger(multiplySmall(b,a),sign)}return new BigInteger(multiplyLong(b,smallToArray(a)),sign)}SmallInteger.prototype._multiplyBySmall=function(a){if(isPrecise(a.value*this.value)){return new SmallInteger(a.value*this.value)}return multiplySmallAndArray(Math.abs(a.value),smallToArray(Math.abs(this.value)),this.sign!==a.sign)};BigInteger.prototype._multiplyBySmall=function(a){if(a.value===0)return Integer[0];if(a.value===1)return this;if(a.value===-1)return this.negate();return multiplySmallAndArray(Math.abs(a.value),this.value,this.sign!==a.sign)};SmallInteger.prototype.multiply=function(v){return parseValue(v)._multiplyBySmall(this)};SmallInteger.prototype.times=SmallInteger.prototype.multiply;function square(a){var l=a.length,r=createArray(l+l),base=BASE,product,carry,i,a_i,a_j;for(i=0;i<l;i++){a_i=a[i];for(var j=0;j<l;j++){a_j=a[j];product=a_i*a_j+r[i+j];carry=Math.floor(produ
 ct/base);r[i+j]=product-carry*base;r[i+j+1]+=carry}}trim(r);return r}BigInteger.prototype.square=function(){return new BigInteger(square(this.value),false)};SmallInteger.prototype.square=function(){var value=this.value*this.value;if(isPrecise(value))return new SmallInteger(value);return new BigInteger(square(smallToArray(Math.abs(this.value))),false)};function divMod1(a,b){var a_l=a.length,b_l=b.length,base=BASE,result=createArray(b.length),divisorMostSignificantDigit=b[b_l-1],lambda=Math.ceil(base/(2*divisorMostSignificantDigit)),remainder=multiplySmall(a,lambda),divisor=multiplySmall(b,lambda),quotientDigit,shift,carry,borrow,i,l,q;if(remainder.length<=a_l)remainder.push(0);divisor.push(0);divisorMostSignificantDigit=divisor[b_l-1];for(shift=a_l-b_l;shift>=0;shift--){quotientDigit=base-1;if(remainder[shift+b_l]!==divisorMostSignificantDigit){quotientDigit=Math.floor((remainder[shift+b_l]*base+remainder[shift+b_l-1])/divisorMostSignificantDigit)}carry=0;borrow=0;l=divisor.length;fo
 r(i=0;i<l;i++){carry+=quotientDigit*divisor[i];q=Math.floor(carry/base);borrow+=remainder[shift+i]-(carry-q*base);carry=q;if(borrow<0){remainder[shift+i]=borrow+base;borrow=-1}else{remainder[shift+i]=borrow;borrow=0}}while(borrow!==0){quotientDigit-=1;carry=0;for(i=0;i<l;i++){carry+=remainder[shift+i]-base+divisor[i];if(carry<0){remainder[shift+i]=carry+base;carry=0}else{remainder[shift+i]=carry;carry=1}}borrow+=carry}result[shift]=quotientDigit}remainder=divModSmall(remainder,lambda)[0];return[arrayToSmall(result),arrayToSmall(remainder)]}function divMod2(a,b){var a_l=a.length,b_l=b.length,result=[],part=[],base=BASE,guess,xlen,highx,highy,check;while(a_l){part.unshift(a[--a_l]);trim(part);if(compareAbs(part,b)<0){result.push(0);continue}xlen=part.length;highx=part[xlen-1]*base+part[xlen-2];highy=b[b_l-1]*base+b[b_l-2];if(xlen>b_l){highx=(highx+1)*base}guess=Math.ceil(highx/highy);do{check=multiplySmall(b,guess);if(compareAbs(check,part)<=0)break;guess--}while(guess);result.push(gu
 ess);part=subtract(part,check)}result.reverse();return[arrayToSmall(result),arrayToSmall(part)]}function divModSmall(value,lambda){var length=value.length,quotient=createArray(length),base=BASE,i,q,remainder,divisor;remainder=0;for(i=length-1;i>=0;--i){divisor=remainder*base+value[i];q=truncate(divisor/lambda);remainder=divisor-q*lambda;quotient[i]=q|0}return[quotient,remainder|0]}function divModAny(self,v){var value,n=parseValue(v);var a=self.value,b=n.value;var quotient;if(b===0)throw new Error("Cannot divide by zero");if(self.isSmall){if(n.isSmall){return[new SmallInteger(truncate(a/b)),new SmallInteger(a%b)]}return[Integer[0],self]}if(n.isSmall){if(b===1)return[self,Integer[0]];if(b==-1)return[self.negate(),Integer[0]];var abs=Math.abs(b);if(abs<BASE){value=divModSmall(a,abs);quotient=arrayToSmall(value[0]);var remainder=value[1];if(self.sign)remainder=-remainder;if(typeof quotient==="number"){if(self.sign!==n.sign)quotient=-quotient;return[new SmallInteger(quotient),new SmallIn
 teger(remainder)]}return[new BigInteger(quotient,self.sign!==n.sign),new SmallInteger(remainder)]}b=smallToArray(abs)}var comparison=compareAbs(a,b);if(comparison===-1)return[Integer[0],self];if(comparison===0)return[Integer[self.sign===n.sign?1:-1],Integer[0]];if(a.length+b.length<=200)value=divMod1(a,b);else value=divMod2(a,b);quotient=value[0];var qSign=self.sign!==n.sign,mod=value[1],mSign=self.sign;if(typeof quotient==="number"){if(qSign)quotient=-quotient;quotient=new SmallInteger(quotient)}else quotient=new BigInteger(quotient,qSign);if(typeof mod==="number"){if(mSign)mod=-mod;mod=new SmallInteger(mod)}else mod=new BigInteger(mod,mSign);return[quotient,mod]}BigInteger.prototype.divmod=function(v){var result=divModAny(this,v);return{quotient:result[0],remainder:result[1]}};SmallInteger.prototype.divmod=BigInteger.prototype.divmod;BigInteger.prototype.divide=function(v){return divModAny(this,v)[0]};SmallInteger.prototype.over=SmallInteger.prototype.divide=BigInteger.prototype.o
 ver=BigInteger.prototype.divide;BigInteger.prototype.mod=function(v){return divModAny(this,v)[1]};SmallInteger.prototype.remainder=SmallInteger.prototype.mod=BigInteger.prototype.remainder=BigInteger.prototype.mod;BigInteger.prototype.pow=function(v){var n=parseValue(v),a=this.value,b=n.value,value,x,y;if(b===0)return Integer[1];if(a===0)return Integer[0];if(a===1)return Integer[1];if(a===-1)return n.isEven()?Integer[1]:Integer[-1];if(n.sign){return Integer[0]}if(!n.isSmall)throw new Error("The exponent "+n.toString()+" is too large.");if(this.isSmall){if(isPrecise(value=Math.pow(a,b)))return new SmallInteger(truncate(value))}x=this;y=Integer[1];while(true){if(b&1===1){y=y.times(x);--b}if(b===0)break;b/=2;x=x.square()}return y};SmallInteger.prototype.pow=BigInteger.prototype.pow;BigInteger.prototype.modPow=function(exp,mod){exp=parseValue(exp);mod=parseValue(mod);if(mod.isZero())throw new Error("Cannot take modPow with modulus 0");var r=Integer[1],base=this.mod(mod);while(exp.isPosi
 tive()){if(base.isZero())return Integer[0];if(exp.isOdd())r=r.multiply(base).mod(mod);exp=exp.divide(2);base=base.square().mod(mod)}return r};SmallInteger.prototype.modPow=BigInteger.prototype.modPow;function compareAbs(a,b){if(a.length!==b.length){return a.length>b.length?1:-1}for(var i=a.length-1;i>=0;i--){if(a[i]!==b[i])return a[i]>b[i]?1:-1}return 0}BigInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall)return 1;return compareAbs(a,b)};SmallInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=Math.abs(this.value),b=n.value;if(n.isSmall){b=Math.abs(b);return a===b?0:a>b?1:-1}return-1};BigInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(this.sign!==n.sign){return n.sign?1:-1}if(n.isSmall){return this.sign?-1:1}return compareAbs(a,b)*(this.sign?-1:1)};BigInteger.prototype.compareTo=BigInteger.prototype.compare;SmallInteger.prototype.compare=
 function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall){return a==b?0:a>b?1:-1}if(a<0!==n.sign){return a<0?-1:1}return a<0?1:-1};SmallInteger.prototype.compareTo=SmallInteger.prototype.compare;BigInteger.prototype.equals=function(v){return this.compare(v)===0};SmallInteger.prototype.eq=SmallInteger.prototype.equals=BigInteger.prototype.eq=BigInteger.prototype.equals;BigInteger.prototype.notEquals=function(v){return this.compare(v)!==0};SmallInteger.prototype.neq=SmallInteger.prototype.notEquals=BigInteger.prototype.neq=BigInteger.prototype.notEquals;BigInteger.prototype.greater=function(v){return this.compare(v)>0};SmallInteger.prototype.gt=SmallInteger.prototype.greater=BigInteger.prototype.gt=BigInteger.prototype.greater;BigInteger.prototype.lesser=function(v){return this.compare(v)<0};SmallInteger.prototype.lt=SmallInteger.prototype.lesser=BigInteger.prototype.lt=BigInteger.prototype.lesser;BigInteger.prototype.gre
 aterOrEquals=function(v){return this.compare(v)>=0};SmallInteger.prototype.geq=SmallInteger.prototype.greaterOrEquals=BigInteger.prototype.geq=BigInteger.prototype.greaterOrEquals;BigInteger.prototype.lesserOrEquals=function(v){return this.compare(v)<=0};SmallInteger.prototype.leq=SmallInteger.prototype.lesserOrEquals=BigInteger.prototype.leq=BigInteger.prototype.lesserOrEquals;BigInteger.prototype.isEven=function(){return(this.value[0]&1)===0};SmallInteger.prototype.isEven=function(){return(this.value&1)===0};BigInteger.prototype.isOdd=function(){return(this.value[0]&1)===1};SmallInteger.prototype.isOdd=function(){return(this.value&1)===1};BigInteger.prototype.isPositive=function(){return!this.sign};SmallInteger.prototype.isPositive=function(){return this.value>0};BigInteger.prototype.isNegative=function(){return this.sign};SmallInteger.prototype.isNegative=function(){return this.value<0};BigInteger.prototype.isUnit=function(){return false};SmallInteger.prototype.isUnit=function(){
 return Math.abs(this.value)===1};BigInteger.prototype.isZero=function(){return false};SmallInteger.prototype.isZero=function(){return this.value===0};BigInteger.prototype.isDivisibleBy=function(v){var n=parseValue(v);var value=n.value;if(value===0)return false;if(value===1)return true;if(value===2)return this.isEven();return this.mod(n).equals(Integer[0])};SmallInteger.prototype.isDivisibleBy=BigInteger.prototype.isDivisibleBy;function isBasicPrime(v){var n=v.abs();if(n.isUnit())return false;if(n.equals(2)||n.equals(3)||n.equals(5))return true;if(n.isEven()||n.isDivisibleBy(3)||n.isDivisibleBy(5))return false;if(n.lesser(25))return true}BigInteger.prototype.isPrime=function(){var isPrime=isBasicPrime(this);if(isPrime!==undefined)return isPrime;var n=this.abs(),nPrev=n.prev();var a=[2,3,5,7,11,13,17,19],b=nPrev,d,t,i,x;while(b.isEven())b=b.divide(2);for(i=0;i<a.length;i++){x=bigInt(a[i]).modPow(b,n);if(x.equals(Integer[1])||x.equals(nPrev))continue;for(t=true,d=b;t&&d.lesser(nPrev);d
 =d.multiply(2)){x=x.square().mod(n);if(x.equals(nPrev))t=false}if(t)return false}return true};SmallInteger.prototype.isPrime=BigInteger.prototype.isPrime;BigInteger.prototype.isProbablePrime=function(iterations){var isPrime=isBasicPrime(this);if(isPrime!==undefined)return isPrime;var n=this.abs();var t=iterations===undefined?5:iterations;for(var i=0;i<t;i++){var a=bigInt.randBetween(2,n.minus(2));if(!a.modPow(n.prev(),n).isUnit())return false}return true};SmallInteger.prototype.isProbablePrime=BigInteger.prototype.isProbablePrime;BigInteger.prototype.modInv=function(n){var t=bigInt.zero,newT=bigInt.one,r=parseValue(n),newR=this.abs(),q,lastT,lastR;while(!newR.equals(bigInt.zero)){q=r.divide(newR);lastT=t;lastR=r;t=newT;r=newR;newT=lastT.subtract(q.multiply(newT));newR=lastR.subtract(q.multiply(newR))}if(!r.equals(1))throw new Error(this.toString()+" and "+n.toString()+" are not co-prime");if(t.compare(0)===-1){t=t.add(n)}if(this.isNegative()){return t.negate()}return t};SmallInteger
 .prototype.modInv=BigInteger.prototype.modInv;BigInteger.prototype.next=function(){var value=this.value;if(this.sign){return subtractSmall(value,1,this.sign)}return new BigInteger(addSmall(value,1),this.sign)};SmallInteger.prototype.next=function(){var value=this.value;if(value+1<MAX_INT)return new SmallInteger(value+1);return new BigInteger(MAX_INT_ARR,false)};BigInteger.prototype.prev=function(){var value=this.value;if(this.sign){return new BigInteger(addSmall(value,1),true)}return subtractSmall(value,1,this.sign)};SmallInteger.prototype.prev=function(){var value=this.value;if(value-1>-MAX_INT)return new SmallInteger(value-1);return new BigInteger(MAX_INT_ARR,true)};var powersOfTwo=[1];while(powersOfTwo[powersOfTwo.length-1]<=BASE)powersOfTwo.push(2*powersOfTwo[powersOfTwo.length-1]);var powers2Length=powersOfTwo.length,highestPower2=powersOfTwo[powers2Length-1];function shift_isSmall(n){return(typeof n==="number"||typeof n==="string")&&+Math.abs(n)<=BASE||n instanceof BigInteger&
 &n.value.length<=1}BigInteger.prototype.shiftLeft=function(n){if(!shift_isSmall(n)){throw new Error(String(n)+" is too large for shifting.")}n=+n;if(n<0)return this.shiftRight(-n);var result=this;while(n>=powers2Length){result=result.multiply(highestPower2);n-=powers2Length-1}return result.multiply(powersOfTwo[n])};SmallInteger.prototype.shiftLeft=BigInteger.prototype.shiftLeft;BigInteger.prototype.shiftRight=function(n){var remQuo;if(!shift_isSmall(n)){throw new Error(String(n)+" is too large for shifting.")}n=+n;if(n<0)return this.shiftLeft(-n);var result=this;while(n>=powers2Length){if(result.isZero())return result;remQuo=divModAny(result,highestPower2);result=remQuo[1].isNegative()?remQuo[0].prev():remQuo[0];n-=powers2Length-1}remQuo=divModAny(result,powersOfTwo[n]);return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]};SmallInteger.prototype.shiftRight=BigInteger.prototype.shiftRight;function bitwise(x,y,fn){y=parseValue(y);var xSign=x.isNegative(),ySign=y.isNegative();var x
 Rem=xSign?x.not():x,yRem=ySign?y.not():y;var xBits=[],yBits=[];var xStop=false,yStop=false;while(!xStop||!yStop){if(xRem.isZero()){xStop=true;xBits.push(xSign?1:0)}else if(xSign)xBits.push(xRem.isEven()?1:0);else xBits.push(xRem.isEven()?0:1);if(yRem.isZero()){yStop=true;yBits.push(ySign?1:0)}else if(ySign)yBits.push(yRem.isEven()?1:0);else yBits.push(yRem.isEven()?0:1);xRem=xRem.over(2);yRem=yRem.over(2)}var result=[];for(var i=0;i<xBits.length;i++)result.push(fn(xBits[i],yBits[i]));var sum=bigInt(result.pop()).negate().times(bigInt(2).pow(result.length));while(result.length){sum=sum.add(bigInt(result.pop()).times(bigInt(2).pow(result.length)))}return sum}BigInteger.prototype.not=function(){return this.negate().prev()};SmallInteger.prototype.not=BigInteger.prototype.not;BigInteger.prototype.and=function(n){return bitwise(this,n,function(a,b){return a&b})};SmallInteger.prototype.and=BigInteger.prototype.and;BigInteger.prototype.or=function(n){return bitwise(this,n,function(a,b){retu
 rn a|b})};SmallInteger.prototype.or=BigInteger.prototype.or;BigInteger.prototype.xor=function(n){return bitwise(this,n,function(a,b){return a^b})};SmallInteger.prototype.xor=BigInteger.prototype.xor;var LOBMASK_I=1<<30,LOBMASK_BI=(BASE&-BASE)*(BASE&-BASE)|LOBMASK_I;function roughLOB(n){var v=n.value,x=typeof v==="number"?v|LOBMASK_I:v[0]+v[1]*BASE|LOBMASK_BI;return x&-x}function max(a,b){a=parseValue(a);b=parseValue(b);return a.greater(b)?a:b}function min(a,b){a=parseValue(a);b=parseValue(b);return a.lesser(b)?a:b}function gcd(a,b){a=parseValue(a).abs();b=parseValue(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var c=Integer[1],d,t;while(a.isEven()&&b.isEven()){d=Math.min(roughLOB(a),roughLOB(b));a=a.divide(d);b=b.divide(d);c=c.multiply(d)}while(a.isEven()){a=a.divide(roughLOB(a))}do{while(b.isEven()){b=b.divide(roughLOB(b))}if(a.greater(b)){t=b;b=a;a=t}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function lcm(a,b){a=parseValu
 e(a).abs();b=parseValue(b).abs();return a.divide(gcd(a,b)).multiply(b)}function randBetween(a,b){a=parseValue(a);b=parseValue(b);var low=min(a,b),high=max(a,b);var range=high.subtract(low);if(range.isSmall)return low.add(Math.round(Math.random()*range));var length=range.value.length-1;var result=[],restricted=true;for(var i=length;i>=0;i--){var top=restricted?range.value[i]:BASE;var digit=truncate(Math.random()*top);result.unshift(digit);if(digit<top)restricted=false}result=arrayToSmall(result);return low.add(typeof result==="number"?new SmallInteger(result):new BigInteger(result,false))}var parseBase=function(text,base){var length=text.length;if(2<=base&&base<=36){if(length<=LOG_MAX_INT/Math.log(base)){return new SmallInteger(parseInt(text,base))}}base=parseValue(base);var digits=[];var i;var isNegative=text[0]==="-";for(i=isNegative?1:0;i<text.length;i++){var c=text[i].toLowerCase(),charCode=c.charCodeAt(0);if(48<=charCode&&charCode<=57)digits.push(parseValue(c));else if(97<=charC
 ode&&charCode<=122)digits.push(parseValue(c.charCodeAt(0)-87));else if(c==="<"){var start=i;do{i++}while(text[i]!==">");digits.push(parseValue(text.slice(start+1,i)))}else throw new Error(c+" is not a valid character")}return parseBaseFromArray(digits,base,isNegative)};function parseBaseFromArray(digits,base,isNegative){var val=Integer[0],pow=Integer[1],i;for(i=digits.length-1;i>=0;i--){val=val.add(digits[i].times(pow));pow=pow.times(base)}return isNegative?val.negate():val}function stringify(digit){var v=digit.value;if(typeof v==="number")v=[v];if(v.length===1&&v[0]<=35){return"0123456789abcdefghijklmnopqrstuvwxyz".charAt(v[0])}return"<"+v+">"}function toBase(n,base){base=bigInt(base);if(base.isZero()){if(n.isZero())return"0";throw new Error("Cannot convert nonzero numbers to base 0.")}if(base.equals(-1)){if(n.isZero())return"0";if(n.isNegative())return new Array(1-n).join("10");return"1"+new Array(+n).join("01")}var minusSign="";if(n.isNegative()&&base.isPositive()){minusSign="-";
 n=n.abs()}if(base.equals(1)){if(n.isZero())return"0";return minusSign+new Array(+n+1).join(1)}var out=[];var left=n,divmod;while(left.isNegative()||left.compareAbs(base)>=0){divmod=left.divmod(base);left=divmod.quotient;var digit=divmod.remainder;if(digit.isNegative()){digit=base.minus(digit).abs();left=left.next()}out.push(stringify(digit))}out.push(stringify(left));return minusSign+out.reverse().join("")}BigInteger.prototype.toString=function(radix){if(radix===undefined)radix=10;if(radix!==10)return toBase(this,radix);var v=this.value,l=v.length,str=String(v[--l]),zeros="0000000",digit;while(--l>=0){digit=String(v[l]);str+=zeros.slice(digit.length)+digit}var sign=this.sign?"-":"";return sign+str};SmallInteger.prototype.toString=function(radix){if(radix===undefined)radix=10;if(radix!=10)return toBase(this,radix);return String(this.value)};BigInteger.prototype.valueOf=function(){return+this.toString()};BigInteger.prototype.toJSNumber=BigInteger.prototype.valueOf;SmallInteger.prototy
 pe.valueOf=function(){return this.value};SmallInteger.prototype.toJSNumber=SmallInteger.prototype.valueOf;function parseStringValue(v){if(isPrecise(+v)){var x=+v;if(x===truncate(x))return new SmallInteger(x);throw"Invalid integer: "+v}var sign=v[0]==="-";if(sign)v=v.slice(1);var split=v.split(/e/i);if(split.length>2)throw new Error("Invalid integer: "+split.join("e"));if(split.length===2){var exp=split[1];if(exp[0]==="+")exp=exp.slice(1);exp=+exp;if(exp!==truncate(exp)||!isPrecise(exp))throw new Error("Invalid integer: "+exp+" is not a valid exponent.");var text=split[0];var decimalPlace=text.indexOf(".");if(decimalPlace>=0){exp-=text.length-decimalPlace-1;text=text.slice(0,decimalPlace)+text.slice(decimalPlace+1)}if(exp<0)throw new Error("Cannot include negative exponent part for integers");text+=new Array(exp+1).join("0");v=text}var isValid=/^([0-9][0-9]*)$/.test(v);if(!isValid)throw new Error("Invalid integer: "+v);var r=[],max=v.length,l=LOG_BASE,min=max-l;while(max>0){r.push(+v
 .slice(min,max));min-=l;if(min<0)min=0;max-=l}trim(r);return new BigInteger(r,sign)}function parseNumberValue(v){if(isPrecise(v)){if(v!==truncate(v))throw new Error(v+" is not an integer.");return new SmallInteger(v)}return parseStringValue(v.toString())}function parseValue(v){if(typeof v==="number"){return parseNumberValue(v)}if(typeof v==="string"){return parseStringValue(v)}return v}for(var i=0;i<1e3;i++){Integer[i]=new SmallInteger(i);if(i>0)Integer[-i]=new SmallInteger(-i)}Integer.one=Integer[1];Integer.zero=Integer[0];Integer.minusOne=Integer[-1];Integer.max=max;Integer.min=min;Integer.gcd=gcd;Integer.lcm=lcm;Integer.isInstance=function(x){return x instanceof BigInteger||x instanceof SmallInteger};Integer.randBetween=randBetween;Integer.fromArray=function(digits,base,isNegative){return parseBaseFromArray(digits.map(parseValue),parseValue(base||10),isNegative)};return Integer}();if(typeof module!=="undefined"&&module.hasOwnProperty("exports")){module.exports=bigInt}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/big-integer/README.md
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/README.md b/node_modules/big-integer/README.md
index 51eb657..b8a0e6d 100644
--- a/node_modules/big-integer/README.md
+++ b/node_modules/big-integer/README.md
@@ -421,6 +421,13 @@ Performs the bitwise XOR operation. The operands are treated as if they were rep
  
 ### Static Methods
 
+#### `fromArray(digits, base = 10, isNegative?)`
+
+Constructs a bigInt from an array of digits in base `base`. The optional `isNegative` flag will make the number negative.
+
+ - `bigInt.fromArray([1, 2, 3, 4, 5], 10)` => `12345`
+ - `bigInt.fromArray([1, 0, 0], 2, true)` => `-4`
+
 #### `gcd(a, b)`
 
 Finds the greatest common denominator of `a` and `b`.

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/big-integer/package.json
----------------------------------------------------------------------
diff --git a/node_modules/big-integer/package.json b/node_modules/big-integer/package.json
index 2c66e1e..9748827 100644
--- a/node_modules/big-integer/package.json
+++ b/node_modules/big-integer/package.json
@@ -14,13 +14,13 @@
     ]
   ],
   "_from": "big-integer@>=1.6.7 <2.0.0",
-  "_id": "big-integer@1.6.19",
+  "_id": "big-integer@1.6.22",
   "_inCache": true,
   "_location": "/big-integer",
   "_nodeVersion": "6.9.4",
   "_npmOperationalInternal": {
     "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/big-integer-1.6.19.tgz_1491096256363_0.04815615131519735"
+    "tmp": "tmp/big-integer-1.6.22.tgz_1493091323169_0.5048394540790468"
   },
   "_npmUser": {
     "name": "peterolson",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/bplist-parser"
   ],
-  "_resolved": "http://registry.npmjs.org/big-integer/-/big-integer-1.6.19.tgz",
-  "_shasum": "4a5e915e3188c8708f254b356196f28542acc1e0",
+  "_resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.22.tgz",
+  "_shasum": "487c95fce886022ea48ff5f19e388932df46dd2e",
   "_shrinkwrap": null,
   "_spec": "big-integer@^1.6.7",
   "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/bplist-parser",
@@ -63,17 +63,18 @@
     "karma": "^0.13.3",
     "karma-coverage": "^0.4.2",
     "karma-jasmine": "^0.3.6",
-    "karma-phantomjs-launcher": "~0.1"
+    "karma-phantomjs-launcher": "~0.1",
+    "uglifyjs": "^2.4.10"
   },
   "directories": {},
   "dist": {
-    "shasum": "4a5e915e3188c8708f254b356196f28542acc1e0",
-    "tarball": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.19.tgz"
+    "shasum": "487c95fce886022ea48ff5f19e388932df46dd2e",
+    "tarball": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.22.tgz"
   },
   "engines": {
     "node": ">=0.6"
   },
-  "gitHead": "f0f751478d6623a84a5ed9618d94937829bbd015",
+  "gitHead": "40483b881b4380931e5af6f2f8a161b6caa71690",
   "homepage": "https://github.com/peterolson/BigInteger.js#readme",
   "keywords": [
     "math",
@@ -102,7 +103,8 @@
     "url": "git+ssh://git@github.com/peterolson/BigInteger.js.git"
   },
   "scripts": {
+    "minify": "uglifyjs BigInteger.js -o BigInteger.min.js",
     "test": "karma start my.conf.js"
   },
-  "version": "1.6.19"
+  "version": "1.6.22"
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/brace-expansion/README.md
----------------------------------------------------------------------
diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md
index 1793929..ed2ec1f 100644
--- a/node_modules/brace-expansion/README.md
+++ b/node_modules/brace-expansion/README.md
@@ -5,6 +5,7 @@ as known from sh/bash, in JavaScript.
 
 [![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)
 [![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion)
+[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/)
 
 [![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
 

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/brace-expansion/index.js
----------------------------------------------------------------------
diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js
index 955f27c..0478be8 100644
--- a/node_modules/brace-expansion/index.js
+++ b/node_modules/brace-expansion/index.js
@@ -106,7 +106,7 @@ function expand(str, isTop) {
   var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
   var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
   var isSequence = isNumericSequence || isAlphaSequence;
-  var isOptions = /^(.*,)+(.+)?$/.test(m.body);
+  var isOptions = m.body.indexOf(',') >= 0;
   if (!isSequence && !isOptions) {
     // {a},b}
     if (m.post.match(/,.*\}/)) {

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/brace-expansion/package.json
----------------------------------------------------------------------
diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json
index ad7edb5..7324b7d 100644
--- a/node_modules/brace-expansion/package.json
+++ b/node_modules/brace-expansion/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "brace-expansion@>=1.0.0 <2.0.0",
-  "_id": "brace-expansion@1.1.6",
+  "_id": "brace-expansion@1.1.7",
   "_inCache": true,
   "_location": "/brace-expansion",
-  "_nodeVersion": "4.4.7",
+  "_nodeVersion": "7.8.0",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/brace-expansion-1.1.6.tgz_1469047715600_0.9362958471756428"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/brace-expansion-1.1.7.tgz_1491552830231_0.7213963181711733"
   },
   "_npmUser": {
     "name": "juliangruber",
     "email": "julian@juliangruber.com"
   },
-  "_npmVersion": "2.15.8",
+  "_npmVersion": "4.2.0",
   "_phantomChildren": {},
   "_requested": {
     "raw": "brace-expansion@^1.0.0",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/minimatch"
   ],
-  "_resolved": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
-  "_shasum": "7197d7eaa9b87e648390ea61fc66c84427420df9",
+  "_resolved": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz",
+  "_shasum": "3effc3c50e000531fb720eaff80f0ae8ef23cf59",
   "_shrinkwrap": null,
   "_spec": "brace-expansion@^1.0.0",
   "_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/minimatch",
@@ -59,14 +59,15 @@
   },
   "description": "Brace expansion as known from sh/bash",
   "devDependencies": {
+    "matcha": "^0.7.0",
     "tape": "^4.6.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "7197d7eaa9b87e648390ea61fc66c84427420df9",
-    "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz"
+    "shasum": "3effc3c50e000531fb720eaff80f0ae8ef23cf59",
+    "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz"
   },
-  "gitHead": "791262fa06625e9c5594cde529a21d82086af5f2",
+  "gitHead": "892512024872ca7680554be90f6e8ce065053372",
   "homepage": "https://github.com/juliangruber/brace-expansion",
   "keywords": [],
   "license": "MIT",
@@ -89,6 +90,7 @@
     "url": "git://github.com/juliangruber/brace-expansion.git"
   },
   "scripts": {
+    "bench": "matcha test/perf/bench.js",
     "gentest": "bash test/generate.sh",
     "test": "tape test/*.js"
   },
@@ -108,5 +110,5 @@
       "android-browser/4.2..latest"
     ]
   },
-  "version": "1.1.6"
+  "version": "1.1.7"
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/cordova-common/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/RELEASENOTES.md b/node_modules/cordova-common/RELEASENOTES.md
index 83777f5..ffd0248 100644
--- a/node_modules/cordova-common/RELEASENOTES.md
+++ b/node_modules/cordova-common/RELEASENOTES.md
@@ -20,6 +20,13 @@
 -->
 # Cordova-common Release Notes
 
+### 2.0.2 (Apr 14, 2017)
+* [CB-11233](https://issues.apache.org/jira/browse/CB-11233) - Support installing frameworks into 'Embedded Binaries' section of the Xcode project
+* [CB-10438](https://issues.apache.org/jira/browse/CB-10438) - Install correct dependency version. Removed shell.remove, added pkg.json to dependency tests 1-3, and updated install.js (.replace) to fix tests in uninstall.spec.js and update to workw with jasmine 2.0
+* [CB-11120](https://issues.apache.org/jira/browse/CB-11120) - Allow short/display name in config.xml
+* [CB-11346](https://issues.apache.org/jira/browse/CB-11346) - Remove known platforms check
+* [CB-11977](https://issues.apache.org/jira/browse/CB-11977) - updated engines and enginescript for common, fetch, and serve
+
 ### 2.0.1 (Mar 09, 2017)
 * [CB-12557](https://issues.apache.org/jira/browse/CB-12557) add both stdout and stderr properties to the error object passed to superspawn reject handler.
 

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/cordova-common/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/package.json b/node_modules/cordova-common/package.json
index a7c3d8b..fa5a41d 100644
--- a/node_modules/cordova-common/package.json
+++ b/node_modules/cordova-common/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "cordova-common@>=2.0.1 <3.0.0",
-  "_id": "cordova-common@2.0.1",
+  "_id": "cordova-common@2.0.2",
   "_inCache": true,
   "_location": "/cordova-common",
-  "_nodeVersion": "6.9.4",
+  "_nodeVersion": "4.7.3",
   "_npmOperationalInternal": {
-    "host": "packages-18-east.internal.npmjs.com",
-    "tmp": "tmp/cordova-common-2.0.1.tgz_1489432932737_0.5238456283695996"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/cordova-common-2.0.2.tgz_1492453798445_0.6290795875247568"
   },
   "_npmUser": {
-    "name": "filmaj",
-    "email": "maj.fil@gmail.com"
+    "name": "shazron",
+    "email": "shazron@gmail.com"
   },
-  "_npmVersion": "3.10.10",
+  "_npmVersion": "2.15.11",
   "_phantomChildren": {},
   "_requested": {
     "raw": "cordova-common@^2.0.1",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "http://registry.npmjs.org/cordova-common/-/cordova-common-2.0.1.tgz",
-  "_shasum": "99af318d7cb8988047cfe37bb9f25ea881d52815",
+  "_resolved": "http://registry.npmjs.org/cordova-common/-/cordova-common-2.0.2.tgz",
+  "_shasum": "57467976b8afd5e0bd0a13111b66a420441601cb",
   "_shrinkwrap": null,
   "_spec": "cordova-common@^2.0.1",
   "_where": "/Users/steveng/repo/cordova/cordova-android",
@@ -78,11 +78,12 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "99af318d7cb8988047cfe37bb9f25ea881d52815",
-    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-2.0.1.tgz"
+    "shasum": "57467976b8afd5e0bd0a13111b66a420441601cb",
+    "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-2.0.2.tgz"
   },
+  "engineStrict": true,
   "engines": {
-    "node": ">=0.9.9"
+    "node": ">=4.0.0"
   },
   "license": "Apache-2.0",
   "main": "cordova-common.js",
@@ -129,5 +130,5 @@
     "jshint": "jshint src && jshint spec",
     "test": "npm run jshint && npm run jasmine"
   },
-  "version": "2.0.1"
+  "version": "2.0.2"
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
index e477a89..cd718de 100644
--- a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
+++ b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
@@ -116,6 +116,16 @@ ConfigParser.prototype = {
         var el = findOrCreate(this.doc, 'name');
         el.text = name;
     },
+    shortName: function() {
+        return this.doc.find('name').attrib['short'] || this.name();
+    },
+    setShortName: function(shortname) {
+        var el = findOrCreate(this.doc, 'name');
+        if (!el.text) {
+            el.text = shortname;
+        }
+        el.attrib['short'] = shortname;
+    },
     description: function() {
         return getNodeTextSafe(this.doc.find('description'));
     },

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/PluginInfo/PluginInfo.js b/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
index 44501fa..4817470 100644
--- a/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
+++ b/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
@@ -108,6 +108,7 @@ function PluginInfo(dirname) {
     function _parseDependency(tag) {
         var dep =
             { id : tag.attrib.id
+            , version: tag.attrib.version || ''
             , url : tag.attrib.url || ''
             , subdir : tag.attrib.subdir || ''
             , commit : tag.attrib.commit
@@ -318,6 +319,7 @@ function PluginInfo(dirname) {
                 type: el.attrib.type,
                 parent: el.attrib.parent,
                 custom: isStrTrue(el.attrib.custom),
+                embed: isStrTrue(el.attrib.embed),
                 src: el.attrib.src,
                 spec: el.attrib.spec,
                 weak: isStrTrue(el.attrib.weak),

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/5a759039/node_modules/cordova-common/src/events.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/events.js b/node_modules/cordova-common/src/events.js
index e702bd8..3080416 100644
--- a/node_modules/cordova-common/src/events.js
+++ b/node_modules/cordova-common/src/events.js
@@ -20,6 +20,7 @@
 var EventEmitter = require('events').EventEmitter;
 
 var INSTANCE = new EventEmitter();
+INSTANCE.setMaxListeners(20);
 var EVENTS_RECEIVER;
 
 module.exports = INSTANCE;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[10/10] android commit: Set VERSION to 6.2.3 (via coho)

Posted by fi...@apache.org.
Set VERSION to 6.2.3 (via coho)


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/c0df73c3
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/c0df73c3
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/c0df73c3

Branch: refs/heads/6.2.x
Commit: c0df73c3c1040792fdf08acf3c2e07566123357f
Parents: 211a7fc
Author: filmaj <ma...@gmail.com>
Authored: Tue May 2 16:19:19 2017 -0700
Committer: filmaj <ma...@gmail.com>
Committed: Tue May 2 16:19:19 2017 -0700

----------------------------------------------------------------------
 bin/templates/cordova/version                        | 2 +-
 framework/src/org/apache/cordova/CordovaWebView.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c0df73c3/bin/templates/cordova/version
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/version b/bin/templates/cordova/version
index 6415a8d..cdc2e80 100755
--- a/bin/templates/cordova/version
+++ b/bin/templates/cordova/version
@@ -20,7 +20,7 @@
 */
 
 // Coho updates this line:
-var VERSION = "6.2.2";
+var VERSION = "6.2.3";
 
 module.exports.version = VERSION;
 

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/c0df73c3/framework/src/org/apache/cordova/CordovaWebView.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaWebView.java b/framework/src/org/apache/cordova/CordovaWebView.java
index 6f00c40..713884b 100644
--- a/framework/src/org/apache/cordova/CordovaWebView.java
+++ b/framework/src/org/apache/cordova/CordovaWebView.java
@@ -31,7 +31,7 @@ import android.webkit.WebChromeClient.CustomViewCallback;
  * are not expected to implement it.
  */
 public interface CordovaWebView {
-    public static final String CORDOVA_VERSION = "6.2.2";
+    public static final String CORDOVA_VERSION = "6.2.3";
 
     void init(CordovaInterface cordova, List<PluginEntry> pluginEntries, CordovaPreferences preferences);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org