Merge "Let ArchiveClassFileProvider allow subclasses"
diff --git a/.gitignore b/.gitignore
index 1241f78..86cb42d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,8 +4,8 @@
android-data*/
tests/2016-12-19/art.tar.gz
tests/2016-12-19/art
-tests/2017-07-27/art.tar.gz
-tests/2017-07-27/art
+tests/2017-10-04/art.tar.gz
+tests/2017-10-04/art
tmp/
tools/*.pyc
tools/*/art
diff --git a/build.gradle b/build.gradle
index a678d76..e9bfe8e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -88,6 +88,12 @@
}
output.resourcesDir = 'build/classes/examplesAndroidO'
}
+ examplesAndroidP {
+ java {
+ srcDirs = ['src/test/examplesAndroidP']
+ }
+ output.resourcesDir = 'build/classes/examplesAndroidP'
+ }
jctfCommon {
java {
srcDirs = [
@@ -145,6 +151,7 @@
jctfTestsCompile 'junit:junit:4.12'
jctfTestsCompile sourceSets.jctfCommon.output
examplesAndroidOCompile group: 'org.ow2.asm', name: 'asm', version: '6.0_BETA'
+ examplesAndroidPCompile group: 'org.ow2.asm', name: 'asm', version: '6.0_BETA'
examplesCompile 'com.google.protobuf:protobuf-lite:3.0.0'
examplesRuntime 'com.google.protobuf:protobuf-lite:3.0.0'
supportLibs 'com.android.support:support-v4:25.4.0'
@@ -185,7 +192,7 @@
def cloudDependencies = [
"tests" : [
- "2017-07-27/art",
+ "2017-10-04/art",
"2016-12-19/art"
],
"third_party": [
@@ -557,7 +564,7 @@
task createArtTests(type: Exec) {
def outputDir = "build/generated/test/java/com/android/tools/r8/art"
def createArtTestsScript = "tools/create_art_tests.py"
- inputs.file "tests/2017-07-27/art.tar.gz"
+ inputs.file "tests/2017-10-04/art.tar.gz"
inputs.file createArtTestsScript
outputs.dir outputDir
dependsOn downloadDeps
@@ -887,6 +894,51 @@
}
}
+task buildExampleAndroidPJars {
+ dependsOn downloadDeps
+ def examplesDir = file("src/test/examplesAndroidP")
+
+ task "compile_examplesAndroidP"(type: JavaCompile) {
+ source = fileTree(dir: examplesDir, include: '**/*.java')
+ destinationDir = file("build/test/examplesAndroidP/classes")
+ classpath = sourceSets.main.compileClasspath
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ options.compilerArgs += ["-Xlint:-options"]
+ }
+ examplesDir.eachDir { dir ->
+ def name = dir.getName();
+ def destinationDir = file("build/test/examplesAndroidP/classes");
+ if (file("src/test/examplesAndroidP/" + name + "/TestGenerator.java").isFile()) {
+ task "generate_examplesAndroidP_${name}"(type: JavaExec,
+ dependsOn: "compile_examplesAndroidP") {
+ main = name + ".TestGenerator"
+ classpath = files(destinationDir, sourceSets.main.compileClasspath)
+ args destinationDir
+ }
+ } else {
+ task "generate_examplesAndroidP_${name}" () {}
+ }
+ }
+ examplesDir.eachDir { dir ->
+ def name = dir.getName();
+ def exampleOutputDir = file("build/test/examplesAndroidP");
+ def jarName = "${name}.jar"
+ dependsOn "jar_examplesAndroidP_${name}"
+ task "jar_examplesAndroidP_${name}"(type: Jar,
+ dependsOn: ["compile_examplesAndroidP",
+ "generate_examplesAndroidP_${name}"]) {
+ archiveName = jarName
+ destinationDir = exampleOutputDir
+ from "build/test/examplesAndroidP/classes" // Java 1.8 classes
+ include "**/" + name + "/**/*.class"
+ // Do not include generator into the test runtime jar, it is not useful.
+ // Otherwise, shrinking will need ASM jars.
+ exclude "**/TestGenerator*"
+ }
+ }
+}
+
task buildExamples {
if (OperatingSystem.current().isMacOsX() || OperatingSystem.current().isWindows()) {
logger.lifecycle("WARNING: Testing (including building examples) is only partially supported on your " +
@@ -900,6 +952,7 @@
dependsOn buildExampleJars
dependsOn buildExampleAndroidNJars
dependsOn buildExampleAndroidOJars
+ dependsOn buildExampleAndroidPJars
def examplesDir = file("src/test/examples")
def noDexTests = [
"multidex",
diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index 426197b..e6f099e 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -73,7 +73,7 @@
return diagnosticsHandler;
}
- boolean getEnableDesugaring() {
+ public boolean getEnableDesugaring() {
return enableDesugaring;
}
@@ -85,6 +85,7 @@
private CompilationMode mode;
private int minApiLevel = AndroidApiLevel.getDefault().getLevel();
private DiagnosticsHandler diagnosticsHandler = new DefaultDiagnosticsHandler();
+ private boolean enableDesugaring = true;
protected Builder(CompilationMode mode) {
this(AndroidApp.builder(), mode, false);
@@ -160,8 +161,13 @@
return self();
}
- protected boolean getEnableDesugaring() {
- return true;
+ public B setEnableDesugaring(boolean enableDesugaring) {
+ this.enableDesugaring = enableDesugaring;
+ return self();
+ }
+
+ public boolean getEnableDesugaring() {
+ return enableDesugaring;
}
protected void validate() throws CompilationException {
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexList.java b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
index 296507f..a885bbb 100644
--- a/src/main/java/com/android/tools/r8/GenerateMainDexList.java
+++ b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
@@ -42,7 +42,8 @@
AppInfoWithSubtyping appInfo = new AppInfoWithSubtyping(application);
RootSet mainDexRootSet =
new RootSetBuilder(application, appInfo, options.mainDexKeepRules, options).run(executor);
- Set<DexType> mainDexBaseClasses = new Enqueuer(appInfo).traceMainDex(mainDexRootSet, timing);
+ Set<DexType> mainDexBaseClasses =
+ new Enqueuer(appInfo, options).traceMainDex(mainDexRootSet, timing);
Set<DexType> mainDexClasses = new MainDexListBuilder(mainDexBaseClasses, application).run();
List<String> result = mainDexClasses.stream()
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index c6fcc22..cbb7f0b 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -31,8 +31,8 @@
import com.android.tools.r8.shaking.DiscardedChecker;
import com.android.tools.r8.shaking.Enqueuer;
import com.android.tools.r8.shaking.MainDexListBuilder;
+import com.android.tools.r8.shaking.ProguardClassNameList;
import com.android.tools.r8.shaking.ProguardRuleParserException;
-import com.android.tools.r8.shaking.ProguardTypeMatcher;
import com.android.tools.r8.shaking.ProguardTypeMatcher.MatchSpecificType;
import com.android.tools.r8.shaking.ReasonPrinter;
import com.android.tools.r8.shaking.RootSetBuilder;
@@ -153,15 +153,15 @@
}
private Set<DexType> filterMissingClasses(Set<DexType> missingClasses,
- Set<ProguardTypeMatcher> dontWarnPatterns) {
+ ProguardClassNameList dontWarnPatterns) {
Set<DexType> result = new HashSet<>(missingClasses);
- for (ProguardTypeMatcher matcher : dontWarnPatterns) {
+ dontWarnPatterns.forEachTypeMatcher(matcher -> {
if (matcher instanceof MatchSpecificType) {
result.remove(((MatchSpecificType) matcher).type);
} else {
result.removeIf(matcher::matches);
}
- }
+ });
return result;
}
@@ -221,7 +221,7 @@
new RootSetBuilder(
application, appInfo, options.proguardConfiguration.getRules(), options)
.run(executorService);
- Enqueuer enqueuer = new Enqueuer(appInfo);
+ Enqueuer enqueuer = new Enqueuer(appInfo, options);
enqueuer.addExtension(new ProtoLiteExtension(appInfo));
appInfo = enqueuer.traceApplication(rootSet, timing);
if (options.proguardConfiguration.isPrintSeeds()) {
@@ -282,7 +282,7 @@
if (!options.mainDexKeepRules.isEmpty()) {
appInfo = new AppInfoWithSubtyping(application);
- Enqueuer enqueuer = new Enqueuer(appInfo);
+ Enqueuer enqueuer = new Enqueuer(appInfo, options);
// Lets find classes which may have code executed before secondary dex files installation.
RootSet mainDexRootSet =
new RootSetBuilder(application, appInfo, options.mainDexKeepRules, options)
@@ -301,7 +301,7 @@
if (options.useTreeShaking || !options.skipMinification) {
timing.begin("Post optimization code stripping");
try {
- Enqueuer enqueuer = new Enqueuer(appInfo);
+ Enqueuer enqueuer = new Enqueuer(appInfo, options);
appInfo = enqueuer.traceApplication(rootSet, timing);
if (options.useTreeShaking) {
TreePruner pruner = new TreePruner(application, appInfo.withLiveness(), options);
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 502dd3c..9529093 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -36,12 +36,18 @@
private Optional<Boolean> discardedChecker = Optional.empty();
private Optional<Boolean> minification = Optional.empty();
private boolean ignoreMissingClasses = false;
+ private boolean forceProguardCompatibility = false;
private Path proguardMapOutput = null;
private Builder() {
super(CompilationMode.RELEASE);
}
+ protected Builder(boolean forceProguardCompatibility) {
+ super(CompilationMode.RELEASE);
+ this.forceProguardCompatibility = forceProguardCompatibility;
+ }
+
private Builder(AndroidApp app) {
super(app, CompilationMode.RELEASE);
}
@@ -243,6 +249,7 @@
useDiscardedChecker,
useMinification,
ignoreMissingClasses,
+ forceProguardCompatibility,
proguardMapOutput);
}
}
@@ -283,6 +290,7 @@
private final boolean useDiscardedChecker;
private final boolean useMinification;
private final boolean ignoreMissingClasses;
+ private final boolean forceProguardCompatibility;
private final Path proguardMapOutput;
public static Builder builder() {
@@ -400,6 +408,7 @@
boolean useDiscardedChecker,
boolean useMinification,
boolean ignoreMissingClasses,
+ boolean forceProguardCompatibility,
Path proguardMapOutput) {
super(inputApp, outputPath, outputMode, mode, minApiLevel, diagnosticsHandler,
enableDesugaring);
@@ -413,6 +422,7 @@
this.useDiscardedChecker = useDiscardedChecker;
this.useMinification = useMinification;
this.ignoreMissingClasses = ignoreMissingClasses;
+ this.forceProguardCompatibility = forceProguardCompatibility;
this.proguardMapOutput = proguardMapOutput;
}
@@ -425,6 +435,7 @@
useDiscardedChecker = false;
useMinification = false;
ignoreMissingClasses = false;
+ forceProguardCompatibility = false;
proguardMapOutput = null;
}
public boolean useTreeShaking() {
@@ -477,6 +488,11 @@
internal.inlineAccessors = false;
}
internal.proguardMapOutput = proguardMapOutput;
+
+ // EXPERIMENTAL flags.
+ assert !internal.forceProguardCompatibility;
+ internal.forceProguardCompatibility = forceProguardCompatibility;
+
return internal;
}
}
diff --git a/src/main/java/com/android/tools/r8/code/ConstClass.java b/src/main/java/com/android/tools/r8/code/ConstClass.java
index 04fda4b..a5755e9 100644
--- a/src/main/java/com/android/tools/r8/code/ConstClass.java
+++ b/src/main/java/com/android/tools/r8/code/ConstClass.java
@@ -36,7 +36,7 @@
@Override
public void registerUse(UseRegistry registry) {
- registry.registerTypeReference(getType());
+ registry.registerConstClass(getType());
}
public DexType getType() {
diff --git a/src/main/java/com/android/tools/r8/code/ConstMethodHandle.java b/src/main/java/com/android/tools/r8/code/ConstMethodHandle.java
new file mode 100644
index 0000000..e2c084b
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/code/ConstMethodHandle.java
@@ -0,0 +1,77 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.code;
+
+import com.android.tools.r8.ApiLevelException;
+import com.android.tools.r8.errors.InternalCompilerError;
+import com.android.tools.r8.graph.DexMethodHandle;
+import com.android.tools.r8.graph.ObjectToOffsetMapping;
+import com.android.tools.r8.graph.OffsetToObjectMapping;
+import com.android.tools.r8.graph.UseRegistry;
+import com.android.tools.r8.ir.conversion.IRBuilder;
+import com.android.tools.r8.naming.ClassNameMapper;
+import java.nio.ShortBuffer;
+
+public class ConstMethodHandle extends Format21c {
+
+ public static final int OPCODE = 0xfe;
+ public static final String NAME = "ConstMethodHandle";
+ public static final String SMALI_NAME = "const-method-handle";
+
+ ConstMethodHandle(int high, BytecodeStream stream, OffsetToObjectMapping mapping) {
+ super(high, stream, mapping.getMethodHandleMap());
+ }
+
+ public ConstMethodHandle(int register, DexMethodHandle methodHandle) {
+ super(register, methodHandle);
+ }
+
+ public DexMethodHandle getMethodHandle() {
+ return (DexMethodHandle) BBBB;
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ public String getSmaliName() {
+ return SMALI_NAME;
+ }
+
+ public int getOpcode() {
+ return OPCODE;
+ }
+
+ public String toString(ClassNameMapper naming) {
+ return formatString("v" + AA + ", \"" + BBBB.toString() + "\"");
+ }
+
+ public String toSmaliString(ClassNameMapper naming) {
+ return formatSmaliString("v" + AA + ", \"" + BBBB.toString() + "\"");
+ }
+
+ @Override
+ public void registerUse(UseRegistry registry) {
+ registry.registerMethodHandle(getMethodHandle());
+ }
+
+ @Override
+ public void write(ShortBuffer dest, ObjectToOffsetMapping mapping) {
+ int index = BBBB.getOffset(mapping);
+ if (index != (index & 0xffff)) {
+ throw new InternalCompilerError("MethodHandle-index overflow.");
+ }
+ super.write(dest, mapping);
+ }
+
+ @Override
+ public void buildIR(IRBuilder builder) throws ApiLevelException {
+ builder.addConstMethodHandle(AA, (DexMethodHandle) BBBB);
+ }
+
+ @Override
+ public boolean canThrow() {
+ return true;
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/code/InvokeCustom.java b/src/main/java/com/android/tools/r8/code/InvokeCustom.java
index 3c0b67c..c4a16b5 100644
--- a/src/main/java/com/android/tools/r8/code/InvokeCustom.java
+++ b/src/main/java/com/android/tools/r8/code/InvokeCustom.java
@@ -4,8 +4,6 @@
package com.android.tools.r8.code;
import com.android.tools.r8.graph.DexCallSite;
-import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexMethodHandle;
import com.android.tools.r8.graph.DexValue;
import com.android.tools.r8.graph.DexValue.DexValueMethodHandle;
import com.android.tools.r8.graph.DexValue.DexValueType;
@@ -61,54 +59,15 @@
}
static void registerCallSite(UseRegistry registry, DexCallSite callSite) {
- InvokeCustom.registerMethodHandle(registry, callSite.bootstrapMethod);
+ registry.registerMethodHandle(callSite.bootstrapMethod);
// Register bootstrap method arguments, only Type and MethodHandle need to be register.
for (DexValue arg : callSite.bootstrapArgs) {
if (arg instanceof DexValueType) {
registry.registerTypeReference(((DexValueType) arg).value);
} else if (arg instanceof DexValueMethodHandle) {
- InvokeCustom.registerMethodHandle(registry, ((DexValueMethodHandle) arg).value);
+ registry.registerMethodHandle(((DexValueMethodHandle) arg).value);
}
}
}
-
- static void registerMethodHandle(UseRegistry registry, DexMethodHandle methodHandle) {
- switch (methodHandle.type) {
- case INSTANCE_GET:
- registry.registerInstanceFieldRead(methodHandle.asField());
- break;
- case INSTANCE_PUT:
- registry.registerInstanceFieldWrite(methodHandle.asField());
- break;
- case STATIC_GET:
- registry.registerStaticFieldRead(methodHandle.asField());
- break;
- case STATIC_PUT:
- registry.registerStaticFieldWrite(methodHandle.asField());
- break;
- case INVOKE_INSTANCE:
- registry.registerInvokeVirtual(methodHandle.asMethod());
- break;
- case INVOKE_STATIC:
- registry.registerInvokeStatic(methodHandle.asMethod());
- break;
- case INVOKE_CONSTRUCTOR:
- DexMethod method = methodHandle.asMethod();
- registry.registerNewInstance(method.getHolder());
- registry.registerInvokeDirect(method);
- break;
- case INVOKE_INTERFACE:
- registry.registerInvokeInterface(methodHandle.asMethod());
- break;
- case INVOKE_SUPER:
- registry.registerInvokeSuper(methodHandle.asMethod());
- break;
- case INVOKE_DIRECT:
- registry.registerInvokeDirect(methodHandle.asMethod());
- break;
- default:
- throw new AssertionError();
- }
- }
}
diff --git a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilderCommandBuilder.java b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilderCommandBuilder.java
index 5773d7d..dcfd68b 100644
--- a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilderCommandBuilder.java
+++ b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilderCommandBuilder.java
@@ -8,10 +8,7 @@
public class CompatDexBuilderCommandBuilder extends D8Command.Builder {
CompatDexBuilderCommandBuilder() {
super(true);
+ setEnableDesugaring(false);
}
- @Override
- protected boolean getEnableDesugaring() {
- return false;
- }
}
diff --git a/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java b/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java
index 3e8a006..568b7fd 100644
--- a/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java
+++ b/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java
@@ -9,10 +9,6 @@
public class CompatDxCommandBuilder extends D8Command.Builder {
CompatDxCommandBuilder() {
super(true);
- }
-
- @Override
- protected boolean getEnableDesugaring() {
- return false;
+ setEnableDesugaring(false);
}
}
diff --git a/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java b/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
index 1ad589f..9dc5424 100644
--- a/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
+++ b/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
@@ -26,17 +26,21 @@
public static class CompatProguardOptions {
public final String output;
public final int minApi;
+ public final boolean forceProguardCompatibility;
public final List<String> proguardConfig;
- CompatProguardOptions(List<String> proguardConfig, String output, int minApi) {
+ CompatProguardOptions(List<String> proguardConfig, String output, int minApi,
+ boolean forceProguardCompatibility) {
this.output = output;
this.minApi = minApi;
+ this.forceProguardCompatibility = forceProguardCompatibility;
this.proguardConfig = proguardConfig;
}
public static CompatProguardOptions parse(String[] args) throws CompilationException {
String output = null;
int minApi = 1;
+ boolean forceProguardCompatibility = false;
ImmutableList.Builder<String> builder = ImmutableList.builder();
if (args.length > 0) {
StringBuilder currentLine = new StringBuilder(args[0]);
@@ -45,6 +49,8 @@
if (arg.charAt(0) == '-') {
if (arg.equals("--min-api")) {
minApi = Integer.valueOf(args[++i]);
+ } else if (arg.equals("--force-proguard-compatibility")) {
+ forceProguardCompatibility = true;
} else if (arg.equals("--output")) {
output = args[++i];
} else if (arg.equals("-outjars")) {
@@ -60,7 +66,7 @@
}
builder.add(currentLine.toString());
}
- return new CompatProguardOptions(builder.build(), output, minApi);
+ return new CompatProguardOptions(builder.build(), output, minApi, forceProguardCompatibility);
}
}
@@ -68,11 +74,12 @@
System.out.println("CompatProguard " + String.join(" ", args));
// Run R8 passing all the options from the command line as a Proguard configuration.
CompatProguardOptions options = CompatProguardOptions.parse(args);
- R8.run(R8Command.builder()
- .setOutputPath(Paths.get(options.output))
+ R8Command.Builder builder =
+ new CompatProguardCommandBuilder(options.forceProguardCompatibility);
+ builder.setOutputPath(Paths.get(options.output))
.addProguardConfiguration(options.proguardConfig)
- .setMinApiLevel(options.minApi)
- .build());
+ .setMinApiLevel(options.minApi);
+ R8.run(builder.build());
}
public static void main(String[] args) throws IOException {
diff --git a/src/main/java/com/android/tools/r8/compatproguard/CompatProguardCommandBuilder.java b/src/main/java/com/android/tools/r8/compatproguard/CompatProguardCommandBuilder.java
new file mode 100644
index 0000000..df2298c
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/compatproguard/CompatProguardCommandBuilder.java
@@ -0,0 +1,13 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.compatproguard;
+
+import com.android.tools.r8.R8Command;
+
+public class CompatProguardCommandBuilder extends R8Command.Builder {
+ CompatProguardCommandBuilder(boolean forceProguardCompatibility) {
+ super(forceProguardCompatibility);
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/graph/DexClass.java b/src/main/java/com/android/tools/r8/graph/DexClass.java
index 5de6538..e454d89 100644
--- a/src/main/java/com/android/tools/r8/graph/DexClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexClass.java
@@ -239,6 +239,19 @@
return true;
}
+ public boolean hasDefaultInitializer() {
+ return getDefaultInitializer() != null;
+ }
+
+ public DexEncodedMethod getDefaultInitializer() {
+ for (DexEncodedMethod method : directMethods()) {
+ if (method.isDefaultInitializer()) {
+ return method;
+ }
+ }
+ return null;
+ }
+
public boolean defaultValuesForStaticFieldsMayTriggerAllocation() {
return Arrays.stream(staticFields())
.anyMatch(field -> !field.staticValue.mayTriggerAllocation());
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 7766a94..a541f5a 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -204,6 +204,10 @@
return accessFlags.isConstructor() && !accessFlags.isStatic();
}
+ public boolean isDefaultInitializer() {
+ return isInstanceInitializer() && method.proto.parameters.isEmpty();
+ }
+
public boolean isClassInitializer() {
return accessFlags.isConstructor() && accessFlags.isStatic();
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexMethodHandle.java b/src/main/java/com/android/tools/r8/graph/DexMethodHandle.java
index eeba4e8..d64a893 100644
--- a/src/main/java/com/android/tools/r8/graph/DexMethodHandle.java
+++ b/src/main/java/com/android/tools/r8/graph/DexMethodHandle.java
@@ -4,8 +4,10 @@
package com.android.tools.r8.graph;
import com.android.tools.r8.dex.IndexedItemCollection;
+import com.android.tools.r8.naming.NamingLens;
-public class DexMethodHandle extends IndexedDexItem {
+public class DexMethodHandle extends IndexedDexItem implements
+ PresortedComparable<DexMethodHandle> {
public enum MethodHandleType {
STATIC_PUT((short) 0x00),
@@ -190,4 +192,51 @@
assert isFieldHandle();
return (DexField) fieldOrMethod;
}
+
+ @Override
+ public int slowCompareTo(DexMethodHandle other) {
+ int result = type.getValue() - other.type.getValue();
+ if (result == 0) {
+ if (isFieldHandle()) {
+ result = asField().slowCompareTo(other.asField());
+ } else {
+ assert isMethodHandle();
+ result = asMethod().slowCompareTo(other.asMethod());
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public int slowCompareTo(DexMethodHandle other, NamingLens namingLens) {
+ int result = type.getValue() - other.type.getValue();
+ if (result == 0) {
+ if (isFieldHandle()) {
+ result = asField().slowCompareTo(other.asField(), namingLens);
+ } else {
+ assert isMethodHandle();
+ result = asMethod().slowCompareTo(other.asMethod(), namingLens);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public int layeredCompareTo(DexMethodHandle other, NamingLens namingLens) {
+ int result = type.getValue() - other.type.getValue();
+ if (result == 0) {
+ if (isFieldHandle()) {
+ result = asField().layeredCompareTo(other.asField(), namingLens);
+ } else {
+ assert isMethodHandle();
+ result = asMethod().layeredCompareTo(other.asMethod(), namingLens);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public int compareTo(DexMethodHandle other) {
+ return sortedCompareTo(other.getSortedIndex());
+ }
}
diff --git a/src/main/java/com/android/tools/r8/graph/UseRegistry.java b/src/main/java/com/android/tools/r8/graph/UseRegistry.java
index 45824c2..f6736fa 100644
--- a/src/main/java/com/android/tools/r8/graph/UseRegistry.java
+++ b/src/main/java/com/android/tools/r8/graph/UseRegistry.java
@@ -26,4 +26,47 @@
public abstract boolean registerStaticFieldWrite(DexField field);
public abstract boolean registerTypeReference(DexType type);
+
+ public void registerMethodHandle(DexMethodHandle methodHandle) {
+ switch (methodHandle.type) {
+ case INSTANCE_GET:
+ registerInstanceFieldRead(methodHandle.asField());
+ break;
+ case INSTANCE_PUT:
+ registerInstanceFieldWrite(methodHandle.asField());
+ break;
+ case STATIC_GET:
+ registerStaticFieldRead(methodHandle.asField());
+ break;
+ case STATIC_PUT:
+ registerStaticFieldWrite(methodHandle.asField());
+ break;
+ case INVOKE_INSTANCE:
+ registerInvokeVirtual(methodHandle.asMethod());
+ break;
+ case INVOKE_STATIC:
+ registerInvokeStatic(methodHandle.asMethod());
+ break;
+ case INVOKE_CONSTRUCTOR:
+ DexMethod method = methodHandle.asMethod();
+ registerNewInstance(method.getHolder());
+ registerInvokeDirect(method);
+ break;
+ case INVOKE_INTERFACE:
+ registerInvokeInterface(methodHandle.asMethod());
+ break;
+ case INVOKE_SUPER:
+ registerInvokeSuper(methodHandle.asMethod());
+ break;
+ case INVOKE_DIRECT:
+ registerInvokeDirect(methodHandle.asMethod());
+ break;
+ default:
+ throw new AssertionError();
+ }
+ }
+
+ public boolean registerConstClass(DexType type) {
+ return registerTypeReference(type);
+ }
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstMethodHandle.java b/src/main/java/com/android/tools/r8/ir/code/ConstMethodHandle.java
new file mode 100644
index 0000000..108eb32
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/ir/code/ConstMethodHandle.java
@@ -0,0 +1,80 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.ir.code;
+
+import com.android.tools.r8.dex.Constants;
+import com.android.tools.r8.graph.DexMethodHandle;
+import com.android.tools.r8.graph.DexString;
+import com.android.tools.r8.ir.conversion.DexBuilder;
+
+public class ConstMethodHandle extends ConstInstruction {
+
+ private final DexMethodHandle methodHandle;
+
+ public ConstMethodHandle(Value dest, DexMethodHandle methodHandle) {
+ super(dest);
+ dest.markNeverNull();
+ this.methodHandle = methodHandle;
+ }
+
+ public Value dest() {
+ return outValue;
+ }
+
+ public DexMethodHandle getValue() {
+ return methodHandle;
+ }
+
+ @Override
+ public void buildDex(DexBuilder builder) {
+ int dest = builder.allocatedRegister(dest(), getNumber());
+ builder.add(this, new com.android.tools.r8.code.ConstMethodHandle(dest, methodHandle));
+ }
+
+ @Override
+ public boolean identicalNonValueParts(Instruction other) {
+ return other.asConstMethodHandle().methodHandle == methodHandle;
+ }
+
+ @Override
+ public int compareNonValueParts(Instruction other) {
+ return methodHandle.slowCompareTo(other.asConstMethodHandle().methodHandle);
+ }
+
+ @Override
+ public int maxInValueRegister() {
+ assert false : "ConstMethodHandle has no register arguments.";
+ return 0;
+ }
+
+ @Override
+ public int maxOutValueRegister() {
+ return Constants.U8BIT_MAX;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + " \"" + methodHandle + "\"";
+ }
+
+ @Override
+ public boolean instructionTypeCanThrow() {
+ return true;
+ }
+
+ @Override
+ public boolean isOutConstant() {
+ return true;
+ }
+
+ @Override
+ public boolean isConstMethodHandle() {
+ return true;
+ }
+
+ @Override
+ public ConstMethodHandle asConstMethodHandle() {
+ return this;
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java b/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java
index 90a9b29..511293f 100644
--- a/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java
+++ b/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java
@@ -10,10 +10,9 @@
import java.util.List;
public class DominatorTree {
-
private BasicBlock[] sorted;
private BasicBlock[] doms;
- private final BasicBlock normalExitBlock = new BasicBlock();
+ private BasicBlock normalExitBlock = new BasicBlock();
public DominatorTree(IRCode code) {
this(code, Collections.emptyList());
@@ -23,13 +22,14 @@
DominatorTree(IRCode code, List<BasicBlock> blocksToIgnore) {
BasicBlock[] blocks = code.topologicallySortedBlocks(blocksToIgnore);
// Add the internal exit block to the block list.
+ for (BasicBlock block : blocks) {
+ if (block.exit().isReturn()) {
+ normalExitBlock.getPredecessors().add(block);
+ }
+ }
sorted = new BasicBlock[blocks.length + 1];
System.arraycopy(blocks, 0, sorted, 0, blocks.length);
sorted[blocks.length] = normalExitBlock;
- // Link internal exit block to each actual exit block.
- for (BasicBlock block : code.computeNormalExitBlocks()) {
- normalExitBlock.getPredecessors().add(block);
- }
numberBlocks();
build();
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/Instruction.java b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
index 21c2abf..24c3925 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Instruction.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
@@ -450,6 +450,14 @@
return null;
}
+ public boolean isConstMethodHandle() {
+ return false;
+ }
+
+ public ConstMethodHandle asConstMethodHandle() {
+ return null;
+ }
+
public boolean isConstString() {
return false;
}
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index 35cd7fa..c84adcb 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -32,6 +32,7 @@
import com.android.tools.r8.ir.code.Cmp;
import com.android.tools.r8.ir.code.Cmp.Bias;
import com.android.tools.r8.ir.code.ConstClass;
+import com.android.tools.r8.ir.code.ConstMethodHandle;
import com.android.tools.r8.ir.code.ConstNumber;
import com.android.tools.r8.ir.code.ConstString;
import com.android.tools.r8.ir.code.ConstType;
@@ -799,6 +800,19 @@
add(instruction);
}
+ public void addConstMethodHandle(int dest, DexMethodHandle methodHandle)
+ throws ApiLevelException {
+ if (!options.canUseConstantMethodHandle()) {
+ throw new ApiLevelException(
+ AndroidApiLevel.P,
+ "Const-method-handle",
+ null /* sourceString */);
+ }
+ Value out = writeRegister(dest, MoveType.OBJECT, ThrowingInfo.CAN_THROW);
+ ConstMethodHandle instruction = new ConstMethodHandle(out, methodHandle);
+ add(instruction);
+ }
+
public void addConstString(int dest, DexString string) {
Value out = writeRegister(dest, MoveType.OBJECT, ThrowingInfo.CAN_THROW);
ConstString instruction = new ConstString(out, string);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
index e44ee80..a4203a4 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
@@ -142,6 +142,7 @@
static final Type STRING_TYPE = Type.getObjectType("java/lang/String");
static final Type INT_ARRAY_TYPE = Type.getObjectType(INT_ARRAY_DESC);
static final Type THROWABLE_TYPE = Type.getObjectType("java/lang/Throwable");
+ static final Type METHOD_HANDLE_TYPE = Type.getObjectType("java/lang/invoke/MethodHandle");
private static final int[] NO_TARGETS = {};
@@ -619,7 +620,7 @@
case Opcodes.LDC: {
// const-class and const-string* may throw in dex.
LdcInsnNode ldc = (LdcInsnNode) insn;
- return ldc.cst instanceof String || ldc.cst instanceof Type;
+ return ldc.cst instanceof String || ldc.cst instanceof Type || ldc.cst instanceof Handle;
}
default:
return false;
@@ -1727,6 +1728,8 @@
state.push(Type.INT_TYPE);
} else if (insn.cst instanceof Float) {
state.push(Type.FLOAT_TYPE);
+ } else if (insn.cst instanceof Handle) {
+ state.push(METHOD_HANDLE_TYPE);
} else {
throw new CompilationError("Unsupported constant: " + insn.cst.toString());
}
@@ -2724,7 +2727,7 @@
}
}
- private void build(LdcInsnNode insn, IRBuilder builder) {
+ private void build(LdcInsnNode insn, IRBuilder builder) throws ApiLevelException {
if (insn.cst instanceof Type) {
Type type = (Type) insn.cst;
int dest = state.push(type);
@@ -2744,6 +2747,10 @@
} else if (insn.cst instanceof Float) {
int dest = state.push(Type.FLOAT_TYPE);
builder.addFloatConst(dest, Float.floatToRawIntBits((Float) insn.cst));
+ } else if (insn.cst instanceof Handle) {
+ Handle handle = (Handle) insn.cst;
+ int dest = state.push(METHOD_HANDLE_TYPE);
+ builder.addConstMethodHandle(dest, getMethodHandle(application, handle));
} else {
throw new CompilationError("Unsupported constant: " + insn.cst.toString());
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index 8ea7b32..7cb186f 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -995,6 +995,10 @@
for (StaticPut put : dominatingPuts.values()) {
DexField field = put.getField();
DexEncodedField encodedField = appInfo.definitionFor(field);
+ if (encodedField == null) {
+ // See b/67468748.
+ continue;
+ }
if (field.type == dexItemFactory.stringType) {
if (put.inValue().isConstant()) {
if (put.inValue().isConstNumber()) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/InliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/InliningOracle.java
index 8b7a05e..1921cba 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/InliningOracle.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/InliningOracle.java
@@ -45,7 +45,7 @@
void finish() {
if (Log.ENABLED) {
- System.out.println(info.toString());
+ Log.debug(getClass(), info.toString());
}
}
diff --git a/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java b/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java
index 2d38bf0..e1599b9 100644
--- a/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java
+++ b/src/main/java/com/android/tools/r8/jar/JarRegisterEffectsVisitor.java
@@ -48,7 +48,9 @@
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof Type) {
- registry.registerTypeReference(application.getType((Type) cst));
+ registry.registerConstClass(application.getType((Type) cst));
+ } else if (cst instanceof Handle) {
+ registerMethodHandleType((Handle) cst);
}
}
diff --git a/src/main/java/com/android/tools/r8/naming/DictionaryReader.java b/src/main/java/com/android/tools/r8/naming/DictionaryReader.java
index 1d05d25..0b26acd 100644
--- a/src/main/java/com/android/tools/r8/naming/DictionaryReader.java
+++ b/src/main/java/com/android/tools/r8/naming/DictionaryReader.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.naming;
+import com.android.tools.r8.CompilationException;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
import java.io.BufferedReader;
@@ -51,7 +52,7 @@
}
}
- public static ImmutableList<String> readAllNames(Path path) {
+ public static ImmutableList<String> readAllNames(Path path) throws CompilationException {
if (path != null) {
Builder<String> namesBuilder = new ImmutableList.Builder<String>();
try (DictionaryReader reader = new DictionaryReader(path);) {
@@ -61,7 +62,8 @@
name = reader.readName();
}
} catch (IOException e) {
- System.err.println("Unable to create dictionary from file " + path.toString());
+ throw new CompilationException(
+ "Unable to create dictionary from file " + path.toString(), e);
}
return namesBuilder.build();
} else {
diff --git a/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java b/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java
index ac65c5c..1f6b540 100644
--- a/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java
+++ b/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java
@@ -16,33 +16,24 @@
import java.util.IdentityHashMap;
import java.util.Map;
-class FieldNameMinifier {
-
- private final AppInfoWithSubtyping appInfo;
- private final RootSet rootSet;
- private final Map<DexField, DexString> renaming = new IdentityHashMap<>();
- private final ImmutableList<String> dictionary;
- private final Map<DexType, NamingState<DexType>> states = new IdentityHashMap<>();
+class FieldNameMinifier extends MemberNameMinifier<DexField, DexType> {
FieldNameMinifier(AppInfoWithSubtyping appInfo, RootSet rootSet, InternalOptions options) {
- this.appInfo = appInfo;
- this.rootSet = rootSet;
- this.dictionary = options.proguardConfiguration.getObfuscationDictionary();
+ super(appInfo, rootSet, options);
}
Map<DexField, DexString> computeRenaming(Timing timing) {
- NamingState<DexType> rootState = NamingState.createRoot(appInfo.dexItemFactory, dictionary);
// Reserve names in all classes first. We do this in subtyping order so we do not
// shadow a reserved field in subclasses. While there is no concept of virtual field
// dispatch in Java, field resolution still traverses the super type chain and external
// code might use a subtype to reference the field.
timing.begin("reserve-classes");
- reserveNamesInSubtypes(appInfo.dexItemFactory.objectType, rootState);
+ reserveNamesInSubtypes(appInfo.dexItemFactory.objectType, globalState);
timing.end();
// Next, reserve field names in interfaces. These should only be static.
timing.begin("reserve-interfaces");
DexType.forAllInterfaces(appInfo.dexItemFactory,
- iface -> reserveNamesInSubtypes(iface, rootState));
+ iface -> reserveNamesInSubtypes(iface, globalState));
timing.end();
// Now rename the rest.
timing.begin("rename");
@@ -57,7 +48,7 @@
if (holder == null) {
return;
}
- NamingState<DexType> newState = states.computeIfAbsent(type, t -> state.createChild());
+ NamingState<DexType> newState = computeStateIfAbsent(type, t -> state.createChild());
holder.forEachField(field -> reserveFieldName(field, newState, holder.isLibraryClass()));
type.forAllExtendsSubtypes(subtype -> reserveNamesInSubtypes(subtype, newState));
}
@@ -77,7 +68,7 @@
if (clazz == null) {
return;
}
- NamingState<DexType> state = states.get(clazz.type);
+ NamingState<DexType> state = getState(clazz.type);
assert state != null;
clazz.forEachField(field -> renameField(field, state));
type.forAllExtendsSubtypes(this::renameFieldsInSubtypes);
diff --git a/src/main/java/com/android/tools/r8/naming/MemberNameMinifier.java b/src/main/java/com/android/tools/r8/naming/MemberNameMinifier.java
new file mode 100644
index 0000000..37cdb34
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/naming/MemberNameMinifier.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.naming;
+
+import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.CachedHashValueDexItem;
+import com.android.tools.r8.graph.DexString;
+import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.shaking.RootSetBuilder.RootSet;
+import com.android.tools.r8.utils.InternalOptions;
+import com.google.common.collect.ImmutableList;
+import java.util.IdentityHashMap;
+import java.util.Map;
+import java.util.function.Function;
+
+abstract class MemberNameMinifier<MemberType, StateType extends CachedHashValueDexItem> {
+
+ protected final AppInfoWithSubtyping appInfo;
+ protected final RootSet rootSet;
+ protected final ImmutableList<String> dictionary;
+
+ protected final Map<MemberType, DexString> renaming = new IdentityHashMap<>();
+ protected final Map<DexType, NamingState<StateType>> states = new IdentityHashMap<>();
+ protected final NamingState<StateType> globalState;
+ protected final boolean useUniqueMemberNames;
+
+ MemberNameMinifier(AppInfoWithSubtyping appInfo, RootSet rootSet, InternalOptions options) {
+ this.appInfo = appInfo;
+ this.rootSet = rootSet;
+ this.dictionary = options.proguardConfiguration.getObfuscationDictionary();
+
+ this.globalState = NamingState.createRoot(appInfo.dexItemFactory, dictionary);
+ this.useUniqueMemberNames = options.proguardConfiguration.isUseUniqueClassMemberNames();
+ }
+
+ protected NamingState<StateType> computeStateIfAbsent(
+ DexType type, Function<DexType, NamingState<StateType>> f) {
+ return useUniqueMemberNames ? globalState : states.computeIfAbsent(type, f);
+ }
+
+ protected NamingState<StateType> getState(DexType type) {
+ return useUniqueMemberNames ? globalState : states.get(type);
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/naming/MemberNaming.java b/src/main/java/com/android/tools/r8/naming/MemberNaming.java
index 1537f05..762bdb6 100644
--- a/src/main/java/com/android/tools/r8/naming/MemberNaming.java
+++ b/src/main/java/com/android/tools/r8/naming/MemberNaming.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.naming;
+import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;
@@ -280,6 +281,10 @@
method.proto.returnType.toSourceString(), paramNames);
}
+ public static MethodSignature initializer(String[] parameters) {
+ return new MethodSignature(Constants.INSTANCE_INITIALIZER_NAME, "void", parameters);
+ }
+
@Override
Signature asRenamed(String renamedName) {
return new MethodSignature(renamedName, type, parameters);
diff --git a/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java b/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java
index 4fa3809..276c14b 100644
--- a/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java
+++ b/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java
@@ -86,20 +86,12 @@
* TODO(herhut): Currently, we do not minify members of annotation interfaces, as this would require
* parsing and minification of the string arguments to annotations.
*/
-class MethodNameMinifier {
+class MethodNameMinifier extends MemberNameMinifier<DexMethod, DexProto> {
- private final AppInfoWithSubtyping appInfo;
- private final RootSet rootSet;
- private final Map<DexType, NamingState<DexProto>> states = new IdentityHashMap<>();
- private final NamingState<DexProto> globalState;
private MethodSignatureEquivalence equivalence = MethodSignatureEquivalence.get();
- private final ImmutableList<String> dictionary;
MethodNameMinifier(AppInfoWithSubtyping appInfo, RootSet rootSet, InternalOptions options) {
- this.appInfo = appInfo;
- this.rootSet = rootSet;
- this.dictionary = options.proguardConfiguration.getObfuscationDictionary();
- this.globalState = NamingState.createRoot(appInfo.dexItemFactory, dictionary);
+ super(appInfo, rootSet, options);
}
Map<DexMethod, DexString> computeRenaming(Timing timing) {
@@ -120,35 +112,32 @@
// Phase 3: Assign names to interface methods. These are assigned by finding a name that is
// free in all naming states that may hold an implementation.
timing.begin("Phase 3");
- Map<DexMethod, DexString> renaming = new IdentityHashMap<>();
- assignNamesToInterfaceMethods(frontierMap, renaming, timing);
+ assignNamesToInterfaceMethods(frontierMap, timing);
timing.end();
// Phase 4: Assign names top-down by traversing the subtype hierarchy.
timing.begin("Phase 4");
- assignNamesToClassesMethods(appInfo.dexItemFactory.objectType, false, renaming);
+ assignNamesToClassesMethods(appInfo.dexItemFactory.objectType, false);
timing.end();
// Phase 4: Do the same for private methods.
timing.begin("Phase 5");
- assignNamesToClassesMethods(appInfo.dexItemFactory.objectType, true, renaming);
+ assignNamesToClassesMethods(appInfo.dexItemFactory.objectType, true);
timing.end();
return renaming;
}
- private void assignNamesToClassesMethods(DexType type, boolean doPrivates,
- Map<DexMethod, DexString> renaming) {
+ private void assignNamesToClassesMethods(DexType type, boolean doPrivates) {
DexClass holder = appInfo.definitionFor(type);
if (holder != null && !holder.isLibraryClass()) {
- NamingState<DexProto> state = states
- .computeIfAbsent(type, k -> states.get(holder.superType).createChild());
- holder.forEachMethod(method -> assignNameToMethod(method, state, doPrivates, renaming));
+ NamingState<DexProto> state =
+ computeStateIfAbsent(type, k -> getState(holder.superType).createChild());
+ holder.forEachMethod(method -> assignNameToMethod(method, state, doPrivates));
}
- type.forAllExtendsSubtypes(
- subtype -> assignNamesToClassesMethods(subtype, doPrivates, renaming));
+ type.forAllExtendsSubtypes(subtype -> assignNamesToClassesMethods(subtype, doPrivates));
}
- private void assignNameToMethod(DexEncodedMethod encodedMethod,
- NamingState<DexProto> state, boolean doPrivates, Map<DexMethod, DexString> renaming) {
+ private void assignNameToMethod(
+ DexEncodedMethod encodedMethod, NamingState<DexProto> state, boolean doPrivates) {
if (encodedMethod.accessFlags.isPrivate() != doPrivates) {
return;
}
@@ -168,10 +157,10 @@
Set<NamingState<DexProto>> reachableStates = new HashSet<>();
for (DexType iface : interfaces) {
// Add the interface itself
- reachableStates.add(states.get(iface));
+ reachableStates.add(getState(iface));
// And the frontiers that correspond to the classes that implement the interface.
iface.forAllImplementsSubtypes(t -> {
- NamingState<DexProto> state = states.get(frontierMap.get(t));
+ NamingState<DexProto> state = getState(frontierMap.get(t));
assert state != null;
reachableStates.add(state);
});
@@ -179,8 +168,7 @@
return reachableStates;
}
- private void assignNamesToInterfaceMethods(Map<DexType, DexType> frontierMap,
- Map<DexMethod, DexString> renaming, Timing timing) {
+ private void assignNamesToInterfaceMethods(Map<DexType, DexType> frontierMap, Timing timing) {
// First compute a map from method signatures to a set of naming states for interfaces and
// frontier states of classes that implement them. We add the frontier states so that we can
// reserve the names for later method naming.
@@ -209,10 +197,10 @@
methods.sort((a, b) -> globalStateMap.get(b).size() - globalStateMap.get(a).size());
for (Wrapper<DexMethod> key : methods) {
DexMethod method = key.get();
- assignNameForInterfaceMethodInAllStates(method,
+ assignNameForInterfaceMethodInAllStates(
+ method,
globalStateMap.get(key),
sourceMethodsMap.get(key),
- renaming,
originStates.get(key));
}
timing.end();
@@ -231,7 +219,6 @@
}
}
-
private void collectSubInterfaces(DexType iface, Set<DexType> interfaces) {
iface.forAllExtendsSubtypes(subtype -> {
assert subtype.isInterface();
@@ -251,13 +238,14 @@
globalStateMap.computeIfAbsent(key, k -> new HashSet<>());
stateSet.addAll(collectedStates);
sourceMethodsMap.computeIfAbsent(key, k -> new HashSet<>()).add(method.method);
- originStates.putIfAbsent(key, states.get(originInterface));
+ originStates.putIfAbsent(key, getState(originInterface));
}
- private void assignNameForInterfaceMethodInAllStates(DexMethod method,
+ private void assignNameForInterfaceMethodInAllStates(
+ DexMethod method,
Set<NamingState<DexProto>> collectedStates,
Set<DexMethod> sourceMethods,
- Map<DexMethod, DexString> renaming, NamingState<DexProto> originState) {
+ NamingState<DexProto> originState) {
boolean isReserved = false;
if (globalState.isReserved(method.name, method.proto)) {
for (NamingState<DexProto> state : collectedStates) {
@@ -326,7 +314,8 @@
Map<DexType, DexType> frontierMap) {
frontierMap.put(type, libraryFrontier);
NamingState<DexProto> state =
- states.computeIfAbsent(libraryFrontier,
+ computeStateIfAbsent(
+ libraryFrontier,
ignore -> parent == null
? NamingState.createRoot(appInfo.dexItemFactory, dictionary)
: parent.createChild());
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index ff8adee..358c1d3 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -28,6 +28,7 @@
import com.android.tools.r8.graph.PresortedComparable;
import com.android.tools.r8.logging.Log;
import com.android.tools.r8.shaking.RootSetBuilder.RootSet;
+import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.MethodSignatureEquivalence;
import com.android.tools.r8.utils.Timing;
import com.google.common.base.Equivalence.Wrapper;
@@ -69,6 +70,7 @@
public class Enqueuer {
private final AppInfoWithSubtyping appInfo;
+ private final InternalOptions options;
private RootSet rootSet;
private Map<DexType, Set<DexMethod>> virtualInvokes = Maps.newIdentityHashMap();
@@ -156,8 +158,9 @@
*/
private final Map<DexType, Set<DexAnnotation>> deferredAnnotations = new IdentityHashMap<>();
- public Enqueuer(AppInfoWithSubtyping appInfo) {
+ public Enqueuer(AppInfoWithSubtyping appInfo, InternalOptions options) {
this.appInfo = appInfo;
+ this.options = options;
}
public void addExtension(SemanticsProvider extension) {
@@ -332,6 +335,30 @@
}
return false;
}
+
+ @Override
+ public boolean registerConstClass(DexType type) {
+ boolean result = registerTypeReference(type);
+ // For Proguard compatibility mark default initializer for live type as live.
+ if (options.forceProguardCompatibility) {
+ if (type.isArrayType()) {
+ return result;
+ }
+ assert type.isClassType();
+ DexClass holder = appInfo.definitionFor(type);
+ if (holder == null) {
+ // Don't call reportMissingClass(type) here. That already happened in the call to
+ // registerTypeReference(type).
+ return result;
+ }
+ if (holder.hasDefaultInitializer()) {
+ registerNewInstance(type);
+ DexEncodedMethod init = holder.getDefaultInitializer();
+ markDirectStaticOrConstructorMethodAsLive(init, KeepReason.reachableFromLiveType(type));
+ }
+ }
+ return result;
+ }
}
//
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardClassNameList.java b/src/main/java/com/android/tools/r8/shaking/ProguardClassNameList.java
index cd1c5fc..979d238 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardClassNameList.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardClassNameList.java
@@ -12,6 +12,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
public abstract class ProguardClassNameList {
@@ -20,6 +21,10 @@
return new Builder();
}
+ public static ProguardClassNameList emptyList() {
+ return new EmptyClassNameList();
+ }
+
public static ProguardClassNameList singletonList(ProguardTypeMatcher matcher) {
return new SingleClassNameList(matcher);
}
@@ -69,6 +74,37 @@
public abstract boolean matches(DexType type);
+ public abstract void forEachTypeMatcher(Consumer<ProguardTypeMatcher> consumer);
+
+ private static class EmptyClassNameList extends ProguardClassNameList {
+
+ private EmptyClassNameList() {
+ }
+
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public void writeTo(StringBuilder builder) {
+ }
+
+ @Override
+ public List<DexType> asSpecificDexTypes() {
+ return null;
+ }
+
+ @Override
+ public boolean matches(DexType type) {
+ return false;
+ }
+
+ @Override
+ public void forEachTypeMatcher(Consumer<ProguardTypeMatcher> consumer) {
+ }
+ }
+
private static class SingleClassNameList extends ProguardClassNameList {
private final ProguardTypeMatcher className;
@@ -97,6 +133,11 @@
public boolean matches(DexType type) {
return className.matches(type);
}
+
+ @Override
+ public void forEachTypeMatcher(Consumer<ProguardTypeMatcher> consumer) {
+ consumer.accept(className);
+ }
}
private static class PositiveClassNameList extends ProguardClassNameList {
@@ -137,6 +178,11 @@
public boolean matches(DexType type) {
return classNames.stream().anyMatch(name -> name.matches(type));
}
+
+ @Override
+ public void forEachTypeMatcher(Consumer<ProguardTypeMatcher> consumer) {
+ classNames.forEach(consumer);
+ }
}
private static class MixedClassNameList extends ProguardClassNameList {
@@ -182,5 +228,10 @@
}
return false;
}
+
+ @Override
+ public void forEachTypeMatcher(Consumer<ProguardTypeMatcher> consumer) {
+ classNames.object2BooleanEntrySet().forEach(entry -> consumer.accept(entry.getKey()));
+ }
}
}
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
index 239f9bc..fd08f51 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -3,17 +3,15 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
+import com.android.tools.r8.CompilationException;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.naming.DictionaryReader;
import com.android.tools.r8.utils.InternalOptions.KeepAttributeOptions;
import com.android.tools.r8.utils.InternalOptions.PackageObfuscationMode;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
import java.nio.file.Path;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
public class ProguardConfiguration {
@@ -36,7 +34,7 @@
private boolean verbose = false;
private String renameSourceFileAttribute = null;
private final List<String> keepAttributePatterns = new ArrayList<>();
- private final Set<ProguardTypeMatcher> dontWarnPatterns = new HashSet<>();
+ private ProguardClassNameList dontWarnPatterns = ProguardClassNameList.emptyList();
protected final List<ProguardConfigurationRule> rules = new ArrayList<>();
private final DexItemFactory dexItemFactory;
private boolean printSeeds;
@@ -133,8 +131,8 @@
this.rules.add(rule);
}
- public void addDontWarnPattern(ProguardTypeMatcher pattern) {
- dontWarnPatterns.add(pattern);
+ public void setDontWarnPatterns(ProguardClassNameList patterns) {
+ dontWarnPatterns = patterns;
}
public void setSeedFile(Path seedFile) {
@@ -173,7 +171,7 @@
return keepParameterNames;
}
- public ProguardConfiguration build() {
+ public ProguardConfiguration build() throws CompilationException {
return new ProguardConfiguration(
dexItemFactory,
injars,
@@ -223,7 +221,7 @@
private final boolean verbose;
private final String renameSourceFileAttribute;
private final ImmutableList<String> keepAttributesPatterns;
- private final ImmutableSet<ProguardTypeMatcher> dontWarnPatterns;
+ private final ProguardClassNameList dontWarnPatterns;
protected final ImmutableList<ProguardConfigurationRule> rules;
private final boolean printSeeds;
private final Path seedFile;
@@ -252,7 +250,7 @@
boolean verbose,
String renameSourceFileAttribute,
List<String> keepAttributesPatterns,
- Set<ProguardTypeMatcher> dontWarnPatterns,
+ ProguardClassNameList dontWarnPatterns,
List<ProguardConfigurationRule> rules,
boolean printSeeds,
Path seedFile,
@@ -279,7 +277,7 @@
this.verbose = verbose;
this.renameSourceFileAttribute = renameSourceFileAttribute;
this.keepAttributesPatterns = ImmutableList.copyOf(keepAttributesPatterns);
- this.dontWarnPatterns = ImmutableSet.copyOf(dontWarnPatterns);
+ this.dontWarnPatterns = dontWarnPatterns;
this.rules = ImmutableList.copyOf(rules);
this.printSeeds = printSeeds;
this.seedFile = seedFile;
@@ -377,7 +375,7 @@
return keepAttributesPatterns;
}
- public ImmutableSet<ProguardTypeMatcher> getDontWarnPatterns() {
+ public ProguardClassNameList getDontWarnPatterns() {
return dontWarnPatterns;
}
@@ -430,7 +428,7 @@
false /* verbose */,
null /* renameSourceFileAttribute */,
KeepAttributeOptions.KEEP_ALL,
- ImmutableSet.of() /* dontWarnPatterns */,
+ ProguardClassNameList.emptyList(),
ImmutableList.of(ProguardKeepRule.defaultKeepAllRule()),
false /* printSeeds */,
null /* seedFile */,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index 08a7eca..a6e5703 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
+import com.android.tools.r8.CompilationException;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.graph.DexAccessFlags;
import com.android.tools.r8.graph.DexField;
@@ -50,7 +51,6 @@
"invokebasemethod");
private static final List<String> ignoredClassDescriptorOptions = ImmutableList
.of("isclassnamestring",
- "identifiernamestring",
"whyarenotsimple");
private static final List<String> warnedSingleArgOptions = ImmutableList
@@ -77,14 +77,8 @@
return configurationBuilder;
}
- public ProguardConfiguration getConfig() throws ProguardRuleParserException {
- if (configurationBuilder.isUseUniqueClassMemberNames()
- && configurationBuilder.isObfuscating()) {
- // The flag -useuniqueulassmembernames has only effect when minifying, so ignore it if we
- // are not.
- throw new ProguardRuleParserException("-useuniqueulassmembernames is not supported");
- }
-
+ public ProguardConfiguration getConfig()
+ throws ProguardRuleParserException, CompilationException {
if (configurationBuilder.isKeepParameterNames()
&& configurationBuilder.isObfuscating()) {
// The flag -keepparameternames has only effect when minifying, so ignore it if we
@@ -198,11 +192,12 @@
} else if (acceptString("ignorewarnings")) {
configurationBuilder.setIgnoreWarnings(true);
} else if (acceptString("dontwarn")) {
- do {
- ProguardTypeMatcher pattern = ProguardTypeMatcher.create(parseClassName(),
- ClassOrType.CLASS, dexItemFactory);
- configurationBuilder.addDontWarnPattern(pattern);
- } while (acceptChar(','));
+ if (isOptionalArgumentGiven()) {
+ configurationBuilder.setDontWarnPatterns(parseClassNames());
+ } else {
+ configurationBuilder.setDontWarnPatterns(
+ ProguardClassNameList.singletonList(ProguardTypeMatcher.defaultAllMatcher()));
+ }
} else if (acceptString("repackageclasses")) {
if (configurationBuilder.getPackageObfuscationMode() == PackageObfuscationMode.FLATTEN) {
warnOverridingOptions("repackageclasses", "flattenpackagehierarchy");
@@ -275,6 +270,10 @@
configurationBuilder.addRule(rule);
} else if (acceptString("useuniqueclassmembernames")) {
configurationBuilder.setUseUniqueClassMemberNames(true);
+ } else if (acceptString("identifiernamestring")) {
+ configurationBuilder.addRule(parseIdentifierNameStringRule());
+ // TODO(b/36799092): warn until it is fully implemented.
+ warnIgnoringOptions("identifiernamestring");
} else {
throw parseError("Unknown option");
}
@@ -361,11 +360,7 @@
}
try {
ProguardKeepRule.Builder keepRuleBuilder = ProguardKeepRule.builder();
- parseClassFlagsAndAnnotations(keepRuleBuilder);
- keepRuleBuilder.setClassType(parseClassType());
- keepRuleBuilder.setClassNames(parseClassNames());
- parseInheritance(keepRuleBuilder);
- parseMemberRules(keepRuleBuilder, true);
+ parseClassSpec(keepRuleBuilder, true);
return true;
} catch (ProguardRuleParserException e) {
System.out.println(e);
@@ -451,6 +446,14 @@
return keepRuleBuilder.build();
}
+ private ProguardIdentifierNameStringRule parseIdentifierNameStringRule()
+ throws ProguardRuleParserException {
+ ProguardIdentifierNameStringRule.Builder keepRuleBuilder =
+ ProguardIdentifierNameStringRule.builder();
+ parseClassSpec(keepRuleBuilder, false);
+ return keepRuleBuilder.build();
+ }
+
private void parseClassSpec(
ProguardConfigurationRule.Builder builder, boolean allowValueSpecification)
throws ProguardRuleParserException {
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java
new file mode 100644
index 0000000..034bd13
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardIdentifierNameStringRule.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.shaking;
+
+import com.android.tools.r8.graph.DexAccessFlags;
+import java.util.Set;
+
+public class ProguardIdentifierNameStringRule extends ProguardConfigurationRule {
+
+ public static class Builder extends ProguardConfigurationRule.Builder {
+ private Builder() {
+ }
+
+ public ProguardIdentifierNameStringRule build() {
+ return new ProguardIdentifierNameStringRule(classAnnotation, classAccessFlags,
+ negatedClassAccessFlags, classTypeNegated, classType, classNames, inheritanceAnnotation,
+ inheritanceClassName, inheritanceIsExtends, memberRules);
+ }
+ }
+
+ private ProguardIdentifierNameStringRule(
+ ProguardTypeMatcher classAnnotation,
+ DexAccessFlags classAccessFlags,
+ DexAccessFlags negatedClassAccessFlags,
+ boolean classTypeNegated,
+ ProguardClassType classType,
+ ProguardClassNameList classNames,
+ ProguardTypeMatcher inheritanceAnnotation,
+ ProguardTypeMatcher inheritanceClassName,
+ boolean inheritanceIsExtends,
+ Set<ProguardMemberRule> memberRules) {
+ super(classAnnotation, classAccessFlags, negatedClassAccessFlags, classTypeNegated, classType,
+ classNames, inheritanceAnnotation, inheritanceClassName, inheritanceIsExtends, memberRules);
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ @Override
+ String typeString() {
+ return "identifiernamestring";
+ }
+
+}
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
index 6ab4a0aa..5c0d869 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -197,10 +197,12 @@
markMatchingFields(clazz, memberKeepRules, rule, null);
} else if (rule instanceof ProguardAlwaysInlineRule) {
markMatchingMethods(clazz, memberKeepRules, rule, null);
- } else {
- assert rule instanceof ProguardAssumeValuesRule;
+ } else if (rule instanceof ProguardAssumeValuesRule) {
markMatchingVisibleMethods(clazz, memberKeepRules, rule, null);
markMatchingFields(clazz, memberKeepRules, rule, null);
+ } else {
+ assert rule instanceof ProguardIdentifierNameStringRule;
+ // TODO(b/36799092): collect string literals while marking matching methods/fields.
}
}
}
diff --git a/src/main/java/com/android/tools/r8/shaking/TreePruner.java b/src/main/java/com/android/tools/r8/shaking/TreePruner.java
index 947abe3..10716bd 100644
--- a/src/main/java/com/android/tools/r8/shaking/TreePruner.java
+++ b/src/main/java/com/android/tools/r8/shaking/TreePruner.java
@@ -76,7 +76,7 @@
} else {
newClasses.add(clazz);
if (!appInfo.instantiatedTypes.contains(clazz.type) &&
- (!options.debugKeepRules || !hasDefaultConstructor(clazz))) {
+ (!options.debugKeepRules || !clazz.hasDefaultInitializer())) {
// The class is only needed as a type but never instantiated. Make it abstract to reflect
// this.
if (clazz.accessFlags.isFinal()) {
@@ -102,15 +102,6 @@
return newClasses;
}
- private boolean hasDefaultConstructor(DexProgramClass clazz) {
- for (DexEncodedMethod method : clazz.directMethods()) {
- if (isDefaultConstructor(method)) {
- return true;
- }
- }
- return false;
- }
-
private <S extends PresortedComparable<S>, T extends KeyedDexItem<S>> int firstUnreachableIndex(
T[] items, Set<S> live) {
for (int i = 0; i < items.length; i++) {
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index c8308a9..9f883bf 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -103,6 +103,8 @@
public String printCfgFile;
public Path printMainDexListFile;
public boolean ignoreMissingClasses = false;
+ // EXPERIMENTAL flag to get behaviour as close to Proguard as possible.
+ public boolean forceProguardCompatibility = false;
public boolean skipMinification = false;
public boolean disableAssertions = true;
public boolean debugKeepRules = false;
@@ -348,6 +350,10 @@
return minApiLevel >= AndroidApiLevel.O.getLevel();
}
+ public boolean canUseConstantMethodHandle() {
+ return minApiLevel >= AndroidApiLevel.P.getLevel();
+ }
+
public boolean canUseInvokeCustom() {
return minApiLevel >= AndroidApiLevel.O.getLevel();
}
diff --git a/src/main/java/com/android/tools/r8/utils/ThreadUtils.java b/src/main/java/com/android/tools/r8/utils/ThreadUtils.java
index a2bfeda..8fe3af6 100644
--- a/src/main/java/com/android/tools/r8/utils/ThreadUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ThreadUtils.java
@@ -27,11 +27,8 @@
}
public static ExecutorService getExecutorService(int threads) {
- if (threads == 1) {
- return Executors.newSingleThreadExecutor();
- } else {
- return Executors.newWorkStealingPool(threads);
- }
+ // Don't use Executors.newSingleThreadExecutor() when threads == 1, see b/67338394.
+ return Executors.newWorkStealingPool(threads);
}
public static ExecutorService getExecutorService(InternalOptions options) {
@@ -40,7 +37,6 @@
// This heuristic is based on measurements on a 32 core (hyper-threaded) machine.
threads = Integer.min(Runtime.getRuntime().availableProcessors(), 16) / 2;
}
- // Don't use Executors.newSingleThreadExecutor() when threads == 1, see b/67338394.
- return Executors.newWorkStealingPool(threads);
+ return getExecutorService(threads);
}
}
diff --git a/src/test/examples/uniquemembernames/AnotherCls.java b/src/test/examples/uniquemembernames/AnotherCls.java
new file mode 100644
index 0000000..a7f8e97
--- /dev/null
+++ b/src/test/examples/uniquemembernames/AnotherCls.java
@@ -0,0 +1,19 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package uniquemembernames;
+
+public class AnotherCls {
+
+ protected int f2;
+ protected double b;
+
+ int b() {
+ return f2 * 3;
+ }
+
+ int foo() {
+ return b() - (int) b;
+ }
+
+}
diff --git a/src/test/examples/uniquemembernames/BaseCls.java b/src/test/examples/uniquemembernames/BaseCls.java
new file mode 100644
index 0000000..9843c7b
--- /dev/null
+++ b/src/test/examples/uniquemembernames/BaseCls.java
@@ -0,0 +1,21 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package uniquemembernames;
+
+public abstract class BaseCls {
+
+ protected int a;
+ protected double f2;
+
+ protected abstract int a();
+
+ protected int foo() {
+ return a * (int) f2;
+ }
+
+ protected double bar() {
+ return a * f2;
+ }
+
+}
diff --git a/src/test/examples/uniquemembernames/ClsA.java b/src/test/examples/uniquemembernames/ClsA.java
new file mode 100644
index 0000000..430a255
--- /dev/null
+++ b/src/test/examples/uniquemembernames/ClsA.java
@@ -0,0 +1,18 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package uniquemembernames;
+
+public class ClsA extends BaseCls {
+
+ @Override
+ protected int a() {
+ return foo() + a;
+ }
+
+ @Override
+ protected int foo() {
+ return (int) bar();
+ }
+
+}
diff --git a/src/test/examples/uniquemembernames/ClsB.java b/src/test/examples/uniquemembernames/ClsB.java
new file mode 100644
index 0000000..2659d5a
--- /dev/null
+++ b/src/test/examples/uniquemembernames/ClsB.java
@@ -0,0 +1,18 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package uniquemembernames;
+
+public class ClsB extends BaseCls {
+
+ @Override
+ protected int a() {
+ return foo() - a;
+ }
+
+ @Override
+ protected double bar() {
+ return f2 != 0 ? a / f2 : Double.MAX_VALUE;
+ }
+
+}
diff --git a/src/test/examples/uniquemembernames/Shaking.java b/src/test/examples/uniquemembernames/Shaking.java
new file mode 100644
index 0000000..ce7ed5d
--- /dev/null
+++ b/src/test/examples/uniquemembernames/Shaking.java
@@ -0,0 +1,23 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package uniquemembernames;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class Shaking {
+
+ public static void main(String[] args) {
+ List<BaseCls> bases = Arrays.asList(new ClsA(), new ClsB());
+ for (BaseCls base : bases) {
+ base.a();
+ base.foo();
+ base.bar();
+ }
+ AnotherCls aa = new AnotherCls();
+ aa.b();
+ aa.foo();
+ }
+
+}
diff --git a/src/test/examples/uniquemembernames/keep-rules-1.txt b/src/test/examples/uniquemembernames/keep-rules-1.txt
new file mode 100644
index 0000000..2acd66a
--- /dev/null
+++ b/src/test/examples/uniquemembernames/keep-rules-1.txt
@@ -0,0 +1,17 @@
+# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+-dontoptimize
+-dontshrink
+
+# Keep test fields/methods for deterministic naming
+-keepclassmembers public class **.BaseCls {
+ *** a;
+ *** a(...);
+}
+
+-keepclassmembers public class **.AnotherCls {
+ *** b;
+ *** b(...);
+}
diff --git a/src/test/examples/uniquemembernames/keep-rules-2.txt b/src/test/examples/uniquemembernames/keep-rules-2.txt
new file mode 100644
index 0000000..3f1bdad
--- /dev/null
+++ b/src/test/examples/uniquemembernames/keep-rules-2.txt
@@ -0,0 +1,19 @@
+# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+-dontoptimize
+-dontshrink
+
+# Keep test fields/methods for deterministic naming
+-keepclassmembers public class **.BaseCls {
+ *** a;
+ *** a(...);
+}
+
+-keepclassmembers public class **.AnotherCls {
+ *** b;
+ *** b(...);
+}
+
+-useuniqueclassmembernames
diff --git a/src/test/examplesAndroidP/invokecustom/InvokeCustom.java b/src/test/examplesAndroidP/invokecustom/InvokeCustom.java
new file mode 100644
index 0000000..282b5ae
--- /dev/null
+++ b/src/test/examplesAndroidP/invokecustom/InvokeCustom.java
@@ -0,0 +1,34 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package invokecustom;
+
+import java.lang.invoke.CallSite;
+import java.lang.invoke.ConstantCallSite;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+
+
+public class InvokeCustom {
+
+ private static String staticField1 = "StaticField1";
+
+ private static void targetMethodTest1() {
+ System.out.println("Hello World!");
+ }
+
+ private static void targetMethodTest2(MethodHandle mhInvokeStatic, MethodHandle mhGetStatic)
+ throws Throwable {
+ mhInvokeStatic.invokeExact();
+ System.out.println(mhGetStatic.invoke());
+ }
+
+ public static CallSite bsmLookupStatic(MethodHandles.Lookup caller, String name, MethodType type)
+ throws NoSuchMethodException, IllegalAccessException {
+ final MethodHandles.Lookup lookup = MethodHandles.lookup();
+ final MethodHandle targetMH = lookup.findStatic(lookup.lookupClass(), name, type);
+ return new ConstantCallSite(targetMH.asType(type));
+ }
+
+}
diff --git a/src/test/examplesAndroidP/invokecustom/TestGenerator.java b/src/test/examplesAndroidP/invokecustom/TestGenerator.java
new file mode 100644
index 0000000..b9a5126
--- /dev/null
+++ b/src/test/examplesAndroidP/invokecustom/TestGenerator.java
@@ -0,0 +1,84 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package invokecustom;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.invoke.CallSite;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.Handle;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
+import org.objectweb.asm.Type;
+
+public class TestGenerator {
+
+ private final Path classNamePath;
+
+ public static void main(String[] args) throws IOException {
+ assert args.length == 1;
+ TestGenerator testGenerator = new TestGenerator(Paths.get(args[0],
+ TestGenerator.class.getPackage().getName(), InvokeCustom.class.getSimpleName() + ".class"));
+ testGenerator.generateTests();
+ }
+
+ public TestGenerator(Path classNamePath) {
+ this.classNamePath = classNamePath;
+ }
+
+ private void generateTests() throws IOException {
+ ClassReader cr = new ClassReader(new FileInputStream(classNamePath.toFile()));
+ ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
+ cr.accept(
+ new ClassVisitor(Opcodes.ASM6, cw) {
+ @Override
+ public void visitEnd() {
+ generateMethodTest1(cw);
+ generateMethodMain(cw);
+ super.visitEnd();
+ }
+ }, 0);
+ new FileOutputStream(classNamePath.toFile()).write(cw.toByteArray());
+ }
+
+ /* Generate main method that only call all test methods. */
+ private void generateMethodMain(ClassVisitor cv) {
+ MethodVisitor mv = cv.visitMethod(
+ Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null);
+ mv.visitMethodInsn(
+ Opcodes.INVOKESTATIC, Type.getInternalName(InvokeCustom.class), "test1", "()V", false);
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate test with an invokedynamic, a static bootstrap method without extra args and
+ * args to the target method.
+ */
+ private void generateMethodTest1(ClassVisitor cv) {
+ MethodVisitor mv = cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test1", "()V",
+ null, null);
+ MethodType mt = MethodType.methodType(
+ CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class);
+ Handle bootstrap = new Handle( Opcodes.H_INVOKESTATIC, Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic", mt.toMethodDescriptorString(), false);
+ mv.visitLdcInsn(new Handle(Opcodes.H_INVOKESTATIC, Type.getInternalName(InvokeCustom.class),
+ "targetMethodTest1", "()V", false));
+ mv.visitLdcInsn(new Handle(Opcodes.H_GETSTATIC, Type.getInternalName(InvokeCustom.class),
+ "staticField1", "Ljava/lang/String;", false));
+ mv.visitInvokeDynamicInsn("targetMethodTest2",
+ "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V",
+ bootstrap);
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+}
diff --git a/src/test/examplesAndroidP/invokecustom/keep-rules.txt b/src/test/examplesAndroidP/invokecustom/keep-rules.txt
new file mode 100644
index 0000000..dbc21fc
--- /dev/null
+++ b/src/test/examplesAndroidP/invokecustom/keep-rules.txt
@@ -0,0 +1,16 @@
+# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+# Keep the application entry point and the target methods of invoke-custom because these methods
+# can not be known at compile time. Get rid of everything that is not reachable from there.
+-keep public class invokecustom.InvokeCustom {
+ public static void main(...);
+}
+
+-keepclasseswithmembers class * {
+ *** targetMethodTest*(...);
+}
+
+# allow access modification to enable minification
+-allowaccessmodification
diff --git a/src/test/java/com/android/tools/r8/D8RunExamplesAndroidPTest.java b/src/test/java/com/android/tools/r8/D8RunExamplesAndroidPTest.java
new file mode 100644
index 0000000..dde8a9c
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/D8RunExamplesAndroidPTest.java
@@ -0,0 +1,86 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8;
+
+import static com.android.tools.r8.utils.FileUtils.JAR_EXTENSION;
+import static com.android.tools.r8.utils.FileUtils.ZIP_EXTENSION;
+
+import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.errors.InternalCompilerError;
+import com.android.tools.r8.errors.Unimplemented;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.DexInspector;
+import com.android.tools.r8.utils.OffOrAuto;
+import com.android.tools.r8.utils.OutputMode;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.function.UnaryOperator;
+import org.hamcrest.core.CombinableMatcher;
+import org.hamcrest.core.IsInstanceOf;
+import org.hamcrest.core.StringContains;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.internal.matchers.ThrowableMessageMatcher;
+
+public class D8RunExamplesAndroidPTest extends RunExamplesAndroidPTest<D8Command.Builder> {
+
+ class D8TestRunner extends TestRunner<D8TestRunner> {
+
+ D8TestRunner(String testName, String packageName, String mainClass) {
+ super(testName, packageName, mainClass);
+ }
+
+ @Override
+ D8TestRunner withMinApiLevel(int minApiLevel) {
+ return withBuilderTransformation(builder -> builder.setMinApiLevel(minApiLevel));
+ }
+
+ D8TestRunner withClasspath(Path... classpath) {
+ return withBuilderTransformation(b -> {
+ try {
+ return b.addClasspathFiles(classpath);
+ } catch (IOException e) {
+ throw new AssertionError(e);
+ }
+ });
+ }
+
+
+ @Override
+ void build(Path inputFile, Path out) throws Throwable {
+ D8Command.Builder builder = D8Command.builder();
+ for (UnaryOperator<D8Command.Builder> transformation : builderTransformations) {
+ builder = transformation.apply(builder);
+ }
+ // TODO(mikaelpeltier) Add new android.jar build from aosp and use it
+ builder.addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(AndroidApiLevel.O.getLevel())));
+ D8Command command = builder.addProgramFiles(inputFile).setOutputPath(out).build();
+ try {
+ ToolHelper.runD8(command, this::combinedOptionConsumer);
+ } catch (Unimplemented | CompilationError | InternalCompilerError re) {
+ throw re;
+ } catch (RuntimeException re) {
+ throw re.getCause() == null ? re : re.getCause();
+ }
+ }
+
+ D8TestRunner withIntermediate(boolean intermediate) {
+ return withBuilderTransformation(builder -> builder.setIntermediate(intermediate));
+ }
+
+ @Override
+ D8TestRunner self() {
+ return this;
+ }
+ }
+
+ @Override
+ D8TestRunner test(String testName, String packageName, String mainClass) {
+ return new D8TestRunner(testName, packageName, mainClass);
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 140e18f..1444b2b 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -11,9 +11,7 @@
import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.ToolHelper.DexVm.Kind;
-import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.ToolHelper.ProcessResult;
-import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.shaking.ProguardRuleParserException;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -48,7 +46,6 @@
import java.util.concurrent.ExecutionException;
import java.util.function.BiFunction;
import java.util.stream.Collectors;
-import org.junit.AssumptionViolatedException;
import org.junit.ComparisonFailure;
import org.junit.Rule;
import org.junit.rules.ExpectedException;
@@ -80,9 +77,9 @@
R8_AFTER_D8 // refers to the R8 (default: debug) step but implies a previous D8 step as well
}
- private static final String ART_TESTS_DIR = "tests/2017-07-27/art";
+ private static final String ART_TESTS_DIR = "tests/2017-10-04/art";
private static final String ART_LEGACY_TESTS_DIR = "tests/2016-12-19/art/";
- private static final String ART_TESTS_NATIVE_LIBRARY_DIR = "tests/2017-07-27/art/lib64";
+ private static final String ART_TESTS_NATIVE_LIBRARY_DIR = "tests/2017-10-04/art/lib64";
private static final String ART_LEGACY_TESTS_NATIVE_LIBRARY_DIR = "tests/2016-12-19/art/lib64";
private static final RuntimeSet LEGACY_RUNTIME = TestCondition.runtimes(
@@ -113,6 +110,7 @@
.put("957-methodhandle-transforms", AndroidApiLevel.O.getLevel())
.put("958-methodhandle-stackframe", AndroidApiLevel.O.getLevel())
.put("959-invoke-polymorphic-accessors", AndroidApiLevel.O.getLevel())
+ .put("979-const-method-handle", AndroidApiLevel.O.getLevel())
.put("990-method-handle-and-mr", AndroidApiLevel.O.getLevel())
// Test intentionally asserts presence of bridge default methods desugar removes.
.put("044-proxy", AndroidApiLevel.N.getLevel())
@@ -233,7 +231,8 @@
"073-mismatched-field"
);
- // Tests that make use of agents/native code. Our test setup does handle flags/linking of these.
+ // Tests that make use of agents/native code.
+ // Our test setup does not handle flags/linking of these.
private static List<String> usesNativeAgentCode = ImmutableList.of(
"497-inlining-and-class-loader",
"626-const-class-linking",
@@ -287,7 +286,39 @@
"1906-suspend-list-me-first",
"1907-suspend-list-self-twice",
"1909-per-agent-tls",
- "1910-transform-with-default"
+ "1910-transform-with-default",
+ "1911-get-local-var-table",
+ "1912-get-set-local-primitive",
+ "1913-get-set-local-objects",
+ "1914-get-local-instance",
+ "1915-get-set-local-current-thread",
+ "1916-get-set-current-frame",
+ "1917-get-stack-frame",
+ "1919-vminit-thread-start-timing",
+ "1920-suspend-native-monitor",
+ "1921-suspend-native-recursive-monitor",
+ "1922-owned-monitors-info",
+ "1923-frame-pop",
+ "1924-frame-pop-toggle",
+ "1925-self-frame-pop",
+ "1926-missed-frame-pop",
+ "1927-exception-event",
+ "1928-exception-event-exception",
+ "1929-exception-catch-exception",
+ "1930-monitor-info",
+ "1931-monitor-events",
+ "1932-monitor-events-misc",
+ "1933-monitor-current-contended",
+ "1934-jvmti-signal-thread",
+ "1935-get-set-current-frame-jit",
+ "1936-thread-end-events",
+ // These tests need a library name as parameter
+ "164-resolution-trampoline-dex-cache",
+ "597-deopt-invoke-stub",
+ "597-deopt-busy-loop",
+ "661-oat-writer-layout",
+ "661-classloader-allocator",
+ "664-aget-verifier"
);
// Tests with custom run.
@@ -784,7 +815,10 @@
.put("600-verifier-fails", TestCondition.match(TestCondition.R8_COMPILER))
// Contains a method that falls off the end without a return.
.put("606-erroneous-class", TestCondition.match(
- TestCondition.tools(DexTool.DX, DexTool.JACK),
+ TestCondition.tools(DexTool.JACK),
+ TestCondition.R8_NOT_AFTER_D8_COMPILER))
+ .put("606-erroneous-class", TestCondition.match(
+ TestCondition.tools(DexTool.DX),
TestCondition.R8_NOT_AFTER_D8_COMPILER,
LEGACY_RUNTIME))
.build();
@@ -825,7 +859,11 @@
"974-verify-interface-super", // No input class files.
"975-iface-private", // No input class files.
"976-conflict-no-methods", // No input class files
- "978-virtual-interface" // No input class files
+ "978-virtual-interface", // No input class files
+ "663-odd-dex-size", // No input class files
+ "663-odd-dex-size2", // No input class files
+ "663-odd-dex-size3", // No input class files
+ "663-odd-dex-size4" // No input class files
);
// Some JCTF test cases require test classes from other tests. These are listed here.
@@ -893,6 +931,15 @@
);
private static List<String> failuresToTriage = ImmutableList.of(
+ // const-method-handle and const-method-type
+ "979-const-method-handle",
+
+ // Dex file input into a jar file, not yet supported by the test framework.
+ "663-odd-dex-size",
+ "663-odd-dex-size2",
+ "663-odd-dex-size3",
+ "663-odd-dex-size4",
+
// This is flaky.
"104-growth-limit",
@@ -907,6 +954,7 @@
"655-jit-clinit",
"656-annotation-lookup-generic-jni",
"656-loop-deopt",
+ "707-checker-invalid-profile",
"708-jit-cache-churn",
// These use "native trace".
@@ -1044,11 +1092,9 @@
private static Map<SpecificationKey, TestSpecification> getTestsMap(
CompilerUnderTest compilerUnderTest, CompilationMode compilationMode, DexVm.Version version) {
- File artTestDir = new File(ART_TESTS_DIR);
- if (LEGACY_RUNTIME.set.contains(version)) {
- artTestDir = new File(ART_LEGACY_TESTS_DIR);
- }
- if (!artTestDir.exists()) {
+ File defaultArtTestDir = new File(ART_TESTS_DIR);
+ File legacyArtTestDir = new File(ART_LEGACY_TESTS_DIR);
+ if (!defaultArtTestDir.exists() || !legacyArtTestDir.exists()) {
// Don't run any tests if the directory does not exist.
return Collections.emptyMap();
}
@@ -1063,8 +1109,10 @@
// Collect the tests requiring the native library.
Set<String> useNativeLibrary = Sets.newHashSet(useJNI);
-
for (DexTool dexTool : DexTool.values()) {
+ File artTestDir =
+ dexTool == DexTool.JACK || LEGACY_RUNTIME.set.contains(version) ? legacyArtTestDir
+ : defaultArtTestDir;
// Collect the tests failing code generation.
Set<String> failsWithCompiler =
collectTestsMatchingConditions(
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidPTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidPTest.java
new file mode 100644
index 0000000..0f7386e
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidPTest.java
@@ -0,0 +1,91 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8;
+
+import com.android.tools.r8.ToolHelper.DexVm;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.function.UnaryOperator;
+import org.junit.Test;
+
+public class R8RunExamplesAndroidPTest extends RunExamplesAndroidPTest<R8Command.Builder> {
+
+ private static Map<DexVm.Version, List<String>> alsoFailsOn =
+ ImmutableMap.of(
+ DexVm.Version.V4_4_4, ImmutableList.of(
+ "invokecustom-with-shrinking"
+ ),
+ DexVm.Version.V5_1_1, ImmutableList.of(
+ "invokecustom-with-shrinking"
+ ),
+ DexVm.Version.V6_0_1, ImmutableList.of(
+ "invokecustom-with-shrinking"
+ ),
+ DexVm.Version.V7_0_0, ImmutableList.of(
+ "invokecustom-with-shrinking"
+ ),
+ DexVm.Version.DEFAULT, ImmutableList.of(
+ )
+ );
+
+ @Test
+ public void invokeCustomWithShrinking() throws Throwable {
+ test("invokecustom-with-shrinking", "invokecustom", "InvokeCustom")
+ .withMinApiLevel(AndroidApiLevel.P.getLevel())
+ .withBuilderTransformation(builder ->
+ builder.addProguardConfigurationFiles(
+ Paths.get(ToolHelper.EXAMPLES_ANDROID_P_DIR, "invokecustom/keep-rules.txt")))
+ .run();
+ }
+
+ class R8TestRunner extends TestRunner<R8TestRunner> {
+
+ R8TestRunner(String testName, String packageName, String mainClass) {
+ super(testName, packageName, mainClass);
+ }
+
+ @Override
+ R8TestRunner withMinApiLevel(int minApiLevel) {
+ return withBuilderTransformation(builder -> builder.setMinApiLevel(minApiLevel));
+ }
+
+ @Override
+ void build(Path inputFile, Path out) throws Throwable {
+ try {
+ R8Command.Builder builder = R8Command.builder();
+ for (UnaryOperator<R8Command.Builder> transformation : builderTransformations) {
+ builder = transformation.apply(builder);
+ }
+ // TODO(mikaelpeltier) Add new android.jar build from aosp and use it
+ builder.addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(AndroidApiLevel.O.getLevel())));
+ R8Command command = builder.addProgramFiles(inputFile).setOutputPath(out).build();
+ ToolHelper.runR8(command, this::combinedOptionConsumer);
+ } catch (ExecutionException e) {
+ throw e.getCause();
+ }
+ }
+
+ @Override
+ R8TestRunner self() {
+ return this;
+ }
+ }
+
+ @Override
+ R8TestRunner test(String testName, String packageName, String mainClass) {
+ return new R8TestRunner(testName, packageName, mainClass);
+ }
+
+ @Override
+ boolean expectedToFail(String name) {
+ return super.expectedToFail(name) || failsOn(alsoFailsOn, name);
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
new file mode 100644
index 0000000..06916a8
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidPTest.java
@@ -0,0 +1,273 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8;
+
+import static com.android.tools.r8.utils.FileUtils.JAR_EXTENSION;
+import static com.android.tools.r8.utils.FileUtils.ZIP_EXTENSION;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.android.tools.r8.ToolHelper.DexVm;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.AndroidApp;
+import com.android.tools.r8.utils.DexInspector;
+import com.android.tools.r8.utils.DexInspector.FoundClassSubject;
+import com.android.tools.r8.utils.DexInspector.FoundMethodSubject;
+import com.android.tools.r8.utils.DexInspector.InstructionSubject;
+import com.android.tools.r8.utils.DexInspector.InvokeInstructionSubject;
+import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.OffOrAuto;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.io.ByteStreams;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
+import java.util.function.UnaryOperator;
+import java.util.stream.Collectors;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.rules.TemporaryFolder;
+
+public abstract class RunExamplesAndroidPTest
+ <B extends BaseCommand.Builder<? extends BaseCommand, B>> {
+ static final String EXAMPLE_DIR = ToolHelper.EXAMPLES_ANDROID_P_BUILD_DIR;
+
+ abstract class TestRunner<C extends TestRunner<C>> {
+ final String testName;
+ final String packageName;
+ final String mainClass;
+
+ Integer androidJarVersion = null;
+
+ final List<Consumer<InternalOptions>> optionConsumers = new ArrayList<>();
+ final List<Consumer<DexInspector>> dexInspectorChecks = new ArrayList<>();
+ final List<UnaryOperator<B>> builderTransformations = new ArrayList<>();
+
+ TestRunner(String testName, String packageName, String mainClass) {
+ this.testName = testName;
+ this.packageName = packageName;
+ this.mainClass = mainClass;
+ }
+
+ abstract C self();
+
+ C withDexCheck(Consumer<DexInspector> check) {
+ dexInspectorChecks.add(check);
+ return self();
+ }
+
+ C withClassCheck(Consumer<FoundClassSubject> check) {
+ return withDexCheck(inspector -> inspector.forAllClasses(check));
+ }
+
+ C withMethodCheck(Consumer<FoundMethodSubject> check) {
+ return withClassCheck(clazz -> clazz.forAllMethods(check));
+ }
+
+ <T extends InstructionSubject> C withInstructionCheck(
+ Predicate<InstructionSubject> filter, Consumer<T> check) {
+ return withMethodCheck(method -> {
+ if (method.isAbstract()) {
+ return;
+ }
+ Iterator<T> iterator = method.iterateInstructions(filter);
+ while (iterator.hasNext()) {
+ check.accept(iterator.next());
+ }
+ });
+ }
+
+ C withOptionConsumer(Consumer<InternalOptions> consumer) {
+ optionConsumers.add(consumer);
+ return self();
+ }
+
+ C withMainDexClass(String... classes) {
+ return withBuilderTransformation(builder -> builder.addMainDexClasses(classes));
+ }
+
+ C withInterfaceMethodDesugaring(OffOrAuto behavior) {
+ return withOptionConsumer(o -> o.interfaceMethodDesugaring = behavior);
+ }
+
+ C withTryWithResourcesDesugaring(OffOrAuto behavior) {
+ return withOptionConsumer(o -> o.tryWithResourcesDesugaring = behavior);
+ }
+
+ C withBuilderTransformation(UnaryOperator<B> builderTransformation) {
+ builderTransformations.add(builderTransformation);
+ return self();
+ }
+
+ void combinedOptionConsumer(InternalOptions options) {
+ for (Consumer<InternalOptions> consumer : optionConsumers) {
+ consumer.accept(options);
+ }
+ }
+
+ Path build() throws Throwable {
+ Path inputFile = getInputJar();
+ Path out = temp.getRoot().toPath().resolve(testName + ZIP_EXTENSION);
+
+ build(inputFile, out);
+ return out;
+ }
+
+ Path getInputJar() {
+ return Paths.get(EXAMPLE_DIR, packageName + JAR_EXTENSION);
+ }
+
+ void run() throws Throwable {
+ if (minSdkErrorExpected(testName)) {
+ thrown.expect(ApiLevelException.class);
+ }
+
+ String qualifiedMainClass = packageName + "." + mainClass;
+ Path inputFile = getInputJar();
+ Path out = temp.getRoot().toPath().resolve(testName + ZIP_EXTENSION);
+
+ build(inputFile, out);
+
+ if (!ToolHelper.artSupported()) {
+ return;
+ }
+
+ if (!dexInspectorChecks.isEmpty()) {
+ DexInspector inspector = new DexInspector(out);
+ for (Consumer<DexInspector> check : dexInspectorChecks) {
+ check.accept(inspector);
+ }
+ }
+
+ execute(testName, qualifiedMainClass, new Path[]{inputFile}, new Path[]{out});
+ }
+
+ abstract C withMinApiLevel(int minApiLevel);
+
+ C withAndroidJar(int androidJarVersion) {
+ assert this.androidJarVersion == null;
+ this.androidJarVersion = androidJarVersion;
+ return self();
+ }
+
+ abstract void build(Path inputFile, Path out) throws Throwable;
+ }
+
+ private static List<String> minSdkErrorExpected =
+ ImmutableList.of(
+ "invokepolymorphic-error-due-to-min-sdk", "invokecustom-error-due-to-min-sdk");
+
+ private static Map<DexVm.Version, List<String>> failsOn =
+ ImmutableMap.of(
+ DexVm.Version.V4_4_4, ImmutableList.of(
+ // Dex version not supported
+ "invokecustom"
+ ),
+ DexVm.Version.V5_1_1, ImmutableList.of(
+ // Dex version not supported
+ "invokecustom"
+ ),
+ DexVm.Version.V6_0_1, ImmutableList.of(
+ // Dex version not supported
+ "invokecustom"
+ ),
+ DexVm.Version.V7_0_0, ImmutableList.of(
+ // Dex version not supported
+ "invokecustom"
+ ),
+ DexVm.Version.DEFAULT, ImmutableList.of()
+ );
+
+ @Rule
+ public TemporaryFolder temp = ToolHelper.getTemporaryFolderForTest();
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ boolean failsOn(Map<DexVm.Version, List<String>> failsOn, String name) {
+ DexVm.Version vmVersion = ToolHelper.getDexVm().getVersion();
+ return failsOn.containsKey(vmVersion)
+ && failsOn.get(vmVersion).contains(name);
+ }
+
+ boolean expectedToFail(String name) {
+ return failsOn(failsOn, name);
+ }
+
+ boolean minSdkErrorExpected(String testName) {
+ return minSdkErrorExpected.contains(testName);
+ }
+
+ @Test
+ public void invokeCustom() throws Throwable {
+ test("invokecustom", "invokecustom", "InvokeCustom")
+ .withMinApiLevel(AndroidApiLevel.P.getLevel())
+ .run();
+ }
+
+ @Test
+ public void invokeCustomErrorDueToMinSdk() throws Throwable {
+ test("invokecustom-error-due-to-min-sdk", "invokecustom", "InvokeCustom")
+ .withMinApiLevel(AndroidApiLevel.O.getLevel())
+ .run();
+ }
+
+ abstract RunExamplesAndroidPTest<B>.TestRunner<?> test(String testName, String packageName,
+ String mainClass);
+
+ void execute(
+ String testName,
+ String qualifiedMainClass, Path[] jars, Path[] dexes)
+ throws IOException {
+
+ boolean expectedToFail = expectedToFail(testName);
+ if (expectedToFail) {
+ thrown.expect(Throwable.class);
+ }
+ String output = ToolHelper.runArtNoVerificationErrors(
+ Arrays.stream(dexes).map(path -> path.toString()).collect(Collectors.toList()),
+ qualifiedMainClass,
+ null);
+ if (!expectedToFail) {
+ ToolHelper.ProcessResult javaResult =
+ ToolHelper.runJava(
+ Arrays.stream(jars).map(path -> path.toString()).collect(Collectors.toList()),
+ qualifiedMainClass);
+ assertEquals("JVM run failed", javaResult.exitCode, 0);
+ assertTrue(
+ "JVM output does not match art output.\n\tjvm: "
+ + javaResult.stdout
+ + "\n\tart: "
+ + output.replace("\r", ""),
+ output.equals(javaResult.stdout.replace("\r", "")));
+ }
+ }
+
+ protected DexInspector getMainDexInspector(Path zip)
+ throws ZipException, IOException, ExecutionException {
+ try (ZipFile zipFile = new ZipFile(zip.toFile())) {
+ try (InputStream in =
+ zipFile.getInputStream(zipFile.getEntry(FileUtils.DEFAULT_DEX_FILENAME))) {
+ return new DexInspector(AndroidApp.fromDexProgramData(ByteStreams.toByteArray(in)));
+ }
+ }
+ }
+
+}
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index e46ff48..984d112 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -18,6 +18,7 @@
import com.android.tools.r8.utils.OutputMode;
import com.android.tools.r8.utils.Timing;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
import com.google.common.io.ByteStreams;
import java.io.File;
import java.io.FileInputStream;
@@ -92,6 +93,20 @@
}
/**
+ * Get the class name generated by javac.
+ */
+ protected String getJavacGeneratedClassName(Class clazz) {
+ List<String> parts = Lists.newArrayList(clazz.getCanonicalName().split("\\."));
+ Class enclosing = clazz;
+ while (enclosing.getEnclosingClass() != null) {
+ parts.set(parts.size() - 2, parts.get(parts.size() - 2) + "$" + parts.get(parts.size() - 1));
+ parts.remove(parts.size() - 1);
+ enclosing = clazz.getEnclosingClass();
+ }
+ return String.join(".", parts);
+ }
+
+ /**
* Compile an application with D8.
*/
protected AndroidApp compileWithD8(AndroidApp app)
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 79be8a8..38a8d83 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -59,9 +59,11 @@
public static final String BUILD_DIR = "build/";
public static final String EXAMPLES_DIR = "src/test/examples/";
public static final String EXAMPLES_ANDROID_O_DIR = "src/test/examplesAndroidO/";
+ public static final String EXAMPLES_ANDROID_P_DIR = "src/test/examplesAndroidP/";
public static final String EXAMPLES_BUILD_DIR = BUILD_DIR + "test/examples/";
public static final String EXAMPLES_ANDROID_N_BUILD_DIR = BUILD_DIR + "test/examplesAndroidN/";
public static final String EXAMPLES_ANDROID_O_BUILD_DIR = BUILD_DIR + "test/examplesAndroidO/";
+ public static final String EXAMPLES_ANDROID_P_BUILD_DIR = BUILD_DIR + "test/examplesAndroidP/";
public static final String SMALI_BUILD_DIR = BUILD_DIR + "test/smali/";
public static final String LINE_SEPARATOR = StringUtils.LINE_SEPARATOR;
@@ -569,17 +571,24 @@
public static DexApplication buildApplication(List<String> fileNames)
throws IOException, ExecutionException {
+ return buildApplicationWithAndroidJar(fileNames, getDefaultAndroidJar());
+ }
+
+ public static DexApplication buildApplicationWithAndroidJar(
+ List<String> fileNames, String androidJar)
+ throws IOException, ExecutionException {
+ AndroidApp input = AndroidApp.builder()
+ .addProgramFiles(ListUtils.map(fileNames, FilteredClassPath::unfiltered))
+ .addLibraryFiles(FilteredClassPath.unfiltered(androidJar))
+ .build();
return new ApplicationReader(
- AndroidApp.fromProgramFiles(ListUtils.map(fileNames, Paths::get)),
- new InternalOptions(),
- new Timing("ToolHelper buildApplication"))
- .read()
- .toDirect();
+ input, new InternalOptions(), new Timing("ToolHelper buildApplication"))
+ .read().toDirect();
}
public static ProguardConfiguration loadProguardConfiguration(
DexItemFactory factory, List<Path> configPaths)
- throws IOException, ProguardRuleParserException {
+ throws IOException, ProguardRuleParserException, CompilationException {
if (configPaths.isEmpty()) {
return ProguardConfiguration.defaultConfiguration(factory);
}
diff --git a/src/test/java/com/android/tools/r8/naming/MinifierTest.java b/src/test/java/com/android/tools/r8/naming/MinifierTest.java
index 1124ceb..4b42880 100644
--- a/src/test/java/com/android/tools/r8/naming/MinifierTest.java
+++ b/src/test/java/com/android/tools/r8/naming/MinifierTest.java
@@ -70,11 +70,6 @@
a, dexItemFactory.createProto(dexItemFactory.voidType), "privateFunc");
// method naming001.A.privateFunc would be renamed.
assertNotEquals("privateFunc", naming.lookupName(p).toSourceString());
-
- DexType k = dexItemFactory.createType("Lnaming001/K;");
- DexField h = dexItemFactory.createField(k, dexItemFactory.intType, "h");
- // field naming001.K.h is dead, not renamed; hence returned as same via identityLens.
- assertEquals("h", naming.lookupName(h).toSourceString());
}
private static void test001_rule002(DexItemFactory dexItemFactory, NamingLens naming) {
@@ -170,12 +165,6 @@
reflect, dexItemFactory.createProto(dexItemFactory.voidType), "keep6");
// method naming001.Reflect.keep6 should be kept, according to the keep rule.
assertEquals("keep6", naming.lookupName(keep6).toSourceString());
-
- DexType reflect2 = dexItemFactory.createType("Lnaming001/Reflect2;");
- DexField fieldPublic = dexItemFactory.createField(
- reflect2, dexItemFactory.intType, "fieldPublic");
- // method naming001.Reflect.keep6 accesses to naming001.Reflect2.fieldPublic via reflection.
- assertEquals("fieldPublic", naming.lookupName(fieldPublic).toSourceString());
}
private static void test001_rule017(DexItemFactory dexItemFactory, NamingLens naming) {
@@ -189,12 +178,12 @@
assertEquals("keep", naming.lookupName(keep).toSourceString());
DexField i = dexItemFactory.createField(k, dexItemFactory.intType, "i");
- // field naming001.K.i
- assertEquals("i", naming.lookupName(i).toSourceString());
+ // field naming001.K.i would be renamed
+ assertNotEquals("i", naming.lookupName(i).toSourceString());
DexField j = dexItemFactory.createField(k, dexItemFactory.intType, "j");
- // field naming001.K.j
- assertEquals("j", naming.lookupName(j).toSourceString());
+ // field naming001.K.j would be renamed
+ assertNotEquals("j", naming.lookupName(j).toSourceString());
}
}
diff --git a/src/test/java/com/android/tools/r8/naming/NamingTestBase.java b/src/test/java/com/android/tools/r8/naming/NamingTestBase.java
index f049102..53f0793 100644
--- a/src/test/java/com/android/tools/r8/naming/NamingTestBase.java
+++ b/src/test/java/com/android/tools/r8/naming/NamingTestBase.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.naming;
+import com.android.tools.r8.CompilationException;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.ClassAndMemberPublicizer;
@@ -61,7 +62,7 @@
}
NamingLens runMinifier(List<Path> configPaths)
- throws IOException, ProguardRuleParserException, ExecutionException {
+ throws IOException, ProguardRuleParserException, ExecutionException, CompilationException {
ProguardConfiguration configuration =
ToolHelper.loadProguardConfiguration(dexItemFactory, configPaths);
InternalOptions options = new InternalOptions(configuration);
@@ -72,7 +73,7 @@
RootSet rootSet = new RootSetBuilder(program, appInfo, configuration.getRules(), options)
.run(ThreadUtils.getExecutorService(options));
- Enqueuer enqueuer = new Enqueuer(appInfo);
+ Enqueuer enqueuer = new Enqueuer(appInfo, options);
appInfo = enqueuer.traceApplication(rootSet, timing);
return new Minifier(appInfo.withLiveness(), rootSet, options).run(timing);
}
diff --git a/src/test/java/com/android/tools/r8/naming/UseUniqueMemberNameTest.java b/src/test/java/com/android/tools/r8/naming/UseUniqueMemberNameTest.java
new file mode 100644
index 0000000..3094756
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/naming/UseUniqueMemberNameTest.java
@@ -0,0 +1,121 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.naming;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import com.android.tools.r8.graph.DexField;
+import com.android.tools.r8.graph.DexItemFactory;
+import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.utils.ListUtils;
+import com.android.tools.r8.utils.Timing;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class UseUniqueMemberNameTest extends NamingTestBase {
+
+ public UseUniqueMemberNameTest(
+ String test,
+ List<String> keepRulesFiles,
+ BiConsumer<DexItemFactory, NamingLens> inspection) {
+ super(test, keepRulesFiles, inspection, new Timing("UseUniqueMemberNameTest"));
+ }
+
+ @Test
+ public void minifierTest() throws Exception {
+ NamingLens naming = runMinifier(ListUtils.map(keepRulesFiles, Paths::get));
+ inspection.accept(dexItemFactory, naming);
+ }
+
+ @Parameters(name = "test: {0} keep: {1}")
+ public static Collection<Object[]> data() {
+ List<String> tests = Arrays.asList("uniquemembernames");
+
+ Map<String, BiConsumer<DexItemFactory, NamingLens>> inspections = new HashMap<>();
+ inspections.put("uniquemembernames:keep-rules-1.txt", UseUniqueMemberNameTest::test00_rule1);
+ inspections.put("uniquemembernames:keep-rules-2.txt", UseUniqueMemberNameTest::test00_rule2);
+
+ return createTests(tests, inspections);
+ }
+
+ private static void test00_rule1(DexItemFactory dexItemFactory, NamingLens naming) {
+ DexType a = dexItemFactory.createType("Luniquemembernames/ClsA;");
+ assertNotEquals("Luniquemembernames/ClsA;", naming.lookupDescriptor(a).toSourceString());
+
+ DexMethod foo = dexItemFactory.createMethod(
+ a, dexItemFactory.createProto(dexItemFactory.intType), "foo");
+ String foo_renamed = naming.lookupName(foo).toSourceString();
+ assertNotEquals("foo", foo_renamed);
+
+ DexType aa = dexItemFactory.createType("Luniquemembernames/AnotherCls;");
+ assertNotEquals("Luniquemembernames/AnotherCls;", naming.lookupDescriptor(aa).toSourceString());
+
+ DexMethod another_foo = dexItemFactory.createMethod(
+ aa, dexItemFactory.createProto(dexItemFactory.intType), "foo");
+ String another_foo_renamed = naming.lookupName(another_foo).toSourceString();
+ assertNotEquals("foo", another_foo_renamed);
+
+ // BaseCls#a and AnotherCls#b are kept.
+ // Due to BaseCls#a, BaseCls#foo should not be renamed to a.
+ // On the other hand, AnotherCls#foo should be renamed to a.
+ assertNotEquals(foo_renamed, another_foo_renamed);
+
+ DexType base = dexItemFactory.createType("Luniquemembernames/BaseCls;");
+ DexField f2 = dexItemFactory.createField(base, dexItemFactory.doubleType, "f2");
+ DexField another_f2 = dexItemFactory.createField(aa, dexItemFactory.intType, "f2");
+ // Fields f2's are only fields that are allowed to be renamed. Thus, they would be renamed to
+ // the same name as long as R8 is deterministic.
+ assertEquals(
+ naming.lookupName(f2).toSourceString(),
+ naming.lookupName(another_f2).toSourceString());
+ }
+
+ // -useuniqueclassmembernames
+ private static void test00_rule2(DexItemFactory dexItemFactory, NamingLens naming) {
+ DexType a = dexItemFactory.createType("Luniquemembernames/ClsA;");
+ assertNotEquals("Luniquemembernames/ClsA;", naming.lookupDescriptor(a).toSourceString());
+
+ DexMethod foo = dexItemFactory.createMethod(
+ a, dexItemFactory.createProto(dexItemFactory.intType), "foo");
+ String foo_renamed = naming.lookupName(foo).toSourceString();
+ assertNotEquals("foo", foo_renamed);
+
+ DexType aa = dexItemFactory.createType("Luniquemembernames/AnotherCls;");
+ assertNotEquals("Luniquemembernames/AnotherCls;", naming.lookupDescriptor(aa).toSourceString());
+
+ DexMethod another_foo = dexItemFactory.createMethod(
+ aa, dexItemFactory.createProto(dexItemFactory.intType), "foo");
+ String another_foo_renamed = naming.lookupName(another_foo).toSourceString();
+ assertNotEquals("foo", another_foo_renamed);
+
+ // With -useuniquemembernames, foo() with the same signature should be renamed to the same name.
+ assertEquals(foo_renamed, another_foo_renamed);
+ // But, those cannot be renamed to a and b, as those are _globally_ reserved.
+ assertNotEquals("a", foo_renamed);
+ assertNotEquals("a", another_foo_renamed);
+ assertNotEquals("b", foo_renamed);
+ assertNotEquals("b", another_foo_renamed);
+
+ DexType base = dexItemFactory.createType("Luniquemembernames/BaseCls;");
+ DexField f2 = dexItemFactory.createField(base, dexItemFactory.doubleType, "f2");
+ DexField another_f2 = dexItemFactory.createField(aa, dexItemFactory.intType, "f2");
+ // They should be renamed differently even w/ -useuniqueclassmembernames.
+ assertNotEquals(
+ naming.lookupName(f2).toSourceString(),
+ naming.lookupName(another_f2).toSourceString());
+ }
+
+}
diff --git a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
index 3f44025..fe0b6f6 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -105,7 +105,7 @@
VALID_PROGUARD_DIR + "target.flags";
@Test
- public void parse() throws IOException, ProguardRuleParserException {
+ public void parse() throws Exception {
ProguardConfigurationParser parser;
// Parse from file.
@@ -125,7 +125,7 @@
}
@Test
- public void parseMultipleNamePatterns() throws IOException, ProguardRuleParserException {
+ public void parseMultipleNamePatterns() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(MULTIPLE_NAME_PATTERNS_FILE));
List<ProguardConfigurationRule> rules = parser.getConfig().getRules();
@@ -145,7 +145,52 @@
}
@Test
- public void parseAccessFlags() throws IOException, ProguardRuleParserException {
+ public void testDontWarn() throws Exception {
+ DexItemFactory dexItemFactory = new DexItemFactory();
+ ProguardConfigurationParser parser = new ProguardConfigurationParser(dexItemFactory);
+ String dontwarn = "-dontwarn !foobar,*bar";
+ parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(dontwarn)));
+ ProguardConfiguration config = parser.getConfig();
+ assertFalse(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lboobaz;")));
+ assertTrue(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lboobar;")));
+ assertFalse(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lfoobar;")));
+ }
+
+ @Test
+ public void testDontWarnAllExplicitly() throws Exception {
+ DexItemFactory dexItemFactory = new DexItemFactory();
+ ProguardConfigurationParser parser = new ProguardConfigurationParser(dexItemFactory);
+ String dontwarnAll = "-dontwarn *";
+ parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(dontwarnAll)));
+ ProguardConfiguration config = parser.getConfig();
+ assertTrue(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lboobaz;")));
+ assertTrue(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lboobar;")));
+ assertTrue(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lfoobar;")));
+ }
+
+ @Test
+ public void testDontWarnAllImplicitly() throws Exception {
+ DexItemFactory dexItemFactory = new DexItemFactory();
+ ProguardConfigurationParser parser = new ProguardConfigurationParser(dexItemFactory);
+ String dontwarnAll = "-dontwarn";
+ parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(dontwarnAll)));
+ ProguardConfiguration config = parser.getConfig();
+ assertTrue(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lboobaz;")));
+ assertTrue(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lboobar;")));
+ assertTrue(
+ config.getDontWarnPatterns().matches(dexItemFactory.createType("Lfoobar;")));
+ }
+
+ @Test
+ public void parseAccessFlags() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(ACCESS_FLAGS_FILE));
List<ProguardConfigurationRule> rules = parser.getConfig().getRules();
@@ -183,7 +228,7 @@
}
@Test
- public void parseWhyAreYouKeeping() throws IOException, ProguardRuleParserException {
+ public void parseWhyAreYouKeeping() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(WHY_ARE_YOU_KEEPING_FILE));
List<ProguardConfigurationRule> rules = parser.getConfig().getRules();
@@ -196,7 +241,7 @@
}
@Test
- public void parseAssumeNoSideEffects() throws IOException, ProguardRuleParserException {
+ public void parseAssumeNoSideEffects() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(ASSUME_NO_SIDE_EFFECTS));
List<ProguardConfigurationRule> assumeNoSideEffects = parser.getConfig().getRules();
@@ -207,8 +252,7 @@
}
@Test
- public void parseAssumeNoSideEffectsWithReturnValue()
- throws IOException, ProguardRuleParserException {
+ public void parseAssumeNoSideEffectsWithReturnValue() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(ASSUME_NO_SIDE_EFFECTS_WITH_RETURN_VALUE));
List<ProguardConfigurationRule> assumeNoSideEffects = parser.getConfig().getRules();
@@ -247,8 +291,7 @@
}
@Test
- public void parseAssumeValuesWithReturnValue()
- throws IOException, ProguardRuleParserException {
+ public void parseAssumeValuesWithReturnValue() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(ASSUME_VALUES_WITH_RETURN_VALUE));
List<ProguardConfigurationRule> assumeValues = parser.getConfig().getRules();
@@ -287,7 +330,51 @@
}
@Test
- public void parseDontobfuscate() throws IOException, ProguardRuleParserException {
+ public void testIdentifierNameString() throws Exception {
+ ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
+ String config1 =
+ "-identifiernamestring class a.b.c.*GeneratedClass {\n"
+ + " static java.lang.String CONTAINING_TYPE_*;\n"
+ + "}";
+ String config2 =
+ "-identifiernamestring class x.y.z.ReflectionBasedFactory {\n"
+ + " private static java.lang.reflect.Field field(java.lang.Class,java.lang.String);\n"
+ + "}";
+ String config3 =
+ "-identifiernamestring class * {\n"
+ + " @my.annotations.IdentifierNameString *;\n"
+ + "}";
+ parser.parse(
+ new ProguardConfigurationSourceStrings(ImmutableList.of(config1, config2, config3)));
+ ProguardConfiguration config = parser.getConfig();
+ List<ProguardConfigurationRule> identifierNameStrings = config.getRules();
+ assertEquals(3, identifierNameStrings.size());
+ assertEquals(1, identifierNameStrings.get(0).getClassNames().size());
+ assertEquals(
+ "a.b.c.*GeneratedClass",
+ identifierNameStrings.get(0).getClassNames().toString());
+ identifierNameStrings.get(0).getMemberRules().forEach(memberRule -> {
+ assertTrue(memberRule.getRuleType().includesFields());
+ assertTrue(memberRule.getName().matches("CONTAINING_TYPE_ABC"));
+ });
+ assertEquals(1, identifierNameStrings.get(1).getClassNames().size());
+ assertEquals(
+ "x.y.z.ReflectionBasedFactory",
+ identifierNameStrings.get(1).getClassNames().toString());
+ identifierNameStrings.get(1).getMemberRules().forEach(memberRule -> {
+ assertTrue(memberRule.getRuleType().includesMethods());
+ assertTrue(memberRule.getName().matches("field"));
+ });
+ assertEquals(1, identifierNameStrings.get(2).getClassNames().size());
+ assertEquals("*", identifierNameStrings.get(2).getClassNames().toString());
+ identifierNameStrings.get(2).getMemberRules().forEach(memberRule -> {
+ assertEquals(ProguardMemberType.ALL, memberRule.getRuleType());
+ assertTrue(memberRule.getAnnotation().toString().endsWith("IdentifierNameString"));
+ });
+ }
+
+ @Test
+ public void parseDontobfuscate() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(DONT_OBFUSCATE));
ProguardConfiguration config = parser.getConfig();
@@ -295,7 +382,7 @@
}
@Test
- public void parseRepackageClassesEmpty() throws IOException, ProguardRuleParserException {
+ public void parseRepackageClassesEmpty() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PACKAGE_OBFUSCATION_1));
ProguardConfiguration config = parser.getConfig();
@@ -305,7 +392,7 @@
}
@Test
- public void parseRepackageClassesNonEmpty() throws IOException, ProguardRuleParserException {
+ public void parseRepackageClassesNonEmpty() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PACKAGE_OBFUSCATION_2));
ProguardConfiguration config = parser.getConfig();
@@ -315,7 +402,7 @@
}
@Test
- public void parseFlattenPackageHierarchyEmpty() throws IOException, ProguardRuleParserException {
+ public void parseFlattenPackageHierarchyEmpty() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PACKAGE_OBFUSCATION_3));
ProguardConfiguration config = parser.getConfig();
@@ -325,7 +412,7 @@
}
@Test
- public void parseFlattenPackageHierarchyNonEmpty() throws IOException, ProguardRuleParserException {
+ public void parseFlattenPackageHierarchyNonEmpty() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PACKAGE_OBFUSCATION_4));
ProguardConfiguration config = parser.getConfig();
@@ -336,7 +423,7 @@
@Test
public void flattenPackageHierarchyCannotOverrideRepackageClasses()
- throws IOException, ProguardRuleParserException {
+ throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PACKAGE_OBFUSCATION_5));
ProguardConfiguration config = parser.getConfig();
@@ -347,7 +434,7 @@
@Test
public void repackageClassesOverridesFlattenPackageHierarchy()
- throws IOException, ProguardRuleParserException {
+ throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PACKAGE_OBFUSCATION_6));
ProguardConfiguration config = parser.getConfig();
@@ -357,7 +444,7 @@
}
@Test
- public void parseApplyMapping() throws IOException, ProguardRuleParserException {
+ public void parseApplyMapping() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(APPLY_MAPPING));
ProguardConfiguration config = parser.getConfig();
@@ -365,7 +452,7 @@
}
@Test
- public void parseApplyMappingWithoutFile() throws IOException, ProguardRuleParserException {
+ public void parseApplyMappingWithoutFile() throws Exception {
try {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(APPLY_MAPPING_WITHOUT_FILE));
@@ -376,7 +463,7 @@
}
@Test
- public void parseIncluding() throws IOException, ProguardRuleParserException {
+ public void parseIncluding() throws Exception {
new ProguardConfigurationParser(new DexItemFactory()).parse(Paths.get(INCLUDING));
}
@@ -406,7 +493,7 @@
}
@Test
- public void parseLibraryJars() throws IOException, ProguardRuleParserException {
+ public void parseLibraryJars() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
if (!ToolHelper.isLinux() && !ToolHelper.isMac()) {
parser.parse(Paths.get(LIBRARY_JARS_WIN));
@@ -429,7 +516,7 @@
}
@Test
- public void parseSeeds() throws IOException, ProguardRuleParserException {
+ public void parseSeeds() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(SEEDS));
ProguardConfiguration config = parser.getConfig();
@@ -438,7 +525,7 @@
}
@Test
- public void parseSeeds2() throws IOException, ProguardRuleParserException {
+ public void parseSeeds2() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(SEEDS_2));
ProguardConfiguration config = parser.getConfig();
@@ -447,7 +534,7 @@
}
@Test
- public void parseVerbose() throws IOException, ProguardRuleParserException {
+ public void parseVerbose() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(VERBOSE));
ProguardConfiguration config = parser.getConfig();
@@ -455,13 +542,13 @@
}
@Test
- public void parseKeepdirectories() throws IOException, ProguardRuleParserException {
+ public void parseKeepdirectories() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(KEEPDIRECTORIES));
}
@Test
- public void parseDontshrink() throws IOException, ProguardRuleParserException {
+ public void parseDontshrink() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(DONT_SHRINK));
ProguardConfiguration config = parser.getConfig();
@@ -469,49 +556,46 @@
}
@Test
- public void parseDontSkipNonPublicLibraryClasses()
- throws IOException, ProguardRuleParserException {
+ public void parseDontSkipNonPublicLibraryClasses() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(DONT_SKIP_NON_PUBLIC_LIBRARY_CLASSES));
}
@Test
- public void parseDontskipnonpubliclibraryclassmembers()
- throws IOException, ProguardRuleParserException {
+ public void parseDontskipnonpubliclibraryclassmembers() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(DONT_SKIP_NON_PUBLIC_LIBRARY_CLASS_MEMBERS));
}
@Test
- public void parseOverloadAggressively()
- throws IOException, ProguardRuleParserException {
+ public void parseOverloadAggressively() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(OVERLOAD_AGGRESIVELY));
}
@Test
- public void parseDontOptimize() throws IOException, ProguardRuleParserException {
+ public void parseDontOptimize() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(DONT_OPTIMIZE));
ProguardConfiguration config = parser.getConfig();
}
@Test
- public void parseDontOptimizeOverridesPasses() throws IOException, ProguardRuleParserException {
+ public void parseDontOptimizeOverridesPasses() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(DONT_OPTIMIZE_OVERRIDES_PASSES));
ProguardConfiguration config = parser.getConfig();
}
@Test
- public void parseOptimizationPasses() throws IOException, ProguardRuleParserException {
+ public void parseOptimizationPasses() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(OPTIMIZATION_PASSES));
ProguardConfiguration config = parser.getConfig();
}
@Test
- public void parseOptimizationPassesError() throws IOException, ProguardRuleParserException {
+ public void parseOptimizationPassesError() throws Exception {
try {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(OPTIMIZATION_PASSES_WITHOUT_N));
@@ -533,13 +617,13 @@
}
@Test
- public void parseAndskipSingleArgument() throws IOException, ProguardRuleParserException {
+ public void parseAndskipSingleArgument() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PARSE_AND_SKIP_SINGLE_ARGUMENT));
}
@Test
- public void parsePrintUsage() throws IOException, ProguardRuleParserException {
+ public void parsePrintUsage() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PRINT_USAGE));
ProguardConfiguration config = parser.getConfig();
@@ -548,7 +632,7 @@
}
@Test
- public void parsePrintUsageToFile() throws IOException, ProguardRuleParserException {
+ public void parsePrintUsageToFile() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(PRINT_USAGE_TO_FILE));
ProguardConfiguration config = parser.getConfig();
@@ -557,14 +641,13 @@
}
@Test
- public void parseTarget()
- throws IOException, ProguardRuleParserException {
+ public void parseTarget() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(Paths.get(TARGET));
}
@Test
- public void parseInvalidKeepClassOption() throws IOException, ProguardRuleParserException {
+ public void parseInvalidKeepClassOption() throws Exception {
try {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
Path proguardConfig = writeTextToTempFile(
@@ -591,7 +674,7 @@
}
@Test
- public void testRenameSourceFileAttribute() throws IOException, ProguardRuleParserException {
+ public void testRenameSourceFileAttribute() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
String config1 = "-renamesourcefileattribute PG\n";
String config2 = "-keepattributes SourceFile,SourceDir\n";
@@ -603,7 +686,7 @@
}
@Test
- public void testRenameSourceFileAttributeEmpty() throws IOException, ProguardRuleParserException {
+ public void testRenameSourceFileAttributeEmpty() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
String config1 = "-renamesourcefileattribute\n";
String config2 = "-keepattributes SourceFile\n";
@@ -648,36 +731,11 @@
@Test
public void parseUseUniqueClassMemberNames() throws Exception {
- try {
- ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
- parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
- "-useuniqueclassmembernames"
- )));
- parser.getConfig();
- fail();
- } catch (ProguardRuleParserException e) {
- assertTrue(e.getMessage().contains("-useuniqueulassmembernames is not supported"));
- }
- }
-
- @Test
- public void parseUseUniqueClassMemberNamesWithoutMinification() throws Exception {
ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
- "-useuniqueclassmembernames",
- "-dontobfuscate"
- )));
- ProguardConfiguration config = parser.getConfig();
- assertTrue(config.isUseUniqueClassMemberNames());
-
- parser = new ProguardConfigurationParser(new DexItemFactory());
- parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
"-useuniqueclassmembernames"
)));
- parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
- "-dontobfuscate"
- )));
- config = parser.getConfig();
+ ProguardConfiguration config = parser.getConfig();
assertTrue(config.isUseUniqueClassMemberNames());
}
diff --git a/src/test/java/com/android/tools/r8/shaking/ProguardNameMatchingTest.java b/src/test/java/com/android/tools/r8/shaking/ProguardNameMatchingTest.java
index af87086..2737971 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardNameMatchingTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardNameMatchingTest.java
@@ -62,6 +62,9 @@
assertTrue(matchClassName("java.lang.Object", "!java.util.**", "java**"));
assertFalse(matchClassName("java.lang.Object", "!java.**", "java.lang.*"));
assertTrue(matchClassName("java.lang.Object", "java.lang.*", "!java.**"));
+
+ assertTrue(matchClassName("boobar", "!foobar", "*bar"));
+ assertFalse(matchClassName("foobar", "!foobar", "*bar"));
}
private void assertMatchesBasicTypes(String pattern) {
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
new file mode 100644
index 0000000..4d59f63
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.shaking.forceproguardcompatibility;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.naming.MemberNaming.MethodSignature;
+import com.android.tools.r8.utils.DexInspector;
+import com.android.tools.r8.utils.DexInspector.ClassSubject;
+import com.android.tools.r8.utils.DexInspector.MethodSubject;
+import com.google.common.collect.ImmutableList;
+import org.junit.Test;
+
+public class ForceProguardCompatibilityTest extends TestBase {
+ private void test(Class mainClass, Class mentionedClass, boolean arrayClass,
+ boolean forceProguardCompatibility)
+ throws Exception {
+ String proguardConfig = keepMainProguardConfiguration(mainClass, true, false);
+ DexInspector inspector = new DexInspector(
+ compileWithR8(
+ ImmutableList.of(mainClass, mentionedClass),
+ proguardConfig,
+ options -> options.forceProguardCompatibility = forceProguardCompatibility));
+ assertTrue(inspector.clazz(mainClass.getCanonicalName()).isPresent());
+ ClassSubject clazz = inspector.clazz(getJavacGeneratedClassName(mentionedClass));
+ assertTrue(clazz.isPresent());
+ if (arrayClass) {
+ MethodSubject defaultInitializer = clazz.method(MethodSignature.initializer(new String[]{}));
+ assertFalse(defaultInitializer.isPresent());
+ } else {
+ MethodSubject defaultInitializer = clazz.method(MethodSignature.initializer(new String[]{}));
+ assertEquals(forceProguardCompatibility, defaultInitializer.isPresent());
+ }
+ }
+
+ @Test
+ public void testKeepDefaultInitializer() throws Exception {
+ test(TestMain.class, TestMain.MentionedClass.class, false, true);
+ test(TestMain.class, TestMain.MentionedClass.class, false, false);
+ }
+
+ @Test
+ public void testKeepDefaultInitializerArrayType() throws Exception {
+ test(TestMainArrayType.class, TestMainArrayType.MentionedClass.class, true, true);
+ test(TestMainArrayType.class, TestMainArrayType.MentionedClass.class, true, false);
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestMain.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestMain.java
new file mode 100644
index 0000000..94a9d0a
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestMain.java
@@ -0,0 +1,17 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.shaking.forceproguardcompatibility;
+
+public class TestMain {
+
+ public static class MentionedClass {
+ public MentionedClass() {
+ }
+ }
+
+ public static void main(String[] args) {
+ System.out.println(MentionedClass.class.getCanonicalName());
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestMainArrayType.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestMainArrayType.java
new file mode 100644
index 0000000..8b1acaf
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/TestMainArrayType.java
@@ -0,0 +1,17 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.shaking.forceproguardcompatibility;
+
+public class TestMainArrayType {
+
+ public static class MentionedClass {
+ public MentionedClass() {
+ }
+ }
+
+ public static void main(String[] args) {
+ System.out.println(MentionedClass[].class.getCanonicalName());
+ }
+}
diff --git a/tests/2017-07-27/aosp_master_manifest.xml b/tests/2017-07-27/aosp_master_manifest.xml
deleted file mode 100644
index 25af153..0000000
--- a/tests/2017-07-27/aosp_master_manifest.xml
+++ /dev/null
@@ -1,579 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<manifest>
- <remote fetch=".." name="aosp" review="https://android-review.googlesource.com/"/>
-
- <default remote="aosp" revision="master" sync-j="4"/>
-
- <project groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu" revision="8eb496967a7640e08832b15ea3e1f26079e4f2d1" upstream="master"/>
- <project clone-depth="1" groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu-kernel" revision="8a09131453b9326793261b6c9297f3c43336d6b5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk" name="device/common" revision="81fa95978b5542b9d2851b04d034b9a75ed8b43b" upstream="master"/>
- <project groups="pdk" name="device/generic/arm64" revision="23d9a6b57c63fbea914ae663a0be693b43d91ffc" upstream="master"/>
- <project groups="pdk" name="device/generic/armv7-a-neon" revision="dd168c481dcb14c7932c7026ac7c8b4af128e4a5" upstream="master"/>
- <project groups="pdk" name="device/generic/common" revision="11c092a6cbfcf6207f07a9a8e3398e747e7f5461" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish" revision="eb66ec9609a6c6422cfec97074eaefe9b3b436cd" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish-opengl" revision="b0a0e2f0297a1b379dd460dbb74153773196238c" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="6f2e6974a1b1dc0ef936aec732e33d553c000b5e" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="9d7cbb60819a1da8408a7148b965b4cd1ebbb570" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-mips" revision="544e69736cff911c286a5d1d300dac228e23a73f" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-mips64" revision="b1c36d0847fe6366527efd38fdb29d757ea887ee" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-x86" revision="65d59e2be2cfd713513a05d80a0f75794ab60579" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="bcb1f5139c24bebbb0cc0ebd2f50d83cd21b01b9" upstream="master"/>
- <project groups="pdk" name="device/generic/mips" revision="23901a9cf7a62f5f8f9f0c1382b5707694a1661c" upstream="master"/>
- <project groups="pdk" name="device/generic/mips64" revision="03b4192ab5125e5d67636dc4c7121f089799e1fb" upstream="master"/>
- <project groups="pdk" name="device/generic/qemu" revision="99feb6138f39e392495057ef7f2c4a5ed27f9e2d" upstream="master"/>
- <project groups="device,pdk" name="device/generic/uml" revision="4f11280e3d70728fba24e572428e559b7b6f8093" upstream="master"/>
- <project groups="pdk" name="device/generic/x86" revision="dac918b4cd4a34342526588502e4b5a531183080" upstream="master"/>
- <project groups="pdk" name="device/generic/x86_64" revision="f00aa59b3af4937ed014701755e9b01c95122187" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
- <project groups="device,fugu,broadcom_pdk,generic_fs,pdk" name="device/google/atv" revision="fbc45fb7c00d9b0150acdb674c9525ab32abe349" upstream="master"/>
- <project groups="device,pdk" name="device/google/contexthub" revision="a70df4afbbcebd9693590dd8fbbb9edf3220609e" upstream="master"/>
- <project groups="device,dragon,pdk" name="device/google/dragon" revision="ee1ac65d5660fd80ce40165c165e09d4de3cada5" upstream="master"/>
- <project clone-depth="1" groups="device,dragon,pdk" name="device/google/dragon-kernel" revision="8c9e4d14540119e0815a453eb4fefbedeaf8794f" upstream="master"/>
- <project groups="device,marlin" name="device/google/marlin" revision="d191908f633ea003bcba5193ef781ae4b1ab0bcc" upstream="master"/>
- <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="48bde4626f5da9605b068b6c1bcc1e854a876d52" upstream="master"/>
- <project groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler" revision="40d2796a7f673102462f217e794cb3efb18e8dff" upstream="master"/>
- <project clone-depth="1" groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler-kernel" revision="db808069857bd03e573ce3c765dd6df43f2a4318" upstream="master"/>
- <project groups="device,bullhead,pdk" name="device/lge/bullhead" revision="422731a22e593103dfab7f2abaf7fa1804566ef0" upstream="master"/>
- <project clone-depth="1" groups="device,bullhead,pdk" name="device/lge/bullhead-kernel" revision="3f270065c17302930cc9319d399297436b65b3bc" upstream="master"/>
- <project name="device/linaro/bootloader/OpenPlatformPkg" revision="71183d6eabb1f91198f1bd3705a85b419cfd4685" upstream="master"/>
- <project name="device/linaro/bootloader/arm-trusted-firmware" revision="36aa82dda56169333aba6b2c55341404c1d631f0" upstream="master"/>
- <project name="device/linaro/bootloader/edk2" revision="b26de945921c8045494d7817e2c962b2b73c80dc" upstream="master"/>
- <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="8b50938d95ea98ee6e01d1bb5155fccaa375de1b" upstream="master"/>
- <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="f3509810fe7d8e6eeff6f0b8f902c5f7e4db7c2a" upstream="master"/>
- <project groups="pdk" name="device/sample" revision="15f7857fc7b7f7cfd99ec4f93b151dc02a71b837" upstream="master"/>
- <project name="kernel/tests" revision="abfe7a8bf1d0f26e376d977f55d2234fe297c5ec" upstream="master"/>
- <project groups="pdk" name="platform/art" path="art" revision="0e03459e3bb921126dc8032a4c8430b1b8383d90" upstream="master"/>
- <project groups="pdk" name="platform/bionic" path="bionic" revision="4f36cabd8d1b1f3ed6ad4586f86aad5731f4bdaf" upstream="master"/>
- <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="231c627a5527b92ae3d043e454e949cdfc4f38ea" upstream="master"/>
- <project groups="pdk" name="platform/build" path="build/make" revision="2aef19528e05d014db280ce9aa6431580cc19f7c" upstream="master">
- <copyfile dest="Makefile" src="core/root.mk"/>
- <linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
- <linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
- <linkfile dest="build/core" src="core"/>
- <linkfile dest="build/envsetup.sh" src="envsetup.sh"/>
- <linkfile dest="build/target" src="target"/>
- <linkfile dest="build/tools" src="tools"/>
- </project>
- <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="9795c47773f2d79fdc0ace76bb47693c4a4d3b27" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="bcb31defde3e3fc248a1f11049e7722233003b6f" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="98be5836deff21fccb93d6fc342441d9858c042c" upstream="master">
- <linkfile dest="Android.bp" src="root.bp"/>
- <linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
- </project>
- <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="644a1933b78f1b08e86cecb58e199cd43ff7bd26" upstream="master"/>
- <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="226dd9c816388ccc82d332510ef65143757288f8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="dfdc080699f1bf92978b45e8e87649bde239a874" upstream="master"/>
- <project name="platform/developers/build" path="developers/build" revision="67343aa8a5faeb6b4df459dbfce4cc17bc7f21f9" upstream="master"/>
- <project name="platform/developers/demos" path="developers/demos" revision="95d49d216223e3431647abd79f5e376958353c95" upstream="master"/>
- <project name="platform/developers/samples/android" path="developers/samples/android" revision="b329d0bb80feecf6a27d38fe0bb3c018a2ba16aa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="fc7b5458c3a4cb311afca7ff0e10811514ca03ae" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="c78bdec26a7e8ae86feead11571d5fdc3203b98a" upstream="master"/>
- <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="7a8860406c015bbc63f382efed9372044eb0cb74" upstream="master"/>
- <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="44079759f93259a9694607502406dfe3717b04ba" upstream="master"/>
- <project groups="pdk" name="platform/external/aac" path="external/aac" revision="db596910262534891ecde361a71abe7ada57405a" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="c692633e1b2dddfb8f5ec7f60eb7a62ced325e4f" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="9b76336c02d84eeea19a48108270e3bae4efd025" upstream="master"/>
- <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e700a73dd03a0c111a8a55ef2f9f22b264663138" upstream="master"/>
- <project groups="pdk" name="platform/external/androidplot" path="external/androidplot" revision="c66727ebf001607cee14521c35bc852b55fd9845" upstream="master"/>
- <project groups="pdk" name="platform/external/ant-glob" path="external/ant-glob" revision="a73228afa9540b9c5518d360c5ae630bb634f975" upstream="master"/>
- <project groups="pdk" name="platform/external/antlr" path="external/antlr" revision="dd5fa6d48b827c5d98b625adbc209f4a05567534" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-commons-math" path="external/apache-commons-math" revision="18f62fca59d387e3c1ccd8f80087d9c9af40bcc8" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="3af05d75dc65fae5e073269db62563716c2ebd90" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="a4b31e5eda3df5a0ffe844891edc5bbb33930e98" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-xml" path="external/apache-xml" revision="31d7642eb8f37a9166db7f1c9e313ab651bdb8ba" upstream="master"/>
- <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="66e3a02481a0fcfcaaea296c0ec4daf761d3a07c" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="9ab8d36c652aae3bd30cbf62243a788394494635" upstream="master"/>
- <project groups="pdk" name="platform/external/avb" path="external/avb" revision="047ecf7d2361ffcb39a5a4ec0709480f47ed76e2" upstream="master"/>
- <project groups="pdk" name="platform/external/bison" path="external/bison" revision="7467d52af437dd3dfea237a6865ab84bf258dee0" upstream="master"/>
- <project groups="pdk" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
- <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="b6d070c5081ba0ca11545eb50870817d6d72d926" upstream="master"/>
- <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="5efb6f27c6444cbef30ca253c831496c534a9198" upstream="master"/>
- <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="6a6ebf0b8d77d5cc527af49afc5731a2253779d2" upstream="master"/>
- <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="4ac53f28ec5554dd32c70298312a10078d5ce02c" upstream="master"/>
- <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="0600e5668b2b1590c2f908a5c420149c6581122e" upstream="master"/>
- <project groups="pdk" name="platform/external/c-ares" path="external/c-ares" revision="211489aeaed3157c34e46f350afea813960258af" upstream="master"/>
- <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="eef51080212521ca9c85eb880dd1d6620846cf92" upstream="master"/>
- <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="d7e8ee81279845e0f06103398b48d3f4624497b4" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="5bb2c7930cf34cfe7584b76139b5257feec81e6c" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="a70bd790dfd509cefb24534d02e3a1b349faf98d" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="581a777a866d78be6cb4192e46891e418930fc1b" upstream="master"/>
- <project groups="pdk" name="platform/external/clang" path="external/clang" revision="0f9f1869a4596b973fb6d65324924365d3cf5884" upstream="master"/>
- <project groups="pdk" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
- <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="8bdaf98eeb4dd0f7b8cae390cd18c097a9eb4e2f" upstream="master"/>
- <project groups="pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="5ad04c656aeb7cece332922bd67e4b9bc08acc81" upstream="master"/>
- <project groups="pdk" name="platform/external/crcalc" path="external/crcalc" revision="5559610bea3b267abef3273868f2d6b8c01409a5" upstream="master"/>
- <project groups="pdk" name="platform/external/cros/system_api" path="external/cros/system_api" revision="d51655f606e0057f5fadcd17eb5ce1c1a5dcddcb" upstream="master"/>
- <project groups="pdk" name="platform/external/curl" path="external/curl" revision="f0f7cd5b375b317e7eef65b6573902c04ee80ecc" upstream="master"/>
- <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="671fbc2903016f5966c032a917caf3a800088ca9" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="da231f19abbe6eafee0d1ac3d35351d281998a05" upstream="master"/>
- <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="d352976796a4ef22a8ec1e8056f51633c4b07d90" upstream="master"/>
- <project groups="pdk" name="platform/external/dexmaker" path="external/dexmaker" revision="9e6367a9399bb671b1b474bf21898d2ca68b6357" upstream="master"/>
- <project groups="pdk" name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="df64c96f01b3dd2a823d6aa788653c3bedd1efda" upstream="master"/>
- <project groups="pdk" name="platform/external/dlmalloc" path="external/dlmalloc" revision="6661f3ca66b55d8f5a57b96fec97efaf8f3897a5" upstream="master"/>
- <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="4cafaba2321b7b74f81c621aa01112156258adb3" upstream="master"/>
- <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="00d11a4477637375322692d0c5603c60d38c6f1a" upstream="master"/>
- <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="f381ec7f6fca0618fb01231a758402597b1239e3" upstream="master"/>
- <project groups="pdk" name="platform/external/donuts" path="external/donuts" revision="005389fb31a67841b5de42f0d25fbfab843e208c" upstream="master"/>
- <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="e19443ea00d3b27622590b920819e53da68f7fda" upstream="master"/>
- <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="cbfc5a5d6bd7f8e3913560d8d0e5fdf865773fce" upstream="master"/>
- <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="059f2d82efbcc733574b2b90dbf999280c04c4f1" upstream="master"/>
- <project groups="pdk" name="platform/external/drrickorang" path="external/drrickorang" revision="8ea137d1086e621188f70ffac34a6ba8924af2c6" upstream="master"/>
- <project name="platform/external/dtc" path="external/dtc" revision="b1d8b2cd5e57a5c97bdd011624c06c40052b821e" upstream="master"/>
- <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="0e4687aea6893115b87e647db97e211c38beee30" upstream="master"/>
- <project groups="pdk" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-basebuilder" path="external/eclipse-basebuilder" revision="076f46888ed346775b8efc564d7694063ef5eea7" upstream="master"/>
- <project groups="pdk" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
- <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="c905f05b1b1277cc5b913652b2d4a57da12b89f7" upstream="master"/>
- <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="2ed2550b8595fde721dbc6a12091609a598192af" upstream="master"/>
- <project groups="pdk" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
- <project groups="pdk" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
- <project groups="pdk" name="platform/external/expat" path="external/expat" revision="8954a5667c2941642b9f63bec3a0482a8e9eeab3" upstream="master"/>
- <project groups="pdk" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
- <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="85b4766bedbbe8b2dfdc23b401194c9dd3c60dd0" upstream="master"/>
- <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="b87f884d1ad7530a39318ddbe2f066aa1f268871" upstream="master"/>
- <project groups="pdk" name="platform/external/fec" path="external/fec" revision="b3e9d18f59759ff5407be13ef8c6d2e2a497305e" upstream="master"/>
- <project groups="pdk" name="platform/external/fio" path="external/fio" revision="138dfa04ca2e19c0f03b4d0b591ca2d5e3bad3df" upstream="master"/>
- <project groups="pdk" name="platform/external/flac" path="external/flac" revision="9654326e6af758bf25e50f15a7e7b9cff6755a78" upstream="master"/>
- <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="1ce26af6d14810a277a5f62a5619a372b93183cc" upstream="master"/>
- <project groups="pdk" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
- <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="613f720f08f579806a05f0e45927f4f9ff147885" upstream="master"/>
- <project groups="pdk" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="9d1e7e4558c8b53731ba1d06d33b5516934d1ff7" upstream="master"/>
- <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="2d71596ba7a5e2e9430683818f8800d8bea059e2" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="a6e0183cdd9f69b180b4adbd613e66772d9bc633" upstream="master"/>
- <project groups="pdk" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
- <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="74c716d37b9a39f55b7f18d7939e886c7f2c8881" upstream="master"/>
- <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="31bf6fed97629fd3420cda58a97469ec7e5389f0" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="0062a10458d4c357f3082d66bcb129d11913aaae" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/coming-soon" path="external/google-fonts/coming-soon" revision="2c5cb418c690815545bbb0316eae5fd33b9fc859" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/cutive-mono" path="external/google-fonts/cutive-mono" revision="bce2136662854076023066602526ba299e6556b2" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/dancing-script" path="external/google-fonts/dancing-script" revision="7b6623bd54cee3e48ae8a4f477f616366643cc78" upstream="master"/>
- <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="84cad11e5d8c3000472e8bb22dc698cf9b3c8612" upstream="master"/>
- <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="ff9b10309a390a7d631edc7808e129237972245b" upstream="master"/>
- <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="165c596ac3c69ecbc5a424ad9c1f1be6d44d0bb3" upstream="master"/>
- <project groups="pdk" name="platform/external/guava" path="external/guava" revision="5000b35f73a42ddb5554aa4c1c5ffea9c999741d" upstream="master"/>
- <project groups="pdk" name="platform/external/guice" path="external/guice" revision="411312e790280e72c08e018134d7e3a0e7ebab76" upstream="master"/>
- <project groups="pdk" name="platform/external/hamcrest" path="external/hamcrest" revision="0d446c0a6f5ab27bf24d8e046f1d03ce40f09594" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="6dd5ce2e32bc4a474b6ae7f0c3b6059a995ea5a7" upstream="master"/>
- <project groups="pdk" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="dedeff64279b77bafff72b6d866efc93e829b4ab" upstream="master"/>
- <project groups="pdk" name="platform/external/icu" path="external/icu" revision="f891f489da942890fd01c83b860b6448b77ce042" upstream="master"/>
- <project groups="pdk" name="platform/external/ims" path="external/ims" revision="711f9d55979cfe28b19a502cbe13a4d7e7e674f0" upstream="master"/>
- <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="989b8c667872ae21ea536d6419a506706a1e89ed" upstream="master"/>
- <project groups="pdk" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="afbdf60e1d4cafe0f894fe8e8e5bfa49e47c80b2" upstream="master"/>
- <project groups="pdk" name="platform/external/iptables" path="external/iptables" revision="204461a170e92764b41512463f49ef4164bee2e3" upstream="master"/>
- <project groups="pdk" name="platform/external/iputils" path="external/iputils" revision="0e79d155b36fdedf6f02908f72d4d156dbe3b335" upstream="master"/>
- <project groups="pdk" name="platform/external/iw" path="external/iw" revision="6a3e9a164c98577c28c0c9b1b9a0fbe7d7436e47" upstream="master"/>
- <project groups="pdk" name="platform/external/jacoco" path="external/jacoco" revision="b1b164ac860eddaed3abfb819df73bfcccdaa327" upstream="master"/>
- <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="7adc960353812730b4fb15a72901056cf3b3c516" upstream="master"/>
- <project groups="pdk" name="platform/external/javasqlite" path="external/javasqlite" revision="ee41d81872eedc632f42bd231b95bc945690d159" upstream="master"/>
- <project groups="pdk" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
- <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="68545397d8332a61f800ce9617715a22445ed9a9" upstream="master"/>
- <project groups="pdk" name="platform/external/jdiff" path="external/jdiff" revision="62f4ca1f64eaeb0896416949d6120b912ac67d3b" upstream="master"/>
- <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="a6f685beacaa3f8da06cb28f38bb559eac7d4dda" upstream="master"/>
- <project groups="pdk" name="platform/external/jetty" path="external/jetty" revision="3077b6f9426ccafb6bd5c00a748e1d40af9e1ae5" upstream="master"/>
- <project groups="tradefed,pdk-fs" name="platform/external/jline" path="external/jline" revision="74812032f8d8eddbef387f18c96de9e5c38b8fdb" upstream="master"/>
- <project groups="pdk" name="platform/external/jmdns" path="external/jmdns" revision="0c71647deb7f7835c473fd3dfb45943083e47794" upstream="master"/>
- <project groups="pdk" name="platform/external/jsilver" path="external/jsilver" revision="b9b84920ba47ddf7f15baa01c56b28e3d3f951ea" upstream="master"/>
- <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="45f59951efef6cd2924738c39a5f52d61e06eb79" upstream="master"/>
- <project groups="pdk" name="platform/external/jsoncpp" path="external/jsoncpp" revision="ecd640d0acf7c93c5dbfc37702e4eedbc18aa850" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr305" path="external/jsr305" revision="333c5e0ea34930a10785f53e74dbe997d93ad2d8" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="de30ee496a13d0f71d8ddaee1e247c3e8e43e58d" upstream="master"/>
- <project groups="pdk" name="platform/external/junit" path="external/junit" revision="2faf8f4ae953dd2e847536c2712bbc563e34949a" upstream="master"/>
- <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="b03560c32573b9057dc1daaf877501dbb4e16f8d" upstream="master"/>
- <project groups="pdk" name="platform/external/kernel-headers" path="external/kernel-headers" revision="ab0b76f533c12b642cfbe4adb6e601e340599ad6" upstream="master"/>
- <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="087bd70f9a816bc37d77ef71c0b8f4253e60169e" upstream="master"/>
- <project groups="pdk" name="platform/external/ksoap2" path="external/ksoap2" revision="3f3695df2e974811a5759d43f3532dcd9d6be26c" upstream="master"/>
- <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="f4a17ae216f420f5d46e8680d4aa9317e6a9a4d8" upstream="master"/>
- <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="a645153b0a97663636bacdc5527c0d304fa79657" upstream="master"/>
- <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="2dc254ac567d43b060356ed4d660aca64fdc14a2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="64dcb22b223e3aae866d44ff35dc3acc2a9c58e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
- <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="0601274935e7f632eb0d6ce0fd223b744349d20b" upstream="master"/>
- <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e1a8625038e715f0b14fd5466c02f0142673b1ec" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="2447373f182dbfeb47fb86c0f5a6ac5773c65ac2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="0aea6aeca494754446dd1e5fe638fe68da128036" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="c41479a1d7de7fe6e9cfbff9be21382f7b23ace7" upstream="master"/>
- <project groups="pdk" name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
- <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="90d90b27c0b82cac20deabac79e97e274856eaf8" upstream="master"/>
- <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="791d9b9fd9bd768bc81f5f224fb5fc2904035fa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
- <project groups="pdk" name="platform/external/libese" path="external/libese" revision="4dcd39f5fc3b5a33078dcd5ee698f08c7ae664e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="596447c7ff2881a67e7082c905112584c3e61a17" upstream="master"/>
- <project groups="pdk" name="platform/external/libexif" path="external/libexif" revision="2431bfa79df74fbb6e30b77ab9f3d89c300d18ae" upstream="master"/>
- <project groups="pdk" name="platform/external/libgdx" path="external/libgdx" revision="5f9bb1dadc7e51a5fdb7171280366f8b3ec86eb8" upstream="master"/>
- <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="4a3459a3528b7f11cf09acfa2d2a1fb5142c1c2b" upstream="master"/>
- <project groups="pdk" name="platform/external/libhevc" path="external/libhevc" revision="5d3d1a0a65949b09035cc366429f7f85215c2731" upstream="master"/>
- <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="b8a887c09706633ac22ad6d13c9464b2ee539e77" upstream="master"/>
- <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="94b3caf1fecd5261e6929469924b1e25aaeca0ff" upstream="master"/>
- <project groups="pdk" name="platform/external/liblzf" path="external/liblzf" revision="a88b9629447deabe8697d2f8fd4cc70aa6e1b563" upstream="master"/>
- <project groups="pdk" name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libmojo" path="external/libmojo" revision="8ac9103e05b66812c25348943383f9365d1ce3e0" upstream="master"/>
- <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="a0f640e21e42f5905d760ec3df1dc5203d0d209b" upstream="master"/>
- <project groups="pdk" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
- <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="436dd293ff5503828a1fa33d725a1db87e4e03ed" upstream="master"/>
- <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="6cd19f65ff99f6deb836937c38fb9eedc113c101" upstream="master"/>
- <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="defabfc078080d60369d901d3c7662f05605cb29" upstream="master"/>
- <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="6a48629b7c7fc90326b2f959789828007b3cc184" upstream="master"/>
- <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="a7703b70699299f078a189e19b6915120cded732" upstream="master"/>
- <project groups="pdk" name="platform/external/libpcap" path="external/libpcap" revision="50a06a07f1dd408adf7607b76eaf02d0c254fe22" upstream="master"/>
- <project groups="pdk" name="platform/external/libphonenumber" path="external/libphonenumber" revision="9313c2ce2fb61213e66adcf8ab4893a5d9c48da1" upstream="master"/>
- <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="352e6a8ec05db372ccdfc80cb77de807d23e8432" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="76a0b9f6a9813311ddfd59aaa580339f36a2c510" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="93d99bf31d081198030380a946f4c29e38159b25" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb" path="external/libusb" revision="b81e632687e2380716ced43d28f7c95987959944" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
- <project groups="pdk" name="platform/external/libutf" path="external/libutf" revision="853ef375ba2ce430f5b13b556812b2d83ccc82e1" upstream="master"/>
- <project groups="pdk" name="platform/external/libvncserver" path="external/libvncserver" revision="d099c925eed901cedcb5f1b9079af45a3ca0e6b8" upstream="master"/>
- <project groups="pdk" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
- <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="8585b768902331df85f7d1bbbc11bee4715da97a" upstream="master"/>
- <project groups="pdk" name="platform/external/libvterm" path="external/libvterm" revision="f6cc826fe2eb9fc76fdf922d02ad86aecc5f1b18" upstream="master"/>
- <project groups="pdk,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="2975f91c5afcdc7c150e2db37430d958817270d0" upstream="master"/>
- <project groups="pdk,libyuv" name="platform/external/libyuv" path="external/libyuv" revision="7a6bee2e5623dcc471f49a283144fed44dfb3757" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="c33d1f8c4b98fa6aa24c67d484d31b58c0651933" upstream="master"/>
- <project groups="pdk" name="platform/external/littlemock" path="external/littlemock" revision="105f5b4352a348a3628b081f4906f5dbb8c120f6" upstream="master"/>
- <project groups="pdk" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
- <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="8cdd9f59ffb6bae793e50c7cfdb23e9eac0703c7" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/ltp" path="external/ltp" revision="9686e7bddb36f2d7297456eaf5c9b7d89463abfa" upstream="master"/>
- <project groups="pdk" name="platform/external/lz4" path="external/lz4" revision="de7f627c7958b9847e0d9e6e29fcb566e3bb1dde" upstream="master"/>
- <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="39a0299cfdac41a2631cfdb4bbb637ffa66170fd" upstream="master"/>
- <project groups="pdk" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
- <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="71b85f6e70ac758f735338e8a1681dfe014af2fa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="e855ba79dee7a2d4df11d72752e1079cd5e58f2e" upstream="master"/>
- <project groups="pdk" name="platform/external/messageformat" path="external/messageformat" revision="9e1e4dddc8aa0cae8279281488f8a6bf4f453192" upstream="master"/>
- <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="db19bfbfbdce0f2b86f53d36392e49cb8f1645d6" upstream="master"/>
- <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="bba8f4a328807772fc16027133a9d63e9185fab5" upstream="master"/>
- <project groups="pdk" name="platform/external/mmc-utils" path="external/mmc-utils" revision="6de31b2b8a09108f9b91bc12bee2b792f783dc62" upstream="master"/>
- <project groups="pdk" name="platform/external/mockftpserver" path="external/mockftpserver" revision="777eb7d351810721b2416c4e48fe08e4ce0476f7" upstream="master"/>
- <project groups="pdk" name="platform/external/mockito" path="external/mockito" revision="0211c64d5545015d76acda90d6013df67ec9124a" upstream="master"/>
- <project groups="pdk" name="platform/external/mockwebserver" path="external/mockwebserver" revision="d680f43b995aae01123ee6bc7adb690dafcc47fe" upstream="master"/>
- <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="68d0b5790fff5243aab59ae8108d7e69506ac4c4" upstream="master"/>
- <project groups="pdk" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
- <project groups="pdk" name="platform/external/mtpd" path="external/mtpd" revision="dfc7f34c62ee40f5ce47e0942021f96f62f937f7" upstream="master"/>
- <project groups="pdk" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
- <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="4b114fa241df177ec7fc36132d3bec20726c4f5f" upstream="master"/>
- <project groups="pdk" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
- <project groups="pdk" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
- <project groups="pdk" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
- <project groups="pdk" name="platform/external/neven" path="external/neven" revision="7a1bb8b2c5dfd9703c93a2ea09245091b14a92ea" upstream="master"/>
- <project groups="pdk" name="platform/external/nfacct" path="external/nfacct" revision="3872c41d0bfb0dbe6c37ea5db5cc1e1d7a0d7971" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-pkits" path="external/nist-pkits" revision="e79665e3657171f55a979ca558ebe3c3dbf108d2" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
- <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="60e126f1c096b20d4a3685e1de1147b6595e9012" upstream="master"/>
- <project groups="pdk" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
- <project groups="pdk" name="platform/external/objenesis" path="external/objenesis" revision="30c85e8178b11799cf08ad21339f52eaa787a13e" upstream="master"/>
- <project groups="pdk" name="platform/external/okhttp" path="external/okhttp" revision="b53397b37a05fd50529810c726e7214cdc5b191e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="6acb1f4a6e68f80b1cb0182f3d334dd8607697b5" upstream="master"/>
- <project groups="pdk" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
- <project groups="pdk" name="platform/external/parameter-framework" path="external/parameter-framework" revision="aac080ded4d4d645bee26777f0a419b9a8a07880" upstream="master"/>
- <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="97f96c13a5b0c22e9827279eb0dd38e9c889f244" upstream="master"/>
- <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e4e9d1b6b387072f9071f896993a9cfe5481ab4c" upstream="master"/>
- <project groups="pdk" name="platform/external/piex" path="external/piex" revision="ac5a3090cb5b5c2aaa7e1c68c9a68fc4f5a38c26" upstream="master"/>
- <project groups="pdk" name="platform/external/ppp" path="external/ppp" revision="7e60466a0009f58aa09b60bf6dbb96cacd6cb829" upstream="master"/>
- <project groups="pdk" name="platform/external/proguard" path="external/proguard" revision="af893cdc1242e4cfbeeb10e2323f9a689a825177" upstream="master"/>
- <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="7fca48d8ce97f7ba3ab8eea5c472f1ad3711762f" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="181a615a16fd15caa50a2e6f729456e2c9d42e42" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="9458f8e38d4fe0d58890c5867485dbbf2d538955" upstream="master"/>
- <project groups="pdk" name="platform/external/r8" path="external/r8" revision="30898dc8e86b34b7a06981c6d6c24e3f0fbc7ead" upstream="master"/>
- <project groups="pdk" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
- <project groups="pdk" name="platform/external/replicaisland" path="external/replicaisland" revision="23e53aa67dc788cd2fe0598eaf7c9f20eb93c392" upstream="master"/>
- <project groups="pdk" name="platform/external/rmi4utils" path="external/rmi4utils" revision="40eb2d785d3e367c01fc2a3d53820550e7f66739" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="797e01c269d344b03f6080d46926c91603465949" upstream="master"/>
- <project groups="pdk" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="25fa2dde3aacaeacb2797bcffddce96014f4fcc3" upstream="master"/>
- <project groups="pdk" name="platform/external/rootdev" path="external/rootdev" revision="1dd6771e0f2e7da8736c9b21603817bce0d55ea9" upstream="master"/>
- <project groups="pdk" name="platform/external/safe-iop" path="external/safe-iop" revision="cd76f998688d145235de78ecd5b340d0eac9239d" upstream="master"/>
- <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="a1026771ccb71c69a4b31d726473feaa32ab4e6a" upstream="master"/>
- <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="f815253f7724d207b311309fd8f340b151348b03" upstream="master"/>
- <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="7e29d17754156636a79c60f7ce195039b94d7197" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="a217f56dac15a71326445fa7f6a789ec00b22392" upstream="master"/>
- <project groups="pdk" name="platform/external/shflags" path="external/shflags" revision="c4876e01829b8cf110ee33267bb1bad1f8ebb51d" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="740dcbc14f4bb497082890c1c4a85c0a993120a9" upstream="master"/>
- <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="d0393a27bd6c37f8fcbbb4e687ccf0bd43eb953a" upstream="master"/>
- <project groups="pdk" name="platform/external/slf4j" path="external/slf4j" revision="b4eb5f69f088f53ede0b7ee4a1a3bf2c3ff58418" upstream="master"/>
- <project groups="pdk" name="platform/external/smali" path="external/smali" revision="78cf98bb8c439f99f06f7b609c5c533a9d41de68" upstream="master"/>
- <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="03d1dd1553534e717fdff5f7bed00b67dbb23431" upstream="master"/>
- <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="1163465de6c4b6c1816de74db60b28769cf5ac96" upstream="master"/>
- <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="95ad2973de15846e1f67c5c5c30eae877afb2ca4" upstream="master"/>
- <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a7d909edd14636c8934e1b61cce563ef9d29c477" upstream="master"/>
- <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="9ebe91915ecc1ca31c074c92e4f11b7625801f18" upstream="master"/>
- <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="39a32b46137c57b816e71d73438e4fac69b6b9d6" upstream="master"/>
- <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="393e365802711fb6969858f79d80104399d140c0" upstream="master"/>
- <project groups="pdk" name="platform/external/strace" path="external/strace" revision="222ec16d6073335c8bb5eb6e738ddc2df1c2cceb" upstream="master"/>
- <project groups="pdk" name="platform/external/svox" path="external/svox" revision="7e68d0e9aac1b5d2ad15e92ddaa3bceb27973fcb" upstream="master"/>
- <project groups="pdk" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
- <project groups="pdk" name="platform/external/tcpdump" path="external/tcpdump" revision="1aa1e7ffca235f716b36c0a4588f84e23ea1be38" upstream="master"/>
- <project groups="pdk" name="platform/external/testng" path="external/testng" revision="8f2e8231852f454b5903cf886be55e9f647cdd76" upstream="master"/>
- <project groups="pdk" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="7c703a6b307ae7c3ba69429ed0c71417e507faff" upstream="master"/>
- <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="6ded547e25cd1bbc20891d9c7d4653ff8f65b59c" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="ccc219c40a820afd30ad347c0e3d2bdbdf1df109" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="513377fb55558e0b570d354398467a12204ffb06" upstream="master"/>
- <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="4307f4735e9a4e3189e8d43f7493bb677a4d06ba" upstream="master"/>
- <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="3f4a99df44648fad709708ee68e55bec9afafeab" upstream="master"/>
- <project groups="pdk" name="platform/external/tpm2" path="external/tpm2" revision="00f7bc755f76f483f6a59f917727339e089a9cc4" upstream="master"/>
- <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="75c45ed3b5a684fb5bd3f09d64cd242adcda0752" upstream="master"/>
- <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="680f240bda39c798480bef3bb36c671af1f575c1" upstream="master"/>
- <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="5a8be7ee6337367a1dcf11bdad865e7917519e46" upstream="master"/>
- <project groups="pdk" name="platform/external/v8" path="external/v8" revision="7bde41a362a5746e44e9efc2ae8d1843f39d875e" upstream="master"/>
- <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="84dd75ab14160e18d95f2f3ea6120c03ce8c429c" upstream="master"/>
- <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="0ad090ffa37b9a1e9a0063a4d4b808c6fe4809e2" upstream="master"/>
- <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="2da09a48dc4d5a3c585f897f256c2c6c5fa4eb5a" upstream="master"/>
- <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="86bc48f5ce1c93ae3af07a67a70b79647571516a" upstream="master"/>
- <project groups="pdk" name="platform/external/volley" path="external/volley" revision="3a1232594eb627e9e59b22406816648a55a3f2ae" upstream="master"/>
- <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="4c40acb97e6df4a5895877f81cde4e9c0704a95f" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="e99d2e88295130a1874890b3b118969917de5a84" upstream="master"/>
- <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="3d524127baea097e01517db9ca1362910d016daa" upstream="master"/>
- <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="14c5ecd85f3fd6a703a8bef710690246c8dd42bb" upstream="master"/>
- <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="1187a7bf7b612a8c09b70e65ea52351a1c5c731b" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="1d7192fe0d2f788f8f150899c58b86c5ff10456a" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
- <project groups="pdk" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
- <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="03e7a3eae664d9ee1862b5f152310d17ae5c7428" upstream="master"/>
- <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="30595680d975bf98dd62e3c25d16562ab33c3d4d" upstream="master"/>
- <project groups="pdk" name="platform/external/zopfli" path="external/zopfli" revision="b36f966df9e7767a6b0aeb00fea29af0c57c89be" upstream="master"/>
- <project groups="pdk" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="f402866c6aab58d8f991f1122976714caebf7eee" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="f44ebf5fcba4dc5f7021a3b72a8f26b11ae23db2" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="5950103a67264d36e0c5c65330604916e462714d" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="829ab4b9b5a97eccc3f7662f8211e608a5db6ec0" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="017df777151c838f217f526662a0c4675a576c57" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="15281a01df0a5892d818080f1df669bdb8a319f7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="d2ea93572bd276e4b5b9bd86887603a35f9a0f5b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="b9d30cfae90bd5584a8e7926ec6d938ce323e0fd" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="71cca93f32991989369fef6a7ba1a96d6010e7a3" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="3d53a93c79beb608ca52f7e1ffbf2fc7d9c3722f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="6450225f3eaf865b0838e84c4656f6dd6048d87b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="d4a35a67a35e8dd2d03818e0cafa6e0271879b87" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/bitmap" path="frameworks/opt/bitmap" revision="a0d4e3108663202564a6833b76770075b8e5b767" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="991e0444ed6edb1a77b0feae73c14e2a886cbf0d" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="886d7d1277b82347c30ec5d79ba1576680947bb8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="02ced36ad1e062e79397296ebd1dc760870a4e42" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="c1d5eb2d31fb6a74ed129722754139c759aedbe8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="5348c906911a9ae65b165023e9e4ce45eee05c02" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="92eede13edbf22b501edb9aeb92366f91eab9781" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/inputconnectioncommon" path="frameworks/opt/inputconnectioncommon" revision="3baece9b20fa480da46d860acd7320fd9eee3386" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/inputmethodcommon" path="frameworks/opt/inputmethodcommon" revision="990fcb1a6dbb5d1204cc8ec86e4bc3f691f4aeeb" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="264bef96c82961029702fcf8e12b0fddfa0d09ab" upstream="master"/>
- <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="ff0979256d1a67a62c726d6fe15264c496990605" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="2e09c0ba8a11ee629a85582413598c60cca09e8e" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="75f798a125721ddd046389c052eaf9c6ddf44575" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="c0793686e13dafc2f45b0ad3e079f707938c6534" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="2cce48fde424bd078f024d5ddc7c564ca1161e2f" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="39443c82847983e81fb08422b5cf305153e9e4c7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="e344fd847c154f2d0680bf1089390326d634d847" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="15d297d8ac4664e4a491448d9c15158ee51714f9" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="8901edffd17d9d5cdcb7d09e4f94aa3b3ecc71c5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="684e045dc0efca4d5a8f0ed4b28036444ff9385f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="35975286092f329186f66cf346eb6b0dff3c2e61" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="7bfc4444b48f1f046d50fc799a3bc64fc8e3c7df" upstream="master"/>
- <project name="platform/hardware/akm" path="hardware/akm" revision="7889f98849ad3913586904e00d91b32cc0ceb75b" upstream="master"/>
- <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="1ed4bedf4af755edc61bccb8f468a0df008dcf1f" upstream="master"/>
- <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="5c73d53b0f5ea0e9259c48f40dca3ca9e58dfb3c" upstream="master"/>
- <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="89639347f950e29403fb78513fd6ffb75bf03942" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="218f0d6bc9532d0b707ea325fd96998249fe47bf" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="a644e4f384a7bd2afa4460da3a9f7951e9fa205e" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="9d15c1c031fdf9cd4fa153e76245d7a5f8b82ed8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="feff90bd79e7152d06f4275c30209af2826ae8ba" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="ac747113d4f6739b1462ca7fb40f2091691e209b" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="3db8bb9d44eef64553a88fdc2698ef3b593c49c7" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="6b9b06d89fd0e01037d3138c71886f2c315ae9ee" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="760b9713c84566e6a3a39d114d346d20389f47a8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="8c2ae7ccfd78fb4efaf4c0c61a697f2075584934" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="aed9716b5467e75728f761ac75a4ba5ca3c51ea0" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="7407927b0eda431b7d817cb9d78189f335f509b1" upstream="master"/>
- <project groups="intel_sensors,pdk" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
- <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="6ef70c9040773aa501ee54b54efc15a7ea61b25f" upstream="master"/>
- <project groups="invensense,pdk" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="7de0e9ceae69ada80a6c5a7b4c0c3bbdd83e012a" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="483a68f68a3f7f115f8909d663e93edaf89762f5" upstream="master"/>
- <project groups="marvell_bt,pdk" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
- <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="ba9bce36176b05695bd042acadc4a254ab911872" upstream="master"/>
- <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="6007fe6af3f7eb0c6b5fc3cab3c0f0cf5a7b50fe" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="5e2825785169ae647e80ce48ac814abe2ca57532" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/camera" path="hardware/qcom/camera" revision="383b6cb93b5952c2a87b3ea5ce2be50f006dd395" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="cc379d116231083e1b804fea9b0ef52d9e105ae1" upstream="master"/>
- <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="42ea1de6807fa5885f18cbd6c5fd96f80395fcea" upstream="master"/>
- <project groups="qcom,qcom_gps,pdk" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="45c0574442a01c2f6a9ccb2044b6f30c7ad288e4" upstream="master"/>
- <project groups="qcom,qcom_keymaster,pdk" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="3587a1a811c7baa8736d6cd54b8895370c4bdb58" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="63abe022daf627edac121f5c389d7f660db547ac" upstream="master"/>
- <project groups="qcom_msm8960,pdk" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
- <project groups="qcom_msm8994,pdk" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="60aaa00b2e0d537c0f51631dd88d919fc1baf439" upstream="master"/>
- <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="c552e34d90d0ff2b69660943c2060f17b5d59eb9" upstream="master"/>
- <project groups="qcom_msm8x26,pdk" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="5c60d76743ed98e7082b7f72927c17a7b86e0218" upstream="master"/>
- <project groups="qcom_msm8x27,pdk" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
- <project groups="qcom_msm8x84,pdk" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
- <project groups="qcom_wlan,pdk" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="ec9deb6e65d7c7816083d925255bbaefe16e4778" upstream="master"/>
- <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="78b80ee72d80793766a4ff91f1c11f96553108bc" upstream="master"/>
- <project groups="pdk" name="platform/libcore" path="libcore" revision="6ea6973dc177bb57a4558cb6203b4b27a20a8d1e" upstream="master"/>
- <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="9af782e03d4f2e736a85e2a7d645e68f865c53d4" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="0aa0611f9c6775575da56a1746fef1cf68267b0e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="a13d5ea7ffaa26b6def0928cb62177009e375373" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="ffc5f72f39de7f9bc956ab29d087596d0f55ef70" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calculator" path="packages/apps/Calculator" revision="e1bda28f1545111ba7734577f23e194bf3db3f5f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="2bbf7b8414ebcff2207b08224d8913241a766a5a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="8690a7317dcf64ece731e0f9e5fb2cdfb123b115" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="46d5820744888866cab227b38eaae21b6f93a39a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="dea5466530b3e1941aa83a556dac45490f12a85a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="7562fee50a9db5afa94786f1d3acb1f0452e3ea7" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="41e553f6ec13e860694a2790cea82a4300b6703e" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ContactsCommon" path="packages/apps/ContactsCommon" revision="c59284acd9283f2274fc18fe69ea9d08cf1245d4" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="b89bbe70df270c344123d7ce2bcecf1a84c399f1" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="85b25ee8ce0c5d19b53963c985869100282b55d1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="8e49b42b6fde177fb242da12bb05365ef03362e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1239cd59a0f4dfd0a96e1a83b8871bd2b18358c6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="b7282555b3b99fc9aa98b6c807662fa096c80e3c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="7c359e389457d7cb7cd4f696608355beb3fa13f0" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="ae5a3067f51cee6cfeec73d56815892bb3f6c4de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="5ffe93060777b92f221adbd0ddc67b9479852d80" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="f19c4a10890cafb17ceaf68cda835dc24aad455c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="64b7df195d2bfdcc41579e9ef5f3b49afde18116" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="44c1afdc7fe9f4420933ad0c9fd824931179ca27" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="7c35c64a9d5ca913fb160df63c033000915639f8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="a26fc3fd03f45851807a7f45d70817f6c094d0e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="2a68a11b2c9156f9f9747fe0b974d0baca157706" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="7b2c6ed6a50b10b698f0b0251ac3a9b532432d72" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="75df705a0f4e7f36050ea68fa8695325f2a691d8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="035fa0123d87b48554cbd294ee9681b25eb7049b" upstream="master"/>
- <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="af45ef4f1a786a3f1d23e9319dcb14eff0673868" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="01e429c08e51291315890de9677151a7e0b6ad35" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="0d467d56ce68a1bc26d721a5c3b9a6caf98aadb4" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Phone" path="packages/apps/Phone" revision="79731f02b7009206a01182d2cca15dfc8491da09" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="f962ad993640d79dc1d76494650cf6d3e83ee6de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="d686dc74168ed5324b2388133531f30255659ae6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="077fc59dd26cdecdfe2ea3af614291b103faa7e2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="b17f4ddf6719faef79535c76ea6af84f5009d4a1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="66244a5c528afb29b1a88aa788770063b91c89b2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="1e01c3e1bcc0ed83b3676e1d5c0b75d5ed873391" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="3a2e327741cad7a38cc91626f921af28a6307cc8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="5f67a8eaea9379d7fce53db77e9ed7b47e49f1e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="4db997871e3f4c3f84660815096e5276b47c5c91" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SpeechRecorder" path="packages/apps/SpeechRecorder" revision="51cc8462c082a26810f5d7c5a2648232a77e795c" upstream="master"/>
- <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="528f2dc222b43972fe7a019e7daa4f81c213fad4" upstream="master"/>
- <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="a1c249013e65ec1fc38076cc29830c4367c8cace" upstream="master"/>
- <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="7416628255cd3c95b6ffecd331fbb0add9c1eea9" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="60102ca02f1a93af59cc479f2a80a40a382d668c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="8ba8c509c8408b55083739e6b3cf3db32ca7606d" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="79ccd3543999c1cc8ea211ea54384a9096b693a9" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="f3a394eeb3408415314c4e816ef4638904940a85" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="ded915b9ea8908b1d72426c17003428b82c82d8d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="9648d6bc0a106576927264ab580e1a326fba920a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="a3efe60e6b9e0045eef5f88491bc966868357300" upstream="master"/>
- <project name="platform/packages/apps/WallpaperPicker" path="packages/apps/WallpaperPicker" revision="969934f908ff2ddda77bddbb80f206daf6a24281" upstream="master"/>
- <project name="platform/packages/experimental" path="packages/experimental" revision="e24ee92653e28ddf0020ffb9e5ddc99931117674" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="bde4c9a8dfa85ca71f034c371908358bf61a74f2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="59aefa242169b7a51c2381daee58ff22fd1834ce" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/ApplicationsProvider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="3aef9aef553a126b57fa9d7c271bf82abdb8ca9f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="3fa85d57a81d2cdfd08465d3dcb5e7ad4ad1f7ca" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="8da754fcd166e11363e4d031b0c42f2abe92238d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="8d79e5e0f0673f20aff55fdb6ccb297bdc509387" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="44c11b854e615a007eda9760f9c9d0323c9c73ba" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="ef033b3587853368d947c4d849eb5d6818cc612a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="654f73a379a36e5f4cdb2fc4cdfbc06971bff212" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="133b4fb575d32b7e2e887e2d1d6a9e6877b54440" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="22a5cfb7b166ad972c73d171a078a0932587bd44" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="374df0a9f8c1b92b1bdb7572f30543188c8c7a1c" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="12907529afb603d10bc133e808728cef12e5dad6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="e72ef139782ca896dced7524abe7cfcc9ed35db1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="a9c5d50340fcef49034add6766576e4aab7d1168" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/WebView" path="packages/screensavers/WebView" revision="6e0a80f6faed6191acc8ce1b6c79eada09e9e042" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="5bd17d4644dccb6cd5e23c95490ea925082d42d3" upstream="master"/>
- <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="b296575311b20808849701f4eaec4305dd17cc27" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="dfa0e3116b3ba72b9c2f308d8d11bc6ced6ad23b" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="87a0ebe5a071130fbb5d5117806964f4e8bc1a77" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="bc7f1814b29fcbf0c86e7f135393c9449ae7f344" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="dd18156f656ec28db6dd6a79530978c8ea99c15d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="313c31a2d7ff12d4f78d11458d8b268a5fe97d9c" upstream="master"/>
- <project groups="pdk" name="platform/pdk" path="pdk" revision="708589163e790eb3a7fec09f4832a0f78999bdf3" upstream="master"/>
- <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="bc78d219b148df89a1c1d91b29cae35c1156d696" upstream="master"/>
- <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="f36d67e0b8fa645428c4ebf6f05c2974bc8337d9" upstream="master"/>
- <project clone-depth="1" name="platform/prebuilts/abi-dumps/vndk" path="prebuilts/abi-dumps/vndk" revision="83a0ec4746ab945004a9e71f2253d5fed8a4cc75" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="3a47dbd8cf86afe7f72d48902a342a7894d9570a" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="f537089a258a89539154e8f3932f4c8bd1bdde30" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="5bebe70905a43b398bdb04a678bf6d50a2c4452e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="c052e7853ea000b972d163d1774a44516b8814a6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="1050067936dffa13d6aa30a8c1479444c620ef2d" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="a6937fe75c369ea26e416d5d725a32c9c7bbac3c" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="0c7d72c96f0e9c2b7cd8d4f33875f6424ab937e6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="7985a1e57e906ce50505fe37769773983cb2eb40" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="b33aaa2ad816c217c56d9226f28b4ca497957c2f" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="dd7afac0149e22ef324a440046d7d7e5411a2a63" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="ec5aa66aaa4964c27564d0ec84dc1f18a2d72b7e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="c3b7a175640fc59711614c0ad5269a037e06fe7a" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f4002189c0a7ac2e9e2c562cb5d598daba5f3e30" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="89aa77dc369931868dce6924b7997e7e5f0fefe7" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="0a70ca16caa61b4591c844df9e3c70f53c88fbd9" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="ed4f6b503e1d7f2bc03d87b90084e12e33f8be4f" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="9ee4f51e97bc4bc8f51b06912767018be4d65853" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="d3566f4f19b660d98ff237825ed775289c102420" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="a332df8dadd78866c2a57f2c7348d499952939c2" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8e874d5830214083475ed5a8576fef24f58bae1c" upstream="master"/>
- <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="4a696dd19df2fee0ce24f5bdbd8ae0e03049f97b" upstream="master"/>
- <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="172e21a7c836e6086c6faae7b080a38c779597ac" upstream="master"/>
- <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="3a0d506bad18e41d9cbffd196c24d70d0c40d0ab" upstream="master"/>
- <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="3377874f67bcc7d200408ceb8b02169c4c3b201d" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="ba09d77a59458527e92a4ee12bfdf0d7ac4ae6e2" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="fa0835a2da3bb4ce39a2a07f7749553e99ba170c" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/libs/libedit" path="prebuilts/libs/libedit" revision="d32685dba4011664b590b94ad156bc734c2c9bb5" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="e1ca35066d5b3ef63b188a3ffe8cb058feb9b83e" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="1ecf5205db0526c3afb006cc43ddfc805b3ad18c" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="2b88f8ee10044fe4b77a35c9587759d992561af2" upstream="master"/>
- <project clone-depth="1" groups="darwin,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/darwin-x86/2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0c5958b1636c47ed7c284f859c8e805fd06a0e63" upstream="master"/>
- <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="7bd52e8c08951d11ae4437e407c62566a1c3416d" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="263e5899e841844212c8d1b8e04fc0e52eff9810" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="c2d941b862e53bf0050a7cc18670d9340d705ecf" upstream="master"/>
- <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="3aca8cce121d427bc5cba6c355bfbfcd453a9395" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="7fcb50b6f76f57eaf5fecbb6b5a0cafcfdf95500" upstream="master"/>
- <project groups="pdk" name="platform/system/bt" path="system/bt" revision="014890b74878022db7d23be47db179ba06e01856" upstream="master"/>
- <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="e312bd5044fc07e85b8b0c21b8f21a9329ce9636" upstream="master"/>
- <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="483bd8dcfd508095113cfde82e8b79ce6e29759f" upstream="master"/>
- <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="796315a7e25212d6dc3a998405e25bc877d57cc8" upstream="master"/>
- <project groups="pdk" name="platform/system/core" path="system/core" revision="3e0b59461959cfc683fff13a42829780843b3601" upstream="master"/>
- <project groups="pdk" name="platform/system/extras" path="system/extras" revision="880d4e8574fefa3978b32eaa4d7d38abb187e7b5" upstream="master"/>
- <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="3d78edca770a570a8c4f7cf2cdc40dadcd5facd0" upstream="master"/>
- <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="13e5d8a98e919e5638f681f38550eddcaf890937" upstream="master"/>
- <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="6f4fbe1af7864aafa8236ca8e65d66e6a8974b44" upstream="master"/>
- <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="fc935cd780473b8cdfeeb28aab1b13f6b6572955" upstream="master"/>
- <project name="platform/system/libfmq" path="system/libfmq" revision="e8f31ca2381c558e9b389454c788674f1c78e59d" upstream="master"/>
- <project name="platform/system/libhidl" path="system/libhidl" revision="2a2678e402e440068bf24d012e294d65c9c0c8b9" upstream="master"/>
- <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="14c6e409a4b29f77e5ed2f24e62dc9d3366fc61a" upstream="master"/>
- <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="ea5d3f72aa01de436f8e1e5bcdd7748d255285ad" upstream="master"/>
- <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="488e16a67311194f0fb9aa4a33219af170e6316b" upstream="master"/>
- <project groups="pdk" name="platform/system/media" path="system/media" revision="9c351fa5f388fc22768549ccc512a2633263d183" upstream="master"/>
- <project groups="pdk" name="platform/system/netd" path="system/netd" revision="cf929f7cd853b68931af5ad94b984feb01917a8e" upstream="master"/>
- <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="33a1c932e0fcdb335a2d34a692307d15e1336c9d" upstream="master"/>
- <project name="platform/system/nvram" path="system/nvram" revision="48087181f977c4f75c81705361f455f5ee9c7c37" upstream="master"/>
- <project groups="pdk" name="platform/system/security" path="system/security" revision="975e1aae69f9bcdb35de5b2b8f466514f5fe4ba2" upstream="master"/>
- <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="21b4a9259052c3f311923b2d79c6c2dd79217732" upstream="master"/>
- <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="7b4b9e592d6c9010be93d018b8a7b594bf2c1ccf" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/aidl" path="system/tools/aidl" revision="babca26b0faa5e41ced0b39cb135fb181a81fa1a" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="a881c08273bc1fa518d0355f05c1827bffa69a52" upstream="master"/>
- <project name="platform/system/tpm" path="system/tpm" revision="3e1217d9b8b9d0bd549f202e5f1a528374872b40" upstream="master"/>
- <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="663ff4b30b9f629a130ef6d357d462b897d4071e" upstream="master"/>
- <project groups="pdk" name="platform/system/vold" path="system/vold" revision="3f8fa0c2155a14bab73d3d58362f5511de1b3277" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="f2b98353f7db3102d6392e8f9648b22e368bf221" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="30d457ce6613d587901379844b9d0dfb37a67a7b" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="0a064803e1ebbfd5e587e9baf677d458a4e3bbd8" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="52d33ddc83fc9bc54c9952e74143807bb5bba410" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="6af0bde5881d2ab0366bf9479f151e5f3bbc32b6" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="94d3b39f884f4513b8664c5d3cb911dd145de1f2" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="a0a4488258c74bb0c61a71b3c4c4aacfd4ed210d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="4e5056e0f537fb17e40ad3567c52a245ce8cc33d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="04538ffdca38754da367d51ed825999727654654" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="3c8938ec3c75b4b6a4649a22d3478822ac2dedd7" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="b2b66733c0b5717736d96945e02ee2926583cc5b" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="843d09e2fcd06d6486515f39e2e3eb3d1788846d" upstream="master"/>
- <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="70067d87eb7b1cf6eb84a5c3d476225898177eba" upstream="master"/>
- <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="bd3466bb3119802994f2d149bab648af567335a2" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="53720799c7f266384c3d2cb032082a94f0730cae" upstream="master"/>
- <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="4c4e78c4d9b52a1a5c5ed11c39ab36d258037a2c" upstream="master"/>
- <project groups="pdk" name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="28845c9a133d54f1160d834cda49186a3683ec86" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="ae0ae1f417d3a0aea8ae0478e625ec5a69331ba0" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="520eaa2ec95619705f8574c1b7e47e4fea28b654" upstream="master"/>
- <project name="toolchain/binutils" revision="e574f15757731e482584f3077979082740ae5a9c" upstream="master"/>
-
- <repo-hooks enabled-list="pre-upload" in-project="platform/tools/repohooks"/>
-</manifest>
diff --git a/tests/2017-07-27/art.tar.gz.sha1 b/tests/2017-07-27/art.tar.gz.sha1
deleted file mode 100644
index 63d4ca7..0000000
--- a/tests/2017-07-27/art.tar.gz.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4cdd93fdbb53787835acbccac57ebb9727127840
\ No newline at end of file
diff --git a/tests/2017-10-04/aosp_master_manifest.xml b/tests/2017-10-04/aosp_master_manifest.xml
new file mode 100644
index 0000000..78ae521
--- /dev/null
+++ b/tests/2017-10-04/aosp_master_manifest.xml
@@ -0,0 +1,612 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest>
+ <remote fetch=".." name="aosp" review="https://android-review.googlesource.com/"/>
+
+ <default remote="aosp" revision="master" sync-j="4"/>
+
+ <project groups="device,fugu,broadcom_pdk" name="device/asus/fugu" revision="3c9c11746af0f6d8f3abf30d3f32c9b0f3a342fe" upstream="master"/>
+ <project clone-depth="1" groups="device,fugu,broadcom_pdk" name="device/asus/fugu-kernel" revision="6c50d39cf6e1dabdfc5ba6ce22973b96650ae0b5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="device/common" revision="1401af3a0c8e9cf74f70bbdcae9299be30866563" upstream="master"/>
+ <project groups="pdk" name="device/generic/arm64" revision="392eec3cb4c64721cd5b76fa36535954b5d45309" upstream="master"/>
+ <project groups="pdk" name="device/generic/armv7-a-neon" revision="9e96e041bf3c9d5b57b11f921c6339e076478a7a" upstream="master"/>
+ <project groups="pdk" name="device/generic/car" revision="c4d08a9e781e9bc69b861428765e87f6cbb696ac" upstream="master"/>
+ <project groups="pdk" name="device/generic/common" revision="441c018a14a4b29d338bd62e01a0c014571ca241" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish" revision="ddbb24fd9ccf9978264a656cf92c193597b8df6e" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish-opengl" revision="9b2d1c3cee91b7ce39e22c47b58843037ebb78fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="1aba9d054f2e5e906000fe69eff8d168e99e74fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="258706fc0ddcf2c9be48967f4766ec90efb736a5" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-mips" revision="544e69736cff911c286a5d1d300dac228e23a73f" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-mips64" revision="b1c36d0847fe6366527efd38fdb29d757ea887ee" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-x86" revision="65d59e2be2cfd713513a05d80a0f75794ab60579" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="b62205d75073783e171fbcd5f675e25e57833479" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips" revision="bf27f9bcb56e483310507f78f0a4b93d3f5499c5" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips64" revision="34300f7753b7a9fa2f7ba16bdc1f1fb8625dd4e4" upstream="master"/>
+ <project name="device/generic/qemu" revision="97ef4f962aec451b00bfe562c1cb67471c4563d9" upstream="master"/>
+ <project groups="device,pdk" name="device/generic/uml" revision="f71ea7d194988fd6a64e071918f6e00e8db9ff0c" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86" revision="645e6e711b32f94ecbd9b1cc77a51559dfce5ebe" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="master"/>
+ <project groups="device" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
+ <project groups="device" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
+ <project groups="device,fugu,broadcom_pdk,generic_fs" name="device/google/atv" revision="a14f6c4a89589a7cc6919702f9f3fd3140cc273b" upstream="master"/>
+ <project groups="device" name="device/google/contexthub" revision="b6f95b69331caa8356ba3e1e9d8e77cb0d43c17b" upstream="master"/>
+ <project groups="device,dragon" name="device/google/dragon" revision="8a0490365df0ab52123e7e2ff99426b39c1df151" upstream="master"/>
+ <project clone-depth="1" groups="device,dragon" name="device/google/dragon-kernel" revision="01a873b040f63d8d030b2ec34338bc86aadd15b2" upstream="master"/>
+ <project groups="device,marlin" name="device/google/marlin" revision="44063c647bdd327ec5213f9c86b1cd28e198c1dc" upstream="master"/>
+ <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="8d4b71409708a68a7b1aa9614fecaf17a3e8749f" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="device/google/vrservices" revision="957cfc2a4e2244a83ddfaf6ba2da74aee24f0767" upstream="master"/>
+ <project groups="device,angler,broadcom_pdk" name="device/huawei/angler" revision="8c68626c01750f93ac8412de79dcf1e396e9af5c" upstream="master"/>
+ <project clone-depth="1" groups="device,angler,broadcom_pdk" name="device/huawei/angler-kernel" revision="5263f25b197ee09005570da6363b766281969c22" upstream="master"/>
+ <project groups="device,bullhead" name="device/lge/bullhead" revision="f91eab2f09279fb6159686b566563b9a4a8899f1" upstream="master"/>
+ <project clone-depth="1" groups="device,bullhead" name="device/lge/bullhead-kernel" revision="1d824f51ffa8950d7695829d849da183233d71e3" upstream="master"/>
+ <project name="device/linaro/bootloader/OpenPlatformPkg" revision="ca8a8eebc29ebbcc65edc8f3b4533867cbed9205" upstream="master"/>
+ <project name="device/linaro/bootloader/arm-trusted-firmware" revision="179eae6bcbfe21200b3dec42e0b56e5e6faf3272" upstream="master"/>
+ <project name="device/linaro/bootloader/edk2" revision="99d893a486546aa62d4088a16e86617ed3c74897" upstream="master"/>
+ <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="b266cd2109ae0bae7ab6aead0da8dcc74ce82b08" upstream="master"/>
+ <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="d194dc591ad93e25234e57acec4fe0dc6b0117a8" upstream="master"/>
+ <project groups="pdk" name="device/sample" revision="12cb28b2ab78a03feec243ed1f7d528b1aa6c753" upstream="master"/>
+ <project groups="vts,pdk" name="kernel/configs" revision="649be155f9e3dde06b379710074eeb9b80960afe" upstream="master"/>
+ <project name="kernel/tests" revision="3e8e23f0133d3b6071cb5b7f224a9361837e6f61" upstream="master"/>
+ <project groups="pdk" name="platform/art" path="art" revision="bfcd0d3da60d38bd072d898fa2db4d30307d540d" upstream="master"/>
+ <project groups="pdk" name="platform/bionic" path="bionic" revision="3e8584d4a7d617289e8a954711ba895415d781c4" upstream="master"/>
+ <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="2cedab7af95e1065cce1633de1b3acd5a40928f7" upstream="master"/>
+ <project groups="pdk" name="platform/build" path="build/make" revision="b33250278bd79f62d251c1339447f21d08fd7e81" upstream="master">
+ <copyfile dest="Makefile" src="core/root.mk"/>
+ <linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
+ <linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
+ <linkfile dest="build/core" src="core"/>
+ <linkfile dest="build/envsetup.sh" src="envsetup.sh"/>
+ <linkfile dest="build/target" src="target"/>
+ <linkfile dest="build/tools" src="tools"/>
+ </project>
+ <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="ac45bd1ea824a274d9347f3d01671d959065ac15" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="d120bfe21325e56229c01e07d0ac5aef7c94c778" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="c144b8601430e5de53d832dff0c4e2bbf1d2ff4c" upstream="master">
+ <linkfile dest="Android.bp" src="root.bp"/>
+ <linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
+ </project>
+ <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="706f8a00a26d09202f025023b07cdd719c285287" upstream="master"/>
+ <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="4a8c6eb8af9ec00a810c4df8f14095e02ad9f1b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="bc682afc86bfd43d92a9d01c6a26a7aecf9053bd" upstream="master"/>
+ <project name="platform/developers/build" path="developers/build" revision="dac7653ebb52f2de72352a3ba8e91b7d70837ee5" upstream="master"/>
+ <project name="platform/developers/demos" path="developers/demos" revision="baed7559c8272ae802aa581148851a7f81307d47" upstream="master"/>
+ <project name="platform/developers/samples/android" path="developers/samples/android" revision="0f2a748e3111611b65421dc42840def7ae2797de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="0e82eea2d4829d277566ae42182121d631f8d429" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="4ede9c52630a6da877e7ca9c1c3801a34ddb7179" upstream="master"/>
+ <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="5691a8ecaba367d04b2c2a13ec1e9e05f4f17b7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="c1b94b10a13f22e951c429e056b151d340238e27" upstream="master"/>
+ <project groups="pdk" name="platform/external/aac" path="external/aac" revision="32b8bd3dc952952a097fbaa87a626d15445f15c7" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="5453ac991183dc8dc856e8beced059edab94acaf" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="d972c9eaf4e7ccd0f79e779fe4621538cc9c9e90" upstream="master"/>
+ <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e477c862031613ca7bd05971bce05405638fb248" upstream="master"/>
+ <project groups="pdk" name="platform/external/androidplot" path="external/androidplot" revision="c66727ebf001607cee14521c35bc852b55fd9845" upstream="master"/>
+ <project groups="pdk" name="platform/external/ant-glob" path="external/ant-glob" revision="a73228afa9540b9c5518d360c5ae630bb634f975" upstream="master"/>
+ <project groups="pdk" name="platform/external/antlr" path="external/antlr" revision="dd5fa6d48b827c5d98b625adbc209f4a05567534" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-commons-math" path="external/apache-commons-math" revision="18f62fca59d387e3c1ccd8f80087d9c9af40bcc8" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="eb488e7ce61f67cfb0cec2b2f99e2769ba640199" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="6d301174f0502912ee7df6db4bc5c1f5cf4ee230" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-xml" path="external/apache-xml" revision="31d7642eb8f37a9166db7f1c9e313ab651bdb8ba" upstream="master"/>
+ <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="a764fc9e8810be26a51add8a79502e411e3ee1ee" upstream="master"/>
+ <project groups="vendor" name="platform/external/arm-neon-tests" path="external/arm-neon-tests" revision="104e2a662ec8443e9a7603b22efbb3b86c1e7094" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="acea5c1e9dfda8ab69a093fa82c61ef12f7688b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/avb" path="external/avb" revision="34ec123c606a0beed5cb29b49d748594a3242eb1" upstream="master"/>
+ <project groups="pdk" name="platform/external/bison" path="external/bison" revision="7467d52af437dd3dfea237a6865ab84bf258dee0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
+ <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="c9df3a1ff1d0cddebf2fc32ad8a03a429c0e834c" upstream="master"/>
+ <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="a7f9095ead5e2af9612c8cae35f6e11a2b8e1d77" upstream="master"/>
+ <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="018ee547112ca1327af9fbaa6c21b5e6ac063357" upstream="master"/>
+ <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="bfef6ef1022fe24a80387d34cebf16453451f1cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="a0df5d74ad301ea4dd1ec4214c32d9fd9ea52de8" upstream="master"/>
+ <project name="platform/external/c-ares" path="external/c-ares" revision="9f1b2827cb88c58a80c470a4bddb2485677ec57f" upstream="master"/>
+ <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="fc57a58a3420e4f3e2ab86233ef932efa266ec1e" upstream="master"/>
+ <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="08f39d72ed0f0c17308637a60018207829fed8e0" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="8c47eebd81c996f17198edb2fa504c04d48d567e" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="88bb68148bd0510a1564d673421f051011b4240c" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="955f673b041b96ffc383190797c3613ac8dba844" upstream="master"/>
+ <project groups="pdk" name="platform/external/clang" path="external/clang" revision="bbe7bb92eea6c3062b216be8d1d3fac14a62b2fa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
+ <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="1a323e5268f1a0c647db8e1a96c486f9aeecc1dd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="222a789123e327fb769ac10a22d5982648fc05f8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/crcalc" path="external/crcalc" revision="533bb2355d259f67743727a22a1ab974d3ca4524" upstream="master"/>
+ <project name="platform/external/cros/system_api" path="external/cros/system_api" revision="474f439bf34e678bf3b78e2362bc85db9174b882" upstream="master"/>
+ <project groups="pdk" name="platform/external/curl" path="external/curl" revision="98b0d14797cc42e32d18b289fbdc47dda1eaaeff" upstream="master"/>
+ <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="30909f76ef2849d6e048344b5f57588139acb181" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="3a1de9094d072324ef2c16a21c1893b881c2a8e7" upstream="master"/>
+ <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="14905bc6836b805fd3316e11368d7aad2907ecbb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/dexmaker" path="external/dexmaker" revision="a494e0736c1e97daf2e9d1df982efdb3bb8adca0" upstream="master"/>
+ <project name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="54d1fc2d574d21f788abb64b10c9a6352eba0b65" upstream="master"/>
+ <project groups="pdk" name="platform/external/dlmalloc" path="external/dlmalloc" revision="6661f3ca66b55d8f5a57b96fec97efaf8f3897a5" upstream="master"/>
+ <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="1ab71199fe8010a37492d46e324f171ce577e54d" upstream="master"/>
+ <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="d37f567618c3f5266d82b971a505f5a214a03f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="e15c52f95e09391629d4046a1ceb296ae29710cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/donuts" path="external/donuts" revision="005389fb31a67841b5de42f0d25fbfab843e208c" upstream="master"/>
+ <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="f2936dc85a5f92d4dcdfa7b46066c9cd64086720" upstream="master"/>
+ <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="4b54b818477fb0650dc563cf9196578816c34597" upstream="master"/>
+ <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="5ef7dc3be02aedf00fc3cc3f59379d598e5c8817" upstream="master"/>
+ <project groups="pdk" name="platform/external/drrickorang" path="external/drrickorang" revision="8ea137d1086e621188f70ffac34a6ba8924af2c6" upstream="master"/>
+ <project name="platform/external/dtc" path="external/dtc" revision="bea7af187e5d183b2c26ecc3366b1162c9f43060" upstream="master"/>
+ <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="944c4ea526024825eb874aa9a39cb11a6d4fd84b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-basebuilder" path="external/eclipse-basebuilder" revision="076f46888ed346775b8efc564d7694063ef5eea7" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
+ <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="a29a294104713629da49e50e1858a47b19ae97fb" upstream="master"/>
+ <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="86dd133095bb28f987e07319f22fa80fadf7281e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
+ <project groups="pdk" name="platform/external/error_prone" path="external/error_prone" revision="416b18dffadb4298024e93d2ede43d409f06ab2d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/expat" path="external/expat" revision="1071d2dbae1310e7ffcf1f6dbaf096753e0de934" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
+ <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="27a6ad377c141f95ac208a0302a1a50cabeeff3c" upstream="master"/>
+ <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="3a719a81a9d31e1cadf5d68ac94f5bd9f01e41c3" upstream="master"/>
+ <project groups="pdk" name="platform/external/fec" path="external/fec" revision="040b198ed24f5b67eaa6415459c05d68453b19f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fio" path="external/fio" revision="e3c205cb93b9cc720589913df3b9150b1fb6e9fe" upstream="master"/>
+ <project groups="pdk" name="platform/external/flac" path="external/flac" revision="a44d56a9c4ad0093a1dca3e3be7ddb1905da2648" upstream="master"/>
+ <project groups="pdk" name="platform/external/flatbuffers" path="external/flatbuffers" revision="83d6225e9b642ea069023e45a943d3e7f916fb62" upstream="master"/>
+ <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="5dd1ef030977a657056a0a26a691f97d7878ea80" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
+ <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="44d6b9bdc6cb90d7b0fa275dcf2be8631312ca9c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="4103a4ab7d45b439b4f7297a2129a1ca45ec91dd" upstream="master"/>
+ <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="bcfadfee0f9d74b3ba93771948b32440a63e57d2" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="db6d1840bcd6c13cc41456835127d6d7d1b0694c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
+ <project groups="pdk" name="platform/external/golang-protobuf" path="external/golang-protobuf" revision="c42093045dafe0406269b36c2e35b3acd7da63ae" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="1fa9c1ac24825098c622aec489155faf16a7a995" upstream="master"/>
+ <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="4125ccd15f21dbae3d521d0298ce90f1fbc29bdb" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="0062a10458d4c357f3082d66bcb129d11913aaae" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/coming-soon" path="external/google-fonts/coming-soon" revision="2c5cb418c690815545bbb0316eae5fd33b9fc859" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/cutive-mono" path="external/google-fonts/cutive-mono" revision="bce2136662854076023066602526ba299e6556b2" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/dancing-script" path="external/google-fonts/dancing-script" revision="7b6623bd54cee3e48ae8a4f477f616366643cc78" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="c731915e80d9e2ccb755b97e7fdd280bbea07f70" upstream="master"/>
+ <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="dd43b9998e9a44a579a7aba6c1309407d1a5ed95" upstream="master"/>
+ <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="8c834de12a855fee178f037a36705e72fe981c67" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/guava" path="external/guava" revision="5d824723beff81b246b327386fdb458decfd2af5" upstream="master"/>
+ <project groups="pdk" name="platform/external/guice" path="external/guice" revision="2f4c6dfce39d38e64a6e4993a808270e16d7dc1b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hamcrest" path="external/hamcrest" revision="2c2a845e1e8fdda704e4f2ccaa335d69d043ebf3" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="ea6cd46047ad211495e291edf75c4a9ee585639b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="ff853262e0f613e0ba2f677ae8b1f155544bb2ed" upstream="master"/>
+ <project groups="pdk" name="platform/external/icu" path="external/icu" revision="a6a68cfddd6e6af7bc4c6242ae596d7cb0f16936" upstream="master"/>
+ <project groups="pdk" name="platform/external/ims" path="external/ims" revision="12c79bb691c753c069facd0097293776bd7b56cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="842c7f0c1a62af00b79750de5b207c2782cbcb6a" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="16477a409310e8daa3ec5c8ecaa7a2f2d471fb93" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iptables" path="external/iptables" revision="8ae1dffe73609570ce73ab5430111a3d47400fb8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iputils" path="external/iputils" revision="2857b8009e1dfc751ef0659c9ba7358a89f83c34" upstream="master"/>
+ <project name="platform/external/iw" path="external/iw" revision="63d8bad2a5a8a9b443595762233692c5f6a6d36b" upstream="master"/>
+ <project name="platform/external/jacoco" path="external/jacoco" revision="9ef5ef62baa610d324b392e06bac956b383e870b" upstream="master"/>
+ <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="2acaac5c909fffeac65f3de54134828d7ec2140f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javasqlite" path="external/javasqlite" revision="16ac73c020e99ce6ca0899915cbfb35858ce6b16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="501341b4efff9c378ac4003899dd064586231550" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jdiff" path="external/jdiff" revision="915f756d47a2d2e5b1b5249ef1a05ae83d4c0ff1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="033b6fda4a854849db30955fd084158f6ce16c38" upstream="master"/>
+ <project groups="tradefed,pdk-fs" name="platform/external/jline" path="external/jline" revision="74812032f8d8eddbef387f18c96de9e5c38b8fdb" upstream="master"/>
+ <project groups="pdk" name="platform/external/jmdns" path="external/jmdns" revision="0c71647deb7f7835c473fd3dfb45943083e47794" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsilver" path="external/jsilver" revision="b9b84920ba47ddf7f15baa01c56b28e3d3f951ea" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="228d04d8c2b1c918c702a8132eaf2048aa24ff5f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jsoncpp" path="external/jsoncpp" revision="2aed88e521abb2b4e13966f73df8e753ac96f112" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/jsr305" path="external/jsr305" revision="f162f4b5d952208e4b6e0a7b2e1bf01058e429b4" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="d15be3f228885ce6ed2098ff2dcbf6c1085d83ba" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/junit" path="external/junit" revision="18fb5125096c703c1b2b83b79076a68dc6f1d743" upstream="master"/>
+ <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="3422818d91dfc550fe93355f6345c489d962c8f8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/kernel-headers" path="external/kernel-headers" revision="8357d9a3fa7a6ae0f7eda1bcd3ed69e46d2ae945" upstream="master"/>
+ <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="4082ee0d1ad5ce92c5ea6fdc5ca08e89cdd9801d" upstream="master"/>
+ <project groups="pdk" name="platform/external/kotlinc" path="external/kotlinc" revision="a69f6332d6fb99610d163b103338ca5c2e547805" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ksoap2" path="external/ksoap2" revision="9fdc4a6bb2b882bd1d6c822d2ad0c66585d66ba9" upstream="master"/>
+ <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="78002919cad58915616b635be1057a2324fbfd63" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="2c4cc2cc8dcd77f5f72db5c5c36db808c781dfca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="548b90b26b43f5766297e4395da5bc9819a096ab" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="d05a95e0607023d576ee17f3e7a2952174e33d34" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
+ <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="46f0186dae6932d059428e4919a154dd5722d4b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e2607d54fdb00903023e44a65220357ac66ffa30" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="8eacdf6145fd6b8d32ab431f867b08cf3e17e346" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="8204da4a163dd16bbbf051d9103d89b4ecc0c6d7" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="bb0e188762f569942766f8f25c9d38448c48cf9b" upstream="master"/>
+ <project name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="6e3b2d3dcc906a64d84ec2567de89b204d4a0c7e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="486358728120226bf5b48cc1ec7e14744bdaff33" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
+ <project groups="pdk" name="platform/external/libese" path="external/libese" revision="ed8aa2854c115ab49c0412135fe53326c1c2a621" upstream="master"/>
+ <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="707de56c3cbb0fcd33ec955c52a0fb1fdfacdab3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libexif" path="external/libexif" revision="60e63383329bdf3018696af6c9a1914e4ff0a920" upstream="master"/>
+ <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="95bc71811a7900d19723efa2dfc65eb7fc49c6d3" upstream="master"/>
+ <project groups="pdk,pdk-fs" name="platform/external/libhevc" path="external/libhevc" revision="36ff7b64f0c45d49ebe4f02828198c8ce4c1fcca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="85c8e7e73d9944b6a9603d03cc9a304eb09b4f68" upstream="master"/>
+ <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="14e7308c1b1a04f6aa38a6fde0d8c3331a2ad050" upstream="master"/>
+ <project groups="pdk" name="platform/external/liblzf" path="external/liblzf" revision="a88b9629447deabe8697d2f8fd4cc70aa6e1b563" upstream="master"/>
+ <project name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
+ <project name="platform/external/libmojo" path="external/libmojo" revision="d84255cc8594be661090ce2535f17a44f80f9916" upstream="master"/>
+ <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="46fd80678f5cd545e30daab588e88bc91a43ad19" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
+ <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="9e09f14b95885b73c72533a32b4ec86f84a36428" upstream="master"/>
+ <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="1c3e0db7d701d8bed90e9a65c0d581552912f8ea" upstream="master"/>
+ <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="ed2f4fe16617ec81b4cd906e681051ff0ae9d3df" upstream="master"/>
+ <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="5bab317e01c15cdccde1ac550aac701f436518a6" upstream="master"/>
+ <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="aecd1e10da5835a2714ba212283d04549b5543c2" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/libpcap" path="external/libpcap" revision="7b7f0b469ad512b9b5c759344eb0663e7c2eb191" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libphonenumber" path="external/libphonenumber" revision="6b5ff49a91b66b137b210e4869e980d083683f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="772123003e7fb8268251b418f559f71d8d4c202c" upstream="master"/>
+ <project groups="pdk" name="platform/external/libtextclassifier" path="external/libtextclassifier" revision="5e5fa7f6ed116972ebccc123c2e49427a882f4c5" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="dfc348fb2bf782fa558e4aa67298305743a63386" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="328ecd4d5f69480e18eb872759a41b7ec7217283" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb" path="external/libusb" revision="a439e228525c22a7a38ad26abb3e6d841612f7ac" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvncserver" path="external/libvncserver" revision="ed7c226e0c0c22704da70c2cfe85d8a0043a3ca0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
+ <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="811c563cd84877f5cab826756d977be33789c96e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvterm" path="external/libvterm" revision="a70e1c33cb5e1f298de2affa000950123656c4f6" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="6512e6efc03fa3bc9a1d708ae042fc33d0cab85c" upstream="master"/>
+ <project groups="libyuv,pdk-cw-fs,pdk-fs" name="platform/external/libyuv" path="external/libyuv" revision="018f68e1c2c6a2a7e1d8bdd33c4df444d4a8e552" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="739c390a918655fcfe689e8c1f0737a9f117038d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/littlemock" path="external/littlemock" revision="4dd43c74801149ded3e18eaba7d43ff6dfa192c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
+ <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="dc848d20803a93ae04e836185fc82b3e38ea0c3b" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/ltp" path="external/ltp" revision="36ef68ae9f9386cb99540726a8d73aaeb64501da" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/lz4" path="external/lz4" revision="d563c459a3290de6e72a05769bb34b6cc87e67a3" upstream="master"/>
+ <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="45d1ce03842801b212647d177d9a6c21726b80af" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
+ <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="37e2a6912ab36679883d241375cdd774372f6ebb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="2ab56bb4804d4afc99ba6845978c8720068a5aa2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/messageformat" path="external/messageformat" revision="7941896999a8a623683b888fd39095f32a7f49b6" upstream="master"/>
+ <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="2acbec5a9a8b8c3c9d0eee268af7121e31d0cb63" upstream="master"/>
+ <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="5677920e65b7b1504aa355bece165f1d67c05a1e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mmc-utils" path="external/mmc-utils" revision="f105db5bd1934f0c3e5f74bbc9a5aaeac7a6bf2b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/mockftpserver" path="external/mockftpserver" revision="a98e55fca4d6aa55549f8c2c80034f2d04118cf6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockito" path="external/mockito" revision="ddc7186be0a984376dccb13ab3850787abe8e821" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockwebserver" path="external/mockwebserver" revision="2440623105409d48ec0a3717bb6f3da711a0f15d" upstream="master"/>
+ <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="3df5466891f819567a709d03f08ac340bd678c48" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mtpd" path="external/mtpd" revision="cf7afdb28ea47ebe8a6b298a03cf89ba06ca333d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
+ <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="dd38963ae7d67e64366ad8345a6ce072854e889d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/neven" path="external/neven" revision="f03656c6632b57b4c52705847a7bcc96437e2ac9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nfacct" path="external/nfacct" revision="5df745ccb4ef5356a786bf63e075efd0ccaad333" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-pkits" path="external/nist-pkits" revision="fe530ae2c3d88eb5326151387028507b4949d751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
+ <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="c1172c51af9734ce03c0495c3a0a658590f51487" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/objenesis" path="external/objenesis" revision="fa27358374a5375586ac703a514860563323d94d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/okhttp" path="external/okhttp" revision="9ac02268c482b7920263e6f04ccc67d412f66b84" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="507669d9a3c8adb2b415488783efe10bf9a6b3a3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs" name="platform/external/parameter-framework" path="external/parameter-framework" revision="3b04336f88873ec4b63717035c7a30d76da89a7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="2ea2c73314f3518103195cf9250893f9e9b7dc4d" upstream="master"/>
+ <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e56ff935bcb3a395a841c069ef98c0077376d8b3" upstream="master"/>
+ <project groups="pdk" name="platform/external/perfetto" path="external/perfetto" revision="e0ccef982290b8353dcb9199a48a90b67bc51d8c" upstream="master"/>
+ <project groups="pdk" name="platform/external/piex" path="external/piex" revision="1ee57811ecdc88d3ed7b36f0c2b72dfcc86c8fd6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ppp" path="external/ppp" revision="90da8c8f15db2c82aece6e4085aaf9c116d481f2" upstream="master"/>
+ <project groups="pdk" name="platform/external/proguard" path="external/proguard" revision="af893cdc1242e4cfbeeb10e2323f9a689a825177" upstream="master"/>
+ <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="78b40ce73114edca9b97f4b8eb9cda85ffe2d24d" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="e41d4ced092815949ff47e5fcc80c367707426db" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="600f716d51b9501373f63e6081917289830754f2" upstream="master"/>
+ <project groups="pdk" name="platform/external/r8" path="external/r8" revision="223150d4ddd720205b644613541eefea2158a05e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/replicaisland" path="external/replicaisland" revision="7d9b8c6fd062bc37ee2265010eed37786b76a324" upstream="master"/>
+ <project name="platform/external/rmi4utils" path="external/rmi4utils" revision="d45cae258a3d831cd035ccecb3daa763d26346df" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="c35e9c5a25433d1e4beb65993bf8a326916fb2cb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="0fcc0daf8155d1f44eea124faa7309b01c4fbaaf" upstream="master"/>
+ <project name="platform/external/rootdev" path="external/rootdev" revision="6fab99202fdae8c540312a9d62be21246176d061" upstream="master"/>
+ <project groups="pdk" name="platform/external/safe-iop" path="external/safe-iop" revision="cd76f998688d145235de78ecd5b340d0eac9239d" upstream="master"/>
+ <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="9737bb84c923faa0b3dfe7cdece17f1b84d42784" upstream="master"/>
+ <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="c5c3309739e1178676139c0751f8ebdc8bcfca26" upstream="master"/>
+ <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="4a89b6358fa43dc1ec61d5788896c15be79d8abc" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="313d3399e181bb1eb213cde006896c5ed253045c" upstream="master"/>
+ <project groups="pdk" name="platform/external/shaderc/spirv-headers" path="external/shaderc/spirv-headers" revision="b252c470366118af0db2b4395217bedffb4c2e01" upstream="master"/>
+ <project groups="pdk" name="platform/external/shflags" path="external/shflags" revision="c4876e01829b8cf110ee33267bb1bad1f8ebb51d" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="d9ead8a8b93aac3131f453526865beaff2251ac3" upstream="master"/>
+ <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="506079aa4445d378d1b8699c337436fc0c6570fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/slf4j" path="external/slf4j" revision="63b140791fbb0bceabc496bdd29e108d9597b044" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/smali" path="external/smali" revision="a0f3b5890f2775f40456cf9514124285607acd59" upstream="master"/>
+ <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="462c5b2ece22a176d8f7ce81e7321a877e891815" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="a2f81e8e1f8c67a888b0e56dfc2f07e7e2030575" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="4c1426c96fd8848540aa903069b04afd29364ca0" upstream="master"/>
+ <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a5c452a7a5c5fd5648926eeb6d09085d428e6c77" upstream="master"/>
+ <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="cddc2024e95c5601bffb7878ed352b56ccd55747" upstream="master"/>
+ <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="7ecbb7ccdd9049fc30874fc89fa6813dfed0b365" upstream="master"/>
+ <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="096dd9a722334f14a48b3888390c4d1c6d3ca1a6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/strace" path="external/strace" revision="0d1c7e2b48b1fc2437f02ae25451dc2550e3ab3f" upstream="master"/>
+ <project groups="pdk" name="platform/external/stressapptest" path="external/stressapptest" revision="ea469443e9c2cd1fda87188df2b1ffe0e30656b2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/svox" path="external/svox" revision="1416c244af01c9b4b1952bae1b84c6a347a68b2f" upstream="master"/>
+ <project groups="pdk" name="platform/external/swiftshader" path="external/swiftshader" revision="0781219b0b2e38ab4ee4dfe24b038052cefcd61e" upstream="master"/>
+ <project groups="pdk" name="platform/external/syslinux" path="external/syslinux" revision="76d05dc695b06c4e987bb8078f78032441e1430c" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tcpdump" path="external/tcpdump" revision="5c80f87b56474c42c598880611a29ae013bef07a" upstream="master"/>
+ <project groups="pdk" name="platform/external/testng" path="external/testng" revision="2d09ec828c313edd6f9f5021c9b166854d742521" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="72ec97a21e4dc50c1e247c7bfeb285475fb90036" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="846573ce25e334e2709b3b4d7c5ab39d0a2b3bec" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="bd3c8f83c2149b809adb54dcbfd430e49a008bed" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="2b6bc2052f4a70363ad8660786b6c1077671cd9b" upstream="master"/>
+ <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="18caef1edd870ff3850fe2c417bbcec00c2ba7e0" upstream="master"/>
+ <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="89bb822f3e268237e8f31eb7276f72f58d616f70" upstream="master"/>
+ <project name="platform/external/tpm2" path="external/tpm2" revision="0cd05a180254e631b783b3100beecd90bb93fea9" upstream="master"/>
+ <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="38127ca33ab9436168c8595ee02233b1dc694a71" upstream="master"/>
+ <project groups="pdk" name="platform/external/turbine" path="external/turbine" revision="5ce188f8133ddf5bb8b598857b287255cffd8f6e" upstream="master"/>
+ <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="aa5100a5dfae7ac21df1ac13749faa55cf9f48df" upstream="master"/>
+ <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="efe8193526dea3b430aab4cf6d9a6c3d280ea5d3" upstream="master"/>
+ <project groups="pdk" name="platform/external/v8" path="external/v8" revision="37a3083841acc8d69e78889991dd4e6092f77445" upstream="master"/>
+ <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="523778cf4342740cca740f6756a204b61bf268b1" upstream="master"/>
+ <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="936bcaa501354e5ea008aa3088fd3852b49e418f" upstream="master"/>
+ <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="be06b8069e728a56f4f801e4748569a5de6cea06" upstream="master"/>
+ <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="737bce336c208129af1947ab22bdd964bd7ebb90" upstream="master"/>
+ <project groups="pdk" name="platform/external/volley" path="external/volley" revision="2021ca6a6c3fa80646220cb97746f0b1cd3ae103" upstream="master"/>
+ <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="727ecf10b5c219bf14c82bd1e58d856861f0cb86" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="75f26557017b2859b054802100a334552d3497dc" upstream="master"/>
+ <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="60c71f62eacd925c491863be665dfea23331a6f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="f7bcce468f1c1d8b2ba61744c305b29f46ce34e9" upstream="master"/>
+ <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="46d28ac44a242d84d610a294a640266d3b0e033b" upstream="master"/>
+ <project groups="pdk" name="platform/external/x264" path="external/x264" revision="7bf0b975cdfd5692a4598ab09e1258abe5ea5fff" upstream="master"/>
+ <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="c79d4eae757a81270915c2a7cf01c81b8d42785e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
+ <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="eb4f490242a36248365747f532c12b6621009210" upstream="master"/>
+ <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="3ff546926898d7d12b0b3915e735d1b9306e2076" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zopfli" path="external/zopfli" revision="f1db9c86a449024aadb8664e648227502018ac0c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="16f2c1559c5722a6cd69fef3c17dc5756ba73fe6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="a47e513464a473b135236df41a88acbf1ce460e4" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="2f3380574eaf140c22603d061d5576e8a874b33e" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="f14c19b75cb83750d70b87b3f766551d228931cb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="b20cc6ffbc544ca65984f332239bf3eda03142d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="0bb88fe21d26e675ceaaf455b46e74bbef5f6e03" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="77dfa2a9b4c5acafa45d7f09bd95dc44da54fc4d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="61ac1cf55fbaef1f72cf38de6fd135597e8f2f16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="26886917cc4b1e7b5daa1de182adaeb56ceb4a14" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="00cee902ec6ac3d80f3dab80097dbf13e0a475d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="afb74c2dfc474e50b2a0d3e7fb0ccba747681953" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="625d6a8cd8e093f85aea394865c970997ca33767" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/bitmap" path="frameworks/opt/bitmap" revision="a0d4e3108663202564a6833b76770075b8e5b767" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="9de9c5d49aaed7083ae886df6c61750529e51751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="3f01563afad6b3d2f0546a6260ef958a8173deb6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="27b256c8555b93cc69ca962051a8fe12b769efdc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="578f24e997333479fe5ff697d65e994033a62679" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="433cb3227c83234b2c58f3a8cf320bb441163daf" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="92eede13edbf22b501edb9aeb92366f91eab9781" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/inputconnectioncommon" path="frameworks/opt/inputconnectioncommon" revision="3baece9b20fa480da46d860acd7320fd9eee3386" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/inputmethodcommon" path="frameworks/opt/inputmethodcommon" revision="990fcb1a6dbb5d1204cc8ec86e4bc3f691f4aeeb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="230c0aae03841b1147e75bbd68dcc4feacded6f6" upstream="master"/>
+ <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="236b6f319ec913b241591f69d45684e8173b6a5e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="07e4fc6758c6c8053dafcbd1bbc03b163647081d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="e436be523fdfaca40084c68d729f74e97047a747" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="ca71bde33a57b9c0384fd185aabe41653806666f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="eaabb4f5914ace1a775675acc4f6d73a3ac5f9a2" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="0e454d9c78888ca761caa7069f5791b29db78afb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="34864043247588c0a1cceabf127fcf009ee74a9f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="8ed59aea836a09915c3d8cbf639627ad4f8120ac" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="61019c7e42067347dfaaf42f9475af5d1413dcfd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="cfa630e5921ae7bc64114b07047e0822ef9ca0fe" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="f205dee72d0bacf11b373c1bdaa4dcb049f9bdea" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="29862d783a985bc0c46de45253010b8ce4e0ea7d" upstream="master"/>
+ <project name="platform/hardware/akm" path="hardware/akm" revision="dabf66d32d1b1492e668f595a84b5221ac67e687" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="50b90f45144aacb1f67c9c18993be9aba82bc747" upstream="master"/>
+ <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="76e992b379e7d7fddbb7ea17c29b4227234f50c5" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="063c56133a805ce2e6ee65c35c30b76cfd25d997" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="0e60b77af3fa70393ee9fa0e80811d1b39c5f6fc" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="550aee8200015a67e32a5eb9d8d1f438f2028331" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="bfc9bda74643eedd4414e996d2a089a36d9acb24" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="2901b4bfb210c1c644e44f214fe7a3b825608da7" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="8cae226f534a504f385084d1b04f4af466a16990" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="34bb282eb4b4cf0bdb9cfdeb85d59f86e220e85f" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="8712cbc7851511b4aa61d1544078c8a9521578b1" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="8309367a3ad4446a1e2f07779955bc043ade8deb" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="ad2a78606b8c3fc85667f26cc46d5f4291badd55" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="333777baeae5d75efc1afa6719302ac5f93723dd" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="35ffe308d254bbc6213929935439510c3bd252fa" upstream="master"/>
+ <project groups="intel_sensors" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="31fba8cd408244be40c806f0e1d25e552e3890fa" upstream="master"/>
+ <project groups="invensense" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="ce1ed062440baa9037775c63f333c319fd7d67f4" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="53401d7c35cb7cce27d9f7f81c673f8be78dc56c" upstream="master"/>
+ <project groups="marvell_bt" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
+ <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="545beebc5add1dfd95dd9f6ca1539cd38920692c" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="483ce31f1ef6f45447445825abb958984c306f45" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="d7d7b9e56781fd49566e0b5e4097a6d75c52cbf5" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="5b5af67d19baf862f5a8d6a7226feb630ec2f81a" upstream="master"/>
+ <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="0a0cfb1377fde5a0bc5be567f27e3c3959e96417" upstream="master"/>
+ <project groups="qcom,qcom_gps,pdk-fs" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="18f5098237a20814c5c9943c4e96bfe1eb3526ea" upstream="master"/>
+ <project groups="qcom,qcom_keymaster" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="4428c1f0c0a9559870f976093bf7ed0ec8b4d0c1" upstream="master"/>
+ <project groups="qcom,pdk-fs" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="ad8d9a435b4fc96ce022709d47d9275c6db6ab4c" upstream="master"/>
+ <project groups="qcom_msm8960,pdk-fs" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
+ <project groups="qcom_msm8994,pdk-fs" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="76e6a531822718a6a9e8019e8343cd398492815e" upstream="master"/>
+ <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="f81ef30068fb7ef1dfb772ffe69b5cd846e81d9f" upstream="master"/>
+ <project groups="qcom_msm8x09" name="platform/hardware/qcom/msm8x09" path="hardware/qcom/msm8x09" revision="cee67f33014a0d25caa53a515bf2da11225880a9" upstream="master"/>
+ <project groups="qcom_msm8x26" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="master"/>
+ <project groups="qcom_msm8x27" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
+ <project groups="qcom_msm8x84" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
+ <project groups="qcom" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
+ <project groups="qcom_wlan" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="6c71dbce7a5b93982abc30d2bf4245247cb34efe" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="9fbd65c441ddcd5b51ea5a57a91bd4872a5f74f4" upstream="master"/>
+ <project groups="pdk" name="platform/libcore" path="libcore" revision="e400ad78c4705ebbb6afc6c16a6b1f03bed437c2" upstream="master"/>
+ <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="dcd3d3ae2171bf4e241ddb2d43808892fad7f2ef" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="d039943180c9cb8210d66d5e6bddfbf26ab70e17" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="7f90f9168fc412e9a79d4e8609a2c96c32dca133" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="9180bc72bcaa6d28156bc65ad2caf62aa50fd1ac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="956525423e51315015d6902e3b9487e72e9f4885" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="a4cb3c1c2d6cfa34a462bb04b38dca2eab7a62d7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Dialer" path="packages/apps/Car/Dialer" revision="732aaff8cb379728ea0359ea8cf913078d3534c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Hvac" path="packages/apps/Car/Hvac" revision="58772162c56dc8f893855e9fc27edc34a8f2bcac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LatinIME" path="packages/apps/Car/LatinIME" revision="22e301a603d844c0ef92e9cd95c721d6095ca19b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LensPicker" path="packages/apps/Car/LensPicker" revision="d509b2dfcbd4a51d28c496bd2f3fd8f40f42528d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LocalMediaPlayer" path="packages/apps/Car/LocalMediaPlayer" revision="9305871fc0013c451f33e56229507be0a1e120c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Media" path="packages/apps/Car/Media" revision="5cb58af61618d6c457685a5feba630540f25567c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Messenger" path="packages/apps/Car/Messenger" revision="22bc7d8f0b1a18737e951ff3352c089670cc7ab3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Overview" path="packages/apps/Car/Overview" revision="f6b3e8ba62d070b0870eb9b0e70aa34bb7c363a9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Radio" path="packages/apps/Car/Radio" revision="f5bdd9d38dd23ff55fd0fc7f7209d1ad28705f87" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Settings" path="packages/apps/Car/Settings" revision="d19f034f4211ce0d55bb38936e39c60b13bc509e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Stream" path="packages/apps/Car/Stream" revision="c19ea2d878bf135e36151e6d313eee8b1b743184" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/SystemUpdater" path="packages/apps/Car/SystemUpdater" revision="3506f3f39a1328465009ec080a741373b338bead" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/UserManagement" path="packages/apps/Car/UserManagement" revision="9391baedbf4ad645d7c125279a19d7a2b6b285f9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/libs" path="packages/apps/Car/libs" revision="7901432126584be2601424b0969092d0d1374c65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="28582d92cf380d431505fe9103a3ca99bcdb34de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="8cd439087aab7e0c3d530f0678a4944b697602fc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="1c43ca95cd444163e69e250f270714d7ba4cffaa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="3ba72351ae5bc808f86826e6d35bc6baee712d91" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="411d606453dd34b76a7af12c568872e6f98ffc86" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="90fdbf7460fbd255194455331c6a38a7b8f41dd2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="69ff7c1717c363027a79a454da91e1ca59c1dd3e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/DocumentsUI" path="packages/apps/DocumentsUI" revision="4501139b4ac250e5437007dc7f92adcb1068565f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1b70a229c444d3e893e6309e5191bb205fb1dcef" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="4877fa47dcb0275079b802054104811e4fedb9f1" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="9354ca48fbf8e8ea3372d01d024dd917a4c6f553" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="005fec50c2e22be3441ab9415ab17bd64bbd6b44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="65cdfbaad6c99efc1671510daea762a0876199b5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="e3269d171111f474c9240688c3da62e26f6a2093" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="1e1f4535d86dd49bf23108eb1a4c3d2543fc85fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="0269d850997f5d8c8f82d2f94a8c648ad0cb1543" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="fa5511133a6bf784955042966162e8635ab5b930" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="b717e128c1835dcee7efdbeedd5adc6c371f0b61" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="f1dde3461ec2d47adfd49a6752770ca654410b2d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="3fb6abb42199b98a23a6e0569b83519919f9d015" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="033375b60c90a9ecb1bb12197f978e31f95419bc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="e51ca133f48c3856d14a6f3230bd4f52a7a1283b" upstream="master"/>
+ <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="cb4361e698dfa069926a8e4293db933860d49483" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="d2762cc94e5ea13cc13b6665101220c2ddf06110" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="1677529d348d72daa1531ff5c1f1e4d5cd9ff19c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Phone" path="packages/apps/Phone" revision="79731f02b7009206a01182d2cca15dfc8491da09" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="742f2254b5fd8b8239724008dadcdac7debfe1c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="1e5d8a500dce6530a99cb952681889042dcfb63a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="6b2548213a9c7cf93ac9dc32f8b82db4ad8e9c4d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="5f6197edeea02d084a1a042374b8f15e7ed5131f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="bc538c50dae99678584ff9e2aff60ee11a78cb44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="e69ff22ef6c1ad43c5ff876b19fc492c94d4fc12" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="c4b0fa585849641f07ecfed395db3437eca27dbb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="ba7237540f779f1c7e67ae7a36aa7a63da8eb1c5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="f47fff0421153f4c20d155df8d0864a7036bdb06" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SpeechRecorder" path="packages/apps/SpeechRecorder" revision="51cc8462c082a26810f5d7c5a2648232a77e795c" upstream="master"/>
+ <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="4424ddfba1e07a4f749dc1a6233d87c9a1206df2" upstream="master"/>
+ <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="bf23305b3b201f91d9c06eafa2622b058ced93dd" upstream="master"/>
+ <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="0e0082535dc276086ee61ac156581a20e86609e7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="4ab03e1367fb23d75f1197a98c7a52dd3e3898b9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="6ef2b729b4e4ac070563efba29fca2b98ba09e56" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="b36b2efb68a392aafba13a2273278c155f9f9a28" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="bba3dfde202b7483b1e430d75d49e0389d42d644" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="4f154a7d574963466abaeded961b6c5f427a45fb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="51fb032a154fa756327c5dacce6a2540b1196c3b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="6087c3f339a76e9033f6c2991ef26d4401743429" upstream="master"/>
+ <project name="platform/packages/apps/WallpaperPicker" path="packages/apps/WallpaperPicker" revision="969934f908ff2ddda77bddbb80f206daf6a24281" upstream="master"/>
+ <project name="platform/packages/experimental" path="packages/experimental" revision="f664e1fad87d06f1ad738549db049011c84ca787" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="ad5da5881dcaf3a1b4ec0cbdda51401460b6e37a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="85ca997d8265739e94b5bd9d19460c9b87b9ec59" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/ApplicationsProvider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="aa0b531d60d27409d304d7e8bbad787181be4831" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="bf198c8c5cd3e128046a3f712709690734b61f43" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="1e487cd116214c0df34efea269595352b757e4c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="df0624f9cf6274ed67c70ef0d163aa27ad5bf2d3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="18a114896c47de3a2c29b5731afa658c57ca353c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="372fcac69b5033bba262ce871f4f54ff1dde48b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="428574d247cc821825721ca7fd3beb77b5e8895e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="9c4e2ffaf6344c6c6e3ec5884f29dc7999bdf363" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="b65323596e512b84fb9a5601e9a83d442ed9a2b2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="a22ab1935b10a91ac9eb9606d27f4290c5659894" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="ef263aa8c0557e3aab06d11c8914b53b59ee8e7e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="2d9323d2deeeaa720cfb35d15767dd90a256b2c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="f27f650d1184819984e47ecbd797ccff162c0eeb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/WebView" path="packages/screensavers/WebView" revision="6e0a80f6faed6191acc8ce1b6c79eada09e9e042" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="911db0bab1adfab02e551fb512e7fac8f8dccfe1" upstream="master"/>
+ <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="7a3f3ef53ec1541bf28f4b91677265ab353fcf6f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="7117bff6c1186110a6381c49b7eac3cebd3d23f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="9264ab18a037a78501f3ada2c1f307c436dfb8a1" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="dd6a7b317428252fbf0892364160656a2991c952" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="e4a7a8c5f21c74ff699eae449816fd0bc6843afc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="5afd06f0764ce8afc99e641794ca3a57bdf87c2a" upstream="master"/>
+ <project groups="pdk" name="platform/pdk" path="pdk" revision="c7bd144646f9e961a7ee5f10a0105d21f5bf8ff7" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="0606a72fb0360c96af13b9917e1248f9076e8f95" upstream="master"/>
+ <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="93ee4dea555579076cc5313e04ed95cfbb0523cd" upstream="master"/>
+ <project clone-depth="1" name="platform/prebuilts/abi-dumps/vndk" path="prebuilts/abi-dumps/vndk" revision="83a0ec4746ab945004a9e71f2253d5fed8a4cc75" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="25dec9283da1c6a3c281ab0eb123c44f70c27632" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="23909177eace37bb0b1b2fae7e37113ffea7f7ef" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkcolor" path="prebuilts/checkcolor" revision="f6f661b424f646bc5ddf9e1b1e644abb492b7547" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="b591a4c55c5fc6658e17875a642bb60923ed366a" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="e992d54510d52981e0e6338d342089301bc2ae81" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="5f633876c34ebd8c8fb31aabf3dedfe7e3141aac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="d055450404768f16ac199b13e51eecb37abb7c07" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="6f0b60e8759e67828288feccfe0e59ad02170bd0" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="efa717742380a2fe700a62f3ba5b26e7fb3cf0f2" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="6d90a91b8622bd5e4849aa684598d3f4b6a64f2e" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="679f23d33d0fa540915ef8d2b72b00128bcce0a0" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="ec5aa66aaa4964c27564d0ec84dc1f18a2d72b7e" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="d942564c9331f07026a8f78502d8571206eb7be4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="cb32df02ca49be4d2de4d05c1e46032abd30efc6" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="2d4cbf699c9217a3f4f0f6c82254643a0ed87f1f" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="bf4b366f48251c542c8aea15ec885f9fc6a01d5c" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="a461e1b3161b4817b743ddbfb58a3878e7985c8b" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="6e91bb7b816df8543cffe14287acbf0412f65550" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="e76a9a506d7ad132f107eb2f7c27b6a8ccb68b91" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="388fdc4995d374d76a0c4b292afabac91638e134" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="6a8906d0e6c3e18480796547e285866813b29ba3" upstream="master"/>
+ <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="0a8c90248264a8b26970b4473770bcc3df8515fe" upstream="master"/>
+ <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="4adfde8bc82dd39f59e0445588c3e599ada477d2" upstream="master"/>
+ <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="1336ba94c3bda2b2db8d6eab54036ae88423be55" upstream="master"/>
+ <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="cc0b9f5238fed2fb3b3a0dfa9cd1dd163b053a8c" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="10219421eac01ee74d80c86e97bebe1fd8e16bb2" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="d49ad92452c3ec4b859283f36372a3d12ad7a4ea" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/libs/libedit" path="prebuilts/libs/libedit" revision="d32685dba4011664b590b94ad156bc734c2c9bb5" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="f8ffcaa0b464b1275af6707e931beb0b4d4b0856" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/bumptech" path="prebuilts/maven_repo/bumptech" revision="ad29fe1a1b86eacbd04ac4ab23b90f38ca099f77" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="062009ffd95b0eb78fa0e75067390a00e042e730" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="3643dfc296d3cf65a8c5d618ef56f9ccf8ee40d7" upstream="master"/>
+ <project clone-depth="1" groups="darwin,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/darwin-x86/2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0c5958b1636c47ed7c284f859c8e805fd06a0e63" upstream="master"/>
+ <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="621d405f7e4db1d7046dde53c0c6e5add3e2743e" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="fe3a2d5cc210c45a5fa0bdadbbcba268aeafe60d" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="d8225e4f0b27de6bf8f15db5440d4e5b0a3b26f4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="f3fbb60b007f7a4a5f53b822d56a151bb95b8d65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="2e170ea4622aa5d63e562f2eea78817ada415373" upstream="master"/>
+ <project groups="pdk" name="platform/system/bt" path="system/bt" revision="2e08795a899d402dd9914c3e5098c04dccd4f680" upstream="master"/>
+ <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="db524b256a637f18588c1d5ecc4a7d43cdebf8fd" upstream="master"/>
+ <project groups="pdk" name="platform/system/chre" path="system/chre" revision="1355b80eaeeb2c63bdbc72a9f883d2391161700a" upstream="master"/>
+ <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="7a83a7b6ae1e0c8d7a3ec912eafca33d418608c1" upstream="master"/>
+ <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="2211b56ca924f4a810d48fc31bdec959dda8f5c1" upstream="master"/>
+ <project groups="pdk" name="platform/system/core" path="system/core" revision="fe3551e9dc173e81649ee7b5beb2b99bd6a3d2be" upstream="master"/>
+ <project groups="pdk" name="platform/system/extras" path="system/extras" revision="5da045dc1ac0709dba6eb61b0ac305ff031ed767" upstream="master"/>
+ <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="9414ec08188b5189eb393a2ffaa039ff1fcf6027" upstream="master"/>
+ <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="0bbe268d8519aa650af4a18ed4f9eefd69e3d1e3" upstream="master"/>
+ <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="e821b67b98d0ef49cb4e34e972f349a1deaa5555" upstream="master"/>
+ <project groups="pdk" name="platform/system/iot/attestation" path="system/iot/attestation" revision="e3823a75b7569794662fe2fbc9e3ca2ac2f60cce" upstream="master"/>
+ <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="109901d94c6e3f15768f3d9e1ba32803999db672" upstream="master"/>
+ <project name="platform/system/libfmq" path="system/libfmq" revision="8d1189c9399ff6e81296383bc480b104613d591e" upstream="master"/>
+ <project name="platform/system/libhidl" path="system/libhidl" revision="0109873dcaf0a416960fb2d6d4b99029b25047f0" upstream="master"/>
+ <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="80b88ab21170f7fde645212a9f6b6d7e28a40de4" upstream="master"/>
+ <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="4446f0cb437fea5e26b645990970afe7dc4f5085" upstream="master"/>
+ <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="a72bde7d4aed9704cca946c43563ff1983eb86fa" upstream="master"/>
+ <project groups="pdk" name="platform/system/media" path="system/media" revision="f1041f736a4747e51ab5b27e19aacc7d68ef92ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/netd" path="system/netd" revision="a767c597572bd016d19a571eb4caad7a63a18137" upstream="master"/>
+ <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="210fc92332b13067c0a2c4bc234167eeab6f2e85" upstream="master"/>
+ <project name="platform/system/nvram" path="system/nvram" revision="f490436ea7b11aadfeb37c2299e4565c41ffd0ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/security" path="system/security" revision="f3147f209c9537b30041a521fb4cc5fbd832ff3a" upstream="master"/>
+ <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="c5e32208a2ec7a483d8ef9d5c292313d5c229ebc" upstream="master"/>
+ <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="5faa530d1f732db066aa1bb27943f7db3bb5e7ab" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/system/tools/aidl" path="system/tools/aidl" revision="a2a10e895a779d633ab41e3b856d6e7979cedb3b" upstream="master"/>
+ <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="768250faa6806620d97968a3bd6e8e8fc744f029" upstream="master"/>
+ <project name="platform/system/tpm" path="system/tpm" revision="06e295b58139a538745835f45ed889a30507d008" upstream="master"/>
+ <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="3b15b599299a9a5f3ec965d568ea479383c2fe6a" upstream="master"/>
+ <project groups="pdk" name="platform/system/vold" path="system/vold" revision="2890b8d21565be4349956c67261cd370e4814c28" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/framework" path="test/framework" revision="246492cf54d880214952e9cbb1ea490cbdd56f52" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="378b0e7157ea84bfd5907a72ab6089aa37222c4f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="30d457ce6613d587901379844b9d0dfb37a67a7b" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="a77aaaf39ccb9967a9dc1b5d945b945747a00465" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="8246eb1c52bd095a440af7d12f3ef3a3c5efa43f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="d18f06f1a6b5076cd4a83ece72abbc4162c3bb44" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="27a8ac9577a8984d2c85c78640551cc647d1c7a3" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="02a4c1be279b9afa69a0003db73652980aa3e85f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="a5eb9c423ed7423ecc2842ef5fc0d42f5e000a8e" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="2dc30e9b9476a23015590ac4acd4c8d1ed857c85" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="5f9c0342d425bcaf20d6ed7027dcbc5cd9bd0943" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="358bf2cc437a04c5b671be2817e131ae7d628521" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="51ca09ff33d03da2db1340166440c85ec56b49c0" upstream="master"/>
+ <project groups="tools" name="platform/tools/dexter" path="tools/dexter" revision="7650a8d2d9f7f579e65eeccdcf3e486b6a61be49" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="9cdd712d65a9e3ce2db93867d0d4a8288ad3bd52" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="f055ebc3d4b63026076c1077b6116f0b36bc514c" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="5bf6d894a874141fa8f806693b6c0a7c171f44a9" upstream="master"/>
+ <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="f363ab9d13f3b8178b49f7a61a25f26aca19b6f6" upstream="master"/>
+ <project name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="ee9bbb6a41a3bef74b4b566e057e577d231f91c1" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="d06f52938e256429ae54159bd43d334c3e157209" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="a5a7a9fabbf14a8d600aa612e5667ff3217c319c" upstream="master"/>
+ <project name="toolchain/benchmark" revision="73fd86bfc65c3c644c3ec47e3f8c941866e46e23" upstream="master"/>
+ <project name="toolchain/binutils" revision="53dd00a1a34ebf5251f6210d778768b4157c5e11" upstream="master"/>
+
+ <repo-hooks enabled-list="pre-upload" in-project="platform/tools/repohooks"/>
+</manifest>
diff --git a/tests/2017-10-04/art.tar.gz.sha1 b/tests/2017-10-04/art.tar.gz.sha1
new file mode 100644
index 0000000..713ddd3
--- /dev/null
+++ b/tests/2017-10-04/art.tar.gz.sha1
@@ -0,0 +1 @@
+4530779be454f353e9c754991d37aee8c62e0056
\ No newline at end of file
diff --git a/tools/archive.py b/tools/archive.py
index 0ae7233..4e36724 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -29,7 +29,7 @@
return subprocess.check_output(['git', 'rev-parse', 'HEAD']).strip()
def IsMaster(version):
- branches = subprocess.check_output(['git', 'show', '-s', '--pretty=%d',
+ branches = subprocess.check_output(['git', 'branch', '-r', '--contains',
'HEAD'])
if not version.endswith('-dev'):
# Sanity check, we don't want to archive on top of release builds EVER
diff --git a/tools/create_art_tests.py b/tools/create_art_tests.py
index 600c140..54de423 100755
--- a/tools/create_art_tests.py
+++ b/tools/create_art_tests.py
@@ -12,7 +12,9 @@
OUTPUT_DIR = os.path.join('build', 'generated', 'test', 'java', 'com',
'android', 'tools', 'r8', 'art')
-TEST_DIR = os.path.join('tests', '2017-07-27', 'art')
+# Test that comes from Jack are generated from the legacy snapshot.
+JACK_TEST = os.path.join('tests', '2016-12-19', 'art')
+TEST_DIR = os.path.join('tests', '2017-10-04', 'art')
TOOLCHAINS = ["dx", "jack", "none"]
TOOLS = ["r8", "d8"]
TEMPLATE = Template(
@@ -60,6 +62,9 @@
def create_tests(toolchain):
source_dir = join(TEST_DIR, "dx" if toolchain == "none" else toolchain)
+ # For the toolchain "jack" tests are generated from a previous snapshot.
+ if (toolchain == "jack"):
+ source_dir = join(JACK_TEST, toolchain)
dirs = [d for d in listdir(source_dir)
if isdir(join(source_dir, d))]
for dir in dirs:
diff --git a/tools/linux/aosp_master_manifest.xml b/tools/linux/aosp_master_manifest.xml
index 8b9df23..78ae521 100644
--- a/tools/linux/aosp_master_manifest.xml
+++ b/tools/linux/aosp_master_manifest.xml
@@ -4,49 +4,52 @@
<default remote="aosp" revision="master" sync-j="4"/>
- <project groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu" revision="8eb496967a7640e08832b15ea3e1f26079e4f2d1" upstream="master"/>
- <project clone-depth="1" groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu-kernel" revision="8a09131453b9326793261b6c9297f3c43336d6b5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk" name="device/common" revision="81fa95978b5542b9d2851b04d034b9a75ed8b43b" upstream="master"/>
- <project groups="pdk" name="device/generic/arm64" revision="23d9a6b57c63fbea914ae663a0be693b43d91ffc" upstream="master"/>
- <project groups="pdk" name="device/generic/armv7-a-neon" revision="dd168c481dcb14c7932c7026ac7c8b4af128e4a5" upstream="master"/>
- <project groups="pdk" name="device/generic/common" revision="11c092a6cbfcf6207f07a9a8e3398e747e7f5461" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish" revision="eb66ec9609a6c6422cfec97074eaefe9b3b436cd" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish-opengl" revision="b0a0e2f0297a1b379dd460dbb74153773196238c" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="6f2e6974a1b1dc0ef936aec732e33d553c000b5e" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="9d7cbb60819a1da8408a7148b965b4cd1ebbb570" upstream="master"/>
+ <project groups="device,fugu,broadcom_pdk" name="device/asus/fugu" revision="3c9c11746af0f6d8f3abf30d3f32c9b0f3a342fe" upstream="master"/>
+ <project clone-depth="1" groups="device,fugu,broadcom_pdk" name="device/asus/fugu-kernel" revision="6c50d39cf6e1dabdfc5ba6ce22973b96650ae0b5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="device/common" revision="1401af3a0c8e9cf74f70bbdcae9299be30866563" upstream="master"/>
+ <project groups="pdk" name="device/generic/arm64" revision="392eec3cb4c64721cd5b76fa36535954b5d45309" upstream="master"/>
+ <project groups="pdk" name="device/generic/armv7-a-neon" revision="9e96e041bf3c9d5b57b11f921c6339e076478a7a" upstream="master"/>
+ <project groups="pdk" name="device/generic/car" revision="c4d08a9e781e9bc69b861428765e87f6cbb696ac" upstream="master"/>
+ <project groups="pdk" name="device/generic/common" revision="441c018a14a4b29d338bd62e01a0c014571ca241" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish" revision="ddbb24fd9ccf9978264a656cf92c193597b8df6e" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish-opengl" revision="9b2d1c3cee91b7ce39e22c47b58843037ebb78fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="1aba9d054f2e5e906000fe69eff8d168e99e74fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="258706fc0ddcf2c9be48967f4766ec90efb736a5" upstream="master"/>
<project groups="pdk" name="device/generic/mini-emulator-mips" revision="544e69736cff911c286a5d1d300dac228e23a73f" upstream="master"/>
<project groups="pdk" name="device/generic/mini-emulator-mips64" revision="b1c36d0847fe6366527efd38fdb29d757ea887ee" upstream="master"/>
<project groups="pdk" name="device/generic/mini-emulator-x86" revision="65d59e2be2cfd713513a05d80a0f75794ab60579" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="bcb1f5139c24bebbb0cc0ebd2f50d83cd21b01b9" upstream="master"/>
- <project groups="pdk" name="device/generic/mips" revision="23901a9cf7a62f5f8f9f0c1382b5707694a1661c" upstream="master"/>
- <project groups="pdk" name="device/generic/mips64" revision="03b4192ab5125e5d67636dc4c7121f089799e1fb" upstream="master"/>
- <project groups="pdk" name="device/generic/qemu" revision="99feb6138f39e392495057ef7f2c4a5ed27f9e2d" upstream="master"/>
- <project groups="device,pdk" name="device/generic/uml" revision="4f11280e3d70728fba24e572428e559b7b6f8093" upstream="master"/>
- <project groups="pdk" name="device/generic/x86" revision="dac918b4cd4a34342526588502e4b5a531183080" upstream="master"/>
- <project groups="pdk" name="device/generic/x86_64" revision="f00aa59b3af4937ed014701755e9b01c95122187" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
- <project groups="device,fugu,broadcom_pdk,generic_fs,pdk" name="device/google/atv" revision="fbc45fb7c00d9b0150acdb674c9525ab32abe349" upstream="master"/>
- <project groups="device,pdk" name="device/google/contexthub" revision="a70df4afbbcebd9693590dd8fbbb9edf3220609e" upstream="master"/>
- <project groups="device,dragon,pdk" name="device/google/dragon" revision="ee1ac65d5660fd80ce40165c165e09d4de3cada5" upstream="master"/>
- <project clone-depth="1" groups="device,dragon,pdk" name="device/google/dragon-kernel" revision="8c9e4d14540119e0815a453eb4fefbedeaf8794f" upstream="master"/>
- <project groups="device,marlin" name="device/google/marlin" revision="d191908f633ea003bcba5193ef781ae4b1ab0bcc" upstream="master"/>
- <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="48bde4626f5da9605b068b6c1bcc1e854a876d52" upstream="master"/>
- <project groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler" revision="40d2796a7f673102462f217e794cb3efb18e8dff" upstream="master"/>
- <project clone-depth="1" groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler-kernel" revision="db808069857bd03e573ce3c765dd6df43f2a4318" upstream="master"/>
- <project groups="device,bullhead,pdk" name="device/lge/bullhead" revision="422731a22e593103dfab7f2abaf7fa1804566ef0" upstream="master"/>
- <project clone-depth="1" groups="device,bullhead,pdk" name="device/lge/bullhead-kernel" revision="3f270065c17302930cc9319d399297436b65b3bc" upstream="master"/>
- <project name="device/linaro/bootloader/OpenPlatformPkg" revision="71183d6eabb1f91198f1bd3705a85b419cfd4685" upstream="master"/>
- <project name="device/linaro/bootloader/arm-trusted-firmware" revision="36aa82dda56169333aba6b2c55341404c1d631f0" upstream="master"/>
- <project name="device/linaro/bootloader/edk2" revision="b26de945921c8045494d7817e2c962b2b73c80dc" upstream="master"/>
- <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="8b50938d95ea98ee6e01d1bb5155fccaa375de1b" upstream="master"/>
- <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="f3509810fe7d8e6eeff6f0b8f902c5f7e4db7c2a" upstream="master"/>
- <project groups="pdk" name="device/sample" revision="15f7857fc7b7f7cfd99ec4f93b151dc02a71b837" upstream="master"/>
- <project name="kernel/tests" revision="abfe7a8bf1d0f26e376d977f55d2234fe297c5ec" upstream="master"/>
- <project groups="pdk" name="platform/art" path="art" revision="2c2e13ec24bff70db6e49270b9d4d787add9925e" upstream="master"/>
- <project groups="pdk" name="platform/bionic" path="bionic" revision="4f36cabd8d1b1f3ed6ad4586f86aad5731f4bdaf" upstream="master"/>
- <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="231c627a5527b92ae3d043e454e949cdfc4f38ea" upstream="master"/>
- <project groups="pdk" name="platform/build" path="build/make" revision="2aef19528e05d014db280ce9aa6431580cc19f7c" upstream="master">
+ <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="b62205d75073783e171fbcd5f675e25e57833479" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips" revision="bf27f9bcb56e483310507f78f0a4b93d3f5499c5" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips64" revision="34300f7753b7a9fa2f7ba16bdc1f1fb8625dd4e4" upstream="master"/>
+ <project name="device/generic/qemu" revision="97ef4f962aec451b00bfe562c1cb67471c4563d9" upstream="master"/>
+ <project groups="device,pdk" name="device/generic/uml" revision="f71ea7d194988fd6a64e071918f6e00e8db9ff0c" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86" revision="645e6e711b32f94ecbd9b1cc77a51559dfce5ebe" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="master"/>
+ <project groups="device" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
+ <project groups="device" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
+ <project groups="device,fugu,broadcom_pdk,generic_fs" name="device/google/atv" revision="a14f6c4a89589a7cc6919702f9f3fd3140cc273b" upstream="master"/>
+ <project groups="device" name="device/google/contexthub" revision="b6f95b69331caa8356ba3e1e9d8e77cb0d43c17b" upstream="master"/>
+ <project groups="device,dragon" name="device/google/dragon" revision="8a0490365df0ab52123e7e2ff99426b39c1df151" upstream="master"/>
+ <project clone-depth="1" groups="device,dragon" name="device/google/dragon-kernel" revision="01a873b040f63d8d030b2ec34338bc86aadd15b2" upstream="master"/>
+ <project groups="device,marlin" name="device/google/marlin" revision="44063c647bdd327ec5213f9c86b1cd28e198c1dc" upstream="master"/>
+ <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="8d4b71409708a68a7b1aa9614fecaf17a3e8749f" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="device/google/vrservices" revision="957cfc2a4e2244a83ddfaf6ba2da74aee24f0767" upstream="master"/>
+ <project groups="device,angler,broadcom_pdk" name="device/huawei/angler" revision="8c68626c01750f93ac8412de79dcf1e396e9af5c" upstream="master"/>
+ <project clone-depth="1" groups="device,angler,broadcom_pdk" name="device/huawei/angler-kernel" revision="5263f25b197ee09005570da6363b766281969c22" upstream="master"/>
+ <project groups="device,bullhead" name="device/lge/bullhead" revision="f91eab2f09279fb6159686b566563b9a4a8899f1" upstream="master"/>
+ <project clone-depth="1" groups="device,bullhead" name="device/lge/bullhead-kernel" revision="1d824f51ffa8950d7695829d849da183233d71e3" upstream="master"/>
+ <project name="device/linaro/bootloader/OpenPlatformPkg" revision="ca8a8eebc29ebbcc65edc8f3b4533867cbed9205" upstream="master"/>
+ <project name="device/linaro/bootloader/arm-trusted-firmware" revision="179eae6bcbfe21200b3dec42e0b56e5e6faf3272" upstream="master"/>
+ <project name="device/linaro/bootloader/edk2" revision="99d893a486546aa62d4088a16e86617ed3c74897" upstream="master"/>
+ <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="b266cd2109ae0bae7ab6aead0da8dcc74ce82b08" upstream="master"/>
+ <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="d194dc591ad93e25234e57acec4fe0dc6b0117a8" upstream="master"/>
+ <project groups="pdk" name="device/sample" revision="12cb28b2ab78a03feec243ed1f7d528b1aa6c753" upstream="master"/>
+ <project groups="vts,pdk" name="kernel/configs" revision="649be155f9e3dde06b379710074eeb9b80960afe" upstream="master"/>
+ <project name="kernel/tests" revision="3e8e23f0133d3b6071cb5b7f224a9361837e6f61" upstream="master"/>
+ <project groups="pdk" name="platform/art" path="art" revision="bfcd0d3da60d38bd072d898fa2db4d30307d540d" upstream="master"/>
+ <project groups="pdk" name="platform/bionic" path="bionic" revision="3e8584d4a7d617289e8a954711ba895415d781c4" upstream="master"/>
+ <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="2cedab7af95e1065cce1633de1b3acd5a40928f7" upstream="master"/>
+ <project groups="pdk" name="platform/build" path="build/make" revision="b33250278bd79f62d251c1339447f21d08fd7e81" upstream="master">
<copyfile dest="Makefile" src="core/root.mk"/>
<linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
<linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
@@ -55,525 +58,555 @@
<linkfile dest="build/target" src="target"/>
<linkfile dest="build/tools" src="tools"/>
</project>
- <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="9795c47773f2d79fdc0ace76bb47693c4a4d3b27" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="bcb31defde3e3fc248a1f11049e7722233003b6f" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="98be5836deff21fccb93d6fc342441d9858c042c" upstream="master">
+ <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="ac45bd1ea824a274d9347f3d01671d959065ac15" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="d120bfe21325e56229c01e07d0ac5aef7c94c778" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="c144b8601430e5de53d832dff0c4e2bbf1d2ff4c" upstream="master">
<linkfile dest="Android.bp" src="root.bp"/>
<linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
</project>
- <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="644a1933b78f1b08e86cecb58e199cd43ff7bd26" upstream="master"/>
- <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="226dd9c816388ccc82d332510ef65143757288f8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="dfdc080699f1bf92978b45e8e87649bde239a874" upstream="master"/>
- <project name="platform/developers/build" path="developers/build" revision="67343aa8a5faeb6b4df459dbfce4cc17bc7f21f9" upstream="master"/>
- <project name="platform/developers/demos" path="developers/demos" revision="95d49d216223e3431647abd79f5e376958353c95" upstream="master"/>
- <project name="platform/developers/samples/android" path="developers/samples/android" revision="b329d0bb80feecf6a27d38fe0bb3c018a2ba16aa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="fc7b5458c3a4cb311afca7ff0e10811514ca03ae" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="c78bdec26a7e8ae86feead11571d5fdc3203b98a" upstream="master"/>
- <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="7a8860406c015bbc63f382efed9372044eb0cb74" upstream="master"/>
- <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="44079759f93259a9694607502406dfe3717b04ba" upstream="master"/>
- <project groups="pdk" name="platform/external/aac" path="external/aac" revision="db596910262534891ecde361a71abe7ada57405a" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="c692633e1b2dddfb8f5ec7f60eb7a62ced325e4f" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="9b76336c02d84eeea19a48108270e3bae4efd025" upstream="master"/>
- <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e700a73dd03a0c111a8a55ef2f9f22b264663138" upstream="master"/>
+ <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="706f8a00a26d09202f025023b07cdd719c285287" upstream="master"/>
+ <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="4a8c6eb8af9ec00a810c4df8f14095e02ad9f1b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="bc682afc86bfd43d92a9d01c6a26a7aecf9053bd" upstream="master"/>
+ <project name="platform/developers/build" path="developers/build" revision="dac7653ebb52f2de72352a3ba8e91b7d70837ee5" upstream="master"/>
+ <project name="platform/developers/demos" path="developers/demos" revision="baed7559c8272ae802aa581148851a7f81307d47" upstream="master"/>
+ <project name="platform/developers/samples/android" path="developers/samples/android" revision="0f2a748e3111611b65421dc42840def7ae2797de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="0e82eea2d4829d277566ae42182121d631f8d429" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="4ede9c52630a6da877e7ca9c1c3801a34ddb7179" upstream="master"/>
+ <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="5691a8ecaba367d04b2c2a13ec1e9e05f4f17b7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="c1b94b10a13f22e951c429e056b151d340238e27" upstream="master"/>
+ <project groups="pdk" name="platform/external/aac" path="external/aac" revision="32b8bd3dc952952a097fbaa87a626d15445f15c7" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="5453ac991183dc8dc856e8beced059edab94acaf" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="d972c9eaf4e7ccd0f79e779fe4621538cc9c9e90" upstream="master"/>
+ <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e477c862031613ca7bd05971bce05405638fb248" upstream="master"/>
<project groups="pdk" name="platform/external/androidplot" path="external/androidplot" revision="c66727ebf001607cee14521c35bc852b55fd9845" upstream="master"/>
<project groups="pdk" name="platform/external/ant-glob" path="external/ant-glob" revision="a73228afa9540b9c5518d360c5ae630bb634f975" upstream="master"/>
<project groups="pdk" name="platform/external/antlr" path="external/antlr" revision="dd5fa6d48b827c5d98b625adbc209f4a05567534" upstream="master"/>
<project groups="pdk" name="platform/external/apache-commons-math" path="external/apache-commons-math" revision="18f62fca59d387e3c1ccd8f80087d9c9af40bcc8" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="3af05d75dc65fae5e073269db62563716c2ebd90" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="a4b31e5eda3df5a0ffe844891edc5bbb33930e98" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="eb488e7ce61f67cfb0cec2b2f99e2769ba640199" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="6d301174f0502912ee7df6db4bc5c1f5cf4ee230" upstream="master"/>
<project groups="pdk" name="platform/external/apache-xml" path="external/apache-xml" revision="31d7642eb8f37a9166db7f1c9e313ab651bdb8ba" upstream="master"/>
- <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="66e3a02481a0fcfcaaea296c0ec4daf761d3a07c" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="9ab8d36c652aae3bd30cbf62243a788394494635" upstream="master"/>
- <project groups="pdk" name="platform/external/avb" path="external/avb" revision="047ecf7d2361ffcb39a5a4ec0709480f47ed76e2" upstream="master"/>
+ <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="a764fc9e8810be26a51add8a79502e411e3ee1ee" upstream="master"/>
+ <project groups="vendor" name="platform/external/arm-neon-tests" path="external/arm-neon-tests" revision="104e2a662ec8443e9a7603b22efbb3b86c1e7094" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="acea5c1e9dfda8ab69a093fa82c61ef12f7688b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/avb" path="external/avb" revision="34ec123c606a0beed5cb29b49d748594a3242eb1" upstream="master"/>
<project groups="pdk" name="platform/external/bison" path="external/bison" revision="7467d52af437dd3dfea237a6865ab84bf258dee0" upstream="master"/>
- <project groups="pdk" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
- <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="b6d070c5081ba0ca11545eb50870817d6d72d926" upstream="master"/>
- <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="5efb6f27c6444cbef30ca253c831496c534a9198" upstream="master"/>
- <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="6a6ebf0b8d77d5cc527af49afc5731a2253779d2" upstream="master"/>
- <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="4ac53f28ec5554dd32c70298312a10078d5ce02c" upstream="master"/>
- <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="0600e5668b2b1590c2f908a5c420149c6581122e" upstream="master"/>
- <project groups="pdk" name="platform/external/c-ares" path="external/c-ares" revision="211489aeaed3157c34e46f350afea813960258af" upstream="master"/>
- <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="eef51080212521ca9c85eb880dd1d6620846cf92" upstream="master"/>
- <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="d7e8ee81279845e0f06103398b48d3f4624497b4" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="5bb2c7930cf34cfe7584b76139b5257feec81e6c" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="a70bd790dfd509cefb24534d02e3a1b349faf98d" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="581a777a866d78be6cb4192e46891e418930fc1b" upstream="master"/>
- <project groups="pdk" name="platform/external/clang" path="external/clang" revision="0f9f1869a4596b973fb6d65324924365d3cf5884" upstream="master"/>
- <project groups="pdk" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
- <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="8bdaf98eeb4dd0f7b8cae390cd18c097a9eb4e2f" upstream="master"/>
- <project groups="pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="5ad04c656aeb7cece332922bd67e4b9bc08acc81" upstream="master"/>
- <project groups="pdk" name="platform/external/crcalc" path="external/crcalc" revision="5559610bea3b267abef3273868f2d6b8c01409a5" upstream="master"/>
- <project groups="pdk" name="platform/external/cros/system_api" path="external/cros/system_api" revision="d51655f606e0057f5fadcd17eb5ce1c1a5dcddcb" upstream="master"/>
- <project groups="pdk" name="platform/external/curl" path="external/curl" revision="f0f7cd5b375b317e7eef65b6573902c04ee80ecc" upstream="master"/>
- <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="671fbc2903016f5966c032a917caf3a800088ca9" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="da231f19abbe6eafee0d1ac3d35351d281998a05" upstream="master"/>
- <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="d352976796a4ef22a8ec1e8056f51633c4b07d90" upstream="master"/>
- <project groups="pdk" name="platform/external/dexmaker" path="external/dexmaker" revision="9e6367a9399bb671b1b474bf21898d2ca68b6357" upstream="master"/>
- <project groups="pdk" name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="df64c96f01b3dd2a823d6aa788653c3bedd1efda" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
+ <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="c9df3a1ff1d0cddebf2fc32ad8a03a429c0e834c" upstream="master"/>
+ <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="a7f9095ead5e2af9612c8cae35f6e11a2b8e1d77" upstream="master"/>
+ <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="018ee547112ca1327af9fbaa6c21b5e6ac063357" upstream="master"/>
+ <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="bfef6ef1022fe24a80387d34cebf16453451f1cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="a0df5d74ad301ea4dd1ec4214c32d9fd9ea52de8" upstream="master"/>
+ <project name="platform/external/c-ares" path="external/c-ares" revision="9f1b2827cb88c58a80c470a4bddb2485677ec57f" upstream="master"/>
+ <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="fc57a58a3420e4f3e2ab86233ef932efa266ec1e" upstream="master"/>
+ <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="08f39d72ed0f0c17308637a60018207829fed8e0" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="8c47eebd81c996f17198edb2fa504c04d48d567e" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="88bb68148bd0510a1564d673421f051011b4240c" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="955f673b041b96ffc383190797c3613ac8dba844" upstream="master"/>
+ <project groups="pdk" name="platform/external/clang" path="external/clang" revision="bbe7bb92eea6c3062b216be8d1d3fac14a62b2fa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
+ <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="1a323e5268f1a0c647db8e1a96c486f9aeecc1dd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="222a789123e327fb769ac10a22d5982648fc05f8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/crcalc" path="external/crcalc" revision="533bb2355d259f67743727a22a1ab974d3ca4524" upstream="master"/>
+ <project name="platform/external/cros/system_api" path="external/cros/system_api" revision="474f439bf34e678bf3b78e2362bc85db9174b882" upstream="master"/>
+ <project groups="pdk" name="platform/external/curl" path="external/curl" revision="98b0d14797cc42e32d18b289fbdc47dda1eaaeff" upstream="master"/>
+ <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="30909f76ef2849d6e048344b5f57588139acb181" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="3a1de9094d072324ef2c16a21c1893b881c2a8e7" upstream="master"/>
+ <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="14905bc6836b805fd3316e11368d7aad2907ecbb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/dexmaker" path="external/dexmaker" revision="a494e0736c1e97daf2e9d1df982efdb3bb8adca0" upstream="master"/>
+ <project name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="54d1fc2d574d21f788abb64b10c9a6352eba0b65" upstream="master"/>
<project groups="pdk" name="platform/external/dlmalloc" path="external/dlmalloc" revision="6661f3ca66b55d8f5a57b96fec97efaf8f3897a5" upstream="master"/>
- <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="4cafaba2321b7b74f81c621aa01112156258adb3" upstream="master"/>
- <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="00d11a4477637375322692d0c5603c60d38c6f1a" upstream="master"/>
- <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="f381ec7f6fca0618fb01231a758402597b1239e3" upstream="master"/>
+ <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="1ab71199fe8010a37492d46e324f171ce577e54d" upstream="master"/>
+ <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="d37f567618c3f5266d82b971a505f5a214a03f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="e15c52f95e09391629d4046a1ceb296ae29710cd" upstream="master"/>
<project groups="pdk" name="platform/external/donuts" path="external/donuts" revision="005389fb31a67841b5de42f0d25fbfab843e208c" upstream="master"/>
- <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="e19443ea00d3b27622590b920819e53da68f7fda" upstream="master"/>
- <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="cbfc5a5d6bd7f8e3913560d8d0e5fdf865773fce" upstream="master"/>
- <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="059f2d82efbcc733574b2b90dbf999280c04c4f1" upstream="master"/>
+ <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="f2936dc85a5f92d4dcdfa7b46066c9cd64086720" upstream="master"/>
+ <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="4b54b818477fb0650dc563cf9196578816c34597" upstream="master"/>
+ <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="5ef7dc3be02aedf00fc3cc3f59379d598e5c8817" upstream="master"/>
<project groups="pdk" name="platform/external/drrickorang" path="external/drrickorang" revision="8ea137d1086e621188f70ffac34a6ba8924af2c6" upstream="master"/>
- <project name="platform/external/dtc" path="external/dtc" revision="b1d8b2cd5e57a5c97bdd011624c06c40052b821e" upstream="master"/>
- <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="0e4687aea6893115b87e647db97e211c38beee30" upstream="master"/>
- <project groups="pdk" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
+ <project name="platform/external/dtc" path="external/dtc" revision="bea7af187e5d183b2c26ecc3366b1162c9f43060" upstream="master"/>
+ <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="944c4ea526024825eb874aa9a39cb11a6d4fd84b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
<project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-basebuilder" path="external/eclipse-basebuilder" revision="076f46888ed346775b8efc564d7694063ef5eea7" upstream="master"/>
- <project groups="pdk" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
- <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="c905f05b1b1277cc5b913652b2d4a57da12b89f7" upstream="master"/>
- <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="2ed2550b8595fde721dbc6a12091609a598192af" upstream="master"/>
- <project groups="pdk" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
- <project groups="pdk" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
- <project groups="pdk" name="platform/external/expat" path="external/expat" revision="8954a5667c2941642b9f63bec3a0482a8e9eeab3" upstream="master"/>
- <project groups="pdk" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
- <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="85b4766bedbbe8b2dfdc23b401194c9dd3c60dd0" upstream="master"/>
- <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="b87f884d1ad7530a39318ddbe2f066aa1f268871" upstream="master"/>
- <project groups="pdk" name="platform/external/fec" path="external/fec" revision="b3e9d18f59759ff5407be13ef8c6d2e2a497305e" upstream="master"/>
- <project groups="pdk" name="platform/external/fio" path="external/fio" revision="138dfa04ca2e19c0f03b4d0b591ca2d5e3bad3df" upstream="master"/>
- <project groups="pdk" name="platform/external/flac" path="external/flac" revision="9654326e6af758bf25e50f15a7e7b9cff6755a78" upstream="master"/>
- <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="1ce26af6d14810a277a5f62a5619a372b93183cc" upstream="master"/>
- <project groups="pdk" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
- <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="613f720f08f579806a05f0e45927f4f9ff147885" upstream="master"/>
- <project groups="pdk" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="9d1e7e4558c8b53731ba1d06d33b5516934d1ff7" upstream="master"/>
- <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="2d71596ba7a5e2e9430683818f8800d8bea059e2" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="a6e0183cdd9f69b180b4adbd613e66772d9bc633" upstream="master"/>
- <project groups="pdk" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
- <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="74c716d37b9a39f55b7f18d7939e886c7f2c8881" upstream="master"/>
- <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="31bf6fed97629fd3420cda58a97469ec7e5389f0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
+ <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="a29a294104713629da49e50e1858a47b19ae97fb" upstream="master"/>
+ <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="86dd133095bb28f987e07319f22fa80fadf7281e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
+ <project groups="pdk" name="platform/external/error_prone" path="external/error_prone" revision="416b18dffadb4298024e93d2ede43d409f06ab2d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/expat" path="external/expat" revision="1071d2dbae1310e7ffcf1f6dbaf096753e0de934" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
+ <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="27a6ad377c141f95ac208a0302a1a50cabeeff3c" upstream="master"/>
+ <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="3a719a81a9d31e1cadf5d68ac94f5bd9f01e41c3" upstream="master"/>
+ <project groups="pdk" name="platform/external/fec" path="external/fec" revision="040b198ed24f5b67eaa6415459c05d68453b19f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fio" path="external/fio" revision="e3c205cb93b9cc720589913df3b9150b1fb6e9fe" upstream="master"/>
+ <project groups="pdk" name="platform/external/flac" path="external/flac" revision="a44d56a9c4ad0093a1dca3e3be7ddb1905da2648" upstream="master"/>
+ <project groups="pdk" name="platform/external/flatbuffers" path="external/flatbuffers" revision="83d6225e9b642ea069023e45a943d3e7f916fb62" upstream="master"/>
+ <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="5dd1ef030977a657056a0a26a691f97d7878ea80" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
+ <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="44d6b9bdc6cb90d7b0fa275dcf2be8631312ca9c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="4103a4ab7d45b439b4f7297a2129a1ca45ec91dd" upstream="master"/>
+ <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="bcfadfee0f9d74b3ba93771948b32440a63e57d2" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="db6d1840bcd6c13cc41456835127d6d7d1b0694c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
+ <project groups="pdk" name="platform/external/golang-protobuf" path="external/golang-protobuf" revision="c42093045dafe0406269b36c2e35b3acd7da63ae" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="1fa9c1ac24825098c622aec489155faf16a7a995" upstream="master"/>
+ <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="4125ccd15f21dbae3d521d0298ce90f1fbc29bdb" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="0062a10458d4c357f3082d66bcb129d11913aaae" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/coming-soon" path="external/google-fonts/coming-soon" revision="2c5cb418c690815545bbb0316eae5fd33b9fc859" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/cutive-mono" path="external/google-fonts/cutive-mono" revision="bce2136662854076023066602526ba299e6556b2" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/dancing-script" path="external/google-fonts/dancing-script" revision="7b6623bd54cee3e48ae8a4f477f616366643cc78" upstream="master"/>
- <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="84cad11e5d8c3000472e8bb22dc698cf9b3c8612" upstream="master"/>
- <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="ff9b10309a390a7d631edc7808e129237972245b" upstream="master"/>
- <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="165c596ac3c69ecbc5a424ad9c1f1be6d44d0bb3" upstream="master"/>
- <project groups="pdk" name="platform/external/guava" path="external/guava" revision="5000b35f73a42ddb5554aa4c1c5ffea9c999741d" upstream="master"/>
- <project groups="pdk" name="platform/external/guice" path="external/guice" revision="411312e790280e72c08e018134d7e3a0e7ebab76" upstream="master"/>
- <project groups="pdk" name="platform/external/hamcrest" path="external/hamcrest" revision="0d446c0a6f5ab27bf24d8e046f1d03ce40f09594" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="6dd5ce2e32bc4a474b6ae7f0c3b6059a995ea5a7" upstream="master"/>
- <project groups="pdk" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="dedeff64279b77bafff72b6d866efc93e829b4ab" upstream="master"/>
- <project groups="pdk" name="platform/external/icu" path="external/icu" revision="f891f489da942890fd01c83b860b6448b77ce042" upstream="master"/>
- <project groups="pdk" name="platform/external/ims" path="external/ims" revision="711f9d55979cfe28b19a502cbe13a4d7e7e674f0" upstream="master"/>
- <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="989b8c667872ae21ea536d6419a506706a1e89ed" upstream="master"/>
- <project groups="pdk" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="afbdf60e1d4cafe0f894fe8e8e5bfa49e47c80b2" upstream="master"/>
- <project groups="pdk" name="platform/external/iptables" path="external/iptables" revision="204461a170e92764b41512463f49ef4164bee2e3" upstream="master"/>
- <project groups="pdk" name="platform/external/iputils" path="external/iputils" revision="0e79d155b36fdedf6f02908f72d4d156dbe3b335" upstream="master"/>
- <project groups="pdk" name="platform/external/iw" path="external/iw" revision="6a3e9a164c98577c28c0c9b1b9a0fbe7d7436e47" upstream="master"/>
- <project groups="pdk" name="platform/external/jacoco" path="external/jacoco" revision="b1b164ac860eddaed3abfb819df73bfcccdaa327" upstream="master"/>
- <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="7adc960353812730b4fb15a72901056cf3b3c516" upstream="master"/>
- <project groups="pdk" name="platform/external/javasqlite" path="external/javasqlite" revision="ee41d81872eedc632f42bd231b95bc945690d159" upstream="master"/>
- <project groups="pdk" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
- <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="68545397d8332a61f800ce9617715a22445ed9a9" upstream="master"/>
- <project groups="pdk" name="platform/external/jdiff" path="external/jdiff" revision="62f4ca1f64eaeb0896416949d6120b912ac67d3b" upstream="master"/>
- <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="a6f685beacaa3f8da06cb28f38bb559eac7d4dda" upstream="master"/>
- <project groups="pdk" name="platform/external/jetty" path="external/jetty" revision="3077b6f9426ccafb6bd5c00a748e1d40af9e1ae5" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="c731915e80d9e2ccb755b97e7fdd280bbea07f70" upstream="master"/>
+ <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="dd43b9998e9a44a579a7aba6c1309407d1a5ed95" upstream="master"/>
+ <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="8c834de12a855fee178f037a36705e72fe981c67" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/guava" path="external/guava" revision="5d824723beff81b246b327386fdb458decfd2af5" upstream="master"/>
+ <project groups="pdk" name="platform/external/guice" path="external/guice" revision="2f4c6dfce39d38e64a6e4993a808270e16d7dc1b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hamcrest" path="external/hamcrest" revision="2c2a845e1e8fdda704e4f2ccaa335d69d043ebf3" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="ea6cd46047ad211495e291edf75c4a9ee585639b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="ff853262e0f613e0ba2f677ae8b1f155544bb2ed" upstream="master"/>
+ <project groups="pdk" name="platform/external/icu" path="external/icu" revision="a6a68cfddd6e6af7bc4c6242ae596d7cb0f16936" upstream="master"/>
+ <project groups="pdk" name="platform/external/ims" path="external/ims" revision="12c79bb691c753c069facd0097293776bd7b56cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="842c7f0c1a62af00b79750de5b207c2782cbcb6a" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="16477a409310e8daa3ec5c8ecaa7a2f2d471fb93" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iptables" path="external/iptables" revision="8ae1dffe73609570ce73ab5430111a3d47400fb8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iputils" path="external/iputils" revision="2857b8009e1dfc751ef0659c9ba7358a89f83c34" upstream="master"/>
+ <project name="platform/external/iw" path="external/iw" revision="63d8bad2a5a8a9b443595762233692c5f6a6d36b" upstream="master"/>
+ <project name="platform/external/jacoco" path="external/jacoco" revision="9ef5ef62baa610d324b392e06bac956b383e870b" upstream="master"/>
+ <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="2acaac5c909fffeac65f3de54134828d7ec2140f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javasqlite" path="external/javasqlite" revision="16ac73c020e99ce6ca0899915cbfb35858ce6b16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="501341b4efff9c378ac4003899dd064586231550" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jdiff" path="external/jdiff" revision="915f756d47a2d2e5b1b5249ef1a05ae83d4c0ff1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="033b6fda4a854849db30955fd084158f6ce16c38" upstream="master"/>
<project groups="tradefed,pdk-fs" name="platform/external/jline" path="external/jline" revision="74812032f8d8eddbef387f18c96de9e5c38b8fdb" upstream="master"/>
<project groups="pdk" name="platform/external/jmdns" path="external/jmdns" revision="0c71647deb7f7835c473fd3dfb45943083e47794" upstream="master"/>
<project groups="pdk" name="platform/external/jsilver" path="external/jsilver" revision="b9b84920ba47ddf7f15baa01c56b28e3d3f951ea" upstream="master"/>
- <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="45f59951efef6cd2924738c39a5f52d61e06eb79" upstream="master"/>
- <project groups="pdk" name="platform/external/jsoncpp" path="external/jsoncpp" revision="ecd640d0acf7c93c5dbfc37702e4eedbc18aa850" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr305" path="external/jsr305" revision="333c5e0ea34930a10785f53e74dbe997d93ad2d8" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="de30ee496a13d0f71d8ddaee1e247c3e8e43e58d" upstream="master"/>
- <project groups="pdk" name="platform/external/junit" path="external/junit" revision="2faf8f4ae953dd2e847536c2712bbc563e34949a" upstream="master"/>
- <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="b03560c32573b9057dc1daaf877501dbb4e16f8d" upstream="master"/>
- <project groups="pdk" name="platform/external/kernel-headers" path="external/kernel-headers" revision="ab0b76f533c12b642cfbe4adb6e601e340599ad6" upstream="master"/>
- <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="087bd70f9a816bc37d77ef71c0b8f4253e60169e" upstream="master"/>
- <project groups="pdk" name="platform/external/ksoap2" path="external/ksoap2" revision="3f3695df2e974811a5759d43f3532dcd9d6be26c" upstream="master"/>
- <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="f4a17ae216f420f5d46e8680d4aa9317e6a9a4d8" upstream="master"/>
- <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="a645153b0a97663636bacdc5527c0d304fa79657" upstream="master"/>
- <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="2dc254ac567d43b060356ed4d660aca64fdc14a2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="64dcb22b223e3aae866d44ff35dc3acc2a9c58e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
- <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="0601274935e7f632eb0d6ce0fd223b744349d20b" upstream="master"/>
- <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e1a8625038e715f0b14fd5466c02f0142673b1ec" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="2447373f182dbfeb47fb86c0f5a6ac5773c65ac2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="0aea6aeca494754446dd1e5fe638fe68da128036" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="c41479a1d7de7fe6e9cfbff9be21382f7b23ace7" upstream="master"/>
- <project groups="pdk" name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
- <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="90d90b27c0b82cac20deabac79e97e274856eaf8" upstream="master"/>
- <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="791d9b9fd9bd768bc81f5f224fb5fc2904035fa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
- <project groups="pdk" name="platform/external/libese" path="external/libese" revision="4dcd39f5fc3b5a33078dcd5ee698f08c7ae664e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="596447c7ff2881a67e7082c905112584c3e61a17" upstream="master"/>
- <project groups="pdk" name="platform/external/libexif" path="external/libexif" revision="2431bfa79df74fbb6e30b77ab9f3d89c300d18ae" upstream="master"/>
- <project groups="pdk" name="platform/external/libgdx" path="external/libgdx" revision="5f9bb1dadc7e51a5fdb7171280366f8b3ec86eb8" upstream="master"/>
- <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="4a3459a3528b7f11cf09acfa2d2a1fb5142c1c2b" upstream="master"/>
- <project groups="pdk" name="platform/external/libhevc" path="external/libhevc" revision="5d3d1a0a65949b09035cc366429f7f85215c2731" upstream="master"/>
- <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="b8a887c09706633ac22ad6d13c9464b2ee539e77" upstream="master"/>
- <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="94b3caf1fecd5261e6929469924b1e25aaeca0ff" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="228d04d8c2b1c918c702a8132eaf2048aa24ff5f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jsoncpp" path="external/jsoncpp" revision="2aed88e521abb2b4e13966f73df8e753ac96f112" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/jsr305" path="external/jsr305" revision="f162f4b5d952208e4b6e0a7b2e1bf01058e429b4" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="d15be3f228885ce6ed2098ff2dcbf6c1085d83ba" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/junit" path="external/junit" revision="18fb5125096c703c1b2b83b79076a68dc6f1d743" upstream="master"/>
+ <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="3422818d91dfc550fe93355f6345c489d962c8f8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/kernel-headers" path="external/kernel-headers" revision="8357d9a3fa7a6ae0f7eda1bcd3ed69e46d2ae945" upstream="master"/>
+ <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="4082ee0d1ad5ce92c5ea6fdc5ca08e89cdd9801d" upstream="master"/>
+ <project groups="pdk" name="platform/external/kotlinc" path="external/kotlinc" revision="a69f6332d6fb99610d163b103338ca5c2e547805" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ksoap2" path="external/ksoap2" revision="9fdc4a6bb2b882bd1d6c822d2ad0c66585d66ba9" upstream="master"/>
+ <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="78002919cad58915616b635be1057a2324fbfd63" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="2c4cc2cc8dcd77f5f72db5c5c36db808c781dfca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="548b90b26b43f5766297e4395da5bc9819a096ab" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="d05a95e0607023d576ee17f3e7a2952174e33d34" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
+ <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="46f0186dae6932d059428e4919a154dd5722d4b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e2607d54fdb00903023e44a65220357ac66ffa30" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="8eacdf6145fd6b8d32ab431f867b08cf3e17e346" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="8204da4a163dd16bbbf051d9103d89b4ecc0c6d7" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="bb0e188762f569942766f8f25c9d38448c48cf9b" upstream="master"/>
+ <project name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="6e3b2d3dcc906a64d84ec2567de89b204d4a0c7e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="486358728120226bf5b48cc1ec7e14744bdaff33" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
+ <project groups="pdk" name="platform/external/libese" path="external/libese" revision="ed8aa2854c115ab49c0412135fe53326c1c2a621" upstream="master"/>
+ <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="707de56c3cbb0fcd33ec955c52a0fb1fdfacdab3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libexif" path="external/libexif" revision="60e63383329bdf3018696af6c9a1914e4ff0a920" upstream="master"/>
+ <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="95bc71811a7900d19723efa2dfc65eb7fc49c6d3" upstream="master"/>
+ <project groups="pdk,pdk-fs" name="platform/external/libhevc" path="external/libhevc" revision="36ff7b64f0c45d49ebe4f02828198c8ce4c1fcca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="85c8e7e73d9944b6a9603d03cc9a304eb09b4f68" upstream="master"/>
+ <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="14e7308c1b1a04f6aa38a6fde0d8c3331a2ad050" upstream="master"/>
<project groups="pdk" name="platform/external/liblzf" path="external/liblzf" revision="a88b9629447deabe8697d2f8fd4cc70aa6e1b563" upstream="master"/>
- <project groups="pdk" name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libmojo" path="external/libmojo" revision="8ac9103e05b66812c25348943383f9365d1ce3e0" upstream="master"/>
- <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="a0f640e21e42f5905d760ec3df1dc5203d0d209b" upstream="master"/>
- <project groups="pdk" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
- <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="436dd293ff5503828a1fa33d725a1db87e4e03ed" upstream="master"/>
- <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="6cd19f65ff99f6deb836937c38fb9eedc113c101" upstream="master"/>
- <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="defabfc078080d60369d901d3c7662f05605cb29" upstream="master"/>
- <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="6a48629b7c7fc90326b2f959789828007b3cc184" upstream="master"/>
- <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="a7703b70699299f078a189e19b6915120cded732" upstream="master"/>
- <project groups="pdk" name="platform/external/libpcap" path="external/libpcap" revision="50a06a07f1dd408adf7607b76eaf02d0c254fe22" upstream="master"/>
- <project groups="pdk" name="platform/external/libphonenumber" path="external/libphonenumber" revision="9313c2ce2fb61213e66adcf8ab4893a5d9c48da1" upstream="master"/>
- <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="352e6a8ec05db372ccdfc80cb77de807d23e8432" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="76a0b9f6a9813311ddfd59aaa580339f36a2c510" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="93d99bf31d081198030380a946f4c29e38159b25" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb" path="external/libusb" revision="b81e632687e2380716ced43d28f7c95987959944" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
- <project groups="pdk" name="platform/external/libutf" path="external/libutf" revision="853ef375ba2ce430f5b13b556812b2d83ccc82e1" upstream="master"/>
- <project groups="pdk" name="platform/external/libvncserver" path="external/libvncserver" revision="d099c925eed901cedcb5f1b9079af45a3ca0e6b8" upstream="master"/>
- <project groups="pdk" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
- <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="8585b768902331df85f7d1bbbc11bee4715da97a" upstream="master"/>
- <project groups="pdk" name="platform/external/libvterm" path="external/libvterm" revision="f6cc826fe2eb9fc76fdf922d02ad86aecc5f1b18" upstream="master"/>
- <project groups="pdk,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="2975f91c5afcdc7c150e2db37430d958817270d0" upstream="master"/>
- <project groups="pdk,libyuv" name="platform/external/libyuv" path="external/libyuv" revision="7a6bee2e5623dcc471f49a283144fed44dfb3757" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="c33d1f8c4b98fa6aa24c67d484d31b58c0651933" upstream="master"/>
- <project groups="pdk" name="platform/external/littlemock" path="external/littlemock" revision="105f5b4352a348a3628b081f4906f5dbb8c120f6" upstream="master"/>
- <project groups="pdk" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
- <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="8cdd9f59ffb6bae793e50c7cfdb23e9eac0703c7" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/ltp" path="external/ltp" revision="9686e7bddb36f2d7297456eaf5c9b7d89463abfa" upstream="master"/>
- <project groups="pdk" name="platform/external/lz4" path="external/lz4" revision="de7f627c7958b9847e0d9e6e29fcb566e3bb1dde" upstream="master"/>
- <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="39a0299cfdac41a2631cfdb4bbb637ffa66170fd" upstream="master"/>
- <project groups="pdk" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
- <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="71b85f6e70ac758f735338e8a1681dfe014af2fa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="e855ba79dee7a2d4df11d72752e1079cd5e58f2e" upstream="master"/>
- <project groups="pdk" name="platform/external/messageformat" path="external/messageformat" revision="9e1e4dddc8aa0cae8279281488f8a6bf4f453192" upstream="master"/>
- <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="db19bfbfbdce0f2b86f53d36392e49cb8f1645d6" upstream="master"/>
- <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="bba8f4a328807772fc16027133a9d63e9185fab5" upstream="master"/>
- <project groups="pdk" name="platform/external/mmc-utils" path="external/mmc-utils" revision="6de31b2b8a09108f9b91bc12bee2b792f783dc62" upstream="master"/>
- <project groups="pdk" name="platform/external/mockftpserver" path="external/mockftpserver" revision="777eb7d351810721b2416c4e48fe08e4ce0476f7" upstream="master"/>
- <project groups="pdk" name="platform/external/mockito" path="external/mockito" revision="0211c64d5545015d76acda90d6013df67ec9124a" upstream="master"/>
- <project groups="pdk" name="platform/external/mockwebserver" path="external/mockwebserver" revision="d680f43b995aae01123ee6bc7adb690dafcc47fe" upstream="master"/>
- <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="68d0b5790fff5243aab59ae8108d7e69506ac4c4" upstream="master"/>
- <project groups="pdk" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
- <project groups="pdk" name="platform/external/mtpd" path="external/mtpd" revision="dfc7f34c62ee40f5ce47e0942021f96f62f937f7" upstream="master"/>
- <project groups="pdk" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
- <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="4b114fa241df177ec7fc36132d3bec20726c4f5f" upstream="master"/>
- <project groups="pdk" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
- <project groups="pdk" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
- <project groups="pdk" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
- <project groups="pdk" name="platform/external/neven" path="external/neven" revision="7a1bb8b2c5dfd9703c93a2ea09245091b14a92ea" upstream="master"/>
- <project groups="pdk" name="platform/external/nfacct" path="external/nfacct" revision="3872c41d0bfb0dbe6c37ea5db5cc1e1d7a0d7971" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-pkits" path="external/nist-pkits" revision="e79665e3657171f55a979ca558ebe3c3dbf108d2" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
- <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="60e126f1c096b20d4a3685e1de1147b6595e9012" upstream="master"/>
- <project groups="pdk" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
- <project groups="pdk" name="platform/external/objenesis" path="external/objenesis" revision="30c85e8178b11799cf08ad21339f52eaa787a13e" upstream="master"/>
- <project groups="pdk" name="platform/external/okhttp" path="external/okhttp" revision="b53397b37a05fd50529810c726e7214cdc5b191e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="6acb1f4a6e68f80b1cb0182f3d334dd8607697b5" upstream="master"/>
- <project groups="pdk" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
- <project groups="pdk" name="platform/external/parameter-framework" path="external/parameter-framework" revision="aac080ded4d4d645bee26777f0a419b9a8a07880" upstream="master"/>
- <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="97f96c13a5b0c22e9827279eb0dd38e9c889f244" upstream="master"/>
- <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e4e9d1b6b387072f9071f896993a9cfe5481ab4c" upstream="master"/>
- <project groups="pdk" name="platform/external/piex" path="external/piex" revision="ac5a3090cb5b5c2aaa7e1c68c9a68fc4f5a38c26" upstream="master"/>
- <project groups="pdk" name="platform/external/ppp" path="external/ppp" revision="7e60466a0009f58aa09b60bf6dbb96cacd6cb829" upstream="master"/>
+ <project name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
+ <project name="platform/external/libmojo" path="external/libmojo" revision="d84255cc8594be661090ce2535f17a44f80f9916" upstream="master"/>
+ <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="46fd80678f5cd545e30daab588e88bc91a43ad19" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
+ <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="9e09f14b95885b73c72533a32b4ec86f84a36428" upstream="master"/>
+ <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="1c3e0db7d701d8bed90e9a65c0d581552912f8ea" upstream="master"/>
+ <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="ed2f4fe16617ec81b4cd906e681051ff0ae9d3df" upstream="master"/>
+ <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="5bab317e01c15cdccde1ac550aac701f436518a6" upstream="master"/>
+ <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="aecd1e10da5835a2714ba212283d04549b5543c2" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/libpcap" path="external/libpcap" revision="7b7f0b469ad512b9b5c759344eb0663e7c2eb191" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libphonenumber" path="external/libphonenumber" revision="6b5ff49a91b66b137b210e4869e980d083683f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="772123003e7fb8268251b418f559f71d8d4c202c" upstream="master"/>
+ <project groups="pdk" name="platform/external/libtextclassifier" path="external/libtextclassifier" revision="5e5fa7f6ed116972ebccc123c2e49427a882f4c5" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="dfc348fb2bf782fa558e4aa67298305743a63386" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="328ecd4d5f69480e18eb872759a41b7ec7217283" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb" path="external/libusb" revision="a439e228525c22a7a38ad26abb3e6d841612f7ac" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvncserver" path="external/libvncserver" revision="ed7c226e0c0c22704da70c2cfe85d8a0043a3ca0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
+ <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="811c563cd84877f5cab826756d977be33789c96e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvterm" path="external/libvterm" revision="a70e1c33cb5e1f298de2affa000950123656c4f6" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="6512e6efc03fa3bc9a1d708ae042fc33d0cab85c" upstream="master"/>
+ <project groups="libyuv,pdk-cw-fs,pdk-fs" name="platform/external/libyuv" path="external/libyuv" revision="018f68e1c2c6a2a7e1d8bdd33c4df444d4a8e552" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="739c390a918655fcfe689e8c1f0737a9f117038d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/littlemock" path="external/littlemock" revision="4dd43c74801149ded3e18eaba7d43ff6dfa192c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
+ <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="dc848d20803a93ae04e836185fc82b3e38ea0c3b" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/ltp" path="external/ltp" revision="36ef68ae9f9386cb99540726a8d73aaeb64501da" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/lz4" path="external/lz4" revision="d563c459a3290de6e72a05769bb34b6cc87e67a3" upstream="master"/>
+ <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="45d1ce03842801b212647d177d9a6c21726b80af" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
+ <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="37e2a6912ab36679883d241375cdd774372f6ebb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="2ab56bb4804d4afc99ba6845978c8720068a5aa2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/messageformat" path="external/messageformat" revision="7941896999a8a623683b888fd39095f32a7f49b6" upstream="master"/>
+ <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="2acbec5a9a8b8c3c9d0eee268af7121e31d0cb63" upstream="master"/>
+ <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="5677920e65b7b1504aa355bece165f1d67c05a1e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mmc-utils" path="external/mmc-utils" revision="f105db5bd1934f0c3e5f74bbc9a5aaeac7a6bf2b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/mockftpserver" path="external/mockftpserver" revision="a98e55fca4d6aa55549f8c2c80034f2d04118cf6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockito" path="external/mockito" revision="ddc7186be0a984376dccb13ab3850787abe8e821" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockwebserver" path="external/mockwebserver" revision="2440623105409d48ec0a3717bb6f3da711a0f15d" upstream="master"/>
+ <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="3df5466891f819567a709d03f08ac340bd678c48" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mtpd" path="external/mtpd" revision="cf7afdb28ea47ebe8a6b298a03cf89ba06ca333d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
+ <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="dd38963ae7d67e64366ad8345a6ce072854e889d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/neven" path="external/neven" revision="f03656c6632b57b4c52705847a7bcc96437e2ac9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nfacct" path="external/nfacct" revision="5df745ccb4ef5356a786bf63e075efd0ccaad333" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-pkits" path="external/nist-pkits" revision="fe530ae2c3d88eb5326151387028507b4949d751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
+ <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="c1172c51af9734ce03c0495c3a0a658590f51487" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/objenesis" path="external/objenesis" revision="fa27358374a5375586ac703a514860563323d94d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/okhttp" path="external/okhttp" revision="9ac02268c482b7920263e6f04ccc67d412f66b84" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="507669d9a3c8adb2b415488783efe10bf9a6b3a3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs" name="platform/external/parameter-framework" path="external/parameter-framework" revision="3b04336f88873ec4b63717035c7a30d76da89a7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="2ea2c73314f3518103195cf9250893f9e9b7dc4d" upstream="master"/>
+ <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e56ff935bcb3a395a841c069ef98c0077376d8b3" upstream="master"/>
+ <project groups="pdk" name="platform/external/perfetto" path="external/perfetto" revision="e0ccef982290b8353dcb9199a48a90b67bc51d8c" upstream="master"/>
+ <project groups="pdk" name="platform/external/piex" path="external/piex" revision="1ee57811ecdc88d3ed7b36f0c2b72dfcc86c8fd6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ppp" path="external/ppp" revision="90da8c8f15db2c82aece6e4085aaf9c116d481f2" upstream="master"/>
<project groups="pdk" name="platform/external/proguard" path="external/proguard" revision="af893cdc1242e4cfbeeb10e2323f9a689a825177" upstream="master"/>
- <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="7fca48d8ce97f7ba3ab8eea5c472f1ad3711762f" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="181a615a16fd15caa50a2e6f729456e2c9d42e42" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="9458f8e38d4fe0d58890c5867485dbbf2d538955" upstream="master"/>
- <project groups="pdk" name="platform/external/r8" path="external/r8" revision="30898dc8e86b34b7a06981c6d6c24e3f0fbc7ead" upstream="master"/>
- <project groups="pdk" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
- <project groups="pdk" name="platform/external/replicaisland" path="external/replicaisland" revision="23e53aa67dc788cd2fe0598eaf7c9f20eb93c392" upstream="master"/>
- <project groups="pdk" name="platform/external/rmi4utils" path="external/rmi4utils" revision="40eb2d785d3e367c01fc2a3d53820550e7f66739" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="797e01c269d344b03f6080d46926c91603465949" upstream="master"/>
- <project groups="pdk" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="25fa2dde3aacaeacb2797bcffddce96014f4fcc3" upstream="master"/>
- <project groups="pdk" name="platform/external/rootdev" path="external/rootdev" revision="1dd6771e0f2e7da8736c9b21603817bce0d55ea9" upstream="master"/>
+ <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="78b40ce73114edca9b97f4b8eb9cda85ffe2d24d" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="e41d4ced092815949ff47e5fcc80c367707426db" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="600f716d51b9501373f63e6081917289830754f2" upstream="master"/>
+ <project groups="pdk" name="platform/external/r8" path="external/r8" revision="223150d4ddd720205b644613541eefea2158a05e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/replicaisland" path="external/replicaisland" revision="7d9b8c6fd062bc37ee2265010eed37786b76a324" upstream="master"/>
+ <project name="platform/external/rmi4utils" path="external/rmi4utils" revision="d45cae258a3d831cd035ccecb3daa763d26346df" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="c35e9c5a25433d1e4beb65993bf8a326916fb2cb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="0fcc0daf8155d1f44eea124faa7309b01c4fbaaf" upstream="master"/>
+ <project name="platform/external/rootdev" path="external/rootdev" revision="6fab99202fdae8c540312a9d62be21246176d061" upstream="master"/>
<project groups="pdk" name="platform/external/safe-iop" path="external/safe-iop" revision="cd76f998688d145235de78ecd5b340d0eac9239d" upstream="master"/>
- <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="a1026771ccb71c69a4b31d726473feaa32ab4e6a" upstream="master"/>
- <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="f815253f7724d207b311309fd8f340b151348b03" upstream="master"/>
- <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="7e29d17754156636a79c60f7ce195039b94d7197" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="a217f56dac15a71326445fa7f6a789ec00b22392" upstream="master"/>
+ <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="9737bb84c923faa0b3dfe7cdece17f1b84d42784" upstream="master"/>
+ <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="c5c3309739e1178676139c0751f8ebdc8bcfca26" upstream="master"/>
+ <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="4a89b6358fa43dc1ec61d5788896c15be79d8abc" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="313d3399e181bb1eb213cde006896c5ed253045c" upstream="master"/>
+ <project groups="pdk" name="platform/external/shaderc/spirv-headers" path="external/shaderc/spirv-headers" revision="b252c470366118af0db2b4395217bedffb4c2e01" upstream="master"/>
<project groups="pdk" name="platform/external/shflags" path="external/shflags" revision="c4876e01829b8cf110ee33267bb1bad1f8ebb51d" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="740dcbc14f4bb497082890c1c4a85c0a993120a9" upstream="master"/>
- <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="d0393a27bd6c37f8fcbbb4e687ccf0bd43eb953a" upstream="master"/>
- <project groups="pdk" name="platform/external/slf4j" path="external/slf4j" revision="b4eb5f69f088f53ede0b7ee4a1a3bf2c3ff58418" upstream="master"/>
- <project groups="pdk" name="platform/external/smali" path="external/smali" revision="78cf98bb8c439f99f06f7b609c5c533a9d41de68" upstream="master"/>
- <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="03d1dd1553534e717fdff5f7bed00b67dbb23431" upstream="master"/>
- <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="1163465de6c4b6c1816de74db60b28769cf5ac96" upstream="master"/>
- <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="95ad2973de15846e1f67c5c5c30eae877afb2ca4" upstream="master"/>
- <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a7d909edd14636c8934e1b61cce563ef9d29c477" upstream="master"/>
- <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="9ebe91915ecc1ca31c074c92e4f11b7625801f18" upstream="master"/>
- <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="39a32b46137c57b816e71d73438e4fac69b6b9d6" upstream="master"/>
- <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="393e365802711fb6969858f79d80104399d140c0" upstream="master"/>
- <project groups="pdk" name="platform/external/strace" path="external/strace" revision="222ec16d6073335c8bb5eb6e738ddc2df1c2cceb" upstream="master"/>
- <project groups="pdk" name="platform/external/svox" path="external/svox" revision="7e68d0e9aac1b5d2ad15e92ddaa3bceb27973fcb" upstream="master"/>
- <project groups="pdk" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
- <project groups="pdk" name="platform/external/tcpdump" path="external/tcpdump" revision="1aa1e7ffca235f716b36c0a4588f84e23ea1be38" upstream="master"/>
- <project groups="pdk" name="platform/external/testng" path="external/testng" revision="8f2e8231852f454b5903cf886be55e9f647cdd76" upstream="master"/>
- <project groups="pdk" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="7c703a6b307ae7c3ba69429ed0c71417e507faff" upstream="master"/>
- <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="6ded547e25cd1bbc20891d9c7d4653ff8f65b59c" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="ccc219c40a820afd30ad347c0e3d2bdbdf1df109" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="513377fb55558e0b570d354398467a12204ffb06" upstream="master"/>
- <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="4307f4735e9a4e3189e8d43f7493bb677a4d06ba" upstream="master"/>
- <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="3f4a99df44648fad709708ee68e55bec9afafeab" upstream="master"/>
- <project groups="pdk" name="platform/external/tpm2" path="external/tpm2" revision="00f7bc755f76f483f6a59f917727339e089a9cc4" upstream="master"/>
- <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="75c45ed3b5a684fb5bd3f09d64cd242adcda0752" upstream="master"/>
- <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="680f240bda39c798480bef3bb36c671af1f575c1" upstream="master"/>
- <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="5a8be7ee6337367a1dcf11bdad865e7917519e46" upstream="master"/>
- <project groups="pdk" name="platform/external/v8" path="external/v8" revision="7bde41a362a5746e44e9efc2ae8d1843f39d875e" upstream="master"/>
- <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="84dd75ab14160e18d95f2f3ea6120c03ce8c429c" upstream="master"/>
- <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="0ad090ffa37b9a1e9a0063a4d4b808c6fe4809e2" upstream="master"/>
- <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="2da09a48dc4d5a3c585f897f256c2c6c5fa4eb5a" upstream="master"/>
- <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="86bc48f5ce1c93ae3af07a67a70b79647571516a" upstream="master"/>
- <project groups="pdk" name="platform/external/volley" path="external/volley" revision="3a1232594eb627e9e59b22406816648a55a3f2ae" upstream="master"/>
- <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="4c40acb97e6df4a5895877f81cde4e9c0704a95f" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="e99d2e88295130a1874890b3b118969917de5a84" upstream="master"/>
- <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="3d524127baea097e01517db9ca1362910d016daa" upstream="master"/>
- <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="14c5ecd85f3fd6a703a8bef710690246c8dd42bb" upstream="master"/>
- <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="1187a7bf7b612a8c09b70e65ea52351a1c5c731b" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="1d7192fe0d2f788f8f150899c58b86c5ff10456a" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
- <project groups="pdk" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
- <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="03e7a3eae664d9ee1862b5f152310d17ae5c7428" upstream="master"/>
- <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="30595680d975bf98dd62e3c25d16562ab33c3d4d" upstream="master"/>
- <project groups="pdk" name="platform/external/zopfli" path="external/zopfli" revision="b36f966df9e7767a6b0aeb00fea29af0c57c89be" upstream="master"/>
- <project groups="pdk" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="f402866c6aab58d8f991f1122976714caebf7eee" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="f44ebf5fcba4dc5f7021a3b72a8f26b11ae23db2" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="5950103a67264d36e0c5c65330604916e462714d" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="829ab4b9b5a97eccc3f7662f8211e608a5db6ec0" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="017df777151c838f217f526662a0c4675a576c57" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="15281a01df0a5892d818080f1df669bdb8a319f7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="d2ea93572bd276e4b5b9bd86887603a35f9a0f5b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="b9d30cfae90bd5584a8e7926ec6d938ce323e0fd" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="71cca93f32991989369fef6a7ba1a96d6010e7a3" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="3d53a93c79beb608ca52f7e1ffbf2fc7d9c3722f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="6450225f3eaf865b0838e84c4656f6dd6048d87b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="d4a35a67a35e8dd2d03818e0cafa6e0271879b87" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="d9ead8a8b93aac3131f453526865beaff2251ac3" upstream="master"/>
+ <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="506079aa4445d378d1b8699c337436fc0c6570fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/slf4j" path="external/slf4j" revision="63b140791fbb0bceabc496bdd29e108d9597b044" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/smali" path="external/smali" revision="a0f3b5890f2775f40456cf9514124285607acd59" upstream="master"/>
+ <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="462c5b2ece22a176d8f7ce81e7321a877e891815" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="a2f81e8e1f8c67a888b0e56dfc2f07e7e2030575" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="4c1426c96fd8848540aa903069b04afd29364ca0" upstream="master"/>
+ <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a5c452a7a5c5fd5648926eeb6d09085d428e6c77" upstream="master"/>
+ <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="cddc2024e95c5601bffb7878ed352b56ccd55747" upstream="master"/>
+ <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="7ecbb7ccdd9049fc30874fc89fa6813dfed0b365" upstream="master"/>
+ <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="096dd9a722334f14a48b3888390c4d1c6d3ca1a6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/strace" path="external/strace" revision="0d1c7e2b48b1fc2437f02ae25451dc2550e3ab3f" upstream="master"/>
+ <project groups="pdk" name="platform/external/stressapptest" path="external/stressapptest" revision="ea469443e9c2cd1fda87188df2b1ffe0e30656b2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/svox" path="external/svox" revision="1416c244af01c9b4b1952bae1b84c6a347a68b2f" upstream="master"/>
+ <project groups="pdk" name="platform/external/swiftshader" path="external/swiftshader" revision="0781219b0b2e38ab4ee4dfe24b038052cefcd61e" upstream="master"/>
+ <project groups="pdk" name="platform/external/syslinux" path="external/syslinux" revision="76d05dc695b06c4e987bb8078f78032441e1430c" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tcpdump" path="external/tcpdump" revision="5c80f87b56474c42c598880611a29ae013bef07a" upstream="master"/>
+ <project groups="pdk" name="platform/external/testng" path="external/testng" revision="2d09ec828c313edd6f9f5021c9b166854d742521" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="72ec97a21e4dc50c1e247c7bfeb285475fb90036" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="846573ce25e334e2709b3b4d7c5ab39d0a2b3bec" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="bd3c8f83c2149b809adb54dcbfd430e49a008bed" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="2b6bc2052f4a70363ad8660786b6c1077671cd9b" upstream="master"/>
+ <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="18caef1edd870ff3850fe2c417bbcec00c2ba7e0" upstream="master"/>
+ <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="89bb822f3e268237e8f31eb7276f72f58d616f70" upstream="master"/>
+ <project name="platform/external/tpm2" path="external/tpm2" revision="0cd05a180254e631b783b3100beecd90bb93fea9" upstream="master"/>
+ <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="38127ca33ab9436168c8595ee02233b1dc694a71" upstream="master"/>
+ <project groups="pdk" name="platform/external/turbine" path="external/turbine" revision="5ce188f8133ddf5bb8b598857b287255cffd8f6e" upstream="master"/>
+ <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="aa5100a5dfae7ac21df1ac13749faa55cf9f48df" upstream="master"/>
+ <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="efe8193526dea3b430aab4cf6d9a6c3d280ea5d3" upstream="master"/>
+ <project groups="pdk" name="platform/external/v8" path="external/v8" revision="37a3083841acc8d69e78889991dd4e6092f77445" upstream="master"/>
+ <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="523778cf4342740cca740f6756a204b61bf268b1" upstream="master"/>
+ <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="936bcaa501354e5ea008aa3088fd3852b49e418f" upstream="master"/>
+ <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="be06b8069e728a56f4f801e4748569a5de6cea06" upstream="master"/>
+ <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="737bce336c208129af1947ab22bdd964bd7ebb90" upstream="master"/>
+ <project groups="pdk" name="platform/external/volley" path="external/volley" revision="2021ca6a6c3fa80646220cb97746f0b1cd3ae103" upstream="master"/>
+ <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="727ecf10b5c219bf14c82bd1e58d856861f0cb86" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="75f26557017b2859b054802100a334552d3497dc" upstream="master"/>
+ <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="60c71f62eacd925c491863be665dfea23331a6f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="f7bcce468f1c1d8b2ba61744c305b29f46ce34e9" upstream="master"/>
+ <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="46d28ac44a242d84d610a294a640266d3b0e033b" upstream="master"/>
+ <project groups="pdk" name="platform/external/x264" path="external/x264" revision="7bf0b975cdfd5692a4598ab09e1258abe5ea5fff" upstream="master"/>
+ <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="c79d4eae757a81270915c2a7cf01c81b8d42785e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
+ <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="eb4f490242a36248365747f532c12b6621009210" upstream="master"/>
+ <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="3ff546926898d7d12b0b3915e735d1b9306e2076" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zopfli" path="external/zopfli" revision="f1db9c86a449024aadb8664e648227502018ac0c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="16f2c1559c5722a6cd69fef3c17dc5756ba73fe6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="a47e513464a473b135236df41a88acbf1ce460e4" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="2f3380574eaf140c22603d061d5576e8a874b33e" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="f14c19b75cb83750d70b87b3f766551d228931cb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="b20cc6ffbc544ca65984f332239bf3eda03142d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="0bb88fe21d26e675ceaaf455b46e74bbef5f6e03" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="77dfa2a9b4c5acafa45d7f09bd95dc44da54fc4d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="61ac1cf55fbaef1f72cf38de6fd135597e8f2f16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="26886917cc4b1e7b5daa1de182adaeb56ceb4a14" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="00cee902ec6ac3d80f3dab80097dbf13e0a475d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="afb74c2dfc474e50b2a0d3e7fb0ccba747681953" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="625d6a8cd8e093f85aea394865c970997ca33767" upstream="master"/>
<project groups="pdk-fs" name="platform/frameworks/opt/bitmap" path="frameworks/opt/bitmap" revision="a0d4e3108663202564a6833b76770075b8e5b767" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="991e0444ed6edb1a77b0feae73c14e2a886cbf0d" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="886d7d1277b82347c30ec5d79ba1576680947bb8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="02ced36ad1e062e79397296ebd1dc760870a4e42" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="c1d5eb2d31fb6a74ed129722754139c759aedbe8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="5348c906911a9ae65b165023e9e4ce45eee05c02" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="9de9c5d49aaed7083ae886df6c61750529e51751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="3f01563afad6b3d2f0546a6260ef958a8173deb6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="27b256c8555b93cc69ca962051a8fe12b769efdc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="578f24e997333479fe5ff697d65e994033a62679" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="433cb3227c83234b2c58f3a8cf320bb441163daf" upstream="master"/>
<project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="92eede13edbf22b501edb9aeb92366f91eab9781" upstream="master"/>
<project groups="pdk-fs" name="platform/frameworks/opt/inputconnectioncommon" path="frameworks/opt/inputconnectioncommon" revision="3baece9b20fa480da46d860acd7320fd9eee3386" upstream="master"/>
<project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/inputmethodcommon" path="frameworks/opt/inputmethodcommon" revision="990fcb1a6dbb5d1204cc8ec86e4bc3f691f4aeeb" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="264bef96c82961029702fcf8e12b0fddfa0d09ab" upstream="master"/>
- <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="ff0979256d1a67a62c726d6fe15264c496990605" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="2e09c0ba8a11ee629a85582413598c60cca09e8e" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="75f798a125721ddd046389c052eaf9c6ddf44575" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="c0793686e13dafc2f45b0ad3e079f707938c6534" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="2cce48fde424bd078f024d5ddc7c564ca1161e2f" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="39443c82847983e81fb08422b5cf305153e9e4c7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="e344fd847c154f2d0680bf1089390326d634d847" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="15d297d8ac4664e4a491448d9c15158ee51714f9" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="8901edffd17d9d5cdcb7d09e4f94aa3b3ecc71c5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="684e045dc0efca4d5a8f0ed4b28036444ff9385f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="35975286092f329186f66cf346eb6b0dff3c2e61" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="7bfc4444b48f1f046d50fc799a3bc64fc8e3c7df" upstream="master"/>
- <project name="platform/hardware/akm" path="hardware/akm" revision="7889f98849ad3913586904e00d91b32cc0ceb75b" upstream="master"/>
- <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="1ed4bedf4af755edc61bccb8f468a0df008dcf1f" upstream="master"/>
- <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="5c73d53b0f5ea0e9259c48f40dca3ca9e58dfb3c" upstream="master"/>
- <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="89639347f950e29403fb78513fd6ffb75bf03942" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="218f0d6bc9532d0b707ea325fd96998249fe47bf" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="a644e4f384a7bd2afa4460da3a9f7951e9fa205e" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="9d15c1c031fdf9cd4fa153e76245d7a5f8b82ed8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="feff90bd79e7152d06f4275c30209af2826ae8ba" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="ac747113d4f6739b1462ca7fb40f2091691e209b" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="3db8bb9d44eef64553a88fdc2698ef3b593c49c7" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="6b9b06d89fd0e01037d3138c71886f2c315ae9ee" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="760b9713c84566e6a3a39d114d346d20389f47a8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="8c2ae7ccfd78fb4efaf4c0c61a697f2075584934" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="aed9716b5467e75728f761ac75a4ba5ca3c51ea0" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="7407927b0eda431b7d817cb9d78189f335f509b1" upstream="master"/>
- <project groups="intel_sensors,pdk" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
- <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="6ef70c9040773aa501ee54b54efc15a7ea61b25f" upstream="master"/>
- <project groups="invensense,pdk" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="7de0e9ceae69ada80a6c5a7b4c0c3bbdd83e012a" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="483a68f68a3f7f115f8909d663e93edaf89762f5" upstream="master"/>
- <project groups="marvell_bt,pdk" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
- <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="ba9bce36176b05695bd042acadc4a254ab911872" upstream="master"/>
- <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="6007fe6af3f7eb0c6b5fc3cab3c0f0cf5a7b50fe" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="5e2825785169ae647e80ce48ac814abe2ca57532" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/camera" path="hardware/qcom/camera" revision="383b6cb93b5952c2a87b3ea5ce2be50f006dd395" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="cc379d116231083e1b804fea9b0ef52d9e105ae1" upstream="master"/>
- <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="42ea1de6807fa5885f18cbd6c5fd96f80395fcea" upstream="master"/>
- <project groups="qcom,qcom_gps,pdk" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="45c0574442a01c2f6a9ccb2044b6f30c7ad288e4" upstream="master"/>
- <project groups="qcom,qcom_keymaster,pdk" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="3587a1a811c7baa8736d6cd54b8895370c4bdb58" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="63abe022daf627edac121f5c389d7f660db547ac" upstream="master"/>
- <project groups="qcom_msm8960,pdk" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
- <project groups="qcom_msm8994,pdk" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="60aaa00b2e0d537c0f51631dd88d919fc1baf439" upstream="master"/>
- <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="c552e34d90d0ff2b69660943c2060f17b5d59eb9" upstream="master"/>
- <project groups="qcom_msm8x26,pdk" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="5c60d76743ed98e7082b7f72927c17a7b86e0218" upstream="master"/>
- <project groups="qcom_msm8x27,pdk" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
- <project groups="qcom_msm8x84,pdk" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
- <project groups="qcom_wlan,pdk" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="ec9deb6e65d7c7816083d925255bbaefe16e4778" upstream="master"/>
- <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="78b80ee72d80793766a4ff91f1c11f96553108bc" upstream="master"/>
- <project groups="pdk" name="platform/libcore" path="libcore" revision="6ea6973dc177bb57a4558cb6203b4b27a20a8d1e" upstream="master"/>
- <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="9af782e03d4f2e736a85e2a7d645e68f865c53d4" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="0aa0611f9c6775575da56a1746fef1cf68267b0e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="a13d5ea7ffaa26b6def0928cb62177009e375373" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="ffc5f72f39de7f9bc956ab29d087596d0f55ef70" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calculator" path="packages/apps/Calculator" revision="e1bda28f1545111ba7734577f23e194bf3db3f5f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="2bbf7b8414ebcff2207b08224d8913241a766a5a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="8690a7317dcf64ece731e0f9e5fb2cdfb123b115" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="46d5820744888866cab227b38eaae21b6f93a39a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="dea5466530b3e1941aa83a556dac45490f12a85a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="7562fee50a9db5afa94786f1d3acb1f0452e3ea7" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="41e553f6ec13e860694a2790cea82a4300b6703e" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ContactsCommon" path="packages/apps/ContactsCommon" revision="c59284acd9283f2274fc18fe69ea9d08cf1245d4" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="b89bbe70df270c344123d7ce2bcecf1a84c399f1" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="85b25ee8ce0c5d19b53963c985869100282b55d1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="8e49b42b6fde177fb242da12bb05365ef03362e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1239cd59a0f4dfd0a96e1a83b8871bd2b18358c6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="b7282555b3b99fc9aa98b6c807662fa096c80e3c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="7c359e389457d7cb7cd4f696608355beb3fa13f0" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="ae5a3067f51cee6cfeec73d56815892bb3f6c4de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="5ffe93060777b92f221adbd0ddc67b9479852d80" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="f19c4a10890cafb17ceaf68cda835dc24aad455c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="64b7df195d2bfdcc41579e9ef5f3b49afde18116" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="44c1afdc7fe9f4420933ad0c9fd824931179ca27" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="7c35c64a9d5ca913fb160df63c033000915639f8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="a26fc3fd03f45851807a7f45d70817f6c094d0e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="2a68a11b2c9156f9f9747fe0b974d0baca157706" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="7b2c6ed6a50b10b698f0b0251ac3a9b532432d72" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="75df705a0f4e7f36050ea68fa8695325f2a691d8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="035fa0123d87b48554cbd294ee9681b25eb7049b" upstream="master"/>
- <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="af45ef4f1a786a3f1d23e9319dcb14eff0673868" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="01e429c08e51291315890de9677151a7e0b6ad35" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="0d467d56ce68a1bc26d721a5c3b9a6caf98aadb4" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="230c0aae03841b1147e75bbd68dcc4feacded6f6" upstream="master"/>
+ <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="236b6f319ec913b241591f69d45684e8173b6a5e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="07e4fc6758c6c8053dafcbd1bbc03b163647081d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="e436be523fdfaca40084c68d729f74e97047a747" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="ca71bde33a57b9c0384fd185aabe41653806666f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="eaabb4f5914ace1a775675acc4f6d73a3ac5f9a2" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="0e454d9c78888ca761caa7069f5791b29db78afb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="34864043247588c0a1cceabf127fcf009ee74a9f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="8ed59aea836a09915c3d8cbf639627ad4f8120ac" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="61019c7e42067347dfaaf42f9475af5d1413dcfd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="cfa630e5921ae7bc64114b07047e0822ef9ca0fe" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="f205dee72d0bacf11b373c1bdaa4dcb049f9bdea" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="29862d783a985bc0c46de45253010b8ce4e0ea7d" upstream="master"/>
+ <project name="platform/hardware/akm" path="hardware/akm" revision="dabf66d32d1b1492e668f595a84b5221ac67e687" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="50b90f45144aacb1f67c9c18993be9aba82bc747" upstream="master"/>
+ <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="76e992b379e7d7fddbb7ea17c29b4227234f50c5" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="063c56133a805ce2e6ee65c35c30b76cfd25d997" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="0e60b77af3fa70393ee9fa0e80811d1b39c5f6fc" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="550aee8200015a67e32a5eb9d8d1f438f2028331" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="bfc9bda74643eedd4414e996d2a089a36d9acb24" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="2901b4bfb210c1c644e44f214fe7a3b825608da7" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="8cae226f534a504f385084d1b04f4af466a16990" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="34bb282eb4b4cf0bdb9cfdeb85d59f86e220e85f" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="8712cbc7851511b4aa61d1544078c8a9521578b1" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="8309367a3ad4446a1e2f07779955bc043ade8deb" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="ad2a78606b8c3fc85667f26cc46d5f4291badd55" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="333777baeae5d75efc1afa6719302ac5f93723dd" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="35ffe308d254bbc6213929935439510c3bd252fa" upstream="master"/>
+ <project groups="intel_sensors" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="31fba8cd408244be40c806f0e1d25e552e3890fa" upstream="master"/>
+ <project groups="invensense" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="ce1ed062440baa9037775c63f333c319fd7d67f4" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="53401d7c35cb7cce27d9f7f81c673f8be78dc56c" upstream="master"/>
+ <project groups="marvell_bt" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
+ <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="545beebc5add1dfd95dd9f6ca1539cd38920692c" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="483ce31f1ef6f45447445825abb958984c306f45" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="d7d7b9e56781fd49566e0b5e4097a6d75c52cbf5" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="5b5af67d19baf862f5a8d6a7226feb630ec2f81a" upstream="master"/>
+ <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="0a0cfb1377fde5a0bc5be567f27e3c3959e96417" upstream="master"/>
+ <project groups="qcom,qcom_gps,pdk-fs" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="18f5098237a20814c5c9943c4e96bfe1eb3526ea" upstream="master"/>
+ <project groups="qcom,qcom_keymaster" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="4428c1f0c0a9559870f976093bf7ed0ec8b4d0c1" upstream="master"/>
+ <project groups="qcom,pdk-fs" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="ad8d9a435b4fc96ce022709d47d9275c6db6ab4c" upstream="master"/>
+ <project groups="qcom_msm8960,pdk-fs" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
+ <project groups="qcom_msm8994,pdk-fs" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="76e6a531822718a6a9e8019e8343cd398492815e" upstream="master"/>
+ <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="f81ef30068fb7ef1dfb772ffe69b5cd846e81d9f" upstream="master"/>
+ <project groups="qcom_msm8x09" name="platform/hardware/qcom/msm8x09" path="hardware/qcom/msm8x09" revision="cee67f33014a0d25caa53a515bf2da11225880a9" upstream="master"/>
+ <project groups="qcom_msm8x26" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="master"/>
+ <project groups="qcom_msm8x27" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
+ <project groups="qcom_msm8x84" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
+ <project groups="qcom" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
+ <project groups="qcom_wlan" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="6c71dbce7a5b93982abc30d2bf4245247cb34efe" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="9fbd65c441ddcd5b51ea5a57a91bd4872a5f74f4" upstream="master"/>
+ <project groups="pdk" name="platform/libcore" path="libcore" revision="e400ad78c4705ebbb6afc6c16a6b1f03bed437c2" upstream="master"/>
+ <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="dcd3d3ae2171bf4e241ddb2d43808892fad7f2ef" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="d039943180c9cb8210d66d5e6bddfbf26ab70e17" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="7f90f9168fc412e9a79d4e8609a2c96c32dca133" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="9180bc72bcaa6d28156bc65ad2caf62aa50fd1ac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="956525423e51315015d6902e3b9487e72e9f4885" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="a4cb3c1c2d6cfa34a462bb04b38dca2eab7a62d7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Dialer" path="packages/apps/Car/Dialer" revision="732aaff8cb379728ea0359ea8cf913078d3534c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Hvac" path="packages/apps/Car/Hvac" revision="58772162c56dc8f893855e9fc27edc34a8f2bcac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LatinIME" path="packages/apps/Car/LatinIME" revision="22e301a603d844c0ef92e9cd95c721d6095ca19b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LensPicker" path="packages/apps/Car/LensPicker" revision="d509b2dfcbd4a51d28c496bd2f3fd8f40f42528d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LocalMediaPlayer" path="packages/apps/Car/LocalMediaPlayer" revision="9305871fc0013c451f33e56229507be0a1e120c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Media" path="packages/apps/Car/Media" revision="5cb58af61618d6c457685a5feba630540f25567c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Messenger" path="packages/apps/Car/Messenger" revision="22bc7d8f0b1a18737e951ff3352c089670cc7ab3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Overview" path="packages/apps/Car/Overview" revision="f6b3e8ba62d070b0870eb9b0e70aa34bb7c363a9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Radio" path="packages/apps/Car/Radio" revision="f5bdd9d38dd23ff55fd0fc7f7209d1ad28705f87" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Settings" path="packages/apps/Car/Settings" revision="d19f034f4211ce0d55bb38936e39c60b13bc509e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Stream" path="packages/apps/Car/Stream" revision="c19ea2d878bf135e36151e6d313eee8b1b743184" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/SystemUpdater" path="packages/apps/Car/SystemUpdater" revision="3506f3f39a1328465009ec080a741373b338bead" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/UserManagement" path="packages/apps/Car/UserManagement" revision="9391baedbf4ad645d7c125279a19d7a2b6b285f9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/libs" path="packages/apps/Car/libs" revision="7901432126584be2601424b0969092d0d1374c65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="28582d92cf380d431505fe9103a3ca99bcdb34de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="8cd439087aab7e0c3d530f0678a4944b697602fc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="1c43ca95cd444163e69e250f270714d7ba4cffaa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="3ba72351ae5bc808f86826e6d35bc6baee712d91" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="411d606453dd34b76a7af12c568872e6f98ffc86" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="90fdbf7460fbd255194455331c6a38a7b8f41dd2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="69ff7c1717c363027a79a454da91e1ca59c1dd3e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/DocumentsUI" path="packages/apps/DocumentsUI" revision="4501139b4ac250e5437007dc7f92adcb1068565f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1b70a229c444d3e893e6309e5191bb205fb1dcef" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="4877fa47dcb0275079b802054104811e4fedb9f1" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="9354ca48fbf8e8ea3372d01d024dd917a4c6f553" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="005fec50c2e22be3441ab9415ab17bd64bbd6b44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="65cdfbaad6c99efc1671510daea762a0876199b5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="e3269d171111f474c9240688c3da62e26f6a2093" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="1e1f4535d86dd49bf23108eb1a4c3d2543fc85fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="0269d850997f5d8c8f82d2f94a8c648ad0cb1543" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="fa5511133a6bf784955042966162e8635ab5b930" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="b717e128c1835dcee7efdbeedd5adc6c371f0b61" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="f1dde3461ec2d47adfd49a6752770ca654410b2d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="3fb6abb42199b98a23a6e0569b83519919f9d015" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="033375b60c90a9ecb1bb12197f978e31f95419bc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="e51ca133f48c3856d14a6f3230bd4f52a7a1283b" upstream="master"/>
+ <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="cb4361e698dfa069926a8e4293db933860d49483" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="d2762cc94e5ea13cc13b6665101220c2ddf06110" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="1677529d348d72daa1531ff5c1f1e4d5cd9ff19c" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/apps/Phone" path="packages/apps/Phone" revision="79731f02b7009206a01182d2cca15dfc8491da09" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="f962ad993640d79dc1d76494650cf6d3e83ee6de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="d686dc74168ed5324b2388133531f30255659ae6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="077fc59dd26cdecdfe2ea3af614291b103faa7e2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="b17f4ddf6719faef79535c76ea6af84f5009d4a1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="66244a5c528afb29b1a88aa788770063b91c89b2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="1e01c3e1bcc0ed83b3676e1d5c0b75d5ed873391" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="3a2e327741cad7a38cc91626f921af28a6307cc8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="5f67a8eaea9379d7fce53db77e9ed7b47e49f1e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="4db997871e3f4c3f84660815096e5276b47c5c91" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="742f2254b5fd8b8239724008dadcdac7debfe1c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="1e5d8a500dce6530a99cb952681889042dcfb63a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="6b2548213a9c7cf93ac9dc32f8b82db4ad8e9c4d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="5f6197edeea02d084a1a042374b8f15e7ed5131f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="bc538c50dae99678584ff9e2aff60ee11a78cb44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="e69ff22ef6c1ad43c5ff876b19fc492c94d4fc12" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="c4b0fa585849641f07ecfed395db3437eca27dbb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="ba7237540f779f1c7e67ae7a36aa7a63da8eb1c5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="f47fff0421153f4c20d155df8d0864a7036bdb06" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/apps/SpeechRecorder" path="packages/apps/SpeechRecorder" revision="51cc8462c082a26810f5d7c5a2648232a77e795c" upstream="master"/>
- <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="528f2dc222b43972fe7a019e7daa4f81c213fad4" upstream="master"/>
- <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="a1c249013e65ec1fc38076cc29830c4367c8cace" upstream="master"/>
- <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="7416628255cd3c95b6ffecd331fbb0add9c1eea9" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="60102ca02f1a93af59cc479f2a80a40a382d668c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="8ba8c509c8408b55083739e6b3cf3db32ca7606d" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="79ccd3543999c1cc8ea211ea54384a9096b693a9" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="f3a394eeb3408415314c4e816ef4638904940a85" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="ded915b9ea8908b1d72426c17003428b82c82d8d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="9648d6bc0a106576927264ab580e1a326fba920a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="a3efe60e6b9e0045eef5f88491bc966868357300" upstream="master"/>
+ <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="4424ddfba1e07a4f749dc1a6233d87c9a1206df2" upstream="master"/>
+ <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="bf23305b3b201f91d9c06eafa2622b058ced93dd" upstream="master"/>
+ <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="0e0082535dc276086ee61ac156581a20e86609e7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="4ab03e1367fb23d75f1197a98c7a52dd3e3898b9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="6ef2b729b4e4ac070563efba29fca2b98ba09e56" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="b36b2efb68a392aafba13a2273278c155f9f9a28" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="bba3dfde202b7483b1e430d75d49e0389d42d644" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="4f154a7d574963466abaeded961b6c5f427a45fb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="51fb032a154fa756327c5dacce6a2540b1196c3b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="6087c3f339a76e9033f6c2991ef26d4401743429" upstream="master"/>
<project name="platform/packages/apps/WallpaperPicker" path="packages/apps/WallpaperPicker" revision="969934f908ff2ddda77bddbb80f206daf6a24281" upstream="master"/>
- <project name="platform/packages/experimental" path="packages/experimental" revision="e24ee92653e28ddf0020ffb9e5ddc99931117674" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="bde4c9a8dfa85ca71f034c371908358bf61a74f2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="59aefa242169b7a51c2381daee58ff22fd1834ce" upstream="master"/>
+ <project name="platform/packages/experimental" path="packages/experimental" revision="f664e1fad87d06f1ad738549db049011c84ca787" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="ad5da5881dcaf3a1b4ec0cbdda51401460b6e37a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="85ca997d8265739e94b5bd9d19460c9b87b9ec59" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/providers/ApplicationsProvider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="3aef9aef553a126b57fa9d7c271bf82abdb8ca9f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="3fa85d57a81d2cdfd08465d3dcb5e7ad4ad1f7ca" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="8da754fcd166e11363e4d031b0c42f2abe92238d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="8d79e5e0f0673f20aff55fdb6ccb297bdc509387" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="44c11b854e615a007eda9760f9c9d0323c9c73ba" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="ef033b3587853368d947c4d849eb5d6818cc612a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="654f73a379a36e5f4cdb2fc4cdfbc06971bff212" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="133b4fb575d32b7e2e887e2d1d6a9e6877b54440" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="22a5cfb7b166ad972c73d171a078a0932587bd44" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="374df0a9f8c1b92b1bdb7572f30543188c8c7a1c" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="12907529afb603d10bc133e808728cef12e5dad6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="e72ef139782ca896dced7524abe7cfcc9ed35db1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="a9c5d50340fcef49034add6766576e4aab7d1168" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="aa0b531d60d27409d304d7e8bbad787181be4831" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="bf198c8c5cd3e128046a3f712709690734b61f43" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="1e487cd116214c0df34efea269595352b757e4c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="df0624f9cf6274ed67c70ef0d163aa27ad5bf2d3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="18a114896c47de3a2c29b5731afa658c57ca353c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="372fcac69b5033bba262ce871f4f54ff1dde48b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="428574d247cc821825721ca7fd3beb77b5e8895e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="9c4e2ffaf6344c6c6e3ec5884f29dc7999bdf363" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="b65323596e512b84fb9a5601e9a83d442ed9a2b2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="a22ab1935b10a91ac9eb9606d27f4290c5659894" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="ef263aa8c0557e3aab06d11c8914b53b59ee8e7e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="2d9323d2deeeaa720cfb35d15767dd90a256b2c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="f27f650d1184819984e47ecbd797ccff162c0eeb" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/screensavers/WebView" path="packages/screensavers/WebView" revision="6e0a80f6faed6191acc8ce1b6c79eada09e9e042" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="5bd17d4644dccb6cd5e23c95490ea925082d42d3" upstream="master"/>
- <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="b296575311b20808849701f4eaec4305dd17cc27" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="dfa0e3116b3ba72b9c2f308d8d11bc6ced6ad23b" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="87a0ebe5a071130fbb5d5117806964f4e8bc1a77" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="bc7f1814b29fcbf0c86e7f135393c9449ae7f344" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="dd18156f656ec28db6dd6a79530978c8ea99c15d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="313c31a2d7ff12d4f78d11458d8b268a5fe97d9c" upstream="master"/>
- <project groups="pdk" name="platform/pdk" path="pdk" revision="708589163e790eb3a7fec09f4832a0f78999bdf3" upstream="master"/>
- <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="bc78d219b148df89a1c1d91b29cae35c1156d696" upstream="master"/>
- <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="f36d67e0b8fa645428c4ebf6f05c2974bc8337d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="911db0bab1adfab02e551fb512e7fac8f8dccfe1" upstream="master"/>
+ <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="7a3f3ef53ec1541bf28f4b91677265ab353fcf6f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="7117bff6c1186110a6381c49b7eac3cebd3d23f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="9264ab18a037a78501f3ada2c1f307c436dfb8a1" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="dd6a7b317428252fbf0892364160656a2991c952" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="e4a7a8c5f21c74ff699eae449816fd0bc6843afc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="5afd06f0764ce8afc99e641794ca3a57bdf87c2a" upstream="master"/>
+ <project groups="pdk" name="platform/pdk" path="pdk" revision="c7bd144646f9e961a7ee5f10a0105d21f5bf8ff7" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="0606a72fb0360c96af13b9917e1248f9076e8f95" upstream="master"/>
+ <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="93ee4dea555579076cc5313e04ed95cfbb0523cd" upstream="master"/>
<project clone-depth="1" name="platform/prebuilts/abi-dumps/vndk" path="prebuilts/abi-dumps/vndk" revision="83a0ec4746ab945004a9e71f2253d5fed8a4cc75" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="3a47dbd8cf86afe7f72d48902a342a7894d9570a" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="f537089a258a89539154e8f3932f4c8bd1bdde30" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="5bebe70905a43b398bdb04a678bf6d50a2c4452e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="c052e7853ea000b972d163d1774a44516b8814a6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="1050067936dffa13d6aa30a8c1479444c620ef2d" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="a6937fe75c369ea26e416d5d725a32c9c7bbac3c" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="0c7d72c96f0e9c2b7cd8d4f33875f6424ab937e6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="7985a1e57e906ce50505fe37769773983cb2eb40" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="b33aaa2ad816c217c56d9226f28b4ca497957c2f" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="dd7afac0149e22ef324a440046d7d7e5411a2a63" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="25dec9283da1c6a3c281ab0eb123c44f70c27632" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="23909177eace37bb0b1b2fae7e37113ffea7f7ef" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkcolor" path="prebuilts/checkcolor" revision="f6f661b424f646bc5ddf9e1b1e644abb492b7547" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="b591a4c55c5fc6658e17875a642bb60923ed366a" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="e992d54510d52981e0e6338d342089301bc2ae81" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="5f633876c34ebd8c8fb31aabf3dedfe7e3141aac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="d055450404768f16ac199b13e51eecb37abb7c07" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="6f0b60e8759e67828288feccfe0e59ad02170bd0" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="efa717742380a2fe700a62f3ba5b26e7fb3cf0f2" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="6d90a91b8622bd5e4849aa684598d3f4b6a64f2e" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="679f23d33d0fa540915ef8d2b72b00128bcce0a0" upstream="master"/>
<project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="ec5aa66aaa4964c27564d0ec84dc1f18a2d72b7e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="c3b7a175640fc59711614c0ad5269a037e06fe7a" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f4002189c0a7ac2e9e2c562cb5d598daba5f3e30" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="89aa77dc369931868dce6924b7997e7e5f0fefe7" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="0a70ca16caa61b4591c844df9e3c70f53c88fbd9" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="ed4f6b503e1d7f2bc03d87b90084e12e33f8be4f" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="9ee4f51e97bc4bc8f51b06912767018be4d65853" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="d3566f4f19b660d98ff237825ed775289c102420" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="a332df8dadd78866c2a57f2c7348d499952939c2" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8e874d5830214083475ed5a8576fef24f58bae1c" upstream="master"/>
- <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="4a696dd19df2fee0ce24f5bdbd8ae0e03049f97b" upstream="master"/>
- <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="172e21a7c836e6086c6faae7b080a38c779597ac" upstream="master"/>
- <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="3a0d506bad18e41d9cbffd196c24d70d0c40d0ab" upstream="master"/>
- <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="3377874f67bcc7d200408ceb8b02169c4c3b201d" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="ba09d77a59458527e92a4ee12bfdf0d7ac4ae6e2" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="fa0835a2da3bb4ce39a2a07f7749553e99ba170c" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="d942564c9331f07026a8f78502d8571206eb7be4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="cb32df02ca49be4d2de4d05c1e46032abd30efc6" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="2d4cbf699c9217a3f4f0f6c82254643a0ed87f1f" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="bf4b366f48251c542c8aea15ec885f9fc6a01d5c" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="a461e1b3161b4817b743ddbfb58a3878e7985c8b" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="6e91bb7b816df8543cffe14287acbf0412f65550" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="e76a9a506d7ad132f107eb2f7c27b6a8ccb68b91" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="388fdc4995d374d76a0c4b292afabac91638e134" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="6a8906d0e6c3e18480796547e285866813b29ba3" upstream="master"/>
+ <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="0a8c90248264a8b26970b4473770bcc3df8515fe" upstream="master"/>
+ <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="4adfde8bc82dd39f59e0445588c3e599ada477d2" upstream="master"/>
+ <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="1336ba94c3bda2b2db8d6eab54036ae88423be55" upstream="master"/>
+ <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="cc0b9f5238fed2fb3b3a0dfa9cd1dd163b053a8c" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="10219421eac01ee74d80c86e97bebe1fd8e16bb2" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="d49ad92452c3ec4b859283f36372a3d12ad7a4ea" upstream="master"/>
<project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/libs/libedit" path="prebuilts/libs/libedit" revision="d32685dba4011664b590b94ad156bc734c2c9bb5" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="e1ca35066d5b3ef63b188a3ffe8cb058feb9b83e" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="1ecf5205db0526c3afb006cc43ddfc805b3ad18c" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="2b88f8ee10044fe4b77a35c9587759d992561af2" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="f8ffcaa0b464b1275af6707e931beb0b4d4b0856" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/bumptech" path="prebuilts/maven_repo/bumptech" revision="ad29fe1a1b86eacbd04ac4ab23b90f38ca099f77" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="062009ffd95b0eb78fa0e75067390a00e042e730" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="3643dfc296d3cf65a8c5d618ef56f9ccf8ee40d7" upstream="master"/>
<project clone-depth="1" groups="darwin,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/darwin-x86/2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0c5958b1636c47ed7c284f859c8e805fd06a0e63" upstream="master"/>
- <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="7bd52e8c08951d11ae4437e407c62566a1c3416d" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="263e5899e841844212c8d1b8e04fc0e52eff9810" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="c2d941b862e53bf0050a7cc18670d9340d705ecf" upstream="master"/>
- <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="3aca8cce121d427bc5cba6c355bfbfcd453a9395" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="7fcb50b6f76f57eaf5fecbb6b5a0cafcfdf95500" upstream="master"/>
- <project groups="pdk" name="platform/system/bt" path="system/bt" revision="014890b74878022db7d23be47db179ba06e01856" upstream="master"/>
- <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="e312bd5044fc07e85b8b0c21b8f21a9329ce9636" upstream="master"/>
- <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="483bd8dcfd508095113cfde82e8b79ce6e29759f" upstream="master"/>
- <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="796315a7e25212d6dc3a998405e25bc877d57cc8" upstream="master"/>
- <project groups="pdk" name="platform/system/core" path="system/core" revision="3e0b59461959cfc683fff13a42829780843b3601" upstream="master"/>
- <project groups="pdk" name="platform/system/extras" path="system/extras" revision="880d4e8574fefa3978b32eaa4d7d38abb187e7b5" upstream="master"/>
- <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="3d78edca770a570a8c4f7cf2cdc40dadcd5facd0" upstream="master"/>
- <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="13e5d8a98e919e5638f681f38550eddcaf890937" upstream="master"/>
- <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="6f4fbe1af7864aafa8236ca8e65d66e6a8974b44" upstream="master"/>
- <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="fc935cd780473b8cdfeeb28aab1b13f6b6572955" upstream="master"/>
- <project name="platform/system/libfmq" path="system/libfmq" revision="e8f31ca2381c558e9b389454c788674f1c78e59d" upstream="master"/>
- <project name="platform/system/libhidl" path="system/libhidl" revision="2a2678e402e440068bf24d012e294d65c9c0c8b9" upstream="master"/>
- <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="14c6e409a4b29f77e5ed2f24e62dc9d3366fc61a" upstream="master"/>
- <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="ea5d3f72aa01de436f8e1e5bcdd7748d255285ad" upstream="master"/>
- <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="488e16a67311194f0fb9aa4a33219af170e6316b" upstream="master"/>
- <project groups="pdk" name="platform/system/media" path="system/media" revision="9c351fa5f388fc22768549ccc512a2633263d183" upstream="master"/>
- <project groups="pdk" name="platform/system/netd" path="system/netd" revision="cf929f7cd853b68931af5ad94b984feb01917a8e" upstream="master"/>
- <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="33a1c932e0fcdb335a2d34a692307d15e1336c9d" upstream="master"/>
- <project name="platform/system/nvram" path="system/nvram" revision="48087181f977c4f75c81705361f455f5ee9c7c37" upstream="master"/>
- <project groups="pdk" name="platform/system/security" path="system/security" revision="975e1aae69f9bcdb35de5b2b8f466514f5fe4ba2" upstream="master"/>
- <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="21b4a9259052c3f311923b2d79c6c2dd79217732" upstream="master"/>
- <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="7b4b9e592d6c9010be93d018b8a7b594bf2c1ccf" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/aidl" path="system/tools/aidl" revision="babca26b0faa5e41ced0b39cb135fb181a81fa1a" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="a881c08273bc1fa518d0355f05c1827bffa69a52" upstream="master"/>
- <project name="platform/system/tpm" path="system/tpm" revision="3e1217d9b8b9d0bd549f202e5f1a528374872b40" upstream="master"/>
- <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="663ff4b30b9f629a130ef6d357d462b897d4071e" upstream="master"/>
- <project groups="pdk" name="platform/system/vold" path="system/vold" revision="3f8fa0c2155a14bab73d3d58362f5511de1b3277" upstream="master"/>
+ <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="621d405f7e4db1d7046dde53c0c6e5add3e2743e" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="fe3a2d5cc210c45a5fa0bdadbbcba268aeafe60d" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="d8225e4f0b27de6bf8f15db5440d4e5b0a3b26f4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="f3fbb60b007f7a4a5f53b822d56a151bb95b8d65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="2e170ea4622aa5d63e562f2eea78817ada415373" upstream="master"/>
+ <project groups="pdk" name="platform/system/bt" path="system/bt" revision="2e08795a899d402dd9914c3e5098c04dccd4f680" upstream="master"/>
+ <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="db524b256a637f18588c1d5ecc4a7d43cdebf8fd" upstream="master"/>
+ <project groups="pdk" name="platform/system/chre" path="system/chre" revision="1355b80eaeeb2c63bdbc72a9f883d2391161700a" upstream="master"/>
+ <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="7a83a7b6ae1e0c8d7a3ec912eafca33d418608c1" upstream="master"/>
+ <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="2211b56ca924f4a810d48fc31bdec959dda8f5c1" upstream="master"/>
+ <project groups="pdk" name="platform/system/core" path="system/core" revision="fe3551e9dc173e81649ee7b5beb2b99bd6a3d2be" upstream="master"/>
+ <project groups="pdk" name="platform/system/extras" path="system/extras" revision="5da045dc1ac0709dba6eb61b0ac305ff031ed767" upstream="master"/>
+ <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="9414ec08188b5189eb393a2ffaa039ff1fcf6027" upstream="master"/>
+ <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="0bbe268d8519aa650af4a18ed4f9eefd69e3d1e3" upstream="master"/>
+ <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="e821b67b98d0ef49cb4e34e972f349a1deaa5555" upstream="master"/>
+ <project groups="pdk" name="platform/system/iot/attestation" path="system/iot/attestation" revision="e3823a75b7569794662fe2fbc9e3ca2ac2f60cce" upstream="master"/>
+ <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="109901d94c6e3f15768f3d9e1ba32803999db672" upstream="master"/>
+ <project name="platform/system/libfmq" path="system/libfmq" revision="8d1189c9399ff6e81296383bc480b104613d591e" upstream="master"/>
+ <project name="platform/system/libhidl" path="system/libhidl" revision="0109873dcaf0a416960fb2d6d4b99029b25047f0" upstream="master"/>
+ <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="80b88ab21170f7fde645212a9f6b6d7e28a40de4" upstream="master"/>
+ <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="4446f0cb437fea5e26b645990970afe7dc4f5085" upstream="master"/>
+ <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="a72bde7d4aed9704cca946c43563ff1983eb86fa" upstream="master"/>
+ <project groups="pdk" name="platform/system/media" path="system/media" revision="f1041f736a4747e51ab5b27e19aacc7d68ef92ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/netd" path="system/netd" revision="a767c597572bd016d19a571eb4caad7a63a18137" upstream="master"/>
+ <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="210fc92332b13067c0a2c4bc234167eeab6f2e85" upstream="master"/>
+ <project name="platform/system/nvram" path="system/nvram" revision="f490436ea7b11aadfeb37c2299e4565c41ffd0ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/security" path="system/security" revision="f3147f209c9537b30041a521fb4cc5fbd832ff3a" upstream="master"/>
+ <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="c5e32208a2ec7a483d8ef9d5c292313d5c229ebc" upstream="master"/>
+ <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="5faa530d1f732db066aa1bb27943f7db3bb5e7ab" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/system/tools/aidl" path="system/tools/aidl" revision="a2a10e895a779d633ab41e3b856d6e7979cedb3b" upstream="master"/>
+ <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="768250faa6806620d97968a3bd6e8e8fc744f029" upstream="master"/>
+ <project name="platform/system/tpm" path="system/tpm" revision="06e295b58139a538745835f45ed889a30507d008" upstream="master"/>
+ <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="3b15b599299a9a5f3ec965d568ea479383c2fe6a" upstream="master"/>
+ <project groups="pdk" name="platform/system/vold" path="system/vold" revision="2890b8d21565be4349956c67261cd370e4814c28" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/framework" path="test/framework" revision="246492cf54d880214952e9cbb1ea490cbdd56f52" upstream="master"/>
<project groups="vts,pdk" name="platform/test/vti/alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="f2b98353f7db3102d6392e8f9648b22e368bf221" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="378b0e7157ea84bfd5907a72ab6089aa37222c4f" upstream="master"/>
<project groups="vts,pdk" name="platform/test/vti/fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="30d457ce6613d587901379844b9d0dfb37a67a7b" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="0a064803e1ebbfd5e587e9baf677d458a4e3bbd8" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="52d33ddc83fc9bc54c9952e74143807bb5bba410" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="6af0bde5881d2ab0366bf9479f151e5f3bbc32b6" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="94d3b39f884f4513b8664c5d3cb911dd145de1f2" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="a0a4488258c74bb0c61a71b3c4c4aacfd4ed210d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="4e5056e0f537fb17e40ad3567c52a245ce8cc33d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="04538ffdca38754da367d51ed825999727654654" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="3c8938ec3c75b4b6a4649a22d3478822ac2dedd7" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="b2b66733c0b5717736d96945e02ee2926583cc5b" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="843d09e2fcd06d6486515f39e2e3eb3d1788846d" upstream="master"/>
- <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="70067d87eb7b1cf6eb84a5c3d476225898177eba" upstream="master"/>
- <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="bd3466bb3119802994f2d149bab648af567335a2" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="53720799c7f266384c3d2cb032082a94f0730cae" upstream="master"/>
- <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="4c4e78c4d9b52a1a5c5ed11c39ab36d258037a2c" upstream="master"/>
- <project groups="pdk" name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="28845c9a133d54f1160d834cda49186a3683ec86" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="ae0ae1f417d3a0aea8ae0478e625ec5a69331ba0" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="520eaa2ec95619705f8574c1b7e47e4fea28b654" upstream="master"/>
- <project name="toolchain/binutils" revision="e574f15757731e482584f3077979082740ae5a9c" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="a77aaaf39ccb9967a9dc1b5d945b945747a00465" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="8246eb1c52bd095a440af7d12f3ef3a3c5efa43f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="d18f06f1a6b5076cd4a83ece72abbc4162c3bb44" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="27a8ac9577a8984d2c85c78640551cc647d1c7a3" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="02a4c1be279b9afa69a0003db73652980aa3e85f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="a5eb9c423ed7423ecc2842ef5fc0d42f5e000a8e" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="2dc30e9b9476a23015590ac4acd4c8d1ed857c85" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="5f9c0342d425bcaf20d6ed7027dcbc5cd9bd0943" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="358bf2cc437a04c5b671be2817e131ae7d628521" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="51ca09ff33d03da2db1340166440c85ec56b49c0" upstream="master"/>
+ <project groups="tools" name="platform/tools/dexter" path="tools/dexter" revision="7650a8d2d9f7f579e65eeccdcf3e486b6a61be49" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="9cdd712d65a9e3ce2db93867d0d4a8288ad3bd52" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="f055ebc3d4b63026076c1077b6116f0b36bc514c" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="5bf6d894a874141fa8f806693b6c0a7c171f44a9" upstream="master"/>
+ <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="f363ab9d13f3b8178b49f7a61a25f26aca19b6f6" upstream="master"/>
+ <project name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="ee9bbb6a41a3bef74b4b566e057e577d231f91c1" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="d06f52938e256429ae54159bd43d334c3e157209" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="a5a7a9fabbf14a8d600aa612e5667ff3217c319c" upstream="master"/>
+ <project name="toolchain/benchmark" revision="73fd86bfc65c3c644c3ec47e3f8c941866e46e23" upstream="master"/>
+ <project name="toolchain/binutils" revision="53dd00a1a34ebf5251f6210d778768b4157c5e11" upstream="master"/>
<repo-hooks enabled-list="pre-upload" in-project="platform/tools/repohooks"/>
</manifest>
diff --git a/tools/linux/art.tar.gz.sha1 b/tools/linux/art.tar.gz.sha1
index c1950a5..98bc420 100644
--- a/tools/linux/art.tar.gz.sha1
+++ b/tools/linux/art.tar.gz.sha1
@@ -1 +1 @@
-892bd8e09e120ad827d56700631ba2a7b15ebfbb
\ No newline at end of file
+1b4c4528315324c023e888ee5c53fc57edb3d5bf
\ No newline at end of file