Commit 22c03db0 by youguoqing

汉口银行代码

parent d75b3f1c
#Fri Apr 14 10:13:06 CST 2023
gradle.version=5.4.1
Asset
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven4" />
<option name="name" value="maven4" />
<option name="url" value="https://maven.aliyun.com/repository/jcenter/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven5" />
<option name="name" value="maven5" />
<option name="url" value="https://maven.aliyun.com/repository/central/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven2" />
<option name="name" value="maven2" />
<option name="url" value="https://maven.aliyun.com/repository/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven3" />
<option name="name" value="maven3" />
<option name="url" value="https://maven.aliyun.com/repository/google/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
</remote-repository>
</component>
</project>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: :BaseLib:@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8c2e8689ddbba1c84338f80ed01be416/BaseLib/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8c2e8689ddbba1c84338f80ed01be416/BaseLib/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8c2e8689ddbba1c84338f80ed01be416/BaseLib/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.activity:activity:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a45f51b2867c115d86c8bdb1d487c72c/activity-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a45f51b2867c115d86c8bdb1d487c72c/activity-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a45f51b2867c115d86c8bdb1d487c72c/activity-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.activity/activity/1.0.0/28eb83e6a29ac3fbb87aa632cfa0e644a313f491/activity-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.annotation:annotation:1.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/408af38ec57369afe3fd6466e1c4bfdd5f15fc92/annotation-1.1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/8b7bdc00eb4d998bfbc76767b098620990f2a805/annotation-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.appcompat:appcompat:1.1.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d74b5b498b35fd5cb32d0a6997bb1d3d/appcompat-1.1.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d74b5b498b35fd5cb32d0a6997bb1d3d/appcompat-1.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d74b5b498b35fd5cb32d0a6997bb1d3d/appcompat-1.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d74b5b498b35fd5cb32d0a6997bb1d3d/appcompat-1.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.appcompat/appcompat/1.1.0/9865019bbd2d95e41dede3d8ebf964aa93f97766/appcompat-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.appcompat:appcompat-resources:1.1.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c63ceca946e9bc27525371878741042e/appcompat-resources-1.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c63ceca946e9bc27525371878741042e/appcompat-resources-1.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c63ceca946e9bc27525371878741042e/appcompat-resources-1.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.appcompat/appcompat-resources/1.1.0/a7dcffd1afb81e3c892ad061b33da031c2d7289f/appcompat-resources-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.arch.core:core-common:2.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/80ac2d7c8e6400ce2fbc663cd1a7e1cbef38c4b8/core-common-2.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.arch.core:core-runtime:2.0.1@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/572c72eb0fde74dfa498e311e1bc108a/core-runtime-2.0.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/572c72eb0fde74dfa498e311e1bc108a/core-runtime-2.0.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/572c72eb0fde74dfa498e311e1bc108a/core-runtime-2.0.1/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-runtime/2.0.1/3ccb83f42ddc87f61ae30d0d1c8a0d8571df50cc/core-runtime-2.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4848834a580ecbbeaa84b2c68ac1663a/asynclayoutinflater-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4848834a580ecbbeaa84b2c68ac1663a/asynclayoutinflater-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4848834a580ecbbeaa84b2c68ac1663a/asynclayoutinflater-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.asynclayoutinflater/asynclayoutinflater/1.0.0/ac4d50701fce5c88dcc514f58e695cd32f05134c/asynclayoutinflater-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.collection:collection:1.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/bae67b0019fbb38498198fcc2d0282a340b71c5b/collection-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.constraintlayout:constraintlayout:1.1.3@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/508ac768b50158a079142e4dc4915061/constraintlayout-1.1.3/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/508ac768b50158a079142e4dc4915061/constraintlayout-1.1.3/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/508ac768b50158a079142e4dc4915061/constraintlayout-1.1.3/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.constraintlayout:constraintlayout-solver:1.1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/1.1.3/54abe9ffb22cc9019b0b6fcc10f185cc4e67b34e/constraintlayout-solver-1.1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.0.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3b95216347b91b0d0d6d33ef33ac3197/coordinatorlayout-1.0.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3b95216347b91b0d0d6d33ef33ac3197/coordinatorlayout-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3b95216347b91b0d0d6d33ef33ac3197/coordinatorlayout-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/3b95216347b91b0d0d6d33ef33ac3197/coordinatorlayout-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.coordinatorlayout/coordinatorlayout/1.0.0/4325b3c4422ad58201ed8dc15ae56bda9accedf2/coordinatorlayout-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.core:core:1.1.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f01b27bb220ecb79298884ef36a7a2fb/core-1.1.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f01b27bb220ecb79298884ef36a7a2fb/core-1.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f01b27bb220ecb79298884ef36a7a2fb/core-1.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f01b27bb220ecb79298884ef36a7a2fb/core-1.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.core/core/1.1.0/4ae37fad1fe95b42aa47a720908df37ba5d3c85e/core-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/01d333055a983e736e0a5fac950ffa8f/cursoradapter-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/01d333055a983e736e0a5fac950ffa8f/cursoradapter-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/01d333055a983e736e0a5fac950ffa8f/cursoradapter-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.cursoradapter/cursoradapter/1.0.0/1e323083b41c31fd4d45510dfce50614963c3c6c/cursoradapter-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.customview:customview:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2fe66d8bec3c90b690bace4d7b7b6157/customview-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2fe66d8bec3c90b690bace4d7b7b6157/customview-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2fe66d8bec3c90b690bace4d7b7b6157/customview-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.customview/customview/1.0.0/61f6a717d144dff3a6bda413d9abeeb2bca71581/customview-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.documentfile:documentfile:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b432947d09f38291043b1b7278108b44/documentfile-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b432947d09f38291043b1b7278108b44/documentfile-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b432947d09f38291043b1b7278108b44/documentfile-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.documentfile/documentfile/1.0.0/a1bed5cf96db96bd06a2feade98fe55653811dc8/documentfile-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2dd52bdeda96a748df5d7e83cece6c38/drawerlayout-1.0.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2dd52bdeda96a748df5d7e83cece6c38/drawerlayout-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2dd52bdeda96a748df5d7e83cece6c38/drawerlayout-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2dd52bdeda96a748df5d7e83cece6c38/drawerlayout-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.drawerlayout/drawerlayout/1.0.0/9ecd4ecb7da215ba4c5c3e00bf8d290dad6f2bc5/drawerlayout-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.fragment:fragment:1.1.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d934be3c652b5ff5c18e2d68c8236453/fragment-1.1.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d934be3c652b5ff5c18e2d68c8236453/fragment-1.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d934be3c652b5ff5c18e2d68c8236453/fragment-1.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d934be3c652b5ff5c18e2d68c8236453/fragment-1.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.fragment/fragment/1.1.0/b9ebb04df2cb0cad4419af3c658690bc82aa5706/fragment-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.interpolator:interpolator:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/699bc310780b1730bce8fe271ffeca8b/interpolator-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/699bc310780b1730bce8fe271ffeca8b/interpolator-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/699bc310780b1730bce8fe271ffeca8b/interpolator-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.interpolator/interpolator/1.0.0/fefd5e3cbc479b6b4a9532d05688a1e659e8d3d2/interpolator-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.legacy:legacy-support-core-ui:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8d97f43c730baedb50b76131bea8976c/legacy-support-core-ui-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8d97f43c730baedb50b76131bea8976c/legacy-support-core-ui-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8d97f43c730baedb50b76131bea8976c/legacy-support-core-ui-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.legacy/legacy-support-core-ui/1.0.0/f6044eaebe354c778f1f147ddb9e92a3f1e22fc7/legacy-support-core-ui-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.legacy:legacy-support-core-utils:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/65eb695d8f60c47c48deea4b4bc97d22/legacy-support-core-utils-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/65eb695d8f60c47c48deea4b4bc97d22/legacy-support-core-utils-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/65eb695d8f60c47c48deea4b4bc97d22/legacy-support-core-utils-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.legacy/legacy-support-core-utils/1.0.0/46c37f178088153618cfb0afef08ec96c48f93cb/legacy-support-core-utils-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.legacy:legacy-support-v4:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/47fc3950c814b04977735368112c37af/legacy-support-v4-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/47fc3950c814b04977735368112c37af/legacy-support-v4-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/47fc3950c814b04977735368112c37af/legacy-support-v4-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.legacy/legacy-support-v4/1.0.0/5b8f86fea035328fc9e8c660773037a3401ce25f/legacy-support-v4-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.lifecycle:lifecycle-common:2.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/c67e7807d9cd6c329b9d0218b2ec4e505dd340b7/lifecycle-common-2.1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/ff1470ebad448355d3722c637c85d5174b584f38/lifecycle-common-2.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/df65787e67fe4b4bc0635deed9695797/lifecycle-livedata-2.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/df65787e67fe4b4bc0635deed9695797/lifecycle-livedata-2.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/df65787e67fe4b4bc0635deed9695797/lifecycle-livedata-2.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-livedata/2.0.0/740ce61935bd789380c01178bd8ce402402ebd2f/lifecycle-livedata-2.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a1f5477cd6fd5fad9baa3e263bec7d60/lifecycle-livedata-core-2.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a1f5477cd6fd5fad9baa3e263bec7d60/lifecycle-livedata-core-2.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a1f5477cd6fd5fad9baa3e263bec7d60/lifecycle-livedata-core-2.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-livedata-core/2.0.0/c158207594782b42f3a2e08a5a029eb3319e4404/lifecycle-livedata-core-2.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.lifecycle:lifecycle-runtime:2.1.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34fb4b53ebbbc0d42cf00f739d5b7918/lifecycle-runtime-2.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34fb4b53ebbbc0d42cf00f739d5b7918/lifecycle-runtime-2.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34fb4b53ebbbc0d42cf00f739d5b7918/lifecycle-runtime-2.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-runtime/2.1.0/533a0cd1a095abbdfd08a49c4d34bd0713977034/lifecycle-runtime-2.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.1.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/534dfe358287b68b5ba1038d10b7afc0/lifecycle-viewmodel-2.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/534dfe358287b68b5ba1038d10b7afc0/lifecycle-viewmodel-2.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/534dfe358287b68b5ba1038d10b7afc0/lifecycle-viewmodel-2.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-viewmodel/2.1.0/bfd86b9887c2343516f82bed91acbab34a45841d/lifecycle-viewmodel-2.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.loader:loader:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7e3b4c2f83e256517b094f844ce7d668/loader-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7e3b4c2f83e256517b094f844ce7d668/loader-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7e3b4c2f83e256517b094f844ce7d668/loader-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.loader/loader/1.0.0/b9ef587f3e46c7fe5b00264989764e43ff45cada/loader-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8cf450d11667f9427b289f08c2115f5c/localbroadcastmanager-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8cf450d11667f9427b289f08c2115f5c/localbroadcastmanager-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8cf450d11667f9427b289f08c2115f5c/localbroadcastmanager-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.localbroadcastmanager/localbroadcastmanager/1.0.0/3930e99159fd6b7f1d2e7d5fe9af0924ca1faf9/localbroadcastmanager-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.media:media:1.0.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b64f80842d3d302e8b4275c4ce2e897c/media-1.0.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b64f80842d3d302e8b4275c4ce2e897c/media-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b64f80842d3d302e8b4275c4ce2e897c/media-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b64f80842d3d302e8b4275c4ce2e897c/media-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.media/media/1.0.0/5faf25be15e16e27275f5c7e04e15e944ebccea0/media-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.multidex:multidex:2.0.1@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d2cb014f89e69b96e288bfee8219a9b7/multidex-2.0.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d2cb014f89e69b96e288bfee8219a9b7/multidex-2.0.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d2cb014f89e69b96e288bfee8219a9b7/multidex-2.0.1/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.multidex/multidex/2.0.1/f3f4d0d014301dc9491afc5d4a0a91a385e32752/multidex-2.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.print:print:1.0.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d31a9dbc3f8404c541e987748c42963b/print-1.0.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d31a9dbc3f8404c541e987748c42963b/print-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d31a9dbc3f8404c541e987748c42963b/print-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d31a9dbc3f8404c541e987748c42963b/print-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.print/print/1.0.0/71fc2d9acf7cce6b96230c5af263268b1664914a/print-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.room:room-common:2.2.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.room/room-common/2.2.3/f5e3b73a0c2ab5e276e26868e4ce3542baede207/room-common-2.2.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.room/room-common/2.2.3/924310c61a30c7a167a22f636331556bc654ec94/room-common-2.2.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.room:room-runtime:2.2.3@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8087ce3aa41c0a061e5127f60844c52f/room-runtime-2.2.3/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8087ce3aa41c0a061e5127f60844c52f/room-runtime-2.2.3/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8087ce3aa41c0a061e5127f60844c52f/room-runtime-2.2.3/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8087ce3aa41c0a061e5127f60844c52f/room-runtime-2.2.3/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.room/room-runtime/2.2.3/174ebdbe3e7a886906c6e488c230a74c6da0ccea/room-runtime-2.2.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.savedstate:savedstate:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ba81d17fd1c26c75281615add0554c/savedstate-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ba81d17fd1c26c75281615add0554c/savedstate-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ba81d17fd1c26c75281615add0554c/savedstate-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.savedstate/savedstate/1.0.0/e6daf87ed227a6f80bb8accb466755a5ee01a652/savedstate-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.slidingpanelayout:slidingpanelayout:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8069b605758f8fcc2cf1372e87a50a23/slidingpanelayout-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8069b605758f8fcc2cf1372e87a50a23/slidingpanelayout-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8069b605758f8fcc2cf1372e87a50a23/slidingpanelayout-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.slidingpanelayout/slidingpanelayout/1.0.0/f3f2e4fded24d5969a86e1974ad7e96975d970a0/slidingpanelayout-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.sqlite:sqlite:2.0.1@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/983b05c78ba513d7461dfe3d9d241f81/sqlite-2.0.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/983b05c78ba513d7461dfe3d9d241f81/sqlite-2.0.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/983b05c78ba513d7461dfe3d9d241f81/sqlite-2.0.1/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.sqlite/sqlite/2.0.1/535e8b4cac4800b457634b48e84f4cc3a09286f3/sqlite-2.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.sqlite:sqlite-framework:2.0.1@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/20781a3dce89497a6deabef99a207e2e/sqlite-framework-2.0.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/20781a3dce89497a6deabef99a207e2e/sqlite-framework-2.0.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/20781a3dce89497a6deabef99a207e2e/sqlite-framework-2.0.1/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.sqlite/sqlite-framework/2.0.1/ebd864adb6e958f17da973aa9391d7865e305c5e/sqlite-framework-2.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout:1.0.0@aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6bb482d4edfb8945df7454050b78aa75/swiperefreshlayout-1.0.0/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6bb482d4edfb8945df7454050b78aa75/swiperefreshlayout-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6bb482d4edfb8945df7454050b78aa75/swiperefreshlayout-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6bb482d4edfb8945df7454050b78aa75/swiperefreshlayout-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.swiperefreshlayout/swiperefreshlayout/1.0.0/ab92d86c004eb1d48e45f311b02ca53d6c86b607/swiperefreshlayout-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.test:core:1.2.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8b905dc169db8069fa57dc4a2866d2d4/core-1.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8b905dc169db8069fa57dc4a2866d2d4/core-1.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8b905dc169db8069fa57dc4a2866d2d4/core-1.2.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test/core/1.2.0/ed921186cfb809317daf41ccf8e6acc5dcea0e06/core-1.2.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test/core/1.2.0/4c4174bc50358d65632faeb0bb392ef76aa74c39/core-1.2.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.test.espresso:espresso-core:3.2.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e89c611fa3b160f1a17dfb03464bb8a2/espresso-core-3.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e89c611fa3b160f1a17dfb03464bb8a2/espresso-core-3.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e89c611fa3b160f1a17dfb03464bb8a2/espresso-core-3.2.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test.espresso/espresso-core/3.2.0/4dd88178a28883ac149f76e4908942486e756b72/espresso-core-3.2.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test.espresso/espresso-core/3.2.0/5d1b7f5b3c2877929324f5c846da358995c9af6d/espresso-core-3.2.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.test.espresso:espresso-idling-resource:3.2.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8885ac7c3ac3be980a677765c56634af/espresso-idling-resource-3.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8885ac7c3ac3be980a677765c56634af/espresso-idling-resource-3.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8885ac7c3ac3be980a677765c56634af/espresso-idling-resource-3.2.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test.espresso/espresso-idling-resource/3.2.0/ac774bb29e6171578dc7508bf390a4a3ccbedfea/espresso-idling-resource-3.2.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test.espresso/espresso-idling-resource/3.2.0/565422b0951cfb8de4888853e4859d6a47a72d39/espresso-idling-resource-3.2.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.test.ext:junit:1.1.1@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/46b57c9dd7d4c4baaf27682aec9aa4ee/junit-1.1.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/46b57c9dd7d4c4baaf27682aec9aa4ee/junit-1.1.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/46b57c9dd7d4c4baaf27682aec9aa4ee/junit-1.1.1/AndroidManifest.xml" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test.ext/junit/1.1.1/36f7bb8e054e7a5d0d6e17b52bd6b2a06118a437/junit-1.1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test.ext/junit/1.1.1/40a36b3426cde38b7eb2375034e358152366dc9a/junit-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.test:monitor:1.2.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f0349a51602bd8cbb696027d9fb9276e/monitor-1.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f0349a51602bd8cbb696027d9fb9276e/monitor-1.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f0349a51602bd8cbb696027d9fb9276e/monitor-1.2.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test/monitor/1.2.0/2af6ec82fa4b1151212001e83514ccb39f360adc/monitor-1.2.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test/monitor/1.2.0/dbbc3050e0945ecea95f4e25b72e169cfe6f32bc/monitor-1.2.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.test:runner:1.2.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/dacd1d4fdac22eaffc424c1d3fc1a48f/runner-1.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/dacd1d4fdac22eaffc424c1d3fc1a48f/runner-1.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/dacd1d4fdac22eaffc424c1d3fc1a48f/runner-1.2.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test/runner/1.2.0/f4763c62f19d8d2a8835d5648144245900a31bc1/runner-1.2.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.test/runner/1.2.0/473ae098e490115eec8d6e723c3118054a3e9812/runner-1.2.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.vectordrawable:vectordrawable:1.1.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ed5a9132108c5b2ae9625fd37b95cb34/vectordrawable-1.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ed5a9132108c5b2ae9625fd37b95cb34/vectordrawable-1.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ed5a9132108c5b2ae9625fd37b95cb34/vectordrawable-1.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.vectordrawable/vectordrawable/1.1.0/1e0694477eed874c50c54b547cc3e5a62a57a62b/vectordrawable-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.1.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/bfb36a8a02a6b71b49ca7ec649145b26/vectordrawable-animated-1.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/bfb36a8a02a6b71b49ca7ec649145b26/vectordrawable-animated-1.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/bfb36a8a02a6b71b49ca7ec649145b26/vectordrawable-animated-1.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.vectordrawable/vectordrawable-animated/1.1.0/871a7705cd03bc246947638c712cdd11378233ff/vectordrawable-animated-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f3128affa7000c088d176285d7f5681f/versionedparcelable-1.1.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f3128affa7000c088d176285d7f5681f/versionedparcelable-1.1.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/f3128affa7000c088d176285d7f5681f/versionedparcelable-1.1.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.versionedparcelable/versionedparcelable/1.1.0/d9085927216387af679d18b6f472bc0fc5c7cc81/versionedparcelable-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: androidx.viewpager:viewpager:1.0.0@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/863b030a4ef24c5e89f12cd832de155e/viewpager-1.0.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/863b030a4ef24c5e89f12cd832de155e/viewpager-1.0.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/863b030a4ef24c5e89f12cd832de155e/viewpager-1.0.0/AndroidManifest.xml" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.viewpager/viewpager/1.0.0/db045f92188b9d247d5f556866f8861ab68528f0/viewpager-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: cn.hutool:hutool-all:5.7.19">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/cn.hutool/hutool-all/5.7.19/aae81e45d9c965119f0d16e341176ca0ef122469/hutool-all-5.7.19.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/cn.hutool/hutool-all/5.7.19/e122a2539765b5d03196fe48cb9be3ec820ec552/hutool-all-5.7.19-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/cn.hutool/hutool-all/5.7.19/b99b814c9fe2dfdf3619fbc28a9882a3dcd3214a/hutool-all-5.7.19-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: com.github.bumptech.glide:glide:3.7.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/3.7.0/9e9eeaf9948ee4d6c3ab354e8dc14368f16994a4/glide-3.7.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/3.7.0/3b81fa9bed485ed6a6bc46546b580cadf80a64f1/glide-3.7.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/3.7.0/24a0b0e63af9530bcedd06ed1983a4f2f02155a3/glide-3.7.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: com.google.code.findbugs:jsr305:2.0.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/2.0.1/516c03b21d50a644d538de0f0369c620989cd8f0/jsr305-2.0.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: com.google.code.gson:gson:2.8.9">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/8a432c1d6825781e21a02db2e2c33c5fde2833b9/gson-2.8.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/a33effa02d6dcf9f096c942a7a7fbcf6d641234a/gson-2.8.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/e1167849f172a0b75d6ffe4e4b2f34b9259795bb/gson-2.8.9-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: com.squareup:javawriter:2.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/67ff45d9ae02e583d0f9b3432a5ebbe05c30c966/javawriter-2.1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/f591a105db78771d0a1e7a277b3747556c528c22/javawriter-2.1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/5b31387d839a5cdaf5b6de3990da01f7f2b963c5/javawriter-2.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: com.squareup.okhttp3:okhttp:3.14.2">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.14.2/eaed79ed6bc1e14fad462172b6a09524545b165c/okhttp-3.14.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.14.2/ab196739c400576fb2bcea6db94ece21c1730364/okhttp-3.14.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.14.2/155f20f50fc3754b139c115cccd6fe752af655ed/okhttp-3.14.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: com.squareup.okio:okio:1.17.4">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.17.4/50077892fbc179bc69c0ac488442fd3a864e897f/okio-1.17.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.17.4/2cbe219932e057d1617be61b719fef4a2f930f4e/okio-1.17.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.17.4/2181e952345acc506d8243349a31013ab25abf9/okio-1.17.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: com.tencent.bugly:crashreport:3.4.4@aar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b013c384d34264b639679ff7852474ab/crashreport-3.4.4/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b013c384d34264b639679ff7852474ab/crashreport-3.4.4/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b013c384d34264b639679ff7852474ab/crashreport-3.4.4/AndroidManifest.xml" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.bugly/crashreport/3.4.4/4a981f34749655f72d8e4719eafea18e93811c97/crashreport-3.4.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.bugly/crashreport/3.4.4/4a981f34749655f72d8e4719eafea18e93811c97/crashreport-3.4.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: javax.inject:javax.inject:1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/70ec961c25111ed9015d1af77772d96383c2d238/javax.inject-1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/a00123f261762a7c5e0ec916a2c7c8298d29c400/javax.inject-1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: junit:junit:4.12">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.m2/repository/org/jetbrains/externalAnnotations/junit/junit/4.12-an1/junit-4.12-an1-annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/941a8be4506c65f0a9001c08812fb7da1e505e21/junit-4.12-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: me.jessyan:autosize:1.1.2@aar">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/14e9a15f7ef6e0e8023c3e41d25da921/jetified-autosize-1.1.2/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/14e9a15f7ef6e0e8023c3e41d25da921/jetified-autosize-1.1.2/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/14e9a15f7ef6e0e8023c3e41d25da921/jetified-autosize-1.1.2/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d7dbedc23cdf2d8a14aab3d7297a09c5/jetified-autosize-1.1.2/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d7dbedc23cdf2d8a14aab3d7297a09c5/jetified-autosize-1.1.2/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d7dbedc23cdf2d8a14aab3d7297a09c5/jetified-autosize-1.1.2/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e8726cb911b2cf44d48d1b513811b2a6/jetified-autosize-1.1.2/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e8726cb911b2cf44d48d1b513811b2a6/jetified-autosize-1.1.2/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/e8726cb911b2cf44d48d1b513811b2a6/jetified-autosize-1.1.2/jars/classes.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/me.jessyan/autosize/1.1.2/bcac46692aa9efb0f558c720219a2d4142423260/autosize-1.1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/me.jessyan/autosize/1.1.2/48bdaac7bd16d92fa55bd5bdb2b30d1125add6d5/autosize-1.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: net.sf.kxml:kxml2:2.3.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/ccbc77a5fd907ef863c29f3596c6f54ffa4e9442/kxml2-2.3.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/dcb10030b92be67fd9dd224ade52310e40bbaf33/kxml2-2.3.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/309cd2cff7260e465792fda3dcbb063b730d8050/kxml2-2.3.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: org.bouncycastle:bcprov-jdk15on:1.68">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/46a080368d38b428d237a59458f9bc915222894d/bcprov-jdk15on-1.68.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/7c020d874664594c1a89a9da94d81c489e128ed1/bcprov-jdk15on-1.68-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/c092c4f5af620ea5fd40a48d844c556826bebb63/bcprov-jdk15on-1.68-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: org.hamcrest:hamcrest-core:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/ad09811315f1d4f5756986575b0ea16b99cd686f/hamcrest-core-1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: org.hamcrest:hamcrest-integration:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/5de0c73fef18917cd85d0ab70bb23818685e4dfd/hamcrest-integration-1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/cc5884d4138d3376f574f6a3992acceedfc37bea/hamcrest-integration-1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/ae7787a563e6a1b1f17fd4ac43be3a3c8830cfda/hamcrest-integration-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Gradle: org.hamcrest:hamcrest-library:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4785a3c21320980282f9f33d0d1264a69040538f/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4324046c5f99f3dc91b5370899fa3ae65fd137d2/hamcrest-library-1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/47a7ee46628ab7133129cd7cef1e92657bc275e/hamcrest-library-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="..\:/story/workspace/android/asset-app-zxxt/app/src/main/res/layout/actitity_inventory.xml" value="0.175" />
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/Asset.iml" filepath="$PROJECT_DIR$/.idea/modules/Asset.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/Asset.app.iml" filepath="$PROJECT_DIR$/.idea/modules/app/Asset.app.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/Asset.app.androidTest.iml" filepath="$PROJECT_DIR$/.idea/modules/app/Asset.app.androidTest.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/Asset.app.main.iml" filepath="$PROJECT_DIR$/.idea/modules/app/Asset.app.main.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/Asset.app.unitTest.iml" filepath="$PROJECT_DIR$/.idea/modules/app/Asset.app.unitTest.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="Asset" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$/../..">
<excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
<excludeFolder url="file://$MODULE_DIR$/../../build" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app:androidTest" external.linked.project.path="$MODULE_DIR$/../../../app" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.type="sourceSet" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/main/res;file://$MODULE_DIR$/../../../app/src/debug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" />
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/androidTest/res;file://$MODULE_DIR$/../../../app/src/androidTestDebug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$/../../../app/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debugAndroidTest/out" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/androidTest/debug" />
<content url="file://$MODULE_DIR$/../../../app/src/androidTest">
<sourceFolder url="file://$MODULE_DIR$/../../../app/src/androidTest/java" isTestSource="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/src/androidTestDebug" />
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.collection:collection:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.room:room-common:2.2.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-common:2.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.arch.core:core-common:2.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.annotation:annotation:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.constraintlayout:constraintlayout-solver:1.1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: cn.hutool:hutool-all:5.7.19" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.github.bumptech.glide:glide:3.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okhttp3:okhttp:3.14.2" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okio:okio:1.17.4" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test.ext:junit:1.1.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test.espresso:espresso-core:3.2.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test:runner:1.2.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test:core:1.2.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.appcompat:appcompat:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test:monitor:1.2.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.legacy:legacy-support-v4:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.fragment:fragment:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.appcompat:appcompat-resources:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.legacy:legacy-support-core-ui:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.media:media:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.legacy:legacy-support-core-utils:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.activity:activity:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.vectordrawable:vectordrawable:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.slidingpanelayout:slidingpanelayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.core:core:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.room:room-runtime:2.2.3@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.sqlite:sqlite-framework:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.sqlite:sqlite:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.arch.core:core-runtime:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.savedstate:savedstate:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.documentfile:documentfile:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.print:print:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test.espresso:espresso-idling-resource:3.2.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.constraintlayout:constraintlayout:1.1.3@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.multidex:multidex:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.tencent.bugly:crashreport:3.4.4@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: me.jessyan:autosize:1.1.2@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: :BaseLib:@aar" level="project" />
</component>
<component name="TestModuleProperties" production-module="Asset.app.main" />
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$/../../../app" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.group="Asset" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":app" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.5.2" />
<option name="LAST_KNOWN_AGP_VERSION" value="3.5.2" />
</configuration>
</facet>
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/main/res;file://$MODULE_DIR$/../../../app/src/debug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" />
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/androidTest/res;file://$MODULE_DIR$/../../../app/src/androidTestDebug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../../../app/build/intermediates/javac/debug/classes" />
<output-test url="file://$MODULE_DIR$/../../../app/build/intermediates/javac/debugUnitTest/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../../app">
<excludeFolder url="file://$MODULE_DIR$/../../../app/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/../../../app/build" />
</content>
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app:main" external.linked.project.path="$MODULE_DIR$/../../../app" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.type="sourceSet" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/main/res;file://$MODULE_DIR$/../../../app/src/debug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" />
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/androidTest/res;file://$MODULE_DIR$/../../../app/src/androidTestDebug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$/../../../app/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" type="java-resource" />
</content>
<content url="file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/src/debug" />
<content url="file://$MODULE_DIR$/../../../app/src/main">
<sourceFolder url="file://$MODULE_DIR$/../../../app/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/src/main/res" type="java-resource" />
</content>
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: androidx.collection:collection:1.1.0" level="project" />
<orderEntry type="library" name="Gradle: androidx.room:room-common:2.2.3" level="project" />
<orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.1.0" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.1.0" level="project" />
<orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.1.0" level="project" />
<orderEntry type="library" name="Gradle: androidx.constraintlayout:constraintlayout-solver:1.1.3" level="project" />
<orderEntry type="library" name="Gradle: cn.hutool:hutool-all:5.7.19" level="project" />
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:glide:3.7.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" name="Gradle: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.14.2" level="project" />
<orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.17.4" level="project" />
<orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-v4:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.fragment:fragment:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.appcompat:appcompat-resources:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-ui:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.media:media:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-utils:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.activity:activity:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.slidingpanelayout:slidingpanelayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.core:core:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.room:room-runtime:2.2.3@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.sqlite:sqlite-framework:2.0.1@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.sqlite:sqlite:2.0.1@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.arch.core:core-runtime:2.0.1@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.documentfile:documentfile:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.print:print:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.savedstate:savedstate:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.constraintlayout:constraintlayout:1.1.3@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.multidex:multidex:2.0.1@aar" level="project" />
<orderEntry type="library" name="Gradle: com.tencent.bugly:crashreport:3.4.4@aar" level="project" />
<orderEntry type="library" name="Gradle: me.jessyan:autosize:1.1.2@aar" level="project" />
<orderEntry type="library" name="Gradle: :BaseLib:@aar" level="project" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app:unitTest" external.linked.project.path="$MODULE_DIR$/../../../app" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.type="sourceSet" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/main/res;file://$MODULE_DIR$/../../../app/src/debug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" />
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/androidTest/res;file://$MODULE_DIR$/../../../app/src/androidTestDebug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debugUnitTest/out" />
<content url="file://$MODULE_DIR$/../../../app/src/test">
<sourceFolder url="file://$MODULE_DIR$/../../../app/src/test/java" isTestSource="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/src/testDebug" />
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.collection:collection:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.room:room-common:2.2.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.arch.core:core-common:2.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-common:2.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.annotation:annotation:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.constraintlayout:constraintlayout-solver:1.1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: cn.hutool:hutool-all:5.7.19" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.github.bumptech.glide:glide:3.7.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okhttp3:okhttp:3.14.2" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okio:okio:1.17.4" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.appcompat:appcompat:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.legacy:legacy-support-v4:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.fragment:fragment:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.appcompat:appcompat-resources:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.legacy:legacy-support-core-ui:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.media:media:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.legacy:legacy-support-core-utils:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.activity:activity:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.vectordrawable:vectordrawable:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.slidingpanelayout:slidingpanelayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.core:core:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.room:room-runtime:2.2.3@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.sqlite:sqlite-framework:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.sqlite:sqlite:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.arch.core:core-runtime:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.documentfile:documentfile:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.print:print:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.1.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.savedstate:savedstate:1.0.0@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.constraintlayout:constraintlayout:1.1.3@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.multidex:multidex:2.0.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.tencent.bugly:crashreport:3.4.4@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: me.jessyan:autosize:1.1.2@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: :BaseLib:@aar" level="project" />
</component>
<component name="TestModuleProperties" production-module="Asset.app.main" />
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
<option name="LAST_KNOWN_AGP_VERSION" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$/../.." />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidLayouts">
<shared>
<config />
</shared>
</component>
<component name="AndroidLogFilters">
<option name="TOOL_WINDOW_LOG_LEVEL" value="info" />
<option name="TOOL_WINDOW_CONFIGURED_FILTER" value="Show only selected application" />
</component>
<component name="AutoImportSettings">
<option name="autoReloadType" value="NONE" />
</component>
<component name="ChangeListManager">
<list default="true" id="1574b9e7-31c8-4144-975c-2252b68037b5" name="Changes" comment="登录加入标志位方便后台不去解密用户名密码(SM2加密方式因M10设备系统不支持屏蔽)" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[D:\story\.android\avd\Pixel_2_API_29_1.avd]" />
<component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$">
<ProjectState />
</projectState>
</component>
<component name="GenerateSignedApkSettings">
<option name="KEY_STORE_PATH" value="D:\story\apk\kry.keystore" />
<option name="KEY_ALIAS" value="android.keystore" />
<option name="REMEMBER_PASSWORDS" value="true" />
<option name="BUILD_TARGET_KEY" value="apk" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GitSEFilterConfiguration">
<file-type-list>
<filtered-out-file-type name="LOCAL_BRANCH" />
<filtered-out-file-type name="REMOTE_BRANCH" />
<filtered-out-file-type name="TAG" />
<filtered-out-file-type name="COMMIT_BY_MESSAGE" />
</file-type-list>
</component>
<component name="ProjectId" id="2OOj9Cyud2GHqz2KeoRx2bx1zuA" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="ApkExportedModule" value="Asset.app" />
<property name="ExportApk.ApkPath" value="D:\story\workspace\android\asset-app-zxxt\app" />
<property name="ExportApk.BuildVariants" value="release" />
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="RunOnceActivity.cidr.known.project.marker" value="true" />
<property name="cidr.known.project.marker" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../apk/kry.keystore" />
</component>
<component name="RecentsManager">
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.stm.asset.utils" />
</key>
</component>
<component name="RunManager">
<configuration name="app" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="Asset.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="1574b9e7-31c8-4144-975c-2252b68037b5" name="Changes" comment="" />
<created>1681438369041</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1681438369041</updated>
</task>
<task id="LOCAL-00001" summary="登录加入标志位方便后台不去解密用户名密码(SM2加密方式因M10设备系统不支持屏蔽)">
<created>1681820211691</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1681820211691</updated>
</task>
<option name="localTasksCounter" value="2" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="登录加入标志位方便后台不去解密用户名密码(SM2加密方式因M10设备系统不支持屏蔽)" />
<option name="LAST_COMMIT_MESSAGE" value="登录加入标志位方便后台不去解密用户名密码(SM2加密方式因M10设备系统不支持屏蔽)" />
</component>
</project>
\ No newline at end of file
......@@ -10,10 +10,10 @@ android {
compileSdkVersion 28
defaultConfig {
applicationId "com.stm.asset"
minSdkVersion 21
minSdkVersion 25
targetSdkVersion 28
versionCode 2
versionName "1.2"
versionName "1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
......@@ -37,19 +37,21 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation "androidx.room:room-runtime:2.2.3"
annotationProcessor "androidx.room:room-compiler:2.2.3"
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.room:room-runtime:2.2.3'
implementation 'cn.hutool:hutool-all:5.7.19'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'org.bouncycastle:bcprov-jdk15on:1.68'
implementation 'com.squareup.okhttp3:okhttp:3.14.2'
implementation 'com.squareup.okio:okio:1.17.4'
implementation 'com.tencent.bugly:crashreport:3.4.4'
implementation 'me.jessyan:autosize:1.1.2'
implementation (name: 'BaseLib', ext: 'aar')
implementation 'org.bouncycastle:bcprov-jdk15on:1.68'
implementation files('libs\\uhf.jar')
implementation files('libs\\poi-3.12-android-a.jar')
implementation files('libs\\poi-ooxml-schemas-3.12.jar')
annotationProcessor "androidx.room:room-compiler:2.2.3"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
// compile project(path: ':u8')
}
......@@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
......@@ -21,6 +22,16 @@
android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config">
<provider
android:authorities="com.stm.asset.fileProvider"
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
<!-- 480 * 640 -->
<meta-data android:name="design_width_in_dp" android:value="337"/>
<meta-data android:name="design_height_in_dp" android:value="449"/>
......@@ -35,13 +46,15 @@
</intent-filter>
</activity>
<activity android:name=".page.MainActivity" android:screenOrientation="portrait" />
<activity android:name=".page.TaskListActivity" android:screenOrientation="portrait" />
<activity android:name=".page.CheckTaskActivity" android:screenOrientation="portrait" />
<activity android:name=".page.TaskInfoActivity" android:screenOrientation="portrait" />
<activity android:name=".page.SetAndSaveActivity" android:screenOrientation="portrait" />
<!-- <activity android:name=".page.SetAndSaveActivity" android:screenOrientation="portrait" />-->
<activity android:name=".page.InventoryActivity" android:screenOrientation="portrait" />
<activity android:name=".page.LoginActivity" android:screenOrientation="portrait" />
<activity android:name=".page.DeviceSetActivity" android:screenOrientation="portrait" />
<activity android:name=".page.SelectIPActivity" android:screenOrientation="portrait" />
<activity android:name=".page.AdvantageListActivity" android:screenOrientation="portrait" />
</application>
</manifest>
\ No newline at end of file
package com.fn.useries.operation;
import com.fn.useries.model.IResponseHandler;
import com.fn.useries.model.Message;
public interface IUSeries {
/**
* 打开串口
* @param moduleName 模块名
* @return true_ 打开串口成功,false_ 打开串口失败
*/
Message openSerialPort(String moduleName);
/**
* 关闭串口
*
* @return true_ 关闭串口成功,false_ 关闭串口失败
*/
Message closeSerialPort();
/**
* 模块上电
* @param moduleName 模块名
* @return true_ 上电成功,false_ 上电失败
*/
Message modulePowerOn(String moduleName);
/**
* 模块下电
* @param moduleName 模块名
* @return true_ 下电成功,false_ 下电失败
*/
Message modulePowerOff(String moduleName);
/**
* 开始盘询
* @param responseHandler 盘询结果回调
* @return true_ 开始盘询成功成功,false_ 开始盘询失败
*/
boolean startInventory(IResponseHandler responseHandler);
/**
* 停止盘询
* @return true_ 停止盘询成功,false_ 停止盘询失败
*/
boolean stopInventory();
/**
* 单次盘询
* @return 盘询结果
*/
Message Inventory();
/**
* 读标签
*
* @param block 读取区域
* @param w_count 读取长度
* @param w_offset 偏移
* @param acs_pwd 访问密码
* @return 读取标签数据
*/
Message readTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] acs_pwd);
/**
* 写标签
*
* @param block 写入区域
* @param w_count 写入长度
* @param w_offset 偏移
* @param data 写入数据
* @param acs_pwd 访问密码
* @return 是否写入成功
*/
Message writeTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] data, byte[] acs_pwd);
/**
* 锁标签
*
* @param block 锁定区域
* @param operation 操作类型
* @param acs_pwd 访问密码
* @return 返回错误代码
*/
Message lockTagMemory(byte[] EPC, byte block, Enum operation, byte[] acs_pwd);
/**
* 销毁标签
*
* @param kill_pwd 销毁密码
* @return 返回错误代码
*/
Message killTag(byte[] EPC, byte[] kill_pwd);
/**
* 设置参数
*
* @param paraName 参数名(详见SDK)
* @return
*/
String getParams(String paraName);
/**
* 设置参数
*
* @param paraName 参数名(详见SDK)
* @param paraValue 参数值(详见SDK)
* @return
*/
boolean setParams(String paraName, String paraValue);
}
package com.fn.useries.operation;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.AndroidVersions;
import com.fn.useries.model.IResponseHandler;
import com.fn.useries.model.Message;
import com.fn.useries.reader.CMD;
import com.fn.useries.reader.ERROR;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.reader.model.InventoryBuffer.InventoryTagMap;
import com.fn.useries.reader.model.OperateTagBuffer;
import com.fn.useries.reader.model.ReaderSetting;
import com.fn.useries.reader.server.ReaderBase;
import com.fn.useries.reader.server.ReaderHelper;
import com.fn.useries.utils.Tools;
import com.fn.useries.utils.U8Property;
import com.fntech.Loger;
import com.stm.asset.R;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.List;
import android_serialport_api.SerialPort;
import cn.fuen.xmldemo.activity.SetAndSaveActivity;
import cn.fuen.xmldemo.entity.Device;
import cn.fuen.xmldemo.model.DeviceModel;
public class U8Series implements IUSeries {
private static final String TAG = "USeries";
private Tools tools = new Tools();
private static Context mContext;
public static final Object object = new Object();// 设置参数锁
public static final Object readObject = new Object();// read Tag线程锁对象
/**
* notify标识,防止出现接收线程已经收到串口返回并notify,而发送线程并未开始sleep造成异常;
* 此标志位在每次使用前必须恢复初始值false
*/
public static boolean havenotify;
private final int SUCCEED = 0;
private final int FAILED = 1;
public static final String REFRESHTEXT = "REFRESHTEXT";
public static final String REFRESHLIST = "REFRESHLIST";
/**
* 射频功率
*/
public static final String PARA_POWER = "PARA_POWER";
/**
* 软件提示音模式
*/
public static final String BEER_STATE = "BEER_STATE";
/**
* 软件提示音开关 0-打开;1-关闭
*/
public static final String SOFT_SOUND = "SOFT_SOUND";
/**
* 模块温度
*/
public static final String TEMPERATURE = "TEMPERATURE";
/**
* session
*/
public static final String SESSIONSTATE = "SESSIONSTATE";
/**
* flag state
*/
public static final String FLAGSTATE = "FLAGSTATE";
private SerialPort mSerialPort = null;
// 以下三个字符串供上下电配置使用,不可更改
private String model = "U8";
private String packageName = "com.fn.useries";
private String activityName = "com.fn.useries.activity.MainActivity";
private ReaderBase mReader;
private ReaderHelper mReaderHelper;
private ReaderSetting m_curReaderSetting;
private InventoryBuffer m_curInventoryBuffer;
private OperateTagBuffer m_curOperateTagBuffer;
private static U8Series mUSeries;
private List<InventoryTagMap> mTagMaps;
/**
* 读标签结果,若读取成功在@link ReaderHelper.processReadTag(MessageTran)中被赋值
*/
public String readDataString = "";
/**
* 写/锁/杀标签结果标志位,成功:0,失败:1; 注意操作前复位为1
*/
public static int operationTagResult;
/**
* 错误信息,当解析到错误代码时被赋值
*/
public static String errorData = "";
/**
*
*/
public static String temperature;
private IResponseHandler mResponseHandler;
private boolean enableSaveDataWhenGoOnInventory = true;// 重新盘存保存上一次数据
private boolean firstInventoryFlag = true;
private int timeout = 3 * 1000;
/**
* 锁标签操作类型
*
* LOCK_FREE 解锁
* LOCK_FREE_EVER 永久解锁
* LOCK_LOCK 锁
* LOCK_LOCK_EVER 永久锁定
*/
public static enum lockOperation {
LOCK_FREE, LOCK_FREE_EVER, LOCK_LOCK, LOCK_LOCK_EVER
}
private U8Series() {
}
public static void setContext(Context context) {
mContext = context;
}
public static U8Series getInstance() {
if (mUSeries == null) {
mUSeries = new U8Series();
registerReceiver();
return mUSeries;
}
return mUSeries;
}
@Override
public boolean startInventory(IResponseHandler responseHandler) {
this.mResponseHandler = responseHandler;
try {
initInventoryParam(); //初始化,开启数据接收线程
} catch (Exception e) {
Loger.disk_log("Exception", "initInventoryParamException,info = " + e.toString(), "M10_U8");
return false;
}
m_curInventoryBuffer.clearInventoryPar();
m_curInventoryBuffer.bLoopCustomizedSession = true;
m_curInventoryBuffer.btSession = (byte) (U8Property.getSessionState() & 0xFF);
m_curInventoryBuffer.btTarget = (byte) (U8Property.getFlagState() & 0xFF);
m_curInventoryBuffer.lAntenna.add((byte) 0x01);
m_curInventoryBuffer.bLoopInventoryReal = true;
m_curInventoryBuffer.btRepeat = (byte) 1;
if (enableSaveDataWhenGoOnInventory) {
if (firstInventoryFlag)// add by lyz
m_curInventoryBuffer.clearInventoryRealResult();
} else {
m_curInventoryBuffer.clearInventoryRealResult();
}
mReaderHelper.setInventoryFlag(true);
if (enableSaveDataWhenGoOnInventory) {
if (firstInventoryFlag)// add by lyz
mReaderHelper.clearInventoryTotal();
} else {
mReaderHelper.clearInventoryTotal();
}
byte btWorkAntenna = m_curInventoryBuffer.lAntenna.get(m_curInventoryBuffer.nIndexAntenna);
if (btWorkAntenna < 0)
btWorkAntenna = 0;
mReader.setWorkAntenna(m_curReaderSetting.btReadId, btWorkAntenna);//设置工作天线
//mReader.getFirmwareVersion(m_curReaderSetting.btReadId);
return true;
}
@Override
public boolean stopInventory() {
try {
mReaderHelper.setInventoryFlag(false);
m_curInventoryBuffer.bLoopInventory = false;
m_curInventoryBuffer.bLoopInventoryReal = false;
// if (enableSaveDataWhenGoOnInventory)
// mReader.resetRecevice();
Log.i("toolsdebug", " stopInventory() ");
Loger.disk_log("stopInventory", " stopInventory ", "U8");
} catch (Exception e) {
Loger.disk_log("Exception", "stopInventoryException" + getExceptionAllinformation(e), "M10_U8");
return false;
}
return true;
}
@Override
public Message readTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] acs_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
mReader.readTag(m_curReaderSetting.btReadId, block, w_offset, w_count, acs_pwd);
// 发送指令后线程挂起 等待数据返回
synchronized (readObject) {
try {
readObject.wait(timeout);
} catch (InterruptedException e) {
readObject.notify();
}
}
// 未读到标签数据
if (readDataString == null) {
mReader.resetRecevice();
message.setCode(FAILED);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
// notify后返回数据
message.setCode(SUCCEED);
message.setResult(readDataString);
return message;
}
@Override
public Message writeTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] data, byte[] acs_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
mReader.writeTag(m_curReaderSetting.btReadId, acs_pwd, block, w_offset, w_count, data);
// 发送指令后线程挂起 等待数据返回
synchronized (mReaderHelper) {
try {
mReaderHelper.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "writeTagMemoryWaitException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
message.setCode(operationTagResult);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
@Override
public Message lockTagMemory(byte[] EPC, byte block, Enum operation, byte[] acs_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
byte operat = 0x04;
if (operation.name().equals(lockOperation.LOCK_FREE.name())) {
operat = 0x00;
} else if (operation.name().equals(lockOperation.LOCK_FREE_EVER.name())) {
operat = 0x02;
} else if (operation.name().equals(lockOperation.LOCK_LOCK.name())) {
operat = 0x01;
} else if (operation.name().equals(lockOperation.LOCK_LOCK_EVER.name())) {
operat = 0x03;
}
mReader.lockTag(m_curReaderSetting.btReadId, acs_pwd, block, operat);
// 发送指令后线程挂起 等待数据返回
synchronized (mReaderHelper) {
try {
mReaderHelper.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "lockTagMemoryException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
message.setCode(operationTagResult);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
@Override
public Message killTag(byte[] EPC, byte[] kill_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
mReader.killTag(m_curReaderSetting.btReadId, kill_pwd);
// 发送指令后线程挂起 等待数据返回
synchronized (mReaderHelper) {
try {
mReaderHelper.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "writeTagMemoryException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
message.setCode(operationTagResult);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
/**
* 设置
* @param paraName
* 参数名(详见SDK)
* @param paraValue
* 参数值(详见SDK)
* @return
*/
@Override
public boolean setParams(String paraName, String paraValue) {
flagReset();
byte paramsValue = 0;
try {
paramsValue = Byte.parseByte(paraValue);
} catch (NumberFormatException e) {
e.printStackTrace();
Loger.disk_log("Exception", "setParamsException" + getExceptionAllinformation(e), "M10_U8");
return false;
}
if (paraName.equals(PARA_POWER)) {
m_curReaderSetting.btAryOutputPower = new byte[] { paramsValue };
mReader.setOutputPower(m_curReaderSetting.btReadId, paramsValue);
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
return m_curReaderSetting.blnSetResult;
} else if (paraName.equals(BEER_STATE)) {
mReader.setBeeperMode(m_curReaderSetting.btReadId, paramsValue);
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
if (m_curReaderSetting.blnSetResult) {
m_curReaderSetting.btBeeperMode = paramsValue;
U8Property.saveBeeperState((paramsValue & 0xFF));
}
return m_curReaderSetting.blnSetResult;
} else if (paraName.equals(SOFT_SOUND)) {
U8Property.saveSoftSound(paramsValue);
return true;
} else if (paraName.equals(TEMPERATURE)) {
// 温度只能获取无法设置
} else if (paraName.equals(SESSIONSTATE)) {
try {
U8Property.saveSessionState(paramsValue);
} catch (Exception e) {
e.printStackTrace();
Loger.disk_log("Exception", "set_SESSIONSTATE_Exception:" + e.toString(), "M10_U8");
return false;
}
return true;
} else if (paraName.equals(FLAGSTATE)) {
try {
U8Property.saveFlagState(paramsValue);
} catch (Exception e) {
e.printStackTrace();
Loger.disk_log("Exception", "set_FLAGSTATE_Exception:" + e.toString(), "M10_U8");
return false;
}
return true;
}
return false;
}
@Override
public String getParams(String paraName) {
flagReset();
try {
mReaderHelper = ReaderHelper.getDefaultHelper();
mReader = mReaderHelper.getReader();
} catch (Exception e) {
e.printStackTrace();
}
m_curReaderSetting = mReaderHelper.getCurReaderSetting();
if (paraName.equals(PARA_POWER)) {
// 获取
mReader.getOutputPower(m_curReaderSetting.btReadId);
// 发送指令后线程挂起 等待数据返回
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
if (m_curReaderSetting.btAryOutputPower != null) {
int powerValue = m_curReaderSetting.btAryOutputPower[0] & 0xFF;
return Integer.toString(powerValue);
} else {
return receviceIncompleteError();
}
} else if (paraName.equals(BEER_STATE)) {
m_curReaderSetting.btBeeperMode = (byte) U8Property.getVeeperState();
if (m_curReaderSetting.btBeeperMode == 0) {
return "0";
} else if (m_curReaderSetting.btBeeperMode == 1) {
return "1";
} else if (m_curReaderSetting.btBeeperMode == 2) {
return "2";
}
} else if (paraName.equals(TEMPERATURE)) {
// 这里暂时将符号位作为是否正确返回标志,协议中规定符号位只能为0x00,0x01,这里赋值为0x02
m_curReaderSetting.btPlusMinus = 0x02;
int result = mReader.getReaderTemperature(m_curReaderSetting.btReadId);
if (result == 0) {
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
}
String strTemperature = "";
if (m_curReaderSetting.btPlusMinus == 0x00) {
strTemperature = "-" + String.valueOf(m_curReaderSetting.btTemperature & 0xFF) + "℃";
} else if (m_curReaderSetting.btPlusMinus == 0x01) {
strTemperature = String.valueOf(m_curReaderSetting.btTemperature & 0xFF) + "℃";
} else {// 接收异常
return receviceIncompleteError();
}
// 标志位复位
return strTemperature;
} else if (paraName.equals(SESSIONSTATE)) {
return U8Property.getSessionState() + "";
} else if (paraName.equals(FLAGSTATE)) {
return U8Property.getFlagState() + "";
}
return null;
}
/********************************************************/
private final BroadcastReceiver mRecv = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, Intent intent) {
if (intent.getAction().equals(ReaderHelper.BROADCAST_REFRESH_INVENTORY_REAL)) {
byte btCmd = intent.getByteExtra("cmd", (byte) 0x00);
switch (btCmd) {
case CMD.REAL_TIME_INVENTORY:
case CMD.CUSTOMIZED_SESSION_TARGET_INVENTORY:
try {
mResponseHandler.onSuccess(REFRESHTEXT, null, null);
} catch (Exception e) {
System.out.println(e.toString());
}
break;
case ReaderHelper.INVENTORY_END:
mTagMaps = m_curInventoryBuffer.lsTagList;
//mTagMaps = tools.bubbleSort(mTagMaps);
mResponseHandler.onSuccess(REFRESHLIST, mTagMaps, null);
break;
}
} else if (intent.getAction().equals(ReaderHelper.BROADCAST_WRITE_LOG)) {
}
// 读写锁杀页面
if (intent.getAction().equals(ReaderHelper.BROADCAST_REFRESH_OPERATE_TAG)) {
byte btCmd = intent.getByteExtra("cmd", (byte) 0x00);
byte type = intent.getByteExtra("type", (byte) 0x00);
final String msg = intent.getStringExtra("msg");
switch (btCmd) {
case CMD.GET_ACCESS_EPC_MATCH:
break;
case CMD.READ_TAG:
break;
case CMD.WRITE_TAG:
break;
case CMD.LOCK_TAG:
break;
case CMD.KILL_TAG:
break;
}
}
// 设置功率
if (intent.getAction().equals(ReaderHelper.BROADCAST_REFRESH_READER_SETTING)) {
byte btCmd = intent.getByteExtra("cmd", (byte) 0x00);
if (btCmd == CMD.GET_OUTPUT_POWER || btCmd == CMD.SET_OUTPUT_POWER) {
}
// 温度
if (btCmd == CMD.GET_READER_TEMPERATURE) {
}
}
}
};
@Override
public Message Inventory() {
startInventory(new IResponseHandler() {
@Override
public void onSuccess(String msg, Object data, byte[] parameters) {
if (msg.equalsIgnoreCase(REFRESHLIST)) {
List<InventoryTagMap> InventoryOnceResult = (List<InventoryTagMap>) data;
stopInventory();
synchronized (object) {
object.notifyAll();
}
}
}
@Override
public void onFailure(String msg) {
stopInventory();
synchronized (object) {
object.notifyAll();
}
}
});
synchronized (object) {
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 打开串口
* @param moduleName 模块名
* @return
*/
@Override
public Message openSerialPort(String moduleName) {
DeviceModel deviceModel = new DeviceModel(mContext);
Device device = deviceModel.getDeviceFromModel(moduleName);
Message msg = new Message();
if (device == null) {
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.lose_configurationfile));
return msg;
}
String serialPortPath = device.getSerialPort();
int baudRate = device.getBaudRate();
try {
if (android.os.Build.VERSION.RELEASE.equals(AndroidVersions.V_4_0_3)) {
try {
mSerialPort = new SerialPort(new File(serialPortPath), baudRate, 0);
} catch (SecurityException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
} catch (IOException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
}
} else if (android.os.Build.VERSION.RELEASE.equals(AndroidVersions.V_5_1_1)) {
try {
mSerialPort = new SerialPort(new File(serialPortPath), baudRate, 0);
} catch (SecurityException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
} catch (IOException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
}
} else {
Toast.makeText(mContext, "程序版本有误,请联系技术支持人员!", Toast.LENGTH_SHORT).show();
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.version_exception));
return msg;
}
mReaderHelper = ReaderHelper.getDefaultHelper();
mReaderHelper.setReader(mSerialPort.getInputStream(), mSerialPort.getOutputStream());
mReader = mReaderHelper.getReader();
m_curReaderSetting = mReaderHelper.getCurReaderSetting();
m_curOperateTagBuffer = mReaderHelper.getCurOperateTagBuffer();
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
}
/**
* 关闭串口
* @return
*/
@Override
public Message closeSerialPort() {
Message msg = new Message();
if (mSerialPort != null) {
try {
mSerialPort.close();
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
}
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.serialPort_not_open));
return msg;
}
/**
* 模块上电
* @param moduleName 模块名
* @return
*/
@Override
public Message modulePowerOn(String moduleName) {
Message msg = new Message();
DeviceModel deviceModel = new DeviceModel(mContext);
Device device = deviceModel.getDeviceFromModel(moduleName);
if (device != null) {
try {
device.powerOn();
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
} else {
}
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.lose_configurationfile));
return msg;
}
/**
* 模块下电
* @param moduleName 模块名
* @return
*/
@Override
public Message modulePowerOff(String moduleName) {
Message msg = new Message();
DeviceModel deviceModel = new DeviceModel(mContext);
Device device = deviceModel.getDeviceFromModel(moduleName);
if (device != null) {
try {
device.powerOff();
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
}
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.lose_configurationfile));
return msg;
}
/**
* 标志位复位,包括:</br> havenotify :notify标志位</br> errorData :错误信息标志位</br>
* readDataString :读标签数据标志位</br> operationTagResult :写/锁/杀标签结果标志位</br>
* m_curReaderSetting.blnSetResult :设置结果标志位</br>
*/
private void flagReset() {
havenotify = false;
errorData = null;
readDataString = null;
operationTagResult = FAILED;
m_curReaderSetting.blnSetResult = false;
m_curReaderSetting.btAryOutputPower = null;
}
/**
* 设置匹配标签
*
* @param EPC
* 要绑定的EPC号(需要完整EPC,只绑定部分EPC时读写操作会返回无可操作标签错误),
* 需要解绑标签时此方法传进"Cancel".getBytes()即可
*
* @return 绑定/解绑结果:成功 :0, 失败:-1
*/
private int setEpcMatch(byte[] EPC) {
flagReset();
if (new String(EPC).equalsIgnoreCase("Cancel")) {
mReader.cancelAccessEpcMatch(m_curReaderSetting.btReadId);
// 发送指令后线程挂起 等待数据返回
synchronized (object) {
try {
object.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "setEpcMatchWaitException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
Log.e("see", "m_curReaderSetting.blnSetResult ==>"+m_curReaderSetting.blnSetResult);
if(m_curReaderSetting.blnSetResult)
return SUCCEED;
else {
return FAILED;
}
} else {
byte[] btAryEpc = EPC;
mReader.setAccessEpcMatch(m_curReaderSetting.btReadId, (byte) (btAryEpc.length & 0xFF), btAryEpc);
// 发送指令后线程挂起 等待数据返回
synchronized (object) {
try {
object.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "setEpcMatchWaitException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
if(m_curReaderSetting.blnSetResult)
return SUCCEED;
else {
return FAILED;
}
}
}
/**
* 初始化盘询所需资源
*
* @throws Exception
*/
private void initInventoryParam() throws Exception {
mReaderHelper = ReaderHelper.getDefaultHelper();
mReader = mReaderHelper.getReader();
m_curInventoryBuffer = mReaderHelper.getCurInventoryBuffer();
m_curOperateTagBuffer = mReaderHelper.getCurOperateTagBuffer();
if (mReader != null) {
if (!mReader.IsAlive())
mReader.StartWait();
}
}
/**
* 若配置文件丟失,跳转到配置工具
*/
private void jumpToConfigurationTool() {
Intent intent = new Intent();
intent.putExtra("modelName", model);
intent.putExtra("packageName", packageName);
intent.putExtra("activityName", activityName);
intent.setClass(mContext, SetAndSaveActivity.class);
mContext.startActivity(intent);
}
/**
* 注册广播接收器
*/
private static void registerReceiver() {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(mContext);
IntentFilter itent = new IntentFilter();
itent.addAction(ReaderHelper.BROADCAST_REFRESH_INVENTORY_REAL);
lbm.registerReceiver(mUSeries.mRecv, itent);
}
/**
* 获取全部异常信息.
*
* @param ex
* 异常
* @return
*/
private static String getExceptionAllinformation(Exception ex) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintStream pout = new PrintStream(out);
ex.printStackTrace(pout);
String ret = new String(out.toByteArray());
pout.close();
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
private String receviceIncompleteError() {
mReader.resetRecevice();
return ERROR.RECEVICE_INCOMPLETE;
}
}
......@@ -19,7 +19,6 @@ import com.fn.useries.reader.HEAD;
import com.fn.useries.reader.MessageTran;
import com.fn.useries.utils.StringTool;
import com.fn.useries.utils.Tools;
import com.fntech.Loger;
import java.io.IOException;
import java.io.InputStream;
......@@ -94,14 +93,11 @@ public abstract class ReaderBase {
while (mShouldRunning) {
try {
Log.i("yourTag", "start Read");
Loger.disk_log("Read", "start Read", "U8");
int nLenRead = mInStream.read(buff);
Loger.disk_log("Read Count", "nLenRead == "+nLenRead, "U8");
if (nLenRead <= 0) {
continue;
}
Log.i("yourTag", "串口原始返回 ===>" + Tools.Bytes2HexString(buff, nLenRead));
Loger.disk_log("Read", "串口原始返回 ===>" + Tools.Bytes2HexString(buff, nLenRead), "U8");
if (nLenRead > 0) {
System.arraycopy(buff, 0, btAryBuffer, len_have, nLenRead);
len_have += nLenRead;
......@@ -129,7 +125,6 @@ public abstract class ReaderBase {
}
} else {
Log.e("toolsdebug", "异常情况!协议头错误");
Loger.disk_log("Read", "异常情况!协议头错误", "M10_U8");
/*btAryBuffer = new byte[4096];
buff = new byte[512];*/
len_have = 0;
......@@ -142,7 +137,6 @@ public abstract class ReaderBase {
}
} catch (Exception e) {
Log.e("toolsdebug", "读错误");
Loger.disk_log("读错误", "e=" + e.toString() + "\r\n" + e.getStackTrace(), "M10_U8");
onLostConnect();
return;
}
......@@ -278,17 +272,11 @@ public abstract class ReaderBase {
synchronized (mOutStream) { // 防止并发
mOutStream.write(btArySenderData);
Log.e("yourTag", " 串口发送 ===> " + Tools.Bytes2HexString(btArySenderData, btArySenderData.length));
Loger.disk_log("Write",
StringTool.byteArrayToString(btArySenderData, 0,
btArySenderData.length), "U8");
}
} catch (IOException e) {
Loger.disk_log("写错误", "e=" + e.getMessage() + "\r\n" + e.getStackTrace(), "M10_U8");
onLostConnect();
return -1;
} catch (Exception e) {
Loger.disk_log("写错误", "e=" + e.getMessage() + "\r\n" + e.getStackTrace(), "M10_U8");
return -1;
}
......@@ -683,7 +671,7 @@ public abstract class ReaderBase {
* 读写器地址(0xFF公用地址)
* @param btAryPassWord
* 标签访问密码,4字节
* @param btMembank
* @param btMemBank
* 操作的数据区域(0x01:User Memory, 0x02:TID Memory, 0x03:EPC Memory,
* 0x04:Access Password, 0x05:Kill Password)
* @param btLockType
......@@ -953,7 +941,7 @@ public abstract class ReaderBase {
/**
* 发送裸数据。
*
* @param btReadId
* @param btAryBuf
* 读写器地址(0xFF公用地址)
* @return 成功 :0, 失败:-1
*/
......
......@@ -6,7 +6,6 @@ import android.util.Log;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.fn.useries.operation.U8Series;
import com.fn.useries.reader.CMD;
import com.fn.useries.reader.ERROR;
import com.fn.useries.reader.HEAD;
......@@ -205,17 +204,17 @@ public class ReaderHelper {
private void refreshReaderSetting(byte btCmd, ReaderSetting curReaderSetting) {
Intent itent = new Intent(BROADCAST_REFRESH_READER_SETTING);
itent.putExtra("cmd", btCmd);
settingNotify();
// settingNotify();
mLocalBroadcastManager.sendBroadcast(itent);
}
private void settingNotify() {
Object object = U8Series.object;
synchronized (object) {
U8Series.havenotify = true;
object.notifyAll();
}
};
// private void settingNotify() {
// Object object = U8Series.object;
// synchronized (object) {
// U8Series.havenotify = true;
// object.notifyAll();
// }
// };
/**
* 存盘标签(缓存模式),标签数据刷新。
......@@ -454,18 +453,18 @@ public class ReaderHelper {
case CMD.INVENTORY:
processInventory(msgTran);
break;
case CMD.READ_TAG:
processReadTag(msgTran);
break;
case CMD.WRITE_TAG:
processWriteTag(msgTran);
break;
case CMD.LOCK_TAG:
processLockTag(msgTran);
break;
case CMD.KILL_TAG:
processKillTag(msgTran);
break;
// case CMD.READ_TAG:
// processReadTag(msgTran);
// break;
// case CMD.WRITE_TAG:
// processWriteTag(msgTran);
// break;
// case CMD.LOCK_TAG:
// processLockTag(msgTran);
// break;
// case CMD.KILL_TAG:
// processKillTag(msgTran);
// break;
case CMD.SET_ACCESS_EPC_MATCH:
processSetAccessEpcMatch(msgTran);
break;
......@@ -523,7 +522,7 @@ public class ReaderHelper {
m_curReaderSetting.btReadId = msgTran.getReadId();
m_curReaderSetting.blnSetResult = true;
writeLog(strCmd, ERROR.SUCCESS);
settingNotify();
// settingNotify();
return;
} else {
strErrorCode = ERROR.format(btAryData[0]);
......@@ -535,7 +534,7 @@ public class ReaderHelper {
m_curReaderSetting.blnSetResult = false;
m_curReaderSetting.strErrorCode = strErrorCode;
}
settingNotify();
// settingNotify();
String strLog = strCmd + "失败,失败原因: " + strErrorCode;
writeLog(strLog, ERROR.FAIL);
}
......@@ -654,7 +653,7 @@ public class ReaderHelper {
return;
} else {
Log.i("toolsdebug", "processGetOutputPower22222222222");
settingNotify();
// settingNotify();
strErrorCode = "未知错误";
}
......@@ -718,16 +717,16 @@ public class ReaderHelper {
refreshReaderSetting(btCmd, m_curReaderSetting);
writeLog(strCmd, ERROR.SUCCESS);
settingNotify();
// settingNotify();
return;
} else if (btAryData.length == 0x01) {
Log.i("toolsdebug", "processGetReaderTemperature22");
strErrorCode = ERROR.format(btAryData[0]);
settingNotify();
// settingNotify();
} else {
Log.i("toolsdebug", "processGetReaderTemperature33");
strErrorCode = "未知错误";
settingNotify();
// settingNotify();
}
String strLog = strCmd + "失败,失败原因: " + strErrorCode;
......@@ -905,150 +904,150 @@ public class ReaderHelper {
runLoopInventroy();
}
private void processReadTag(MessageTran msgTran) {
byte btCmd = msgTran.getCmd();
byte[] btAryData = msgTran.getAryData();
String strCmd = CMD.format(btCmd);
String strErrorCode = "";
Object object = U8Series.readObject;
Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
if (btAryData.length == 0x01) {
strErrorCode = ERROR.format(btAryData[0]);
String strLog = strCmd + "失败,失败原因: " + strErrorCode;
synchronized (object) {
U8Series.getInstance().readDataString = null;
U8Series.errorData = strLog;
object.notifyAll();
}
// BROADCAST_REFRESH_OPERATE_TAG
itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.FAIL);
itent.putExtra("msg", strLog);
// 使用新接口后广播依然发送,但接收器内无逻辑
mLocalBroadcastManager.sendBroadcast(itent);
// writeLog(strLog, ERROR.FAIL);
} else {
int nLen = btAryData.length;
int nDataLen = (btAryData[nLen - 3] & 0xFF);
int nEpcLen = (btAryData[2] & 0xFF) - nDataLen - 4;
String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
String strData = StringTool.byteArrayToString(btAryData, 7 + nEpcLen, nDataLen);
byte btTemp = btAryData[nLen - 2];
byte btAntId = (byte) ((btTemp & 0x03) + 1);
int nReadCount = btAryData[nLen - 1] & 0xFF;
OperateTagMap tag = new OperateTagMap();
tag.strPC = strPC;
tag.strCRC = strCRC;
tag.strEPC = strEPC;
tag.strData = strData;
tag.nDataLen = nDataLen;
tag.btAntId = btAntId;
tag.nReadCount = nReadCount;
m_curOperateTagBuffer.lsTagList.add(tag);
// refreshOperateTag(btCmd, m_curOperateTagBuffer);
synchronized (object) {
U8Series.getInstance().readDataString = strData;
Log.i("see", "notifyAll yes");
object.notifyAll();
}
itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.SUCCESS);
itent.putExtra("msg", strData);
mLocalBroadcastManager.sendBroadcast(itent);
// writeLog(strCmd, ERROR.SUCCESS);
}
}
private void processWriteTag(MessageTran msgTran) {
byte btCmd = msgTran.getCmd();
byte[] btAryData = msgTran.getAryData();
String strCmd = CMD.format(btCmd);
String strErrorCode = "";
Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
if (btAryData.length == 0x01) {
strErrorCode = ERROR.format(btAryData[0]);
String strLog = strCmd + "失败,失败原因:" + strErrorCode;
synchronized (this) {
U8Series.operationTagResult = 1;
U8Series.errorData = strLog;
this.notifyAll();
}
itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.FAIL);
itent.putExtra("msg", strLog);
mLocalBroadcastManager.sendBroadcast(itent);
// writeLog(strLog, ERROR.FAIL);
} else {
int nLen = btAryData.length;
int nEpcLen = (btAryData[2] & 0xFF) - 4;
if (btAryData[nLen - 3] != ERROR.SUCCESS) {
strErrorCode = ERROR.format(btAryData[nLen - 3]);
String strLog = strCmd + "失败,失败原因:" + strErrorCode;
synchronized (this) {
U8Series.operationTagResult = 1;
U8Series.errorData = strLog;
this.notifyAll();
}
itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.FAIL);
itent.putExtra("msg", strLog);
mLocalBroadcastManager.sendBroadcast(itent);
// writeLog(strLog, ERROR.FAIL);
return;
}
String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
String strData = "";
byte btTemp = btAryData[nLen - 2];
byte btAntId = (byte) ((btTemp & 0x03) + 1);
int nReadCount = btAryData[nLen - 1] & 0xFF;
OperateTagMap tag = new OperateTagMap();
tag.strPC = strPC;
tag.strCRC = strCRC;
tag.strEPC = strEPC;
tag.strData = strData;
tag.nDataLen = 0;
tag.btAntId = btAntId;
tag.nReadCount = nReadCount;
m_curOperateTagBuffer.lsTagList.add(tag);
synchronized (this) {
U8Series.operationTagResult = 0;
U8Series.errorData="success";
Log.i("toolsdebug", "3333");
this.notifyAll();
}
itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.SUCCESS);
if (msgTran.getCmd() == CMD.WRITE_TAG) {
itent.putExtra("msg", "Write label success");
} else if (msgTran.getCmd() == CMD.KILL_TAG) {
itent.putExtra("msg", "Destruction of label success");
} else if (msgTran.getCmd() == CMD.LOCK_TAG) {
itent.putExtra("msg", "Operation is successful!");
}
mLocalBroadcastManager.sendBroadcast(itent);
// refreshOperateTag(btCmd, m_curOperateTagBuffer);
// writeLog(strCmd, ERROR.SUCCESS);
}
}
// private void processReadTag(MessageTran msgTran) {
// byte btCmd = msgTran.getCmd();
// byte[] btAryData = msgTran.getAryData();
// String strCmd = CMD.format(btCmd);
// String strErrorCode = "";
// Object object = U8Series.readObject;
// Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
// if (btAryData.length == 0x01) {
// strErrorCode = ERROR.format(btAryData[0]);
// String strLog = strCmd + "失败,失败原因: " + strErrorCode;
// synchronized (object) {
// U8Series.getInstance().readDataString = null;
// U8Series.errorData = strLog;
// object.notifyAll();
// }
// // BROADCAST_REFRESH_OPERATE_TAG
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.FAIL);
// itent.putExtra("msg", strLog);
// // 使用新接口后广播依然发送,但接收器内无逻辑
// mLocalBroadcastManager.sendBroadcast(itent);
// // writeLog(strLog, ERROR.FAIL);
// } else {
// int nLen = btAryData.length;
// int nDataLen = (btAryData[nLen - 3] & 0xFF);
// int nEpcLen = (btAryData[2] & 0xFF) - nDataLen - 4;
//
// String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
// String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
// String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
// String strData = StringTool.byteArrayToString(btAryData, 7 + nEpcLen, nDataLen);
//
// byte btTemp = btAryData[nLen - 2];
// byte btAntId = (byte) ((btTemp & 0x03) + 1);
// int nReadCount = btAryData[nLen - 1] & 0xFF;
//
// OperateTagMap tag = new OperateTagMap();
// tag.strPC = strPC;
// tag.strCRC = strCRC;
// tag.strEPC = strEPC;
// tag.strData = strData;
// tag.nDataLen = nDataLen;
// tag.btAntId = btAntId;
// tag.nReadCount = nReadCount;
// m_curOperateTagBuffer.lsTagList.add(tag);
// // refreshOperateTag(btCmd, m_curOperateTagBuffer);
//
// synchronized (object) {
// U8Series.getInstance().readDataString = strData;
//
// Log.i("see", "notifyAll yes");
// object.notifyAll();
// }
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.SUCCESS);
// itent.putExtra("msg", strData);
// mLocalBroadcastManager.sendBroadcast(itent);
//
// // writeLog(strCmd, ERROR.SUCCESS);
// }
// }
// private void processWriteTag(MessageTran msgTran) {
// byte btCmd = msgTran.getCmd();
// byte[] btAryData = msgTran.getAryData();
// String strCmd = CMD.format(btCmd);
// String strErrorCode = "";
//
// Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
// if (btAryData.length == 0x01) {
// strErrorCode = ERROR.format(btAryData[0]);
// String strLog = strCmd + "失败,失败原因:" + strErrorCode;
//
// synchronized (this) {
// U8Series.operationTagResult = 1;
// U8Series.errorData = strLog;
// this.notifyAll();
// }
//
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.FAIL);
// itent.putExtra("msg", strLog);
// mLocalBroadcastManager.sendBroadcast(itent);
// // writeLog(strLog, ERROR.FAIL);
// } else {
// int nLen = btAryData.length;
// int nEpcLen = (btAryData[2] & 0xFF) - 4;
//
// if (btAryData[nLen - 3] != ERROR.SUCCESS) {
// strErrorCode = ERROR.format(btAryData[nLen - 3]);
// String strLog = strCmd + "失败,失败原因:" + strErrorCode;
// synchronized (this) {
// U8Series.operationTagResult = 1;
// U8Series.errorData = strLog;
// this.notifyAll();
// }
//
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.FAIL);
// itent.putExtra("msg", strLog);
// mLocalBroadcastManager.sendBroadcast(itent);
// // writeLog(strLog, ERROR.FAIL);
// return;
// }
// String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
// String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
// String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
// String strData = "";
//
// byte btTemp = btAryData[nLen - 2];
// byte btAntId = (byte) ((btTemp & 0x03) + 1);
// int nReadCount = btAryData[nLen - 1] & 0xFF;
//
// OperateTagMap tag = new OperateTagMap();
// tag.strPC = strPC;
// tag.strCRC = strCRC;
// tag.strEPC = strEPC;
// tag.strData = strData;
// tag.nDataLen = 0;
// tag.btAntId = btAntId;
// tag.nReadCount = nReadCount;
// m_curOperateTagBuffer.lsTagList.add(tag);
//
// synchronized (this) {
// U8Series.operationTagResult = 0;
// U8Series.errorData="success";
// Log.i("toolsdebug", "3333");
// this.notifyAll();
// }
//
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.SUCCESS);
// if (msgTran.getCmd() == CMD.WRITE_TAG) {
// itent.putExtra("msg", "Write label success");
// } else if (msgTran.getCmd() == CMD.KILL_TAG) {
// itent.putExtra("msg", "Destruction of label success");
// } else if (msgTran.getCmd() == CMD.LOCK_TAG) {
// itent.putExtra("msg", "Operation is successful!");
// }
// mLocalBroadcastManager.sendBroadcast(itent);
// // refreshOperateTag(btCmd, m_curOperateTagBuffer);
// // writeLog(strCmd, ERROR.SUCCESS);
// }
// }
/**
* processWriteTag 与 processLockTag 返回一致。
......@@ -1056,9 +1055,9 @@ public class ReaderHelper {
* @param msgTran
* 消息包
*/
private void processLockTag(MessageTran msgTran) {
processWriteTag(msgTran);
}
// private void processLockTag(MessageTran msgTran) {
// processWriteTag(msgTran);
// }
/**
* processKillTag 与 processLockTag 返回一致。
......@@ -1066,9 +1065,9 @@ public class ReaderHelper {
* @param msgTran
* 消息包
*/
private void processKillTag(MessageTran msgTran) {
processWriteTag(msgTran);
}
// private void processKillTag(MessageTran msgTran) {
// processWriteTag(msgTran);
// }
private void processSetAccessEpcMatch(MessageTran msgTran) {
processSet(msgTran);
......
......@@ -36,7 +36,6 @@ public class U8Property {
static public int getFlagState(){
Context context = StmApplication.getInstance().getApplicationContext();
SharedPreferences spf = context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
//SharedPreferences.Editor editor = spf.edit();
int state = spf.getInt(KEY_FLAG, 0);
return state;
}
......@@ -66,7 +65,6 @@ public class U8Property {
static public int getSoftSound(){
Context context = StmApplication.getInstance().getApplicationContext();
SharedPreferences spf =context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
//SharedPreferences.Editor editor = spf.edit();
return spf.getInt(KEY_SOFTWARE_SOUND, 1);
}
......
package com.stm.asset.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.stm.asset.R;
import com.stm.asset.model.InventoryInfo;
import java.util.ArrayList;
import java.util.List;
public class AdvantageAdapter extends RecyclerView.Adapter<AdvantageAdapter.AdvantageViewHolder> {
private List<InventoryInfo> dataList;
private final Context context;
public AdvantageAdapter(Context context) {
this.dataList = new ArrayList<>();
this.context = context;
}
@NonNull
@Override
public AdvantageAdapter.AdvantageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflater = LayoutInflater.from(context).inflate(R.layout.view_check_task_item, parent, false);
return new AdvantageAdapter.AdvantageViewHolder(inflater);
}
@Override
public void onBindViewHolder(@NonNull AdvantageAdapter.AdvantageViewHolder holder, int position) {
InventoryInfo taskInfo = dataList.get(position);
holder.numberTxt.setText(taskInfo.getNumber());
String statusName = "";
if ("0".equals(taskInfo.getItem01())) {
statusName = "未盘点";
} else if ("1".equals(taskInfo.getItem01())) {
statusName = "相符";
} else if ("2".equals(taskInfo.getItem01())) {
statusName = "盘亏";
} else if ("3".equals(taskInfo.getItem01())) {
statusName = "盘盈";
}
holder.statusTxt.setText(statusName);
}
@Override
public int getItemCount() {
return dataList.size();
}
/**
* 刷新数据
*/
@SuppressLint("NotifyDataSetChanged")
public void setData(List<InventoryInfo> data) {
if (dataList == null) {
dataList = new ArrayList<>();
}
dataList.clear();
if (data != null && data.size() > 0) {
dataList.addAll(data);
}
notifyDataSetChanged();
}
public List<InventoryInfo> queryData() {
return dataList;
}
static class AdvantageViewHolder extends RecyclerView.ViewHolder {
LinearLayout nameLayout;
TextView numberTxt, statusTxt;
public AdvantageViewHolder(View itemView) {
super(itemView);
nameLayout = itemView.findViewById(R.id.task_item_name_layout);
numberTxt = itemView.findViewById(R.id.task_item_number_txt);
statusTxt = itemView.findViewById(R.id.task_item_status_txt);
nameLayout.setVisibility(View.GONE);
}
}
}
package com.stm.asset.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.utils.Tools;
import com.seuic.uhf.EPC;
import com.stm.asset.R;
import com.stm.asset.utils.StringUtils;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
......@@ -25,10 +24,11 @@ import java.util.List;
public class InventoryAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<InventoryBuffer.InventoryTagMap> dataList;
private List<EPC> dataList;
public InventoryAdapter(Context context) {
inflater = LayoutInflater.from(context);
dataList = new ArrayList<>();
}
@Override
......@@ -52,38 +52,21 @@ public class InventoryAdapter extends BaseAdapter {
if (convertView == null) {
viewHolder = new ViewHolder();
convertView =inflater.inflate(R.layout.view_inventory_item, null);
// viewHolder.idTxt = convertView.findViewById(R.id.item_inventory_id_txt);
viewHolder.epcTxt = convertView.findViewById(R.id.item_inventory_epc_txt);
// viewHolder.pcTxt = convertView.findViewById(R.id.item_inventory_pc_txt);
// viewHolder.timesTxt = convertView.findViewById(R.id.item_inventory_times_txt);
// viewHolder.rssiTxt = convertView.findViewById(R.id.item_inventory_rssi_txt);
// viewHolder.freqTxt = convertView.findViewById(R.id.item_inventory_freq_txt);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
InventoryBuffer.InventoryTagMap inventoryTagMap = dataList.get(position);
// viewHolder.idTxt.setText(String.valueOf(position+1));
EPC epc = dataList.get(position);
try {
String epcStr = inventoryTagMap.strEPC;
byte[] bytes = Tools.stringToByteArray(epcStr);
String str = new String(bytes, StandardCharsets.UTF_8);
viewHolder.epcTxt.setText(str);
viewHolder.epcTxt.setText(epc.getId());
} catch (Exception e) {
e.printStackTrace();
}
// viewHolder.pcTxt.setText(inventoryTagMap.strPC);
// viewHolder.timesTxt.setText(String.valueOf(inventoryTagMap.nReadCount));
// try {
// viewHolder.rssiTxt.setText((Integer.parseInt(inventoryTagMap.strRSSI) - 129) + "dBm");
// } catch (Exception e) {
// viewHolder.rssiTxt.setText("");
// }
// viewHolder.freqTxt.setText(inventoryTagMap.strFreq);
return convertView;
}
public void setData(List<InventoryBuffer.InventoryTagMap> data, boolean isReset) {
public void setData(List<EPC> data, boolean isReset) {
if (dataList == null) {
dataList = new ArrayList<>();
}
......@@ -92,16 +75,14 @@ public class InventoryAdapter extends BaseAdapter {
}
if (data != null && data.size() > 0) {
// 处理标签数据
for (InventoryBuffer.InventoryTagMap item : data) {
String epcStr = item.strEPC;
if (!StringUtils.isEmptyOrNull(epcStr)) {
for (EPC item : data) {
String epcStr = item.getId().replaceAll(" ", "");
// 数字且位数是4的倍数
if (!StringUtils.isEmptyOrNull(epcStr) && StringUtils.isNumber(epcStr) && epcStr.length() % 4 == 0) {
if (!hasItem(epcStr)) {
try {
byte[] bytes = Tools.stringToByteArray(epcStr);
String str = new String(bytes, StandardCharsets.UTF_8).trim();
if (StringUtils.isNumber(str)) {
dataList.add(item);
}
Log.i("InventoryAdapter", "epcStr:" + epcStr.replaceAll(" ", ""));
dataList.add(item);
} catch (Exception e) {
e.printStackTrace();
}
......@@ -113,21 +94,20 @@ public class InventoryAdapter extends BaseAdapter {
}
private boolean hasItem(String epc) {
for (InventoryBuffer.InventoryTagMap item : dataList) {
String epcStr = item.strEPC;
if (epc.equals(epcStr)) {
for (EPC item : dataList) {
String epcStr = item.getId();
if (epc.replaceAll(" ", "").equals(epcStr.replaceAll(" ", ""))) {
return true;
}
}
return false;
}
public List<InventoryBuffer.InventoryTagMap> queryData() {
public List<EPC> queryData() {
return dataList;
}
private class ViewHolder {
// private TextView idTxt, epcTxt, pcTxt, timesTxt, rssiTxt, freqTxt;
private TextView epcTxt;
}
......
......@@ -5,10 +5,12 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.stm.asset.R;
import com.stm.asset.model.InventoryInfo;
import com.stm.asset.utils.StringUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -48,8 +50,9 @@ public class TaskAdapter extends BaseAdapter {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView =inflater.inflate(R.layout.view_check_task_item, null);
// viewHolder.nameTxt = convertView.findViewById(R.id.task_item_name_txt);
convertView = inflater.inflate(R.layout.view_check_task_item, null);
viewHolder.nameLayout = convertView.findViewById(R.id.task_item_name_layout);
viewHolder.nameTxt = convertView.findViewById(R.id.task_item_name_txt);
viewHolder.numberTxt = convertView.findViewById(R.id.task_item_number_txt);
// viewHolder.userTxt = convertView.findViewById(R.id.task_item_user_txt);
// viewHolder.deptTxt = convertView.findViewById(R.id.task_item_dept_txt);
......@@ -59,17 +62,24 @@ public class TaskAdapter extends BaseAdapter {
viewHolder = (ViewHolder) convertView.getTag();
}
InventoryInfo taskInfo = dataList.get(position);
// viewHolder.nameTxt.setText(taskInfo.getName());
viewHolder.nameTxt.setText(taskInfo.getName());
viewHolder.numberTxt.setText(taskInfo.getNumber());
if (StringUtils.isEmptyOrNull(taskInfo.getName())) {
viewHolder.nameLayout.setVisibility(View.GONE);
} else {
viewHolder.nameLayout.setVisibility(View.VISIBLE);
}
// viewHolder.userTxt.setText(taskInfo.getUserName());
// viewHolder.deptTxt.setText(taskInfo.getUserDept());
String statusName = "";
if ("0".equals(taskInfo.getStatus())) {
statusName = "未上传";
} else if ("1".equals(taskInfo.getStatus())) {
statusName = "上传失败";
} else if ("2".equals(taskInfo.getStatus())) {
statusName = "上传成功";
if ("0".equals(taskInfo.getItem01())) {
statusName = "未盘点";
} else if ("1".equals(taskInfo.getItem01())) {
statusName = "相符";
} else if ("2".equals(taskInfo.getItem01())) {
statusName = "盘亏";
} else if ("3".equals(taskInfo.getItem01())) {
statusName = "盘盈";
}
viewHolder.statusTxt.setText(statusName);
return convertView;
......@@ -88,7 +98,8 @@ public class TaskAdapter extends BaseAdapter {
private class ViewHolder {
// private TextView nameTxt, numberTxt, userTxt, deptTxt, statusTxt;
private TextView numberTxt, statusTxt;
private TextView nameTxt, numberTxt, statusTxt;
private LinearLayout nameLayout;
}
}
package com.stm.asset.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.seuic.uhf.EPC;
import com.stm.asset.R;
import com.stm.asset.base.StmApplication;
import com.stm.asset.model.InventoryInfo;
import com.stm.asset.utils.StringUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
public class TaskListAdapter extends RecyclerView.Adapter<TaskListAdapter.TaskViewHolder> {
private List<InventoryInfo> dataList;
private List<InventoryInfo> advantageList;
private final Context context;
public TaskListAdapter(Context context) {
this.dataList = new ArrayList<>();
this.advantageList = new ArrayList<>();
this.context = context;
}
@NonNull
@Override
public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflater = LayoutInflater.from(context).inflate(R.layout.view_check_task_item, parent, false);
return new TaskViewHolder(inflater);
}
@Override
public void onBindViewHolder(@NonNull TaskViewHolder holder, int position) {
InventoryInfo taskInfo = dataList.get(position);
holder.seqTxt.setText(taskInfo.getItem02());
holder.nameTxt.setText(taskInfo.getName());
holder.numberTxt.setText(taskInfo.getNumber());
String statusName = "";
if ("0".equals(taskInfo.getItem01())) {
statusName = "未盘点";
} else if ("1".equals(taskInfo.getItem01())) {
statusName = "相符";
} else if ("2".equals(taskInfo.getItem01())) {
statusName = "盘亏";
} else if ("3".equals(taskInfo.getItem01())) {
statusName = "盘盈";
}
holder.statusTxt.setText(statusName);
}
@Override
public int getItemCount() {
return dataList.size();
}
/**
* 刷新数据
*/
@SuppressLint("NotifyDataSetChanged")
public void setData(List<InventoryInfo> data) {
if (dataList == null) {
dataList = new ArrayList<>();
}
dataList.clear();
if (advantageList == null) {
advantageList = new ArrayList<>();
}
advantageList.clear();
if (data != null && data.size() > 0) {
dataList.addAll(data);
}
notifyDataSetChanged();
}
/**
* 修改数据盘点状态
*/
@SuppressLint("NotifyDataSetChanged")
public void updateStatus(List<EPC> epcList) {
if (epcList != null && epcList.size() > 0) {
List<InventoryInfo> oldList = getCloneList();
Set<String> advantageKey = new HashSet<>();
for (EPC item : epcList) {
String epcStr = item.getId();
// 数字且位数是4的倍数
if (!StringUtils.isEmptyOrNull(epcStr) && StringUtils.isNumber(epcStr) && epcStr.length() % 4 == 0) {
boolean exists = false;
for (InventoryInfo info : dataList) {
if (epcStr.equals(info.getNumber())) {
info.setItem01("1");
exists = true;
}
}
if (!exists && !advantageKey.contains(epcStr)) {
InventoryInfo advantageInfo = new InventoryInfo();
advantageInfo.setNumber(epcStr);
advantageInfo.setStatus("0");
advantageInfo.setItem01("3");
advantageList.add(advantageInfo);
advantageKey.add(epcStr);
}
}
}
InventoryCallBack callback = new InventoryCallBack(oldList, dataList);
DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(callback);
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
diffResult.dispatchUpdatesTo(TaskListAdapter.this);
}
});
}
}
private List<InventoryInfo> getCloneList() {
List<InventoryInfo> cloneList = new ArrayList<>();
if (dataList != null) {
for (InventoryInfo info : dataList) {
InventoryInfo clone = info.copy();
cloneList.add(clone);
}
}
return cloneList;
}
public List<InventoryInfo> queryResultData() {
return dataList;
}
public List<InventoryInfo> queryAdvantageData() {
return advantageList;
}
static class InventoryCallBack extends DiffUtil.Callback {
List<InventoryInfo> oldList, newList;
public InventoryCallBack(List<InventoryInfo> oldList, List<InventoryInfo> newList) {
this.oldList = oldList;
this.newList = newList;
}
@Override
public int getOldListSize() {
return oldList == null ? 0 : oldList.size();
}
@Override
public int getNewListSize() {
return newList == null ? 0 : newList.size();
}
@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
return Objects.equals(oldList.get(oldItemPosition).getNumber(), newList.get(newItemPosition).getNumber());
}
@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
return (Objects.equals(oldList.get(oldItemPosition).getStatus(), newList.get(newItemPosition).getStatus())
&& Objects.equals(oldList.get(oldItemPosition).getItem01(), newList.get(newItemPosition).getItem01()));
}
}
static class TaskViewHolder extends RecyclerView.ViewHolder {
TextView seqTxt, nameTxt, numberTxt, statusTxt;
public TaskViewHolder(View itemView) {
super(itemView);
seqTxt = itemView.findViewById(R.id.task_item_seq_txt);
nameTxt = itemView.findViewById(R.id.task_item_name_txt);
numberTxt = itemView.findViewById(R.id.task_item_number_txt);
statusTxt = itemView.findViewById(R.id.task_item_status_txt);
}
}
}
......@@ -74,7 +74,7 @@ public abstract class BaseActivity extends Activity implements CustomAdapt {
@Override
public void run() {
if (StmApplication.getInstance().isShowBackground()) {
StmApplication.getInstance().showToastShort(StmApplication.getInstance().getResources().getString(R.string.app_name) + "已经被切到后台运行");
// StmApplication.getInstance().showToastShort(StmApplication.getInstance().getResources().getString(R.string.app_name) + "已经被切到后台运行");
}
}
});
......
......@@ -70,7 +70,7 @@ public abstract class BaseFragmentActivity extends FragmentActivity implements C
@Override
public void run() {
if (StmApplication.getInstance().isShowBackground()) {
StmApplication.getInstance().showToastShort(StmApplication.getInstance().getResources().getString(R.string.app_name) + "已经被切到后台运行");
// StmApplication.getInstance().showToastShort(StmApplication.getInstance().getResources().getString(R.string.app_name) + "已经被切到后台运行");
}
}
});
......
......@@ -2,17 +2,21 @@ package com.stm.asset.base;
public class ConfigKey {
public final static String GATEWAYIP = "fms.citictrust.com.cn";
public final static String GATWAYPORT = "";
// http://10.50.251.101 8848 测试地址
// https://mfms.citictrust.com.cn 生产地址
public final static String GATEWAYIP = "stream.hulianmofang.cn";
public final static String GATWAYPORT = "7773";
// http://stream.hulianmofang.cn 7773 POC地址
// 10.240.142.134 12800
public final static String PLAYFORM = "FMPAPP";
// CJFKAPP 长江养老
public final static String SIGNATURENAME = "stream"; // 测试环境请配置成stream(生产环境具体再通知)
public final static String SIGNATUREPASSWORD = "stream123"; // 测试环境请配置成stream123(生产环境具体再通知)
public final static String HTTPS_CERTIFICATION_NAME = "feiyongmofang.cer";
public final static boolean DEBUG = true; // 是否打印测试数据
public final static boolean ISOPENHTTPS = true; // 是否开启https请求方式
public final static boolean ISOPENHTTPS = false; // 是否开启https请求方式
public static final int PERMISSION_REQUEST_EXTERNAL_STORAGE = 40001;
public static final int ACTIVITY_REQUEST_SELECT_TASK = 40002;
}
......@@ -2,19 +2,14 @@ package com.stm.asset.base;
public class InterfaceKey {
// private final static String GETWAY = "GATEWAY/";
//
// public final static String UNIONLOGINAPP = GETWAY + "app/login"; // 登录
// public final static String QURYPAGEHOMEUSERINFO = GETWAY + "app/quryPageHomeUserInfo"; // 获取用户信息
// public final static String SCANINVENTORY = GETWAY + "app/ams/scanInventory"; // 上传资产编号
private final static String GETWAY = "GATEWAY/";
private final static String GETWAY = "FMP/";
public final static String UNIONLOGINAPP = "FMP/" + "login"; // 登录
public final static String QURYPAGEHOMEUSERINFO = "FMP/" + "quryPageHomeUserInfo"; // 获取用户信息
public final static String QUERYVERSIONAPP = "FMP/" + "queryAppVersionApp"; // 查询版本号
public final static String QUERYINVENTORYMAINPAGE = "FMP/" + "ams/inventory/queryInventoryMainPage"; // 查询盘点任务
public final static String SCANINVENTORY = "FMP/" + "ams/inventory/mergeInventoryDetailByAssetNum"; // 上传资产编号
public final static String UNIONLOGINAPP = GETWAY + "login"; // 登录
public final static String QURYPAGEHOMEUSERINFO = GETWAY + "quryPageHomeUserInfo"; // 获取用户信息
public final static String SCANINVENTORY = GETWAY + "ams/scanInventory"; // 上传资产编号
public final static String QUERYVERSIONAPP = GETWAY + "queryAppVersionApp"; // 查询版本号
......
......@@ -7,7 +7,6 @@ import android.widget.Toast;
import androidx.multidex.MultiDex;
import com.fn.useries.reader.server.ReaderHelper;
import com.stm.asset.model.UserInfo;
import com.tencent.bugly.crashreport.CrashReport;
......@@ -40,19 +39,19 @@ public class StmApplication extends Application {
public void onCreate() {
super.onCreate();
instance = this;
try {
//实例化ReaderHelper并setContext
ReaderHelper.setContext(getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
// try {
// //实例化ReaderHelper并setContext
// ReaderHelper.setContext(getApplicationContext());
// } catch (Exception e) {
// e.printStackTrace();
// }
appExecutors = new AppExecutors();
// 开启bugly异常捕获
CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(getApplicationContext());
strategy.setAppChannel("ZXXTU8");
CrashReport.initCrashReport(getApplicationContext(), "9f314845ea", false, strategy);
strategy.setAppChannel("HKYH"); //设置渠道
CrashReport.initCrashReport(getApplicationContext(), "24e17bedee", true, strategy);
}
public static StmApplication getInstance() {
......@@ -114,16 +113,6 @@ public class StmApplication extends Application {
this.userInfo = userInfo;
}
// public String getHttpStr() {
// String httpSb;
// if (PropertyUtil.isUseHttps(this)) {
// httpSb = "https";
// } else {
// httpSb = "http";
// }
// return httpSb;
// }
public AppExecutors getAppExecutors() {
return appExecutors;
}
......
......@@ -26,11 +26,11 @@ public interface InventoryInfoDao {
@Query("select * from inventoryInfo")
List<InventoryInfo> getAllInventoryInfoList();
@Query("select * from inventoryInfo where (status = '0' or status = '1') and userName = :userName")
List<InventoryInfo> getUndoInventoryList(String userName);
@Query("select * from inventoryInfo where (status = '0' or status = '1')")
List<InventoryInfo> getUndoInventoryList();
@Query("select * from inventoryInfo where status = '2' and userName = :userName")
List<InventoryInfo> getDoneInventoryList(String userName);
@Query("select * from inventoryInfo where status = '2'")
List<InventoryInfo> getDoneInventoryList();
/**
* 插入数据
......
......@@ -4,6 +4,8 @@ import com.stm.asset.base.InterfaceKey;
import com.stm.asset.json.CommonMapJson;
import com.stm.asset.json.CommonStringJson;
import com.stm.asset.json.ListUserInfo;
import com.stm.asset.json.TaskListJson;
import com.stm.asset.utils.SM2Util;
/**
* 类名称:HttpService
......@@ -26,14 +28,14 @@ public class HttpService {
public void unionLoginApp(String accout, String password, RequestCallback<CommonStringJson> requestCallback) {
RequestParams params = new RequestParams();
params.addBodyParameter("username", accout);
params.addBodyParameter("password", password);
params.addBodyParameter("fromM10", "Y");
params.addBodyParameter("username", SM2Util.encrypt(accout));
params.addBodyParameter("password", SM2Util.encrypt(password));
HttpUtil.getInstance().sendJson(InterfaceKey.UNIONLOGINAPP, params, requestCallback);
}
public void quryPageHomeUserInfo(String accessToken, RequestCallback<ListUserInfo> requestCallback) {
RequestParams params = new RequestParams();
params.addHeader("Acess-Token", accessToken);
params.addBodyParameter("accessToken", accessToken);
HttpUtil.getInstance().sendJson(InterfaceKey.QURYPAGEHOMEUSERINFO, params, requestCallback);
}
......@@ -43,9 +45,19 @@ public class HttpService {
HttpUtil.getInstance().sendJson(InterfaceKey.QUERYVERSIONAPP, params, requestCallback);
}
public void scanInventory(String numberList, RequestCallback<CommonStringJson> requestCallback) {
public void queryInventoryMainPage(int pageNum, int pageSize, RequestCallback<TaskListJson> requestCallback) {
RequestParams params = new RequestParams();
params.addBodyParameter("numList", numberList);
params.addBodyParameter("pageNum", String.valueOf(pageNum));
params.addBodyParameter("pageSize", String.valueOf(pageSize));
params.addBodyParameter("pageStatus", "amsInventoryExecution");
params.addBodyParameter("inventoryType", "0");
HttpUtil.getInstance().sendJson(InterfaceKey.QUERYINVENTORYMAINPAGE, params, requestCallback);
}
public void scanInventory(String mainId, String numberList, RequestCallback<CommonStringJson> requestCallback) {
RequestParams params = new RequestParams();
params.addBodyParameter("mainId", mainId);
params.addBodyParameter("assetNumListStr", numberList);
HttpUtil.getInstance().sendJson(InterfaceKey.SCANINVENTORY, params, requestCallback);
}
......
......@@ -42,10 +42,10 @@ public class HttpUtil {
e.printStackTrace();
}
}
builder.callTimeout(6000, TimeUnit.MILLISECONDS);
builder.connectTimeout(6000, TimeUnit.MILLISECONDS);
builder.readTimeout(30000, TimeUnit.MILLISECONDS);
builder.writeTimeout(30000, TimeUnit.MILLISECONDS);
builder.callTimeout(20000, TimeUnit.MILLISECONDS);
builder.connectTimeout(20000, TimeUnit.MILLISECONDS);
builder.readTimeout(60000, TimeUnit.MILLISECONDS);
builder.writeTimeout(60000, TimeUnit.MILLISECONDS);
okHttpClient = builder.build();
}
......@@ -70,12 +70,13 @@ public class HttpUtil {
Log.i("HttpUtil", String.format("请求方法: %s", url));
builder.url(url);
if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) {
Log.i("HttpUtil", String.format("请求参数 head:%s", new Gson().toJson(requestParams.getHeaders())));
for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) {
builder.header(headerEntry.getKey(), headerEntry.getValue());
}
}
if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) {
Log.i("HttpUtil", String.format("请求参数:%s", new Gson().toJson(requestParams.getBodyParams())));
Log.i("HttpUtil", String.format("请求参数 body:%s", new Gson().toJson(requestParams.getBodyParams())));
// RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams()));
// builder.post(requestBody);
FormBody.Builder bodyBuilder = new FormBody.Builder();
......@@ -123,12 +124,13 @@ public class HttpUtil {
Log.i("HttpUtil", String.format("请求方法: %s", url));
builder.url(url);
if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) {
Log.i("HttpUtil", String.format("请求参数 head:%s", new Gson().toJson(requestParams.getHeaders())));
for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) {
builder.header(headerEntry.getKey(), headerEntry.getValue());
}
}
if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) {
Log.i("HttpUtil", String.format("请求参数:%s", new Gson().toJson(requestParams.getBodyParams())));
Log.i("HttpUtil", String.format("请求参数 body:%s", new Gson().toJson(requestParams.getBodyParams())));
// RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams()));
// builder.post(requestBody);
FormBody.Builder bodyBuilder = new FormBody.Builder();
......@@ -197,7 +199,7 @@ public class HttpUtil {
}
sbd.append("/");
sbd.append(interfaceName);
sbd.append(".ajax");
sbd.append(".app");
return sbd.toString();
}
......
......@@ -19,6 +19,7 @@ public class RequestParams {
private Map<String, String> bodyParams;
public RequestParams() {
addCommonHead();
addCommonParams();
}
......@@ -50,21 +51,27 @@ public class RequestParams {
bodyParams.put(name, value);
}
private void addCommonHead() {
if (this.headers == null) {
this.headers = new HashMap<>();
}
long currentTime = System.currentTimeMillis();
headers.put("Current-Time", String.valueOf(currentTime));
headers.put("Authenticator-Data", MD5Util.getAuthenticator(currentTime));
if (StmApplication.getInstance().getUserInfo() != null) {
headers.put("Acess-Token", PropertyUtil.getAccessToken(StmApplication.getInstance().getApplicationContext()));
}
}
private void addCommonParams(){
if (bodyParams == null) {
bodyParams = new HashMap<>();
}
bodyParams.put("machinecode", "h5");
bodyParams.put("machinetype", "h5");
bodyParams.put("channelcode", "APP");
bodyParams.put("machinecode", "phone");
bodyParams.put("machinetype", "phone");
bodyParams.put("channelcode", "VUE");
bodyParams.put("terminalcode", "fee");
bodyParams.put("platform", PropertyUtil.getHttpPlatform(StmApplication.getInstance().getApplicationContext()));
long currentTime = System.currentTimeMillis();
bodyParams.put("currenttime", String.valueOf(currentTime));
bodyParams.put("authenticator", MD5Util.getAuthenticator(currentTime));
if (StmApplication.getInstance().getUserInfo() != null) {
bodyParams.put("accessToken", PropertyUtil.getAccessToken(StmApplication.getInstance().getApplicationContext()));
}
}
}
\ No newline at end of file
package com.stm.asset.json;
import com.stm.asset.model.TaskInfo;
import java.io.Serializable;
import java.util.List;
public class TaskJsonInfo implements Serializable {
private static final long serialVersionUID = 7340008696696353349L;
private String pageNum;
private String pageSize;
private String size;
private String total;
private String pages;
private List<TaskInfo> list;
public String getPageNum() {
return pageNum;
}
public void setPageNum(String pageNum) {
this.pageNum = pageNum;
}
public String getPageSize() {
return pageSize;
}
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getTotal() {
return total;
}
public void setTotal(String total) {
this.total = total;
}
public String getPages() {
return pages;
}
public void setPages(String pages) {
this.pages = pages;
}
public List<TaskInfo> getList() {
return list;
}
public void setList(List<TaskInfo> list) {
this.list = list;
}
}
package com.stm.asset.json;
import com.stm.asset.model.LoginInfo;
public class TaskListJson extends BaseInfo {
private static final long serialVersionUID = 1987319819308033456L;
private TaskJsonInfo rspData;
public void setRspData(TaskJsonInfo rspData) {
this.rspData = rspData;
}
public TaskJsonInfo getRspData() {
return rspData==null?new TaskJsonInfo():rspData;
}
}
......@@ -31,9 +31,9 @@ public class InventoryInfo implements Serializable {
@ColumnInfo(name = "status")
private String status; // 状态:0,未提交;1,提交失败;2,提交成功
@ColumnInfo(name = "item01")
private String item01;
private String item01; // 盘点结果:0,未盘点;1,相符;2,盘亏;3,盘盈
@ColumnInfo(name = "item02")
private String item02;
private String item02; // 序号
@ColumnInfo(name = "item03")
private String item03;
@ColumnInfo(name = "item04")
......@@ -54,14 +54,21 @@ public class InventoryInfo implements Serializable {
public InventoryInfo(){}
@Ignore
public InventoryInfo(String name, String number, String userName, String userDept, String item01, String item02){
public InventoryInfo(String name, String number, String item02){
this.name = name;
this.number = number;
this.userName = userName;
this.userDept = userDept;
this.item01 = item01;
this.item02 = item02;
this.status = "0";
this.item01 = "0";
}
public InventoryInfo copy() {
InventoryInfo info = new InventoryInfo();
info.setName(this.name);
info.setNumber(this.number);
info.setStatus(this.status);
info.setItem01(this.item01);
return info;
}
public long getId() {
......
package com.stm.asset.model;
import java.io.Serializable;
/**
* 类名称:TaskInfo
* 类描述:盘点任务实体类
* 创建人:story
* 创建时间:2023-03-27
*/
public class TaskInfo implements Serializable {
private static final long serialVersionUID = -2803924680531753060L;
private String id;
private String inventoryName; // 任务名称
private String statusName; // 任务状态
private String inventoryEmpName; // 盘点人
private String inventoryDeptName; // 盘点部门
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getInventoryName() {
return inventoryName;
}
public void setInventoryName(String inventoryName) {
this.inventoryName = inventoryName;
}
public String getStatusName() {
return statusName;
}
public void setStatusName(String statusName) {
this.statusName = statusName;
}
public String getInventoryEmpName() {
return inventoryEmpName;
}
public void setInventoryEmpName(String inventoryEmpName) {
this.inventoryEmpName = inventoryEmpName;
}
public String getInventoryDeptName() {
return inventoryDeptName;
}
public void setInventoryDeptName(String inventoryDeptName) {
this.inventoryDeptName = inventoryDeptName;
}
}
package com.stm.asset.page;
import android.annotation.SuppressLint;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;
import com.stm.asset.R;
import com.stm.asset.adapter.AdvantageAdapter;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.ConfigKey;
import com.stm.asset.base.StmApplication;
import com.stm.asset.dao.InventoryInfoDao;
import com.stm.asset.database.InventoryInfoDatabase;
import com.stm.asset.model.InventoryInfo;
import com.stm.asset.utils.FileUtils;
import com.stm.asset.utils.StringUtils;
import com.stm.asset.utils.TimeUtil;
import com.stm.asset.utils.ViewUtil;
import com.stm.asset.view.CommonAlertDialog;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.List;
/**
* 待确认盘盈 页面
*/
public class AdvantageListActivity extends BaseActivity implements View.OnClickListener {
private RelativeLayout noneLayout;
private AdvantageAdapter advantageAdapter;
private InventoryInfoDao inventoryInfoDao;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_advantage_list);
initView();
try {
InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao();
loadData();
} catch (Exception e) {
e.printStackTrace();
}
}
private void initView() {
initTitle();
titleTxt.setText("待确认盘盈");
findViewById(R.id.common_title_back_layout).setOnClickListener(this);
RecyclerView recyclerView = findViewById(R.id.advantage_data_list);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(RecyclerView.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
advantageAdapter = new AdvantageAdapter(this);
recyclerView.setAdapter(advantageAdapter);
recyclerView.addItemDecoration(new DividerItemDecoration(this, RecyclerView.VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
noneLayout = findViewById(R.id.advantage_data_none_layout);
Button saveBtn = findViewById(R.id.advantage_save_btn);
saveBtn.setOnClickListener(this);
}
public void loadData() {
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
if (inventoryInfoDao != null) {
List<InventoryInfo> inventoryInfoList = inventoryInfoDao.getUndoInventoryList();
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
advantageAdapter.setData(inventoryInfoList);
if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
noneLayout.setVisibility(View.GONE);
} else {
noneLayout.setVisibility(View.VISIBLE);
}
}
});
}
}
});
}
private void exportAdvantageData() {
List<InventoryInfo> dataList = advantageAdapter.queryData();
if (dataList != null && dataList.size() > 0) {
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
String msg = "";
String filePath = FileUtils.getDateFilePath("盘盈数据" + TimeUtil.getCurrentDate() + ".txt");
if (!StringUtils.isEmptyOrNull(filePath)) {
OutputStream ops = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
ops = new FileOutputStream(filePath);
outputStreamWriter = new OutputStreamWriter(ops, StandardCharsets.UTF_8);
bufferedWriter = new BufferedWriter(outputStreamWriter);
for (InventoryInfo info : dataList) {
bufferedWriter.write(info.getNumber() + "\r\n");
bufferedWriter.flush();
}
} catch (Exception e) {
e.printStackTrace();
msg = "导出异常";
} finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStreamWriter != null) {
try {
outputStreamWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ops != null) {
try {
ops.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
msg = "导出异常:读取文件失败";
}
if (StringUtils.isEmptyOrNull(msg)) {
inventoryInfoDao.deleteInventoryList(dataList);
msg = "盘盈数据成功导出到" + filePath;
}
String finalMsg = msg;
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
if (finalMsg.startsWith("盘盈数据成功导出到")) {
advantageAdapter.setData(null);
noneLayout.setVisibility(View.VISIBLE);
showExportDialog(finalMsg);
} else {
StmApplication.getInstance().showToastShort(finalMsg);
}
}
});
}
});
}
}
private void showExportDialog(String content) {
int dialog_width = (int) (ViewUtil.getScreenWidth(this) * 4 / 5.0);
final CommonAlertDialog dialog = new CommonAlertDialog(AdvantageListActivity.this);
dialog.setViewParams(new LinearLayout.LayoutParams(dialog_width, -2));
dialog.show();
dialog.hideCancelBtn();
dialog.setText("提示", content, "确定");
dialog.setSureListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dialog.isShowing()) {
dialog.dismiss();
}
sApp.setShowBackground(false);
AdvantageListActivity.this.finish();
}
});
}
@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.common_title_back_layout:
finish();
break;
case R.id.advantage_save_btn:
int perRes = ActivityCompat.checkSelfPermission(this, "android.permission.WRITE_EXTERNAL_STORAGE");
int perRes2 = ActivityCompat.checkSelfPermission(this, "android.permission.READ_EXTERNAL_STORAGE");
if (perRes == PackageManager.PERMISSION_DENIED || perRes2 == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE"}, ConfigKey.PERMISSION_REQUEST_EXTERNAL_STORAGE);
} else {
exportAdvantageData();
}
break;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == ConfigKey.PERMISSION_REQUEST_EXTERNAL_STORAGE) {
boolean sp = true;
for (int grantResult : grantResults) {
if (grantResult == PackageManager.PERMISSION_DENIED) {
sp = false;
break;
}
}
if (sp) {
exportAdvantageData();
} else {
StmApplication.getInstance().showToastShort("导出盘盈数据需要访问手机存储权限");
}
}
}
}
package com.stm.asset.page;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.stm.asset.R;
import com.stm.asset.base.BaseFragmentActivity;
import com.stm.asset.base.ConfigKey;
import com.stm.asset.base.FragPageAdapter;
import com.stm.asset.base.StmApplication;
import com.stm.asset.view.LoadingDialog;
import java.util.ArrayList;
......@@ -41,12 +49,12 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
private void initView() {
initTitle();
titleTxt.setText("盘点任务");
titleTxt.setText("资产盘点");
findViewById(R.id.common_title_back_layout).setOnClickListener(this);
unfinishedTxt = findViewById(R.id.task_unfinished_txt);
finishedTxt = findViewById(R.id.task_finished_txt);
unfinishedTxt.setText("未盘点任务(0)");
finishedTxt.setText("已完成任务");
unfinishedTxt.setText("未盘点资产(0)");
finishedTxt.setText("已完成资产");
unfinishedTxt.setSelected(true);
finishedTxt.setSelected(false);
unfinishedTxt.setOnClickListener(this);
......@@ -88,13 +96,35 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case ConfigKey.PERMISSION_REQUEST_EXTERNAL_STORAGE:
boolean sp = true;
for (int i=0;i<grantResults.length;i++) {
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
sp = false;
break;
}
}
if (sp) {
if (unfinishedTaskFgm != null) {
unfinishedTaskFgm.selectTaskFile();
}
} else {
StmApplication.getInstance().showToastShort("导出数据需要访问手机存储权限");
}
break;
}
}
public void setUnfinishedNum(int num) {
String str = "未盘点任务(" + num + ")";
String str = "未盘点资产(" + num + ")";
unfinishedTxt.setText(str);
}
public void setFinishedNum(int num) {
String str = "已完成任务";
String str = "已完成资产";
finishedTxt.setText(str);
}
......
......@@ -2,10 +2,10 @@ package com.stm.asset.page;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.Spinner;
......@@ -13,13 +13,14 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import com.fn.useries.operation.U8Series;
import com.fn.useries.reader.ERROR;
import com.fn.useries.utils.MusicPlayer;
import com.seuic.uhf.UHFService;
import com.stm.asset.R;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
import com.stm.asset.utils.StringUtils;
import com.stm.asset.utils.ViewUtil;
import com.stm.asset.view.LoadingDialog;
import com.stm.asset.view.TextMoveLayout;
/**
......@@ -30,8 +31,6 @@ import com.stm.asset.view.TextMoveLayout;
*/
public class DeviceSetActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private TextMoveLayout powerLayout;
private SeekBar powerSb;
private TextView moveTextDBM;
......@@ -40,14 +39,17 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private Spinner sessionSpinner;
private Spinner flagSpinner;
private U8Series mUSeries;
private UHFService uhfService;
private int screenWidth;
private boolean firstIn = true;
private LoadingDialog loadingDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_set);
initView();
loadingDialog = new LoadingDialog(this);
}
private void initView() {
......@@ -74,59 +76,65 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
findViewById(R.id.inventory_save_btn).setOnClickListener(this);
mUSeries = U8Series.getInstance();
uhfService = UHFService.getInstance();
}
@Override
protected void onResume() {
super.onResume();
mUSeries.modulePowerOn(MODEL);
uhfService.open();
powerLayout.removeAllViews();
powerLayout.addView(moveTextDBM, layoutParams);
if (mUSeries != null) {
getPower();
getInventoryParams();
loadingDialog.show();
if (uhfService != null && firstIn) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
loadingDialog.dismiss();
firstIn = false;
getPower();
getInventoryParams();
}
}, 1500);
}
}
@Override
protected void onPause() {
super.onPause();
mUSeries.modulePowerOff(MODEL);
uhfService.close();
}
private void getPower() {
try {
Thread.sleep(800);
String outPowerSetParams = mUSeries.getParams(U8Series.PARA_POWER);
String outPowerSetParams = String.valueOf(uhfService.getPower());
Log.i("DeviceSetActivity", "M10_U8:getPower " + outPowerSetParams);
if (outPowerSetParams.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
StmApplication.getInstance().showToastShort(getResources().getString(R.string.device_set_get_power_fail) + " " + outPowerSetParams);
return;
}
refreshPowerView(outPowerSetParams);
// 显示软件提示音
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
refreshPowerView(outPowerSetParams);
}
});
} catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:getPowerParamsException " + e.toString());
}
}
private void getInventoryParams() {
String[] mItems = { "s0", "s1", "s2", "s3" };
String[] mItemsFlag = { "A", "B" };
ArrayAdapter<String> simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItems);
sessionSpinner.setAdapter(simpleAdapter);
String sessionParams = mUSeries.getParams(U8Series.SESSIONSTATE);
if (sessionParams != null && !"".equals(sessionParams)) {
sessionSpinner.setSelection(Integer.parseInt(sessionParams));
}
simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItemsFlag);
flagSpinner.setAdapter(simpleAdapter);
String flagParams = mUSeries.getParams(U8Series.FLAGSTATE);
if (flagParams != null && !"".equals(flagParams)) {
flagSpinner.setSelection(Integer.parseInt(flagParams));
}
// String[] mItems = { "s0", "s1", "s2", "s3" };
// String[] mItemsFlag = { "A", "B" };
// ArrayAdapter<String> simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItems);
// sessionSpinner.setAdapter(simpleAdapter);
// String sessionParams = mUSeries.getParams(M11U8Service.SESSIONSTATE);
// if (sessionParams != null && !"".equals(sessionParams)) {
// sessionSpinner.setSelection(Integer.parseInt(sessionParams));
// }
// simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItemsFlag);
// flagSpinner.setAdapter(simpleAdapter);
// String flagParams = mUSeries.getParams(M11U8Service.FLAGSTATE);
// if (flagParams != null && !"".equals(flagParams)) {
// flagSpinner.setSelection(Integer.parseInt(flagParams));
// }
}
private void refreshPowerView(String powerValue) {
......@@ -138,39 +146,44 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private void getTemperature() {
temperatureEt.setText("");
try {
String strTemperature = mUSeries.getParams(U8Series.TEMPERATURE);
if (strTemperature.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {// 接收异常
String strTemperature = uhfService.getTemperature();
Log.i("DeviceSetActivity", "M10_U8:getTemperature " + strTemperature);
if (!StringUtils.isEmptyOrNull(strTemperature)) {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
MusicPlayer.getInstance().play(MusicPlayer.Type.OK);
temperatureEt.setText(strTemperature);
}
});
} else {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
StmApplication.getInstance().showToastShort(ERROR.RECEVICE_INCOMPLETE);
return;
}
MusicPlayer.getInstance().play(MusicPlayer.Type.OK);
temperatureEt.setText(strTemperature);
} catch (Exception e) {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
Log.i("DeviceSetActivity", "M10_U8:getTemperatureParamsException" + e.toString());
e.printStackTrace();
}
}
private boolean setSessionAndFlag() {
int sessionIndex = sessionSpinner.getSelectedItemPosition();
int flagIndex = flagSpinner.getSelectedItemPosition();
boolean setSessionStateResult = mUSeries.setParams(U8Series.SESSIONSTATE, Byte.toString((byte) sessionIndex));
boolean setFlagStateResult = mUSeries.setParams(U8Series.FLAGSTATE, Byte.toString((byte) flagIndex));
return (setSessionStateResult && setFlagStateResult);
// int sessionIndex = sessionSpinner.getSelectedItemPosition();
// int flagIndex = flagSpinner.getSelectedItemPosition();
// boolean setSessionStateResult = mUSeries.setParams(M11U8Service.SESSIONSTATE, Byte.toString((byte) sessionIndex));
// boolean setFlagStateResult = mUSeries.setParams(M11U8Service.FLAGSTATE, Byte.toString((byte) flagIndex));
// return (setSessionStateResult && setFlagStateResult);
return true;
}
private boolean setPower() {
byte btOutputPower;
String outputPower;
try {
String powerStr = moveTextDBM.getText().toString();
btOutputPower = (byte) Integer.parseInt(powerStr.subSequence(0, powerStr.indexOf("dBm")).toString());
outputPower = powerStr.subSequence(0, powerStr.indexOf("dBm")).toString();
} catch (Exception e) {
return false;
}
try {
return mUSeries.setParams(U8Series.PARA_POWER, Byte.toString(btOutputPower));
return uhfService.setPower(Integer.parseInt(outputPower));
} catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:setPowerParamsException" + e.toString());
return false;
......
package com.stm.asset.page;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
......@@ -10,11 +10,8 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.room.Room;
import com.fn.useries.model.ResponseHandler;
import com.fn.useries.operation.U8Series;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.reader.server.ReaderHelper;
import com.fn.useries.utils.Tools;
import com.seuic.uhf.EPC;
import com.seuic.uhf.UHFService;
import com.stm.asset.R;
import com.stm.asset.adapter.InventoryAdapter;
import com.stm.asset.base.BaseActivity;
......@@ -23,7 +20,6 @@ import com.stm.asset.dao.InventoryInfoDao;
import com.stm.asset.database.InventoryInfoDatabase;
import com.stm.asset.model.InventoryInfo;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -36,16 +32,14 @@ import java.util.List;
*/
public class InventoryActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private Button beginBtn;
private TextView txtCountTxt;
private U8Series mUSeries;
private ReaderHelper mReaderHelper;
private InventoryBuffer m_curInventoryBuffer;
private Handler mHandler;
private UHFService uhfService;
private boolean isInventory;
private Thread inventoryThread;
private InventoryRunnable inventoryRunnable;
private long mRefreshTime;
private InventoryAdapter inventoryAdapter;
private InventoryInfoDao inventoryInfoDao;
......@@ -55,13 +49,11 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
super.onCreate(savedInstanceState);
setContentView(R.layout.actitity_inventory);
initView();
mHandler = new Handler();
inventoryRunnable = new InventoryRunnable();
try {
mReaderHelper = ReaderHelper.getDefaultHelper();
m_curInventoryBuffer = mReaderHelper.getCurInventoryBuffer();
InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao();
mUSeries = U8Series.getInstance();
uhfService = UHFService.getInstance();
} catch (Exception e) {
e.printStackTrace();
}
......@@ -70,13 +62,13 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
@Override
protected void onResume() {
super.onResume();
mUSeries.modulePowerOn(MODEL);
uhfService.open();
}
@Override
protected void onPause() {
super.onPause();
mUSeries.modulePowerOff(MODEL);
uhfService.close();
}
private void initView() {
......@@ -101,57 +93,43 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
finish();
break;
case R.id.inventory_begin_btn:
beginBtn.setClickable(false);
beginBtn.setText(R.string.inventory_btn_doing);
isInventory = true;
mRefreshTime = new Date().getTime();
mUSeries.startInventory(new ResponseHandler() {
@Override
public void onSuccess(String msg, Object data, byte[] parameters) {
super.onSuccess(msg, data, parameters);
if (U8Series.REFRESHLIST.equals(msg)) {
List<InventoryBuffer.InventoryTagMap> list = (List<InventoryBuffer.InventoryTagMap>) data;
if (list.size() > 0) {
inventoryAdapter.setData(list, false);
}
}
}
@Override
public void onFailure(String msg) {
super.onFailure(msg);
StmApplication.getInstance().showToastShort(getResources().getText(R.string.inventory_disk_failure) + msg);
}
});
mHandler.postDelayed(mRefreshRunnable, 500);
if (uhfService.inventoryStart()) {
beginBtn.setClickable(false);
beginBtn.setText(R.string.inventory_btn_doing);
isInventory = true;
mRefreshTime = new Date().getTime();
inventoryThread = new Thread(inventoryRunnable);
inventoryThread.start();
} else {
StmApplication.getInstance().showToastShort("开启盘询失败,请稍后操作");
}
break;
case R.id.inventory_finish_btn:
isInventory = false;
try {
mUSeries.stopInventory();
} catch (Exception e) {
e.printStackTrace();
if (uhfService.inventoryStop()) {
isInventory = false;
if (inventoryThread != null) {
inventoryThread.interrupt();
inventoryThread = null;
}
beginBtn.setClickable(true);
beginBtn.setText(R.string.inventory_btn_begin);
} else {
StmApplication.getInstance().showToastShort("关闭盘询失败,请稍后操作");
}
mHandler.removeCallbacks(mRefreshRunnable);
beginBtn.setClickable(true);
beginBtn.setText(R.string.inventory_btn_begin);
break;
case R.id.inventory_save_btn:
if (isInventory) {
StmApplication.getInstance().showToastShort("正在盘询,请稍后操作");
} else {
List<InventoryBuffer.InventoryTagMap> dataList = inventoryAdapter.queryData();
List<EPC> dataList = inventoryAdapter.queryData();
if (dataList != null && dataList.size() > 0) {
List<InventoryInfo> insertList = new ArrayList<>();
for (InventoryBuffer.InventoryTagMap map : dataList) {
for (EPC map : dataList) {
try {
String epcStr = map.strEPC;
byte[] bytes = Tools.stringToByteArray(epcStr);
String str = new String(bytes, StandardCharsets.UTF_8);
InventoryInfo inventoryInfo = new InventoryInfo();
inventoryInfo.setNumber(str.trim());
inventoryInfo.setNumber(map.getId().replaceAll(" ", ""));
inventoryInfo.setStatus("0");
inventoryInfo.setUserName(StmApplication.getInstance().getUserInfo().getUsername());
inventoryInfo.setItem01("0"); // 未盘点
insertList.add(inventoryInfo);
} catch (Exception e) {
e.printStackTrace();
......@@ -176,23 +154,32 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
}
}
private Runnable mRefreshRunnable = new Runnable() {
public void run() {
refreshText();
mHandler.postDelayed(this, 2000);
}
};
private void refreshText() {
String countTxtFormat = InventoryActivity.this.getString(R.string.inventory_count_text);
long now = new Date().getTime();
String text = String.format(countTxtFormat, inventoryAdapter.getCount(), mReaderHelper.getInventoryTotal(), m_curInventoryBuffer.nReadRate, (now - mRefreshTime) / 1000);
// List<InventoryBuffer.InventoryTagMap> list = m_curInventoryBuffer.lsTagList;
// if (list.size() > 0) {
// InventoryBuffer.InventoryTagMap item = list.get(0);
// String str = "strPC:" + item.strPC + " strCRC:" + item.strCRC + " strEPC:" + item.strEPC + " btAntId:" + item.btAntId + " strRSSI:" + item.strRSSI + " nReadCount:" + item.nReadCount + " strFreq:" + item.strFreq + " nAnt1:" + item.nAnt1 + " nAnt2:" + item.nAnt2 + " nAnt3:" + item.nAnt3 + " nAnt4:" + item.nAnt4;
// StmApplication.getInstance().showToastShort(str);
// }
String text = String.format(countTxtFormat, inventoryAdapter.getCount());
txtCountTxt.setText(text);
}
private class InventoryRunnable implements Runnable {
@Override
public void run() {
while (isInventory) {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
List<EPC> epcList = uhfService.getTagIDs();
if (epcList != null && epcList.size() > 0) {
inventoryAdapter.setData(epcList, false);
refreshText();
}
}
});
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
......@@ -3,7 +3,6 @@ package com.stm.asset.page;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
......@@ -12,9 +11,6 @@ import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import com.fn.useries.model.Message;
import com.fn.useries.operation.IUSeries;
import com.fn.useries.operation.U8Series;
import com.stm.asset.R;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
......@@ -39,15 +35,10 @@ import java.util.Map;
*/
public class MainActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private static final int REQUEST_TO_SET = 10001;
private RelativeLayout logoutLayout;
private View logoutLine;
private TextView userTxt;
private IUSeries mUSeries;
private boolean setFlag = false;
private UserInfo userInfo;
private LoadingDialog loadingDialog;
private Map<String, String> versionMap;
......@@ -57,15 +48,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
U8Series.setContext(StmApplication.getInstance().getApplicationContext());
mUSeries = U8Series.getInstance();
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
Log.i("MainActivity", "code:" + openSerialMsg.getCode());
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
}
loadingDialog = new LoadingDialog(this);
}
......@@ -80,15 +62,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
logoutLayout.setOnClickListener(this);
}
private void jumpToConfigurationTool() {
Intent intent = new Intent();
intent.putExtra("modelName", MODEL);
intent.putExtra("packageName", getPackageName());
intent.putExtra("activityName", MainActivity.class.getName());
intent.setClass(this, SetAndSaveActivity.class);
startActivityForResult(intent, REQUEST_TO_SET);
}
@Override
protected void onResume() {
super.onResume();
......@@ -103,7 +76,8 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
logoutLayout.setVisibility(View.GONE);
logoutLine.setVisibility(View.GONE);
}
// getVersionIno();
// 不需要登录
userTxt.setVisibility(View.GONE);
}
@Override
......@@ -114,9 +88,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
@Override
protected void onDestroy() {
super.onDestroy();
if (setFlag) {
mUSeries.closeSerialPort();
}
}
@Override
......@@ -130,55 +101,19 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
}
break;
case R.id.main_inventory_data_layout:
if (userInfo != null) {
Intent gotoTaskIntent = new Intent();
gotoTaskIntent.setClass(MainActivity.this, CheckTaskActivity.class);
startActivity(gotoTaskIntent);
} else {
Intent loginIntent = new Intent();
loginIntent.setClass(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
}
Intent gotoTaskIntent = new Intent();
gotoTaskIntent.setClass(MainActivity.this, AdvantageListActivity.class);
startActivity(gotoTaskIntent);
break;
case R.id.main_begin_inventory_layout:
if (userInfo != null) {
if (!setFlag) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, InventoryActivity.class);
startActivity(inventoryIntent);
}
} else {
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, InventoryActivity.class);
startActivity(inventoryIntent);
}
break;
} else {
Intent loginIntent = new Intent();
loginIntent.setClass(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
}
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, TaskListActivity.class);
startActivity(inventoryIntent);
break;
case R.id.main_settings_layout:
if (!setFlag) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(inventoryIntent);
}
} else {
Intent deviceSetIntent = new Intent();
deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(deviceSetIntent);
}
Intent deviceSetIntent = new Intent();
deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(deviceSetIntent);
break;
case R.id.main_logout_layout:
userInfo = null;
......@@ -191,29 +126,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_TO_SET) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() == 0) {
setFlag = true;
}
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
showExitDialog();
return true;
}
return super.dispatchKeyEvent(event);
}
private void showExitDialog() {
int dialog_width = (int) (ViewUtil.getScreenWidth(this) * 4 / 5.0);
final CommonAlertDialog dialog = new CommonAlertDialog(MainActivity.this);
......@@ -269,7 +181,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
sApp.setShowBackground(false);
// ActivityCompat.requestPermissions(MainActivity.this, new String[] {"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"}, IConstant.PERMISSION_REQUEST_SELECT_PHOTO);
} else {
// TODO
//
}
}
});
......@@ -287,7 +199,16 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
});
}
private RequestCallback<CommonMapJson> version_cb = new RequestCallback<CommonMapJson>(CommonMapJson.class) {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
showExitDialog();
return true;
}
return super.dispatchKeyEvent(event);
}
private final RequestCallback<CommonMapJson> version_cb = new RequestCallback<CommonMapJson>(CommonMapJson.class) {
@Override
public void onSuccess(CommonMapJson responseInfo) {
if (responseInfo.isSucess()) {
......
package com.stm.asset.page;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.stm.asset.R;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import cn.fuen.xmldemo.entity.Device;
import cn.fuen.xmldemo.model.DeviceModel;
import cn.fuen.xmldemo.model.DeviceModelImp;
public class SetAndSaveActivity extends BaseActivity implements OnClickListener, OnItemSelectedListener, OnCheckedChangeListener {
public static final String _4_0_3 = "4.0.3";
public static final String _5_1_1 = "5.1.1";
public static final int M96DisplayHeight = 782;
public static final int M10ADisplayHeight = 640;
private Button btn_save;
private CheckBox cb_enable;
private Spinner spinnerModel;
private Spinner spinnerSerialPort;
private Spinner spinnerBaud;
private Context mContext;
private List<String> modelList = new ArrayList<>();
private List<String> serialPortList = new ArrayList<>();
private List<String> baudList = new ArrayList<>();
// 写入list集合
private List<Device> writeList = new ArrayList<>();
// 读取出的数据信息存储集合
private List<Device> readList = new ArrayList<>();
// 读取出的数据model存储集合
// private List<String> readModels = new ArrayList<>();
// 为方便动态设置radioGroup被选择的RadioButton位置,创建List存储
private List<RadioGroup> rgList = new ArrayList<>();
// 新建一个btnList存储radiobutton的状态
private List<String> btnList = new ArrayList<String>();
// 声明DeviceModel
private DeviceModelImp deviceModel;
// 设置一默认参数Device方便设置调用
private Device mDefaultDevice = new Device();
private List<String> mDefaultGPIOList = new ArrayList<>();
// 存储上下电区域TextView 方便动态添加及获取
private List<TextView> onTvList = new ArrayList<>();
private boolean versionCheckSucceed = true;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getApplicationContext();
deviceModel = new DeviceModel(mContext);
setContentView(R.layout.activity_setandsave);
// reload();
initView();
if (versionCheckSucceed) {
setAdapter();
getModelType();
// 对Modelspinner及Button实现监听
setListener();
}
}
@Override
public void finish() {
// if (versionCheckSucceed)
// jumpToModel();
super.finish();
}
// private void jumpToModel() {
// // 判断是完成否已经配置
// Intent in = new Intent();
// Intent jumpIntent = getIntent();
// if (jumpIntent.getStringExtra("packageName") == null || jumpIntent.getStringExtra("activityName") == null)
// return;
// in.setClassName(jumpIntent.getStringExtra("packageName"), jumpIntent.getStringExtra("activityName"));
// startActivity(in);
// }
/**
* 获取intent传进的参数,并将当前页面
*/
private void getModelType() {
String modeName = (String) getIntent().getStringExtra("modelName");
if (modeName != null) {
spinnerModel.setSelection(modelList.indexOf(modeName));
setModelConfig(mDefaultDevice);
}
}
/**
* 设置一个默认Device参数方便调用
*/
private void setDefaultDevice(int length) {
mDefaultDevice.setSerialPort(serialPortList.get(0));
mDefaultDevice.setBaudRate(9600);
mDefaultDevice.setEnable(false);
for (int i = 0; i < length; i++) {
mDefaultGPIOList.add("无");
}
mDefaultDevice.setGpios(mDefaultGPIOList);
}
/**
* 根据形参Device刷新当前界面
*/
private void setModelConfig(Device d) {
// 设置串口spinner
for (int i = 0; i < serialPortList.size(); i++) {
if (d.getSerialPort().equals(serialPortList.get(i))) {
spinnerSerialPort.setSelection(i);
}
}
// 设置波特率spinner
for (int i = 0; i < baudList.size(); i++) {
if (d.getBaudRate() == Integer.parseInt(baudList.get(i))) {
spinnerBaud.setSelection(i);
}
}
// 设置enableCheckBox
cb_enable.setChecked(d.isEnable());
// 设置上下电参数
List<String> gpioList = d.getGpios();
Log.i("see", "gpioList de size " + gpioList.size() + "");
Log.i("see", "rgList de size " + rgList.size() + "");
for (int i = 0; i < gpioList.size(); i++) {
int index = getchildIndex(gpioList.get(i));
rgList.get(i).check(rgList.get(i).getChildAt(index).getId());
}
}
// 设置adapter
private void setAdapter() {
String[] baudsStrings = getResources().getStringArray(R.array.spinarr_baud);
List<String> baudsList = new ArrayList<>();
for (int i = 0; i < baudsStrings.length; i++) {
baudsList.add(baudsStrings[i]);
}
ArrayAdapter<String> modelAdapter = new ArrayAdapter<>(this, R.layout.spinner_item, modelList);
spinnerModel.setAdapter(modelAdapter);
ArrayAdapter<String> baudAdapter = new ArrayAdapter<>(this, R.layout.spinner_item, baudsList);
spinnerBaud.setAdapter(baudAdapter);
ArrayAdapter<String> portAdapter = new ArrayAdapter<>(this, R.layout.spinner_item, serialPortList);
spinnerSerialPort.setAdapter(portAdapter);
}
/**
* 整个界面设置监听
*/
private void setListener() {
// spinner控件的监听
spinnerModel.setOnItemSelectedListener(this);
// saveBtn的监控
btn_save.setOnClickListener(this);
// checkBox监听
cb_enable.setOnCheckedChangeListener(this);
}
/**
* 顶部spinner model切换监听
*/
// 上一次点击的position默认是0
private int lastPosition = 0;
@Override
public void onItemSelected(AdapterView<?> arg0, View v, int position, long arg3) {
if (versionCheckSucceed) {
// 判断当前点击事件位置和上一次点击事件位置是否相同 ,不同则更新writeList
if (position != lastPosition) {
updataWriteList();
}
if (writeList.size() != 0) {
// 若此次点击的model在读取到的集合中
Device device = getDeviceFromModel(modelList.get(position));
if (device != null) {
setModelConfig(device);
} else {
setModelConfig(mDefaultDevice);
}
} else {
// 若此次点击的model不在读取集合中,将各个设置项置为默认状态
setModelConfig(mDefaultDevice);
}
lastPosition = position;
}
}
/**
* 根据传进model字符串获取Device
*
* @return Device
*/
public Device getDeviceFromModel(String model) {
Device device = null;
for (Device d : writeList) {
if (d.getModel().equals(model)) {
device = d;
}
}
return device;
}
// 在切换model或点击保存时将页面信息保存到内存中
private void updataWriteList() {
// 此处判断 此次要存到内存中的Device是否之前设置过,若设置过则把之前的remove掉
Iterator<Device> iterator = writeList.iterator();
while (iterator.hasNext()) {
Device d = iterator.next();
if (d.getModel().equals(modelList.get(lastPosition))) {
iterator.remove(); // 注意这个地方
}
}
Device device = new Device();
device.setModel(modelList.get(lastPosition));
device.setEnable(cb_enable.isChecked());
device.setSerialPort(spinnerSerialPort.getSelectedItem().toString());
device.setBaudRate(Integer.parseInt(spinnerBaud.getSelectedItem().toString()));
initRadioBtn();
for (int i = 0; i < checkedRBs.size(); i++) {
btnList.add(checkedRBs.get(i).getText().toString());
}
device.setGpios(btnList);
writeList.add(device);
btnList.clear();
Log.i("writesize", writeList.size() + "");
}
// 获取GPIO状态对应的RadioGroup中的位置
private int getchildIndex(String state) {
if (state.equals("1")) {
return 0;
} else if (state.equals("0")) {
return 1;
} else if (state.equals("无")) {
return 2;
}
return -1;
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.saveBtn && versionCheckSucceed) {
updataWriteList();
// 储存writeList中的model字符串
List<String> bufList = new ArrayList<>();
for (Device d : writeList) {
bufList.add(d.getModel());
}
if (readList != null) {
for (Device rd : readList) {
Log.i("writesize", Boolean.toString(rd == null));
if (!bufList.contains(rd.getModel())) {
writeList.add(rd);
}
}
}
deviceModel.writeXML(writeList, rgList.size() / 2);
StmApplication.getInstance().showToastShort("success");
} else if (id == R.id.common_title_back_layout) {
setResult(RESULT_OK);
finish();
}
}
/**
* 动态加载GPIO区域控件
*
* @param release
*/
private void updataGPIOUI(String release) {
String[] valueStrings = new String[] { "1", "0", "无" };
if (release.equals("m10")) {
String[] m10_GPIO = getResources().getStringArray(R.array.m10_GPIO);
RelativeLayout onRelativeLayout = findViewById(R.id.relativeLayoutON_main);
addViewTo(m10_GPIO, valueStrings, onRelativeLayout, R.id.poweron);
RelativeLayout offRelativeLayout = findViewById(R.id.relativeLayoutOFF_main);
addViewTo(m10_GPIO, valueStrings, offRelativeLayout, R.id.poweroff);
} else if (release.equals("m10A")) {
String[] m10A_GPIO = getResources().getStringArray(R.array.m10A_GPIO);
RelativeLayout onRelativeLayout = findViewById(R.id.relativeLayoutON_main);
addViewTo(m10A_GPIO, valueStrings, onRelativeLayout, R.id.poweron);
RelativeLayout offRelativeLayout = findViewById(R.id.relativeLayoutOFF_main);
addViewTo(m10A_GPIO, valueStrings, offRelativeLayout, R.id.poweroff);
} else if (release.equals("m96")) {
String[] m96_GPIO = getResources().getStringArray(R.array.m96_GPIO);
RelativeLayout onRelativeLayout = findViewById(R.id.relativeLayoutON_main);
addViewTo(m96_GPIO, valueStrings, onRelativeLayout, R.id.poweron);
RelativeLayout offRelativeLayout = findViewById(R.id.relativeLayoutOFF_main);
addViewTo(m96_GPIO, valueStrings, offRelativeLayout, R.id.poweroff);
}
}
@SuppressWarnings("deprecation")
private void addViewTo(String[] m10_GPIO, String[] valueStrings, RelativeLayout relativeLayout, int startViewId) {
TextView textView1 = new TextView(mContext);
textView1.setId(R.id.special_define_set_text);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.RIGHT_OF, startViewId);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
params.setMargins(23, 0, 0, 0);
textView1.setLayoutParams(params);
textView1.setPadding(0, 15, 0, 20);
textView1.setText(m10_GPIO[0]);
textView1.setTextSize(13);
textView1.setTextColor(0xFF000000);
relativeLayout.addView(textView1);
/*********************** RadioButton ******************************/
RadioGroup radioGroup1 = new RadioGroup(mContext);
radioGroup1.setId(R.id.special_define_set_radio);
RelativeLayout.LayoutParams rgLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rgLayoutParams.addRule(RelativeLayout.ALIGN_TOP, textView1.getId());
// rgLayoutParams.addRule(RelativeLayout.RIGHT_OF, tv.getId());
// rgLayoutParams.addRule(RelativeLayout.RIGHT_OF, textView1.getId());
rgLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
rgLayoutParams.setMargins(0, 0, 50, 0);
radioGroup1.setLayoutParams(rgLayoutParams);
radioGroup1.setOrientation(RadioGroup.HORIZONTAL);
for (int a = 0; a < valueStrings.length; a++) {
RadioButton rbButton = new RadioButton(mContext);
RadioGroup.LayoutParams rbParams = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);
rbButton.setLayoutParams(rbParams);
rbButton.setText(valueStrings[a]);
rbButton.setTextSize(12);
rbButton.setTextColor(0xFF000000);
rbButton.setId(1000 + a);
Bitmap b = null;
rbButton.setButtonDrawable(new BitmapDrawable(b));
Drawable drawable = getResources().getDrawable(R.drawable.abc_radio);
drawable.setBounds(0, 0, 50, 50);
rbButton.setCompoundDrawables(drawable, null, null, null);
rbButton.setPadding(5, 0, 0, 0);
radioGroup1.addView(rbButton);
if (a == 2) {
radioGroup1.check(rbButton.getId());
}
}
relativeLayout.addView(radioGroup1);
onTvList.add(textView1);
rgList.add(radioGroup1);
for (int i = 1; i < m10_GPIO.length; i++) {
// 设置
TextView textView = new TextView(mContext);
textView.setId(i);
RelativeLayout.LayoutParams tvParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
// tvParams.setMargins(15, 0, 0, 0); textView1
tvParams.addRule(RelativeLayout.ALIGN_LEFT, textView1.getId());
// Log.i("see", onTvList.size() + "");
// Log.i("see", "i-1" + " " + (i - 1) + " " + (onTvList.get(i -
// 1).getId()));
tvParams.addRule(RelativeLayout.BELOW, onTvList.get(i - 1).getId());
textView.setLayoutParams(tvParams);
textView.setPadding(0, 10, 0, 20);
textView.setText(m10_GPIO[i]);
textView.setTextSize(13);
textView.setTextColor(0xFF000000);
relativeLayout.addView(textView);
// RadioGroup
RadioGroup rGroup = new RadioGroup(mContext);
rGroup.setId(100 + i);
RelativeLayout.LayoutParams rgParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rgParams.addRule(RelativeLayout.ALIGN_TOP, textView.getId());
// rgLayoutParams.addRule(RelativeLayout.RIGHT_OF, tv.getId());
rgParams.addRule(RelativeLayout.ALIGN_LEFT, radioGroup1.getId());
rGroup.setLayoutParams(rgParams);
rGroup.setOrientation(RadioGroup.HORIZONTAL);
for (int a = 0; a < valueStrings.length; a++) {
RadioButton rbButton = new RadioButton(mContext);
RadioGroup.LayoutParams rbParams = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);
rbButton.setLayoutParams(rbParams);
rbButton.setText(valueStrings[a]);
rbButton.setTextSize(12);
rbButton.setTextColor(0xFF000000);
rbButton.setId(1000 + a);
Bitmap b = null;
rbButton.setButtonDrawable(new BitmapDrawable(b));
Drawable drawable = getResources().getDrawable(R.drawable.abc_radio);
drawable.setBounds(0, 0, 50, 50);
rbButton.setCompoundDrawables(drawable, null, null, null);
rbButton.setPadding(5, 0, 0, 0);
rGroup.addView(rbButton);
if (a == 2) {
rGroup.check(rbButton.getId());
}
}
relativeLayout.addView(rGroup);
onTvList.add(textView);
rgList.add(rGroup);
}
}
/**
* 实例化页面上方xml添加的控件
*/
@SuppressWarnings("deprecation")
private void initView() {
initTitle();
titleTxt.setText("设备基本设置");
backLayout.setOnClickListener(this);
btn_save = findViewById(R.id.saveBtn);
cb_enable = findViewById(R.id.enableCheckBox);
Bitmap b = null;
cb_enable.setButtonDrawable(new BitmapDrawable(b));
Drawable drawable = getResources().getDrawable(R.drawable.abc_checkbox);
drawable.setBounds(0, 0, 60, 60);
cb_enable.setCompoundDrawables(drawable, null, null, null);
cb_enable.setPadding(5, 0, 0, 0);
spinnerSerialPort = findViewById(R.id.serialport_spinner);
spinnerBaud = findViewById(R.id.baudRate_spinner);
spinnerModel = findViewById(R.id.model_spinner);
String SystemRelease = android.os.Build.VERSION.RELEASE;
if (SystemRelease.equals(_4_0_3)) {
// 根据不同机型 重新设置界面显示
updataGPIOUI("m10");
// 设置串口spinner中数据
String[] m10SerialPort = getResources().getStringArray(R.array.m10SerialPort);
for (int i = 0; i < m10SerialPort.length; i++) {
serialPortList.add(m10SerialPort[i]);
}
setDefaultDevice(rgList.size());
String[] modelsStrings = getResources().getStringArray(R.array.m10_models);
for (int i = 0; i < modelsStrings.length; i++) {
modelList.add(modelsStrings[i]);
}
} else if (SystemRelease.equals(_5_1_1)) {
if (getWindowManager().getDefaultDisplay().getHeight() == M10ADisplayHeight) {
// 根据不同机型 重新设置界面显示
updataGPIOUI("m10A");
String[] m10ASerialPort = getResources().getStringArray(R.array.m10ASerialPort);
for (int i = 0; i < m10ASerialPort.length; i++) {
serialPortList.add(m10ASerialPort[i]);
}
setDefaultDevice(rgList.size());
String[] modelsStrings = getResources().getStringArray(R.array.m10_models);
for (int i = 0; i < modelsStrings.length; i++) {
modelList.add(modelsStrings[i]);
}
} else {
// 根据不同机型 重新设置界面显示
updataGPIOUI("m96");
String[] m10ASerialPort = getResources().getStringArray(R.array.m96SerialPort);
for (int i = 0; i < m10ASerialPort.length; i++) {
serialPortList.add(m10ASerialPort[i]);
}
setDefaultDevice(rgList.size());
String[] modelsStrings = getResources().getStringArray(R.array.m96_models);
for (int i = 0; i < modelsStrings.length; i++) {
modelList.add(modelsStrings[i]);
}
}
} else {
versionCheckSucceed = false;
StmApplication.getInstance().showToastShort("此设备系统版本异常 请与技术支持人员联系");
}
}
private List<RadioButton> checkedRBs = new ArrayList<>();
/**
* 每次调用获得点击到的radiobutton
*/
public void initRadioBtn() {
checkedRBs.clear();
for (int i = 0; i < rgList.size(); i++) {
RadioButton checkedRb = findViewById(rgList.get(i).getCheckedRadioButtonId());
checkedRBs.add(checkedRb);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
setResult(RESULT_OK);
finish();
return true;
}
return super.dispatchKeyEvent(event);
}
}
package com.stm.asset.page;
import android.app.Activity;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -10,26 +20,41 @@ import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.room.Room;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.stm.asset.R;
import com.stm.asset.adapter.TaskAdapter;
import com.stm.asset.base.BaseFragment;
import com.stm.asset.base.ConfigKey;
import com.stm.asset.base.StmApplication;
import com.stm.asset.dao.InventoryInfoDao;
import com.stm.asset.database.InventoryInfoDatabase;
import com.stm.asset.http.HttpException;
import com.stm.asset.http.HttpService;
import com.stm.asset.http.RequestCallback;
import com.stm.asset.json.CommonStringJson;
import com.stm.asset.model.InventoryInfo;
import com.stm.asset.utils.NetworkUtil;
import com.stm.asset.utils.FileUtils;
import com.stm.asset.utils.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 类名称:TaskFragment
......@@ -46,6 +71,12 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
private String type; // 类型:A:未盘点 B:已完成
private InventoryInfoDao inventoryInfoDao;
private CheckTaskActivity checkTaskActivity;
private int excelNumberIndex = -1; // 盘点任务文件编号位置
private int excelNameIndex = -1; // 盘点任务文件编号位置
private int excelCountIndex = -1; // 盘点任务文件数量位置
private String excelPath = null;
private String exportPath = null;
private String exportMessage = null;
private TaskFragment(CheckTaskActivity checkTaskActivity, String type) {
this.checkTaskActivity = checkTaskActivity;
......@@ -62,16 +93,17 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
listView.setAdapter(taskAdapter);
Button testBtn = view.findViewById(R.id.task_test_btn);
Button saveBtn = view.findViewById(R.id.task_upload_btn);
Button exportBtn = view.findViewById(R.id.task_export_btn);
Button cleanBtn = view.findViewById(R.id.task_clean_btn);
saveBtn.setOnClickListener(this);
exportBtn.setOnClickListener(this);
cleanBtn.setOnClickListener(this);
testBtn.setOnClickListener(this);
if ("B".equals(type)) {
saveBtn.setVisibility(View.GONE);
exportBtn.setVisibility(View.GONE);
}
// testBtn.setVisibility(View.VISIBLE);
InventoryInfoDatabase database = Room.databaseBuilder(checkTaskActivity, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao();
loadData();
......@@ -85,9 +117,9 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public void run() {
if (inventoryInfoDao != null) {
if ("A".equals(type)) {
inventoryInfoList = inventoryInfoDao.getUndoInventoryList(StmApplication.getInstance().getUserInfo().getUsername());
inventoryInfoList = inventoryInfoDao.getUndoInventoryList();
} else if ("B".equals(type)) {
inventoryInfoList = inventoryInfoDao.getDoneInventoryList(StmApplication.getInstance().getUserInfo().getUsername());
inventoryInfoList = inventoryInfoDao.getDoneInventoryList();
}
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
......@@ -120,36 +152,27 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public void onClick(View view) {
switch (view.getId()) {
case R.id.task_upload_btn:
if (NetworkUtil.isNetworkAvailable(checkTaskActivity)) {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
List<String> strList = new ArrayList<>();
for (InventoryInfo info : inventoryInfoList) {
strList.add(info.getNumber());
}
StringBuffer sbf = new StringBuffer();
for (String str : strList) {
if (sbf.toString().equals("")) {
sbf.append("[\"");
sbf.append(str);
sbf.append("\"");
} else {
sbf.append(",\"");
sbf.append(str);
sbf.append("\"");
}
}
if (strList.size() > 0) {
sbf.append("]");
}
checkTaskActivity.getLoadingDialog().show();
HttpService.getInstance().scanInventory(sbf.toString(), scan_cb);
}
// 直接修改状态
int perRes = ActivityCompat.checkSelfPermission(checkTaskActivity, "android.permission.WRITE_EXTERNAL_STORAGE");
int perRes2 = ActivityCompat.checkSelfPermission(checkTaskActivity, "android.permission.READ_EXTERNAL_STORAGE");
if (perRes == PackageManager.PERMISSION_DENIED || perRes2 == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(checkTaskActivity, new String[] {"android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE"}, ConfigKey.PERMISSION_REQUEST_EXTERNAL_STORAGE);
} else {
StmApplication.getInstance().showToastShort(getString(R.string.net_settings));
selectTaskFile();
}
break;
case R.id.task_export_btn:
if (inventoryInfoList != null) {
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
inventoryInfoDao.insertInventoryList(inventoryInfoList);
writeDateToExcel();
}
});
}
break;
case R.id.task_clean_btn:
// String str = "{\"numList\":[\"0300320\",\"0300409\"],\"msg\":\"扫码总数量:3,失败数量:2,失败资产编号为[0300320, 0300409]\"}";
if (inventoryInfoList != null) {
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
......@@ -202,52 +225,407 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
}
}
private RequestCallback<CommonStringJson> scan_cb = new RequestCallback<CommonStringJson>(CommonStringJson.class) {
@Override
public void onSuccess(CommonStringJson responseInfo) {
checkTaskActivity.getLoadingDialog().dismiss();
if (responseInfo.isSucess()) {
String str = responseInfo.getRspData();
Map<String, Object> failedMap = new Gson().fromJson(str, new TypeToken<Map<String, Object>>(){}.getType());
if (failedMap != null && failedMap.get("numList") != null) {
List<String> numList = (List<String>) failedMap.get("numList");
if (numList != null && numList.size() > 0) {
StmApplication.getInstance().showToastShort(String.valueOf(failedMap.get("msg")));
// 处理盘点失败数据
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
for (InventoryInfo inventoryInfo : inventoryInfoList) {
boolean success = true;
for (String itemStr : numList) {
if (itemStr.equals(inventoryInfo.getNumber())) {
success = false;
public void selectTaskFile() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("application/*");
String[] mimeTypes = {"application/vnd.ms-excel", "application/x-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
startActivityForResult(intent, ConfigKey.ACTIVITY_REQUEST_SELECT_TASK);
}
private void checkDataByExcel(Uri uri) {
String filePath = getFilePath(uri);
if (!StringUtils.isEmptyOrNull(filePath)) {
List<InventoryInfo> excelDataList = readExcelData(filePath);
if (excelDataList.size() > 0) {
// 比较数据
StmApplication.getInstance().showToastShort("读取到" + excelDataList.size() + "条数据");
compareInventoryData(excelDataList);
} else {
StmApplication.getInstance().showToastShort("读取盘点任务文件为空");
}
} else {
StmApplication.getInstance().showToastShort("读取盘点任务文件失败");
}
}
private String getFilePath(Uri uri) {
String filePath = "";
if (DocumentsContract.isDocumentUri(checkTaskActivity, uri)) {
if ("com.android.externalstorage.documents".equals(uri.getAuthority())) {
String docId = DocumentsContract.getDocumentId(uri);
String[] split = docId.split(":");
String type = split[0];
if ("primary".equalsIgnoreCase(type)) {
filePath = Environment.getExternalStorageDirectory() + "/" + split[1];
}
} else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {
String id = DocumentsContract.getDocumentId(uri);
Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
filePath = getDataColumn(checkTaskActivity, contentUri, null, null);
} else if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
String docId = DocumentsContract.getDocumentId(uri);
String[] split = docId.split(":");
String type = split[0];
Uri contentUri = null;
if ("image".equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if ("video".equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if ("audio".equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}
String selection = "_id=?";
String[] selectionArgs = new String[] {split[1]};
filePath = getDataColumn(checkTaskActivity, contentUri, selection, selectionArgs);
}
} else if ("content".equalsIgnoreCase(uri.getScheme())) {
filePath = getDataColumn(checkTaskActivity, uri, null, null);
} else if ("file".equalsIgnoreCase(uri.getScheme())) {
filePath = uri.getPath();
}
return filePath;
}
private String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
Cursor cursor = null;
String column = "_data";
String[] projection = {column};
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}
private List<InventoryInfo> readExcelData(String filePath) {
excelPath = filePath;
InputStream ips = null;
List<InventoryInfo> excelInventoryList = new ArrayList<>();
try {
ips = new FileInputStream(filePath);
Workbook workbook = WorkbookFactory.create(ips);
Sheet sheet = workbook.getSheetAt(0);
if (sheet != null) {
Row titleRow = sheet.getRow(0);
if (titleRow != null) {
// 获取表头得到需要字段的位置
excelNameIndex = -1;
excelNumberIndex = -1;
excelCountIndex = -1;
for (Cell cell : titleRow) {
String valueTemp = getCellValueStr(cell);
if ("资产名称".equals(valueTemp)) {
excelNameIndex = cell.getColumnIndex();
} else if ("资产编号".equals(valueTemp)) {
excelNumberIndex = cell.getColumnIndex();
} else if ("盘点数量".equals(valueTemp)) {
excelCountIndex = cell.getColumnIndex();
}
}
if (excelNameIndex != -1 && excelNumberIndex != -1 && excelCountIndex != -1) {
StmApplication.getInstance().showToastShort("filePath:" + filePath);
// 根据位置读取响应数据
boolean first = true;
for (Row row : sheet) {
if (first) {
first = false;
} else {
String assetNumber = getCellValueStr(row.getCell(excelNumberIndex)).trim();
String assetName = getCellValueStr(row.getCell(excelNameIndex));
if (StringUtils.isNumber(assetNumber) && assetNumber.length() % 4 == 0) {
InventoryInfo tempInventory = new InventoryInfo();
tempInventory.setNumber(assetNumber);
tempInventory.setName(assetName);
excelInventoryList.add(tempInventory);
}
}
}
} else {
StmApplication.getInstance().showToastShort("表头格式错误,请重新选择");
}
} else {
StmApplication.getInstance().showToastShort("文件内容为空,请重新选择");
}
} else {
StmApplication.getInstance().showToastShort("文件内容为空,请重新选择");
}
workbook.close();
} catch (Exception e) {
StmApplication.getInstance().showToastShort("文件读取异常");
e.printStackTrace();
} finally {
if (ips != null) {
try {
ips.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return excelInventoryList;
}
private String getCellValueStr(Cell cell) {
String valueTemp = "";
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
if (cell.getColumnIndex() == excelNumberIndex) {
valueTemp = new DecimalFormat("#").format(cell.getNumericCellValue());
} else {
valueTemp = String.valueOf(cell.getNumericCellValue());
}
} else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
valueTemp = cell.getStringCellValue();
} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
valueTemp = String.valueOf(cell.getBooleanCellValue());
}
return valueTemp;
}
private void compareInventoryData(List<InventoryInfo> excelDataList) {
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
// 盘点前对数据处理,清理掉原来的盘点结果
Iterator<InventoryInfo> infoIterator = inventoryInfoList.iterator();
while (infoIterator.hasNext()) {
InventoryInfo info = infoIterator.next();
if ("2".equals(info.getItem01())) {
infoIterator.remove();
} else {
info.setItem01("0");
}
}
// 数据对比
Map<String, List<InventoryInfo>> excelGroup = excelDataList.stream().collect(Collectors.groupingBy(InventoryInfo::getNumber));
Set<String> assetNumberSet = new HashSet<>();
for (InventoryInfo inventoryInfo : inventoryInfoList) {
assetNumberSet.add(inventoryInfo.getNumber());
if (excelGroup.containsKey(inventoryInfo.getNumber())) {
inventoryInfo.setItem01("1");
List<InventoryInfo> groupTemp = excelGroup.get(inventoryInfo.getNumber());
if (groupTemp != null && groupTemp.size() > 0) {
inventoryInfo.setName(groupTemp.get(0).getName());
}
} else {
inventoryInfo.setItem01("3");
}
}
// 处理盘亏数据
for (String key : excelGroup.keySet()) {
if (!assetNumberSet.contains(key)) {
List<InventoryInfo> groupTemp = excelGroup.get(key);
if (groupTemp != null && groupTemp.size() > 0) {
InventoryInfo temp = groupTemp.get(0);
temp.setItem01("2");
temp.setStatus("0");
inventoryInfoList.add(temp);
}
}
}
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
taskAdapter.setData(inventoryInfoList);
StmApplication.getInstance().showToastShort("盘点完成");
}
});
}
});
}
private void writeDateToExcel() {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
Map<String, List<InventoryInfo>> inventoryGroupMap = inventoryInfoList.stream().collect(Collectors.groupingBy(InventoryInfo::getNumber));
InputStream ips = null;
OutputStream ops = null;
exportMessage = "";
try {
ips = new FileInputStream(excelPath);
Workbook workbook = WorkbookFactory.create(ips);
Sheet sheet = workbook.getSheetAt(0);
if (sheet != null) {
Row titleRow = sheet.getRow(0);
if (titleRow != null) {
// 获取表头得到需要字段的位置
excelNameIndex = -1;
excelNumberIndex = -1;
excelCountIndex = -1;
for (Cell cell : titleRow) {
String valueTemp = getCellValueStr(cell);
if ("资产名称".equals(valueTemp)) {
excelNameIndex = cell.getColumnIndex();
} else if ("资产编号".equals(valueTemp)) {
excelNumberIndex = cell.getColumnIndex();
} else if ("盘点数量".equals(valueTemp)) {
excelCountIndex = cell.getColumnIndex();
}
}
if (excelNameIndex != -1 && excelNumberIndex != -1 && excelCountIndex != -1) {
boolean first = true;
for (Row row : sheet) {
if (first) {
first = false;
} else {
String key = getCellValueStr(row.getCell(excelNumberIndex)).trim();
if (inventoryGroupMap.containsKey(key)) {
int count = 0;
List<InventoryInfo> inList = inventoryGroupMap.get(key);
if (inList != null && inList.size() > 0) {
String item01 = inList.get(0).getItem01();
if ("1".equals(item01)) {
count = 1;
}
}
if (success) {
inventoryInfo.setStatus("2");
inventoryInfoDao.updateInventory(inventoryInfo);
} else {
inventoryInfo.setStatus("1");
inventoryInfoDao.updateInventory(inventoryInfo);
Cell cell = row.getCell(excelCountIndex);
if (cell == null) {
cell = row.createCell(excelCountIndex);
}
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(String.valueOf(count));
}
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
checkTaskActivity.refreshData();
}
});
}
}
});
} else {
exportMessage = "导出盘点结果异常";
}
} else {
StmApplication.getInstance().showToastShort("上传成功");
exportMessage = "导出盘点结果异常";
}
} else {
StmApplication.getInstance().showToastShort("上传成功");
exportMessage = "导出盘点结果异常";
}
// 获取一个新文件名
exportPath = FileUtils.getNewPathWithStr(excelPath, "盘点结果");
ops = new FileOutputStream(exportPath);
workbook.write(ops);
workbook.close();
// 数据存储
for (InventoryInfo info : inventoryInfoList) {
info.setStatus("2");
}
inventoryInfoDao.insertInventoryList(inventoryInfoList);
} catch (Exception e) {
exportMessage = "导出盘点结果异常";
e.printStackTrace();
} finally {
if (ips != null) {
try {
ips.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (ops != null) {
try {
ops.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
inventoryInfoList.clear();
taskAdapter.setData(inventoryInfoList);
noneLayout.setVisibility(View.VISIBLE);
checkTaskActivity.setUnfinishedNum(0);
if (StringUtils.isEmptyOrNull(exportMessage)) {
exportMessage = "导出成功到" + exportPath;
}
StmApplication.getInstance().showToastShort(exportMessage);
}
});
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ConfigKey.ACTIVITY_REQUEST_SELECT_TASK) {
if (resultCode == Activity.RESULT_OK && data != null && data.getData()!= null) {
checkDataByExcel(data.getData());
}
}
}
private RequestCallback<CommonStringJson> scan_cb = new RequestCallback<CommonStringJson>(CommonStringJson.class) {
@Override
public void onSuccess(CommonStringJson responseInfo) {
checkTaskActivity.getLoadingDialog().dismiss();
if (responseInfo.isSucess()) {
StmApplication.getInstance().showToastShort("导出成功");
// 处理盘点数据状态
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
for (InventoryInfo inventoryInfo : inventoryInfoList) {
inventoryInfo.setStatus("2");
inventoryInfoDao.updateInventory(inventoryInfo);
}
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
checkTaskActivity.refreshData();
}
});
}
}
});
// String str = responseInfo.getRspData();
// Map<String, Object> failedMap = new Gson().fromJson(str, new TypeToken<Map<String, Object>>(){}.getType());
// if (failedMap != null && failedMap.get("numList") != null) {
// List<String> numList = (List<String>) failedMap.get("numList");
// if (numList != null && numList.size() > 0) {
// StmApplication.getInstance().showToastShort(String.valueOf(failedMap.get("msg")));
// // 处理盘点失败数据
// StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
// @Override
// public void run() {
// if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
// for (InventoryInfo inventoryInfo : inventoryInfoList) {
// boolean success = true;
// for (String itemStr : numList) {
// if (itemStr.equals(inventoryInfo.getNumber())) {
// success = false;
// }
// }
// if (success) {
// inventoryInfo.setStatus("2");
// inventoryInfoDao.updateInventory(inventoryInfo);
// } else {
// inventoryInfo.setStatus("1");
// inventoryInfoDao.updateInventory(inventoryInfo);
// }
// }
// StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
// @Override
// public void run() {
// checkTaskActivity.refreshData();
// }
// });
// }
// }
// });
// } else {
// StmApplication.getInstance().showToastShort("导出成功");
// }
// } else {
// StmApplication.getInstance().showToastShort("导出成功");
// }
} else {
StmApplication.getInstance().showToastShort(responseInfo.getRspMsg());
}
......
package com.stm.asset.page;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;
import com.seuic.uhf.EPC;
import com.seuic.uhf.UHFService;
import com.stm.asset.R;
import com.stm.asset.adapter.TaskListAdapter;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.ConfigKey;
import com.stm.asset.base.StmApplication;
import com.stm.asset.dao.InventoryInfoDao;
import com.stm.asset.database.InventoryInfoDatabase;
import com.stm.asset.model.InventoryInfo;
import com.stm.asset.utils.FileUtils;
import com.stm.asset.utils.StringUtils;
import com.stm.asset.utils.ViewUtil;
import com.stm.asset.view.CommonAlertDialog;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
public class TaskListActivity extends BaseActivity implements View.OnClickListener {
private RelativeLayout noneLayout;
private Button beginBtn;
private TaskListAdapter taskListAdapter;
private UHFService uhfService;
private boolean isInventory;
private Thread inventoryThread;
private InventoryRunnable inventoryRunnable;
private InventoryInfoDao inventoryInfoDao;
private String filePath;
private String exportPath;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_task_list);
initView();
inventoryRunnable = new InventoryRunnable();
try {
InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao();
uhfService = UHFService.getInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onResume() {
super.onResume();
uhfService.open();
}
@Override
protected void onPause() {
super.onPause();
uhfService.close();
isInventory = false;
}
private void initView() {
initTitle();
titleTxt.setText("盘点方案");
findViewById(R.id.common_title_back_layout).setOnClickListener(this);
RecyclerView recyclerView = findViewById(R.id.task_data_list);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(RecyclerView.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
taskListAdapter = new TaskListAdapter(this);
recyclerView.setAdapter(taskListAdapter);
recyclerView.addItemDecoration(new DividerItemDecoration(this, RecyclerView.VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
noneLayout = findViewById(R.id.task_data_none_layout);
noneLayout.setVisibility(View.VISIBLE);
noneLayout.setOnClickListener(this);
beginBtn = findViewById(R.id.task_inventory_begin_btn);
beginBtn.setOnClickListener(this);
Button finishBtn = findViewById(R.id.task_inventory_finish_btn);
finishBtn.setOnClickListener(this);
Button saveBtn = findViewById(R.id.task_inventory_save_btn);
saveBtn.setOnClickListener(this);
}
private void selectTaskFile() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("text/plain");
startActivityForResult(intent, ConfigKey.ACTIVITY_REQUEST_SELECT_TASK);
}
private void readTxtByLine(Uri uri) {
InputStream ips = null;
filePath = getFilePath(uri);
List<InventoryInfo> infoList = new ArrayList<>();
if (!StringUtils.isEmptyOrNull(filePath)) {
try {
ips = new FileInputStream(filePath);
InputStreamReader inputStreamReader = new InputStreamReader(ips);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
if (!StringUtils.isEmptyOrNull(line)) {
String[] strArray = line.split("\\|");
if (strArray.length >= 13 && !StringUtils.isEmptyOrNull(strArray[0]) && !StringUtils.isEmptyOrNull(strArray[5]) && !StringUtils.isEmptyOrNull(strArray[6]) && strArray[6].length() % 4 == 0) {
InventoryInfo info = new InventoryInfo(strArray[5], strArray[6], strArray[0]);
infoList.add(info);
} else {
StmApplication.getInstance().showToastShort("length:" + strArray.length + " number:" + strArray[6]);
}
}
}
// StmApplication.getInstance().showToastShort("filePath:" + filePath);
} catch (Exception e) {
e.printStackTrace();
StmApplication.getInstance().showToastShort("Exception:" + e.getMessage());
} finally {
if (ips != null) {
try {
ips.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (infoList.size() > 0) {
taskListAdapter.setData(infoList);
noneLayout.setVisibility(View.GONE);
} else {
noneLayout.setVisibility(View.VISIBLE);
StmApplication.getInstance().showToastShort("未读取到有效数据");
}
} else {
StmApplication.getInstance().showToastShort("读取盘点任务文件失败");
}
}
private String getFilePath(Uri uri) {
String filePath = "";
if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
filePath = uri.getPath();
} else if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme()) && uri.getAuthority() != null) {
String authority = uri.getAuthority();
if (authority.startsWith("com.android.externalstorage") && uri.getPath() != null) {
filePath = Environment.getExternalStorageDirectory() + "/" + uri.getPath().split(":")[1];
} else {
String idStr = "";
if (authority.equals("media")) {
idStr = uri.toString().substring(uri.toString().lastIndexOf('/') + 1);
} else if (authority.startsWith("com.android.providers")) {
// idStr = DocumentsContract.getDocumentId(uri).split(":")[1];
String documentId = DocumentsContract.getDocumentId(uri);
idStr = (!StringUtils.isEmptyOrNull(documentId) && documentId.split(":").length > 1) ? documentId.split(":")[1].trim() : documentId;
}
ContentResolver contentResolver = this.getContentResolver();
Cursor cursor = contentResolver.query(MediaStore.Files.getContentUri("external"), new String[] {MediaStore.Files.FileColumns.DATA}, "_id=?", new String[] {idStr}, null);
if (cursor != null) {
cursor.moveToFirst();
try {
int idx = cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA);
filePath = cursor.getString(idx);
} catch (Exception e) {
e.printStackTrace();
} finally {
cursor.close();
}
}
}
}
return filePath;
}
private String writeResultToTxt(List<InventoryInfo> resultList) {
String resMsg = "";
if (!StringUtils.isEmptyOrNull(filePath) && resultList != null && resultList.size() > 0) {
InputStream ips = null;
OutputStream ops = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
ips = new FileInputStream(filePath);
inputStreamReader = new InputStreamReader(ips, StandardCharsets.UTF_8);
bufferedReader = new BufferedReader(inputStreamReader);
exportPath = FileUtils.getNewPathWithStr(filePath, "盘点结果");
if (exportPath.startsWith("Exception:")) {
return exportPath;
}
ops = new FileOutputStream(exportPath);
outputStreamWriter = new OutputStreamWriter(ops, StandardCharsets.UTF_8);
bufferedWriter = new BufferedWriter(outputStreamWriter);
String line;
while ((line = bufferedReader.readLine()) != null) {
if (!StringUtils.isEmptyOrNull(line)) {
String[] strArray = line.split("\\|");
if (strArray.length >= 13 && !StringUtils.isEmptyOrNull(strArray[0]) && !StringUtils.isEmptyOrNull(strArray[5]) && !StringUtils.isEmptyOrNull(strArray[6]) && strArray[6].length() % 4 == 0) {
boolean write = false;
for (InventoryInfo info : resultList) {
if (strArray[6].equals(info.getNumber())) {
strArray[9] = ("1".equals(info.getItem01())) ? "1" : "0";
strArray[12] = ("1".equals(info.getItem01())) ? "相符" : "待确认";
String resultLine = String.join("|", strArray);
bufferedWriter.write(resultLine);
bufferedWriter.newLine();
bufferedWriter.flush();
write = true;
break;
}
}
if (!write) {
bufferedWriter.write(line);
bufferedWriter.newLine();
bufferedWriter.flush();
}
} else {
bufferedWriter.write(line);
bufferedWriter.newLine();
bufferedWriter.flush();
}
}
}
} catch (Exception e) {
e.printStackTrace();
resMsg = "写入盘点结果异常";
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (inputStreamReader != null) {
try {
inputStreamReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ips != null) {
try {
ips.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStreamWriter != null) {
try {
outputStreamWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ops != null) {
try {
ops.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
resMsg = "写入盘点任务文件失败";
}
return resMsg;
}
private void showExportDialog(String content) {
int dialog_width = (int) (ViewUtil.getScreenWidth(this) * 4 / 5.0);
final CommonAlertDialog dialog = new CommonAlertDialog(TaskListActivity.this);
dialog.setViewParams(new LinearLayout.LayoutParams(dialog_width, -2));
dialog.show();
dialog.hideCancelBtn();
dialog.setText("提示", content, "确定");
dialog.setSureListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dialog.isShowing()) {
dialog.dismiss();
}
sApp.setShowBackground(false);
TaskListActivity.this.finish();
}
});
}
@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.common_title_back_layout:
finish();
break;
case R.id.task_data_none_layout:
// 选择盘点文件读取任务数据
int perRes = ActivityCompat.checkSelfPermission(this, "android.permission.WRITE_EXTERNAL_STORAGE");
int perRes2 = ActivityCompat.checkSelfPermission(this, "android.permission.READ_EXTERNAL_STORAGE");
if (perRes == PackageManager.PERMISSION_DENIED || perRes2 == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[] {"android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE"}, ConfigKey.PERMISSION_REQUEST_EXTERNAL_STORAGE);
} else {
selectTaskFile();
}
break;
case R.id.task_inventory_begin_btn:
if (uhfService.inventoryStart()) {
beginBtn.setClickable(false);
beginBtn.setText(R.string.task_list_btn_inventory_doing);
isInventory = true;
inventoryThread = new Thread(inventoryRunnable);
inventoryThread.start();
} else {
StmApplication.getInstance().showToastShort("开启盘询失败,请稍后操作");
}
break;
case R.id.task_inventory_finish_btn:
if (uhfService.inventoryStop()) {
isInventory = false;
if (inventoryThread != null) {
inventoryThread.interrupt();
inventoryThread = null;
}
beginBtn.setClickable(true);
beginBtn.setText(R.string.inventory_btn_begin);
} else {
StmApplication.getInstance().showToastShort("关闭盘询失败,请稍后操作");
}
break;
case R.id.task_inventory_save_btn:
if (isInventory) {
StmApplication.getInstance().showToastShort("正在盘询,请稍后操作");
} else {
List<InventoryInfo> resultList = taskListAdapter.queryResultData();
List<InventoryInfo> advantageList = taskListAdapter.queryAdvantageData();
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
String resMsg = null;
if (resultList != null && resultList.size() > 0) {
resMsg = writeResultToTxt(resultList);
}
if (advantageList != null && advantageList.size() > 0) {
inventoryInfoDao.insertInventoryList(advantageList);
}
String finalResMsg = resMsg;
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
if (StringUtils.isEmptyOrNull(finalResMsg)) {
taskListAdapter.setData(null);
noneLayout.setVisibility(View.VISIBLE);
showExportDialog("导出成功到" + exportPath);
} else {
StmApplication.getInstance().showToastShort(finalResMsg);
}
}
});
}
});
}
break;
case R.id.task_inventory_clean_btn:
if (isInventory) {
StmApplication.getInstance().showToastShort("正在盘询,请稍后操作");
} else {
taskListAdapter.setData(null);
noneLayout.setVisibility(View.VISIBLE);
}
break;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == ConfigKey.PERMISSION_REQUEST_EXTERNAL_STORAGE) {
boolean sp = true;
for (int grantResult : grantResults) {
if (grantResult == PackageManager.PERMISSION_DENIED) {
sp = false;
break;
}
}
if (sp) {
selectTaskFile();
} else {
StmApplication.getInstance().showToastShort("读取盘点任务文件需要访问手机存储权限");
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ConfigKey.ACTIVITY_REQUEST_SELECT_TASK) {
if (resultCode == Activity.RESULT_OK && data != null && data.getData()!= null) {
readTxtByLine(data.getData());
}
}
}
private class InventoryRunnable implements Runnable {
@Override
public void run() {
while (isInventory) {
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override
public void run() {
List<EPC> epcList = uhfService.getTagIDs();
if (epcList != null && epcList.size() > 0) {
taskListAdapter.updateStatus(epcList);
}
}
});
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
package com.stm.asset.utils;
/**
* 数字处理工具类
*/
public class BigDecimalUtils {
}
package com.stm.asset.utils;
import android.os.Environment;
import java.io.File;
/**
* 类名称:FileUtils
* 类描述:文件处理工具类
* 创建人:story
* 创建时间:2021-12-07 14:43
*/
public class FileUtils {
public static final String SD_PATH = Environment.getExternalStorageDirectory() + "";
public static final String FILE_PATH ="/Download/";
public static String getBasePath() {
String path = SD_PATH + FILE_PATH;
createFileDir(path);
return path;
}
@SuppressWarnings("ResultOfMethodCallIgnored")
public static String getDateFilePath(String dateStr) {
String filePath = getBasePath() + dateStr;
File file = new File(filePath);
if (!file.exists()) {
try {
file.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
}
return filePath;
}
@SuppressWarnings("ResultOfMethodCallIgnored")
private static void createFileDir(String path){
String dirPath = path.substring(0, path.lastIndexOf("/")+1);
File file = new File(dirPath);
if (!file.exists()) {
file.mkdirs();
}
}
public static String getNewPathWithStr(String path, String str) {
String result = path;
if (!StringUtils.isEmptyOrNull(path)) {
int suffixIndex = path.lastIndexOf(".");
if (suffixIndex > 0) {
result = path.substring(0, suffixIndex) + str + path.substring(suffixIndex);
File file = new File(result);
if (!file.exists()) {
try {
file.createNewFile();
} catch (Exception e) {
result = "Exception:" + e.getMessage();
e.printStackTrace();
}
}
}
}
return result;
}
}
......@@ -20,8 +20,8 @@ public class PropertyUtil {
private static final String KEY_HTTP_PORT = "key_http_port"; // Http Port
private static final String KEY_HTTP_PLATFORM = "key_http_platform"; // Http Platform
private static final String KEY_USE_HTTPS = "key_use_https"; // 是否启用Https
private static final String KEY_ENCRYPT_PWD = "key_encrypt_pwd"; // 作为请求的全局sign
private static final String KEY_ACCESS_TOKEN = "key_access_token"; // 作为请求的全局sign
private static final String KEY_ENCRYPT_PWD = "key_encrypt_pwd"; // 加密密钥
private static final String KEY_ACCESS_TOKEN = "key_access_token"; // 加密token
public static boolean isFirstBegin(Context context) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
......
package com.stm.asset.utils;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.SM2;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
/**
* SM2国密工具类
* @author LIULEI
*/
public class SM2Util {
private final static String publicKey = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEOqXlubX090WW6WQ1msIpw/b+DsZRtGQG1Cs0WYS2q8HQq76CYYqN1W3wiw6bf9GjY+SS/z4k8UCn0c7R8aqfIA==";
private final static String publicKey = "043aa5e5b9b5f4f74596e964359ac229c3f6fe0ec651b46406d42b345984b6abc1d0abbe82618a8dd56df08b0e9b7fd1a363e492ff3e24f140a7d1ced1f1aa9f20";
private final static String publicQKey = "043aa5e5b9b5f4f74596e964359ac229c3f6fe0ec651b46406d42b345984b6abc1d0abbe82618a8dd56df08b0e9b7fd1a363e492ff3e24f140a7d1ced1f1aa9f20";
private final static String privateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgoy5Dj/P5Dw+xhkPLz7riyylgBOkUDKmxfb0a4PzVCgigCgYIKoEcz1UBgi2hRANCAAQ6peW5tfT3RZbpZDWawinD9v4OxlG0ZAbUKzRZhLarwdCrvoJhio3VbfCLDpt/0aNj5JL/PiTxQKfRztHxqp8g";
......
package com.stm.asset.utils;
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......
package com.stm.asset.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* 类名称:FileUtils
* 类描述:时间处理工具类
* 创建人:story
* 创建时间:2021-12-07 14:43
*/
public class TimeUtil {
public static String getCurrentDate() {
return new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
}
}
package com.stm.asset.view;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;
import com.stm.asset.R;
public class SwipeListView extends ListView {
private Boolean mIsHorizontal;
private View mPreItemView;
private View mCurrentItemView;
private float mFirstX;
private float mFirstY;
private int mRightViewWidth;
private final int mDuration = 100;
private final int mDurationStep = 10;
private boolean mIsShown;
private boolean isListviewSideSlip; //整个listview是否可以侧滑
public SwipeListView(Context context) {
this(context, null);
}
public SwipeListView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public SwipeListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.swipelistviewstyle);
// 获取自定义属性和默认值
mRightViewWidth = (int) mTypedArray.getDimension(R.styleable.swipelistviewstyle_right_width, 200);
mTypedArray.recycle();
}
private int getCusRightViewWidth() {
if (mCurrentItemView != null) {
try {
int itemCount = (Integer) mCurrentItemView.getTag(R.id.right_item);
if (itemCount != 0)
return itemCount * mRightViewWidth;
return mRightViewWidth;
} catch (Exception e) {
}
}
return mRightViewWidth;
}
/**
* return true, deliver to listView. return false, deliver to child. if
* move, return true
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
float lastX = ev.getX();
float lastY = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mIsHorizontal = null;
mFirstX = lastX;
mFirstY = lastY;
int motionPosition = pointToPosition((int) mFirstX, (int) mFirstY);
if (motionPosition >= 0) {
View currentItemView = getChildAt(motionPosition
- getFirstVisiblePosition());
mPreItemView = mCurrentItemView;
mCurrentItemView = currentItemView;
}
break;
case MotionEvent.ACTION_MOVE:
float dx = lastX - mFirstX;
float dy = lastY - mFirstY;
if (Math.abs(dx) >= 5 && Math.abs(dy) >= 5) {
return true;
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if (mIsShown
&& (mPreItemView != mCurrentItemView || isHitCurItemLeft(lastX))) {
/**
* 情况一: 一个Item的右边布局已经显示, 这时候点击任意一个item, 那么那个右边布局显示的item隐藏其右边布局
*/
hiddenRight(mPreItemView);
}
break;
}
return super.onInterceptTouchEvent(ev);
}
private boolean isHitCurItemLeft(float x) {
return x < getWidth() - getCusRightViewWidth();
}
/**
* @param dx
* @param dy
* @return judge if can judge scroll direction
*/
private boolean judgeScrollDirection(float dx, float dy) {
boolean canJudge = true;
if (Math.abs(dx) > 50 && Math.abs(dx) > 2 * Math.abs(dy)) {
mIsHorizontal = true;
} else if (Math.abs(dy) > 50 && Math.abs(dy) > 2 * Math.abs(dx)) {
mIsHorizontal = false;
} else {
canJudge = false;
}
return canJudge;
}
/**
* return false, can't move any direction. return true, cant't move
* vertical, can move horizontal. return super.onTouchEvent(ev), can move
* both.
*/
@SuppressLint("ResourceType")
@Override
public boolean onTouchEvent(MotionEvent ev) {
float lastX = ev.getX();
float lastY = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
if (mCurrentItemView != null && mCurrentItemView.getId() != 1111 && !isListviewSideSlip) {
float dx = lastX - mFirstX;
float dy = lastY - mFirstY;
if (mIsHorizontal == null) {
if (!judgeScrollDirection(dx, dy)) {
break;
}
}
if (mIsHorizontal) {
if (mIsShown && mPreItemView != mCurrentItemView) {
/**
* 情况二: 一个Item的右边布局已经显示,
* 这时候左右滑动另外一个item,那个右边布局显示的item隐藏其右边布局
* 向左滑动只触发该情况,向右滑动还会触发情况五
*/
hiddenRight(mPreItemView);
}
if (mIsShown && mPreItemView == mCurrentItemView) {
dx = dx - getCusRightViewWidth();
}
if (dx < 0 && dx > -getCusRightViewWidth()) {
mCurrentItemView.scrollTo((int) (-dx), 0);
}
return true;
} else {
if (mIsShown) {
/**
* 情况三: 一个Item的右边布局已经显示,
* 这时候上下滚动ListView,那么那个右边布局显示的item隐藏其右边布局
*/
hiddenRight(mPreItemView);
}
}
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if (mCurrentItemView != null && mCurrentItemView.getId() != 1111 && !isListviewSideSlip) {
clearPressedState();
if (mIsShown) {
/**
* 情况四: 一个Item的右边布局已经显示, 这时候左右滑动当前一个item,那个右边布局显示的item隐藏其右边布局
*/
hiddenRight(mPreItemView);
}
if (mIsHorizontal != null && mIsHorizontal) {
if (mFirstX - lastX > getCusRightViewWidth() / 2) {
showRight(mCurrentItemView);
} else {
/**
* 情况五:
* <p>
* 向右滑动一个item,且滑动的距离超过了右边View的宽度的一半,隐藏之。
*/
hiddenRight(mCurrentItemView);
}
return true;
}
}
break;
}
return super.onTouchEvent(ev);
}
private void clearPressedState() {
try {
mCurrentItemView.setPressed(false);
setPressed(false);
refreshDrawableState();
} catch (Exception e) {
}
}
private void showRight(View view) {
Message msg = new MoveHandler().obtainMessage();
msg.obj = view;
msg.arg1 = view.getScrollX();
msg.arg2 = getCusRightViewWidth();
msg.sendToTarget();
mIsShown = true;
}
private void hiddenRight(View view) {
if (mCurrentItemView == null || view == null) {
return;
}
Message msg = new MoveHandler().obtainMessage();//
msg.obj = view;
msg.arg1 = view.getScrollX();
msg.arg2 = 0;
msg.sendToTarget();
mIsShown = false;
}
public void hiddenCurrentRight() {
hiddenRight(mPreItemView);
}
/**
* show or hide right layout animation
*/
@SuppressLint("HandlerLeak")
class MoveHandler extends Handler {
int stepX = 0;
int fromX;
int toX;
View view;
private boolean mIsInAnimation = false;
private void animatioOver() {
mIsInAnimation = false;
stepX = 0;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (stepX == 0) {
if (mIsInAnimation) {
return;
}
mIsInAnimation = true;
view = (View) msg.obj;
fromX = msg.arg1;
toX = msg.arg2;
stepX = (int) ((toX - fromX) * mDurationStep * 1.0 / mDuration);
if (stepX < 0 && stepX > -1) {
stepX = -1;
} else if (stepX > 0 && stepX < 1) {
stepX = 1;
}
if (Math.abs(toX - fromX) < 10) {
view.scrollTo(toX, 0);
animatioOver();
return;
}
}
fromX += stepX;
boolean isLastStep = (stepX > 0 && fromX > toX)
|| (stepX < 0 && fromX < toX);
if (isLastStep) {
fromX = toX;
}
view.scrollTo(fromX, 0);
invalidate();
if (!isLastStep) {
this.sendEmptyMessageDelayed(0, mDurationStep);
} else {
animatioOver();
}
}
}
public int getRightViewWidth() {
return mRightViewWidth;
}
public void setRightViewWidth(int mRightViewWidth) {
this.mRightViewWidth = mRightViewWidth;
}
public void deleteItem(View v) {
hiddenRight(v);
}
public void setListviewSideSlip(boolean isListviewSideSlip) {
this.isListviewSideSlip = isListviewSideSlip;
}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/common_layout_click_color" android:state_pressed="true"></item>
<item android:drawable="@android:color/white"></item>
</selector>
\ No newline at end of file
......@@ -9,39 +9,39 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:orientation="vertical">
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<include
android:id="@+id/inventory_title"
layout="@layout/view_common_title"/>
layout="@layout/view_common_title" />
<ListView
android:id="@+id/inventory_data_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:dividerHeight="@dimen/xxsmall_padding"
android:divider="@color/colorPrimary"
android:dividerHeight="@dimen/xxsmall_padding"
android:fadingEdge="none"
android:overScrollMode="never"
android:scrollbars="none"/>
android:scrollbars="none" />
<HorizontalScrollView
android:id="@+id/inventory_txt_count_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/xlarge_padding"
android:focusable="true"
android:paddingStart="@dimen/xlarge_padding"
android:paddingEnd="@dimen/xlarge_padding"
android:focusable="true" >
android:paddingEnd="@dimen/xlarge_padding">
<TextView
android:id="@+id/inventory_txt_count_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/normal_text_size"/>
android:textSize="@dimen/msmall_text_size" />
</HorizontalScrollView>
<LinearLayout
......@@ -54,45 +54,40 @@
android:id="@+id/inventory_begin_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginStart="@dimen/xxlarge_padding"
android:layout_marginEnd="@dimen/xlarge_padding"
android:layout_marginEnd="@dimen/normal_padding"
android:layout_weight="1"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:text="@string/inventory_btn_begin"
android:textColor="@android:color/white"
android:text="@string/inventory_btn_begin"/>
android:textSize="@dimen/msmall_text_size" />
<Button
android:id="@+id/inventory_finish_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_marginStart="@dimen/normal_padding"
android:layout_marginEnd="@dimen/normal_padding"
android:layout_weight="1"
android:layout_marginStart="@dimen/xlarge_padding"
android:layout_marginEnd="@dimen/xxlarge_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:text="@string/inventory_btn_finish"
android:textColor="@android:color/white"
android:text="@string/inventory_btn_finish"/>
android:textSize="@dimen/msmall_text_size" />
<Button
android:id="@+id/inventory_save_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginStart="@dimen/xlarge_padding"
android:layout_marginStart="@dimen/normal_padding"
android:layout_marginEnd="@dimen/xxlarge_padding"
android:layout_weight="1"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:text="@string/inventory_btn_save"
android:textColor="@android:color/white"
android:text="@string/inventory_btn_save"/>
android:textSize="@dimen/msmall_text_size" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".page.AdvantageListActivity">
<include
android:id="@+id/advantage_list_title"
layout="@layout/view_common_title"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/top_title_bar_height_size"
app:layout_constraintBottom_toBottomOf="parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/advantage_data_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/task_list_margin_top"
android:layout_marginBottom="@dimen/task_list_margin_bottom"
android:dividerHeight="@dimen/xxsmall_padding"
android:divider="@color/colorPrimary"
android:fadingEdge="none"
android:overScrollMode="never"
android:scrollbars="none"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/common_btn_height"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/check_task_margin_bottom"
android:layout_marginBottom="@dimen/check_task_margin_bottom"
android:layout_marginStart="@dimen/xxxlarge_padding"
android:layout_marginEnd="@dimen/xxxlarge_padding"
android:orientation="horizontal">
<Button
android:id="@+id/advantage_save_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginStart="@dimen/normal_padding"
android:layout_marginEnd="@dimen/normal_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/advantage_list_btn_save"/>
</LinearLayout>
<RelativeLayout
android:id="@+id/advantage_data_none_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:background="@android:color/white"
android:visibility="gone">
<ImageView
android:id="@+id/common_none_img"
android:layout_width="180dip"
android:layout_height="210dip"
android:layout_centerInParent="true"
android:src="@drawable/ic_none_date"
android:contentDescription="@string/app_name"/>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -36,7 +36,7 @@
android:background="@drawable/bg_tab_ellipse_left"
android:gravity="center"
android:textColor="@drawable/bg_tab_ellipse_txt"
android:textSize="@dimen/xlarge_text_size" />
android:textSize="@dimen/small_text_size" />
<TextView
android:id="@+id/task_finished_txt"
......@@ -46,7 +46,7 @@
android:background="@drawable/bg_tab_ellipse_right"
android:gravity="center"
android:textColor="@drawable/bg_tab_ellipse_txt"
android:textSize="@dimen/xlarge_text_size"/>
android:textSize="@dimen/small_text_size"/>
</LinearLayout>
<androidx.viewpager.widget.ViewPager
......
......@@ -15,7 +15,8 @@
android:layout_marginTop="@dimen/main_user_margin"
android:layout_marginStart="@dimen/main_user_margin"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/xxlarge_text_size"/>
android:textSize="@dimen/xxlarge_text_size"
android:visibility="gone"/>
<TextView
android:id="@+id/main_title_txt"
......@@ -46,7 +47,7 @@
android:background="@color/colorPrimary"/>
<RelativeLayout
android:id="@+id/main_inventory_data_layout"
android:id="@+id/main_begin_inventory_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/common_row_height"
android:layout_marginStart="@dimen/main_content_padding"
......@@ -58,7 +59,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="@string/main_inventory_data"
android:text="@string/main_begin_inventory"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/xxlarge_text_size"/>
......@@ -78,7 +79,7 @@
android:background="@color/colorPrimary"/>
<RelativeLayout
android:id="@+id/main_begin_inventory_layout"
android:id="@+id/main_inventory_data_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/common_row_height"
android:layout_marginStart="@dimen/main_content_padding"
......@@ -90,7 +91,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="@string/main_begin_inventory"
android:text="@string/main_inventory_data"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/xxlarge_text_size"/>
......@@ -107,7 +108,8 @@
<View
android:layout_width="match_parent"
android:layout_height="@dimen/common_coarse_line_height"
android:background="@color/colorPrimary"/>
android:background="@color/colorPrimary"
android:visibility="gone"/>
<RelativeLayout
android:id="@+id/main_settings_layout"
......@@ -116,7 +118,8 @@
android:layout_marginStart="@dimen/main_content_padding"
android:layout_marginEnd="@dimen/main_content_padding"
android:layout_marginTop="@dimen/main_content_padding_top"
android:layout_marginBottom="@dimen/main_content_padding_top">
android:layout_marginBottom="@dimen/main_content_padding_top"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
......@@ -149,7 +152,8 @@
android:layout_marginStart="@dimen/main_content_padding"
android:layout_marginEnd="@dimen/main_content_padding"
android:layout_marginTop="@dimen/main_content_padding_top"
android:layout_marginBottom="@dimen/main_content_padding_top">
android:layout_marginBottom="@dimen/main_content_padding_top"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
......
......@@ -3,8 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".page.SetAndSaveActivity">
android:layout_height="match_parent">
<include
android:id="@+id/base_set_title"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".page.TaskListActivity">
<include
android:id="@+id/task_list_title"
layout="@layout/view_common_title"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/top_title_bar_height_size"
app:layout_constraintBottom_toBottomOf="parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/task_data_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/task_list_margin_top"
android:layout_marginBottom="@dimen/task_list_margin_bottom"
android:dividerHeight="@dimen/xxsmall_padding"
android:divider="@color/colorPrimary"
android:fadingEdge="none"
android:overScrollMode="never"
android:scrollbars="none"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/common_btn_height"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/check_task_margin_bottom"
android:layout_marginBottom="@dimen/check_task_margin_bottom"
android:layout_marginStart="@dimen/xxxlarge_padding"
android:layout_marginEnd="@dimen/xxxlarge_padding"
android:orientation="horizontal">
<Button
android:id="@+id/task_inventory_begin_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginStart="@dimen/xxlarge_padding"
android:layout_marginEnd="@dimen/normal_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/task_list_btn_inventory_begin"/>
<Button
android:id="@+id/task_inventory_finish_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginStart="@dimen/normal_padding"
android:layout_marginEnd="@dimen/normal_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/task_list_btn_inventory_finish"/>
<Button
android:id="@+id/task_inventory_save_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginStart="@dimen/normal_padding"
android:layout_marginEnd="@dimen/normal_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/task_list_btn_inventory_save"/>
<Button
android:id="@+id/task_inventory_clean_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginStart="@dimen/normal_padding"
android:layout_marginEnd="@dimen/xxlarge_padding"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/task_list_btn_inventory_clean"
android:visibility="gone"/>
</LinearLayout>
<RelativeLayout
android:id="@+id/task_data_none_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:background="@android:color/white"
android:visibility="gone">
<ImageView
android:id="@+id/common_none_img"
android:layout_width="180dip"
android:layout_height="210dip"
android:layout_centerInParent="true"
android:src="@drawable/ic_inventory_none_date"
android:contentDescription="@string/app_name"/>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -33,7 +33,7 @@
android:layout_weight="1"
android:layout_marginEnd="@dimen/check_task_btn_margin"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:textSize="@dimen/small_text_size"
android:textColor="@android:color/white"
android:text="@string/check_task_test"
android:visibility="gone"/>
......@@ -45,17 +45,28 @@
android:layout_weight="1"
android:layout_marginEnd="@dimen/check_task_btn_margin"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/check_task_upload"/>
<Button
android:id="@+id/task_export_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:layout_marginEnd="@dimen/check_task_btn_margin"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/check_task_export"/>
<Button
android:id="@+id/task_clean_btn"
android:layout_width="0dp"
android:layout_height="@dimen/common_btn_height"
android:layout_weight="1"
android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size"
android:textSize="@dimen/msmall_text_size"
android:textColor="@android:color/white"
android:text="@string/check_task_clean"/>
......
......@@ -2,38 +2,73 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/normal_padding">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height"
android:visibility="gone">
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="2"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/normal_text_size"
android:textSize="@dimen/xsmall_text_size"
android:text="@string/check_task_item_seq"/>
<TextView
android:id="@+id/task_item_seq_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/xsmall_text_size"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:layout_marginStart="@dimen/large_padding"
android:gravity="center"
android:textColor="@color/common_txt_value"/>
</LinearLayout>
<LinearLayout
android:id="@+id/task_item_name_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/xsmall_text_size"
android:text="@string/check_task_item_name"/>
<TextView
android:id="@+id/task_item_name_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:layout_weight="5"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/normal_text_size"/>
android:textSize="@dimen/xsmall_text_size"/>
<TextView
android:id="@+id/task_item_status_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4"
android:layout_weight="1.2"
android:layout_marginStart="@dimen/large_padding"
android:gravity="center"
android:background="@drawable/bg_check_task_item_status"
......@@ -48,31 +83,29 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="2"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/normal_text_size"
android:textSize="@dimen/xsmall_text_size"
android:text="@string/check_task_item_number"/>
<TextView
android:id="@+id/task_item_number_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:layout_weight="5"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/normal_text_size"/>
android:textSize="@dimen/xsmall_text_size"/>
<TextView
android:id="@+id/task_item_status_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4"
android:layout_weight="1.2"
android:layout_marginStart="@dimen/large_padding"
android:gravity="center"
android:background="@drawable/bg_check_task_item_status"
android:textColor="@color/common_txt_value"/>
</LinearLayout>
......
......@@ -12,7 +12,7 @@
android:gravity="center"
android:paddingTop="@dimen/large_padding"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/normal_text_size" />
android:textSize="@dimen/small_text_size" />
<TextView
android:id="@+id/common_dialog_content_txt"
......@@ -22,7 +22,7 @@
android:gravity="center"
android:padding="@dimen/large_padding"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/small_text_size" />
android:textSize="@dimen/msmall_text_size" />
<View
android:layout_width="match_parent"
......@@ -45,7 +45,7 @@
android:paddingTop="@dimen/small_padding"
android:text="@string/common_cancel"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/normal_text_size" />
android:textSize="@dimen/msmall_text_size" />
<View
android:id="@+id/common_dialog_devices_line"
......@@ -64,7 +64,7 @@
android:paddingTop="@dimen/small_padding"
android:text="@string/common_sure"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/normal_text_size" />
android:textSize="@dimen/msmall_text_size" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
......@@ -39,22 +39,22 @@
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="2"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/normal_text_size"
android:textSize="@dimen/msmall_text_size"
android:text="@string/inventory_item_epc"/>
<TextView
android:id="@+id/item_inventory_epc_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:layout_weight="5"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/normal_text_size"/>
android:textSize="@dimen/xsmall_text_size"/>
</LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/task_left_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/normal_padding"
android:background="@drawable/bg_common_layout_click_white"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_name"/>
<TextView
android:id="@+id/task_list_name_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_user"/>
<TextView
android:id="@+id/task_list_creator_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_dept"/>
<TextView
android:id="@+id/task_list_dept_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/task_right_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/task_list_item_lien_color"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/task_right_inventory_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center">
<TextView
android:id="@+id/pos_right_edit_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/task_list_btn_inventory_begin"
android:textColor="@android:color/white"
android:textSize="@dimen/small_text_size" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SlidingMenu">
<attr name="mode">
<enum name="left" value="0" />
<enum name="right" value="1" />
</attr>
<attr name="viewAbove" format="reference" />
<attr name="viewBehind" format="reference" />
<attr name="behindOffset" format="dimension" />
<attr name="behindWidth" format="dimension" />
<attr name="behindScrollScale" format="float" />
<attr name="touchModeAbove">
<enum name="margin" value="0" />
<enum name="fullscreen" value="1" />
</attr>
<attr name="touchModeBehind">
<enum name="margin" value="0" />
<enum name="fullscreen" value="1" />
</attr>
<attr name="shadowDrawable" format="reference" />
<attr name="shadowWidth" format="dimension" />
<attr name="fadeEnabled" format="boolean" />
<attr name="fadeDegree" format="float" />
<attr name="selectorEnabled" format="boolean" />
<attr name="selectorDrawable" format="reference" />
</declare-styleable>
<declare-styleable name="swipelistviewstyle">
<attr name="right_width" format="dimension"></attr>
</declare-styleable>
<declare-styleable name="memoAtt">
<attr name="length" format="integer"></attr>
<attr name="hint" format="string"></attr>
<attr name="textsize" format="integer"></attr>
<attr name="minline" format="integer"></attr>
</declare-styleable>
<declare-styleable name="chatcirleview">
<attr name="bgColor" format="color" />
<attr name="textSize" format="dimension" />
<attr name="textValue" format="string" />
</declare-styleable>
<declare-styleable name="ReportView">
<attr name="storkeWidth" format="integer"></attr>
<attr name="centerTextSize" format="dimension"></attr>
<attr name="titleTextSize" format="dimension"></attr>
<attr name="backgroundColor" format="color"></attr>
<attr name="showColor" format="color"></attr>
<attr name="textColor" format="color"></attr>
<attr name="textColorSecondary" format="color"></attr>
<attr name="marginTop" format="integer"></attr>
</declare-styleable>
<declare-styleable name="SwitchButton">
<attr name="tintColor" format="reference|color" />
<attr name="thumbTintColor" format="reference|color" />
<attr name="strokeWidth" format="reference|dimension" />
<attr name="isOn" format="reference|boolean" />
</declare-styleable>
<declare-styleable name="SideBarView">
<attr name="barstring" format="string" />
</declare-styleable>
</resources>
\ No newline at end of file
......@@ -8,6 +8,10 @@
<color name="common_txt_value">#202020</color>
<color name="common_txt_key">#6b6b6b</color>
<color name="common_while_click">#E2E2E2</color>
<color name="common_layout_click_color">#E2E2E2</color>
<!-- 盘点任务列表 -->
<color name="task_list_item_lien_color">#DBDBDB</color>
<!-- 太保安全键盘 -->
<color name="deepDark">#222222</color>
......
......@@ -12,7 +12,7 @@
<dimen name="xsmall_padding">4dp</dimen>
<dimen name="xxsmall_padding">3dp</dimen>
<dimen name="xxxlarge_text_size">48sp</dimen>
<dimen name="xxlarge_text_size">32sp</dimen>
<dimen name="xxlarge_text_size">40sp</dimen>
<dimen name="xlarge_text_size">32sp</dimen>
<dimen name="normal_text_size">30sp</dimen>
<dimen name="small_text_size">28sp</dimen>
......@@ -30,7 +30,7 @@
<dimen name="common_coarse_line_height">1dp</dimen>
<dimen name="common_row_height">55dp</dimen>
<dimen name="common_circle_size">20dp</dimen>
<dimen name="common_btn_height">70dp</dimen>
<dimen name="common_btn_height">50dp</dimen>
<!-- main页面 -->
<dimen name="main_user_margin">30dp</dimen>
......@@ -38,12 +38,16 @@
<dimen name="main_content_margin_top">80dp</dimen>
<dimen name="main_content_margin_left">15dp</dimen>
<dimen name="main_content_padding">10dp</dimen>
<dimen name="main_content_padding_top">20dp</dimen>
<dimen name="main_content_padding_top">15dp</dimen>
<!-- 盘询页面 -->
<dimen name="inventory_btn_margin_bottom">30dp</dimen>
<!-- 盘点任务列表页面 -->
<dimen name="task_list_margin_top">2dp</dimen>
<dimen name="task_list_margin_bottom">8dp</dimen>
<!-- 盘点任务列表页面 -->
<dimen name="check_task_item_height">35dp</dimen>
<dimen name="check_task_tab_height">50dp</dimen>
<dimen name="check_task_margin_bottom">20dp</dimen>
......
......@@ -2,4 +2,32 @@
<resources>
<item name="special_define_set_radio" type="id" />
<item name="special_define_set_text" type="id" />
<item name="selected_view" type="id"/>
<item type="id" name="parent_id"></item>
<item type="id" name="child_id"></item>
<item type="id" name="bill_item_key"></item>
<item type="id" name="bill_item_pindex"></item>
<item type="id" name="bill_item_mindex"></item>
<item type="id" name="bill_item_index"></item>
<item type="id" name="right_item"></item>
<item type="id" name="bill_column_index"></item>
<item type="id" name="bill_column_code"></item>
<item type="id" name="auto_focus"/>
<item type="id" name="decode"/>
<item type="id" name="decode_failed"/>
<item type="id" name="decode_succeeded"/>
<item type="id" name="encode_failed"/>
<item type="id" name="encode_succeeded"/>
<item type="id" name="launch_product_query"/>
<item type="id" name="quit"/>
<item type="id" name="restart_preview"/>
<item type="id" name="return_scan_result"/>
<item type="id" name="search_book_contents_failed"/>
<item type="id" name="search_book_contents_succeeded"/>
</resources>
\ No newline at end of file
......@@ -8,7 +8,7 @@
<!-- main主页 -->
<string name="main_title">RFID盘点系统</string>
<string name="main_inventory_data">盘点数据</string>
<string name="main_inventory_data">待确认盘盈</string>
<string name="main_begin_inventory">开始盘点</string>
<string name="main_settings">参数设置</string>
<string name="main_logout">退出登录</string>
......@@ -19,15 +19,31 @@
<string name="inventory_btn_finish">结束盘询</string>
<string name="inventory_btn_save">保存</string>
<string name="inventory_disk_failure">盘询失败,错误码</string>
<string name="inventory_count_text" formatted="false">已盘:%d个,总数:%d条,速度:%d个/秒,耗时:%d秒</string>
<!-- <string name="inventory_count_text" formatted="false">已盘:%d个,总数:%d条,速度:%d个/秒,耗时:%d秒</string>-->
<string name="inventory_count_text" formatted="false">已盘询资产数量:%d个</string>
<string name="inventory_item_epc">资产编码</string>
<!-- 后台返回盘点任务列表页面 -->
<string name="task_list_item_name">任务名称</string>
<string name="task_list_item_user">创建人</string>
<string name="task_list_item_dept">创建部门</string>
<string name="task_list_btn_inventory_begin">开始盘询</string>
<string name="task_list_btn_inventory_doing">盘询中</string>
<string name="task_list_btn_inventory_finish">结束盘询</string>
<string name="task_list_btn_inventory_save">保存</string>
<string name="task_list_btn_inventory_clean">清空</string>
<!-- 待确认盘盈列表页面 -->
<string name="advantage_list_btn_save">导出</string>
<!-- 盘点任务列表页面 -->
<string name="check_task_item_name">资产名称</string>
<string name="check_task_item_seq">序号</string>
<string name="check_task_item_number">资产编码</string>
<string name="check_task_item_user">使用人</string>
<string name="check_task_item_dept">使用部门</string>
<string name="check_task_upload">数据上传</string>
<string name="check_task_upload">任务盘点</string>
<string name="check_task_export">导出结果</string>
<string name="check_task_test">测试</string>
<string name="check_task_clean">清\u3000\u3000空</string>
......
<?xml version="1.0" ?>
<sdk_metadata>
<library groupId="com.urbanairship.android" artifactId="urbanairship-sdk" recommended-version="9.3.1" >
<versions from="9.1.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-sdk:9.1.0" />
<versions from="9.0.0" to="9.0.4" status="deprecated" description="Version is known issues with in-app automation. Please update to version &lt;current&gt; as soon as possible." />
<versions from="8.9.1" to="8.9.2" status="deprecated" description="Version is known to have stability issues. Please update to version &lt;current&gt; as soon as possible. See &lt;url&gt; for more details." url="https://github.com/urbanairship/android-library/blob/master/CHANGELOG.md#version-893---october-17-2017" />
<versions from="6.1.4" to="8.7.0" status="deprecated" description="Version is known to have Android O compatibility issues. Please update to version &lt;current&gt; as soon as possible." />
<versions from="9.3.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-sdk:9.3.0" />
<versions from="9.3.1" status="recommended" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-sdk:9.3.1" />
</library>
<library groupId="com.urbanairship.android" artifactId="urbanairship-core" recommended-version="9.3.1" >
<versions from="9.1.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-core:9.1.0" />
<versions from="9.3.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-core:9.3.0" />
<versions from="9.3.1" status="recommended" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-core:9.3.1" />
</library>
<library groupId="com.urbanairship.android" artifactId="urbanairship-fcm" recommended-version="9.3.1" >
<versions from="9.1.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-fcm:9.1.0" />
<versions from="9.3.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-fcm:9.3.0" />
<versions from="9.3.1" status="recommended" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-fcm:9.3.1" />
</library>
<library groupId="com.urbanairship.android" artifactId="urbanairship-gcm" recommended-version="9.3.1" >
<versions from="9.1.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-gcm:9.1.0" />
<versions from="9.3.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-gcm:9.3.0" />
<versions from="9.3.1" status="recommended" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-gcm:9.3.1" />
</library>
<library groupId="com.urbanairship.android" artifactId="urbanairship-adm" recommended-version="9.3.1" >
<versions from="9.1.0" status="deprecated" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-adm:9.1.0" />
<versions from="9.3.0" status="recommended" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-adm:9.3.0" />
<versions from="9.3.1" status="recommended" version-literal="!SDK-VERSION-STRING!:com.urbanairship.android:urbanairship-adm:9.3.1" />
</library>
<library groupId="com.tune" artifactId="tune-marketing-console-sdk" recommended-version="5.3.0" >
<versions from="5.3.0" version-literal="com.tune.BuildConfig.5.3.0" description="Bug affecting SDK data quality" />
<versions from="5.2.1" version-literal="com.tune.BuildConfig.5.2.1" />
<versions from="5.2.0" version-literal="com.tune.BuildConfig.5.2.0" />
<versions from="5.1.1" status="deprecated" version-literal="com.tune.BuildConfig.5.1.1" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="5.0.0" to="5.0.2" status="deprecated" version-literal="com.tune.BuildConfig.5.0.0" description="Bug affecting SDK data quality" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.15.2" to="4.16.0" status="deprecated" version-literal="com.tune.BuildConfig.4.15.2" description="Bug affecting SDK data quality" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.15.1" version-literal="com.tune.BuildConfig.4.15.1" description="Bug affecting SDK performance" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.15.0" version-literal="com.tune.BuildConfig.4.15.0" description="Bug affecting SDK performance" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.14.0" version-literal="com.tune.BuildConfig.4.14.0" description="Bug affecting SDK performance" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.13.0" status="deprecated" version-literal="com.tune.BuildConfig.4.13.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.12.1" status="deprecated" version-literal="com.tune.BuildConfig.4.12.1" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.12.0" status="deprecated" version-literal="com.tune.BuildConfig.4.12.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.11.1" status="deprecated" version-literal="com.tune.BuildConfig.4.11.1" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.11.0" status="deprecated" version-literal="com.tune.BuildConfig.4.11.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.10.2" version-literal="com.tune.BuildConfig.4.10.2" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.10.1" version-literal="com.tune.BuildConfig.4.10.1" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.10.0" version-literal="com.tune.BuildConfig.4.10.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.9.0" version-literal="com.tune.BuildConfig.4.9.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.8.0" to="4.8.1" version-literal="com.tune.BuildConfig.4.8.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="4.0.0" to="4.7.1" status="deprecated" version-literal="com.tune.BuildConfig.4.0.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="3.0.0" to="3.11.4" status="deprecated" version-literal="com.tune.BuildConfig.3.0.0" description="Bug affecting app stability" url="https://developers.tune.com/sdk/migrating-to-android-4-8-0-and-above/" />
<versions from="0.0.0" to="3.0.0" status="deprecated" description="Bug affecting app stability" />
</library>
<library groupId="com.android.volley" artifactId="volley" recommended-version="1.1.0" >
<versions from="1.1.0" />
<versions from="1.1.0-rc2" status="deprecated" description="Bug affecting app stability" url="https://github.com/google/volley/releases" />
<versions from="1.1.0-rc1" status="deprecated" description="Bug affecting app stability" url="https://github.com/google/volley/releases" />
<versions from="1.0.0" status="deprecated" description="Bug affecting app stability" url="https://github.com/google/volley/releases" />
</library>
<library groupId="com.crashlytics.sdk.android" artifactId="answers" recommended-version="17.4.0">
<versions from="1.0.0" to="1.4.7" status="deprecated" description="Fabric Answers is deprecated. To continue getting real-time analytics, switch over to using Google Analytics.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/switch-to-analytics." url="https://firebase.google.com/docs/crashlytics/switch-to-analytics?platform=android" />
</library>
<library groupId="com.crashlytics.sdk.android" artifactId="crashlytics" recommended-version="17.2.2">
<versions from="2.0.0" to="2.10.1" status="deprecated" description="The Fabric Crashlytics SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/upgrade-sdk" url="https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android" />
</library>
<library groupId="com.crashlytics.sdk.android" artifactId="crashlytics-core" recommended-version="17.2.2">
<versions from="2.0.0" to="2.7.0" status="deprecated" description="The Fabric Crashlytics SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/upgrade-sdk" url="https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android" />
</library>
<library groupId="com.crashlytics.sdk.android" artifactId="crashlytics-ndk" recommended-version="17.2.2">
<versions from="0.5.0" to="2.1.1" status="deprecated" description="The Fabric Crashlytics SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/upgrade-sdk" url="https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android" />
</library>
<library groupId="com.google.guava" artifactId="guava" recommended-version="24.1-jre" >
<versions from="24.1-jre" />
</library>
<library groupId="com.google.guava" artifactId="guava" recommended-version="25.0-android" >
<versions from="25.0-android" />
<versions from="24.1.1-android" status="insecure" description="Moderate security vulnerability" url="https://github.com/google/guava/wiki/CVE-2018-10237" />
<versions from="24.1-android" status="deprecated" description="Bug affecting app performance" url="https://github.com/google/guava/releases" />
<versions from="24.0-android" status="deprecated" description="Bug affecting app performance" url="https://github.com/google/guava/releases" />
</library>
<library groupId="com.google.firebase" artifactId="firebase-analytics" recommended-version="15.0.0" >
<versions from="15.0.0" />
<versions from="12.0.1" />
<versions from="12.0.0" />
<versions from="11.8.0" />
<versions from="11.6.2" />
<versions from="11.6.0" />
<versions from="11.4.2" />
<versions from="11.4.0" />
<versions from="11.2.2" />
<versions from="11.2.0" />
<versions from="11.0.4" />
<versions from="11.0.2" />
<versions from="11.0.1" />
<versions from="11.0.0" />
<versions from="10.2.6" />
<versions from="10.2.4" />
<versions from="10.2.1" />
<versions from="10.2.0" />
<versions from="10.0.1" />
<versions from="10.0.0" />
<versions from="9.8.0" />
<versions from="9.6.1" />
<versions from="9.6.0" />
<versions from="9.4.0" />
<versions from="9.2.1" />
<versions from="9.2.0" />
<versions from="9.0.2" />
<versions from="9.0.1" />
<versions from="9.0.0" />
</library>
<library groupId="com.google.firebase" artifactId="firebase-appcheck-safetynet">
<versions from="16.0.0-beta01" to="16.0.0-beta01" status="deprecated" description="The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API. Before June 2023, migrate to the Firebase App Check SDK for Play Integrity by following https://firebase.google.com/docs/app-check/android/play-integrity-provider." url="https://developer.android.com/training/safetynet/deprecation-timeline"/>
<versions from="16.0.0-beta02" to="16.0.0-beta02" status="deprecated" description="The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API. Before June 2023, migrate to the Firebase App Check SDK for Play Integrity by following https://firebase.google.com/docs/app-check/android/play-integrity-provider." url="https://developer.android.com/training/safetynet/deprecation-timeline"/>
<versions from="16.0.0-beta03" to="16.0.0-beta03" status="deprecated" description="The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API. Before June 2023, migrate to the Firebase App Check SDK for Play Integrity by following https://firebase.google.com/docs/app-check/android/play-integrity-provider." url="https://developer.android.com/training/safetynet/deprecation-timeline"/>
<versions from="16.0.0-beta04" to="16.0.0-beta04" status="deprecated" description="The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API. Before June 2023, migrate to the Firebase App Check SDK for Play Integrity by following https://firebase.google.com/docs/app-check/android/play-integrity-provider." url="https://developer.android.com/training/safetynet/deprecation-timeline"/>
<versions from="16.0.0-beta05" to="16.0.0-beta05" status="deprecated" description="The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API. Before June 2023, migrate to the Firebase App Check SDK for Play Integrity by following https://firebase.google.com/docs/app-check/android/play-integrity-provider." url="https://developer.android.com/training/safetynet/deprecation-timeline"/>
<versions from="16.0.0-beta06" to="16.0.0-beta06" status="deprecated" description="The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API. Before June 2023, migrate to the Firebase App Check SDK for Play Integrity by following https://firebase.google.com/docs/app-check/android/play-integrity-provider." url="https://developer.android.com/training/safetynet/deprecation-timeline"/>
<versions from="16.0.0" status="deprecated" description="The SafetyNet Attestation API is deprecated and has been replaced by the Play Integrity API. Before June 2023, migrate to the Firebase App Check SDK for Play Integrity by following https://firebase.google.com/docs/app-check/android/play-integrity-provider." url="https://developer.android.com/training/safetynet/deprecation-timeline"/>
</library>
<library groupId="com.google.firebase" artifactId="firebase-config">
<versions from="21.1.0" to="21.1.0" status="deprecated" description="Bug affecting some locales causing HTTP errors" url="https://firebase.google.com/docs/remote-config/get-started?platform=android" />
</library>
<library groupId="com.google.firebase" artifactId="firebase-crashlytics" recommended-version="18.3.1">
<versions from="17.0.0-beta01" to="17.0.0-beta01" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="17.0.0-beta02" to="17.0.0-beta02" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="17.0.0-beta03" to="17.0.0-beta03" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="17.0.0-beta04" to="17.0.0-beta04" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="18.3.0" to="18.3.0" status="deprecated" description="We detected an issue in this version of the Crashlytics Android SDK. We strongly recommend either using v18.2.13 or earlier or upgrading to v18.3.1+." url="https://github.com/firebase/firebase-android-sdk/issues/4223" />
</library>
<library groupId="com.google.firebase" artifactId="firebase-crashlytics-ndk" recommended-version="18.3.2">
<versions from="17.0.0-beta01" to="17.0.0-beta01" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="17.0.0-beta02" to="17.0.0-beta02" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="17.0.0-beta03" to="17.0.0-beta03" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="17.0.0-beta04" to="17.0.0-beta04" status="deprecated" description="The Firebase Crashlytics beta SDK is now deprecated and will continue reporting your app's crashes only until November 15, 2020. To continue getting crash reports in the Firebase console, make sure you upgrade to the generally available Firebase Crashlytics SDK version 17.0.0+.&#13;&#10;For more information, visit https://firebase.google.com/docs/crashlytics/get-started" url="https://firebase.google.com/docs/crashlytics/get-started?platform=android" />
<versions from="18.3.0" to="18.3.0" status="deprecated" description="We detected an issue in this version of the Crashlytics Android SDK. We strongly recommend either using v18.2.13 or earlier or upgrading to v18.3.1+." url="https://github.com/firebase/firebase-android-sdk/issues/4223" />
<versions from="18.3.1" to="18.3.1" status="deprecated" description="We detected an issue in this version of the Crashlytics Android SDK. We strongly recommend either using v18.2.13 or earlier or upgrading to v18.3.2+." url="https://github.com/firebase/firebase-android-sdk/issues/4313" />
</library>
<library groupId="com.google.firebase" artifactId="firebase-messaging" recommended-version="20.1.2" >
<versions from="20.1.1" status="deprecated" description="Bug affecting app stability" url="https://firebase.google.com/support/release-notes/android#messaging_v20-1-1" />
</library>
<library groupId="com.google.firebase" artifactId="firebase-ml-vision">
<versions from="15.0.0" to="24.1.0" status="deprecated" description="For more information, refer to documentation for specific features.&#13;&#10;Text recognition: https://firebase.google.com/docs/ml/android/recognize-text&#13;&#10;Image labeling: https://firebase.google.com/docs/ml/android/label-images&#13;&#10;Landmark recognition: https://firebase.google.com/docs/ml/android/recognize-landmarks " />
</library>
<library groupId="com.google.firebase" artifactId="firebase-ml-model-interpreter">
<versions from="15.0.0" to="22.0.4" status="deprecated" description="The Firebase ML Model Interpreter library is deprecated in favor of the Firebase ML Model Downloader library. For more information, visit https://firebase.google.com/docs/ml/android/use-custom-models" />
</library>
<library groupId="com.google.firebase" artifactId="firebase-perf">
<versions to="16.2.1" status="deprecated" description="This version will soon be deprecated. Update to version 19.0.10 or higher to get real time performance data. For more information, visit https://firebase.google.com/docs/perf-mon/troubleshooting" url="https://firebase.google.com/docs/perf-mon/troubleshooting?platform=android#faq-real-time-data"/>
</library>
<library groupId="com.google.dagger" artifactId="dagger-android" recommended-version="2.35.1" >
<versions from="2.15" />
<versions from="2.14.1" status="deprecated" description="Bug affecting SDK performance" url="https://github.com/google/dagger/releases/tag/2.15" />
<versions from="2.14" status="deprecated" description="Bug affecting SDK performance" url="https://github.com/google/dagger/releases/tag/2.15" />
<versions from="2.13" status="deprecated" description="Bug affecting app performance" url="https://github.com/google/dagger/releases/tag/2.15" />
<versions from="2.12" status="deprecated" description="Bug affecting app performance" url="https://github.com/google/dagger/releases/tag/2.15" />
<versions from="2.11" status="deprecated" description="Bug affecting SDK performance" url="https://github.com/google/dagger/releases/tag/2.15" />
<versions from="2.11-rc2" status="deprecated" description="Bug affecting SDK performance" url="https://github.com/google/dagger/releases/tag/2.15" />
<versions from="2.11-rc1" status="deprecated" description="Bug affecting SDK performance" url="https://github.com/google/dagger/releases/tag/2.15" />
<versions from="2.10" status="deprecated" url="https://github.com/google/dagger/releases/tag/2.15" />
</library>
<library groupId="AppsFlyer" artifactId="af-android-sdk" recommended-version="4.8.10" >
<versions from="4.8.9" version-literal="!SDK-VERSION-STRING!:com.appsflyer:af-android-sdk:4.8.9" />
<versions from="4.8.10" version-literal="!SDK-VERSION-STRING!:com.appsflyer:af-android-sdk:4.8.10" />
</library>
<library groupId="com.kochava" artifactId="tracker" recommended-version="3.4.0" >
<versions from="3.4.0" />
<versions from="3.3.1" version-literal="&quot;AndroidTracker 3.3.1&quot;, &quot;control.kochava.com&quot;" />
<versions from="3.3.0" version-literal="&quot;AndroidTracker 3.3.0&quot;, &quot;control.kochava.com&quot;" />
<versions from="3.2.0" version-literal="&quot;AndroidTracker 3.2.0&quot;, &quot;control.kochava.com&quot;" />
<versions from="3.1.1" version-literal="&quot;AndroidTracker 3.1.1&quot;, &quot;control.kochava.com&quot;" />
<versions from="3.1.0" status="deprecated" version-literal="&quot;AndroidTracker 3.1.0&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="3.0.0" status="deprecated" version-literal="&quot;AndroidTracker 3.0.0&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20170303" status="deprecated" version-literal="&quot;Android20170303&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20170216" status="deprecated" version-literal="&quot;Android20170216&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20170127" status="deprecated" version-literal="&quot;Android20170127&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20170106" status="deprecated" version-literal="&quot;Android20170106&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20161122" status="deprecated" version-literal="&quot;Android20161122&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20160914" status="deprecated" version-literal="&quot;Android20160914&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20160902" status="deprecated" version-literal="&quot;Android20160902&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20160811" status="deprecated" version-literal="&quot;Android20160811&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20160615" status="deprecated" version-literal="&quot;Android20160615&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20160427" status="deprecated" version-literal="&quot;Android20160427&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20160222" status="deprecated" version-literal="&quot;Android20160222&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20151109" status="deprecated" version-literal="&quot;Android20151109&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20150511" status="deprecated" version-literal="&quot;Android20150511&quot;, &quot;control.kochava.com&quot;" description="Bug affecting SDK performance" />
<versions from="20150312" status="insecure" version-literal="&quot;Android20150312&quot;, &quot;control.kochava.com&quot;" description="Moderate security vulnerability" />
<versions from="20150128" status="insecure" version-literal="&quot;Android20150128&quot;, &quot;control.kochava.com&quot;" description="Moderate security vulnerability" />
<versions from="20141023" status="insecure" version-literal="&quot;Android20141023&quot;, &quot;control.kochava.com&quot;" description="Moderate security vulnerability" />
<versions from="20140825" status="insecure" version-literal="&quot;Android20140825&quot;, &quot;control.kochava.com&quot;" description="Moderate security vulnerability" />
</library>
</sdk_metadata>
......@@ -19,4 +19,3 @@ android.useAndroidX=true
android.enableJetifier=true
# SM2
android.jetifier.blacklist=bcprov-jdk15on
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 1144016 bytes for Chunk::new
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (./src/hotspot/share/memory/arena.cpp:197), pid=145208, tid=154976
#
# JRE version: OpenJDK Runtime Environment (11.0.12+7) (build 11.0.12+7-b1504.28-7817840)
# Java VM: OpenJDK 64-Bit Server VM (11.0.12+7-b1504.28-7817840, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -Xmx1536m -Dfile.encoding=GBK -Duser.country=CN -Duser.language=zh -Duser.variant org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1
Host: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, 8 cores, 15G, Windows 10 , 64 bit Build 22621 (10.0.22621.3958)
Time: Tue Aug 27 18:09:15 2024 中国标准时间 elapsed time: 37.733525 seconds (0d 0h 0m 37s)
--------------- T H R E A D ---------------
Current thread (0x000002a177671000): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=154976, stack(0x000000d415500000,0x000000d415600000)]
Current CompileTask:
C2: 37733 12814 4 com.android.tools.r8.ir.optimize.PeepholeOptimizer::a (401 bytes)
Stack: [0x000000d415500000,0x000000d415600000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x5fbcea]
V [jvm.dll+0x731905]
V [jvm.dll+0x732f1d]
V [jvm.dll+0x7335d3]
V [jvm.dll+0x247bf8]
V [jvm.dll+0xc018c]
V [jvm.dll+0xc06cc]
V [jvm.dll+0x2bcc04]
V [jvm.dll+0x5113a8]
V [jvm.dll+0x208303]
V [jvm.dll+0x201fe0]
V [jvm.dll+0x1ff71f]
V [jvm.dll+0x18868c]
V [jvm.dll+0x20e0d7]
V [jvm.dll+0x20c901]
V [jvm.dll+0x6f9b7f]
V [jvm.dll+0x6f26a5]
V [jvm.dll+0x5fabf6]
C [ucrtbase.dll+0x29333]
C [KERNEL32.DLL+0x1257d]
C [ntdll.dll+0x5af28]
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x000002a17bf5ca50, length=49, elements={
0x000002a15dbe6000, 0x000002a1775f1800, 0x000002a1775fd800, 0x000002a177669800,
0x000002a17766d000, 0x000002a177670000, 0x000002a177671000, 0x000002a177676800,
0x000002a177679800, 0x000002a1777e0800, 0x000002a17815b000, 0x000002a178d26800,
0x000002a177abf000, 0x000002a178f59800, 0x000002a1794fb800, 0x000002a17812e000,
0x000002a178f72000, 0x000002a177a57000, 0x000002a178774800, 0x000002a1785c6000,
0x000002a1785c0000, 0x000002a1785c6800, 0x000002a1785c3800, 0x000002a1785c1000,
0x000002a1785c5000, 0x000002a179469000, 0x000002a179467000, 0x000002a179465000,
0x000002a179469800, 0x000002a179465800, 0x000002a179464000, 0x000002a179466800,
0x000002a17946a800, 0x000002a17946b800, 0x000002a17946c000, 0x000002a17946d000,
0x000002a17946e000, 0x000002a179468000, 0x000002a179472000, 0x000002a17d791800,
0x000002a17946e800, 0x000002a179471000, 0x000002a179472800, 0x000002a17946f800,
0x000002a10109a000, 0x000002a10109c800, 0x000002a10109b800, 0x000002a10109d000,
0x000002a101099000
}
Java Threads: ( => current thread )
0x000002a15dbe6000 JavaThread "main" [_thread_blocked, id=160868, stack(0x000000d414900000,0x000000d414a00000)]
0x000002a1775f1800 JavaThread "Reference Handler" daemon [_thread_blocked, id=144700, stack(0x000000d415000000,0x000000d415100000)]
0x000002a1775fd800 JavaThread "Finalizer" daemon [_thread_blocked, id=4892, stack(0x000000d415100000,0x000000d415200000)]
0x000002a177669800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=160880, stack(0x000000d415200000,0x000000d415300000)]
0x000002a17766d000 JavaThread "Attach Listener" daemon [_thread_blocked, id=159504, stack(0x000000d415300000,0x000000d415400000)]
0x000002a177670000 JavaThread "Service Thread" daemon [_thread_blocked, id=157836, stack(0x000000d415400000,0x000000d415500000)]
=>0x000002a177671000 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=154976, stack(0x000000d415500000,0x000000d415600000)]
0x000002a177676800 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=143928, stack(0x000000d415600000,0x000000d415700000)]
0x000002a177679800 JavaThread "Sweeper thread" daemon [_thread_blocked, id=154096, stack(0x000000d415700000,0x000000d415800000)]
0x000002a1777e0800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=148564, stack(0x000000d415800000,0x000000d415900000)]
0x000002a17815b000 JavaThread "Daemon health stats" [_thread_blocked, id=146536, stack(0x000000d415f00000,0x000000d416000000)]
0x000002a178d26800 JavaThread "Incoming local TCP Connector on port 52111" [_thread_in_native, id=148024, stack(0x000000d416000000,0x000000d416100000)]
0x000002a177abf000 JavaThread "Daemon periodic checks" [_thread_blocked, id=154968, stack(0x000000d416100000,0x000000d416200000)]
0x000002a178f59800 JavaThread "Daemon" [_thread_blocked, id=158796, stack(0x000000d416200000,0x000000d416300000)]
0x000002a1794fb800 JavaThread "Handler for socket connection from /127.0.0.1:52111 to /127.0.0.1:52112" [_thread_in_native, id=160440, stack(0x000000d416300000,0x000000d416400000)]
0x000002a17812e000 JavaThread "Cancel handler" [_thread_blocked, id=162228, stack(0x000000d416400000,0x000000d416500000)]
0x000002a178f72000 JavaThread "Daemon worker" [_thread_in_Java, id=157088, stack(0x000000d416500000,0x000000d416600000)]
0x000002a177a57000 JavaThread "Asynchronous log dispatcher for DefaultDaemonConnection: socket connection from /127.0.0.1:52111 to /127.0.0.1:52112" [_thread_blocked, id=160268, stack(0x000000d416600000,0x000000d416700000)]
0x000002a178774800 JavaThread "Stdin handler" [_thread_blocked, id=157440, stack(0x000000d416700000,0x000000d416800000)]
0x000002a1785c6000 JavaThread "Thread-8" [_thread_blocked, id=157956, stack(0x000000d416800000,0x000000d416900000)]
0x000002a1785c0000 JavaThread "Cache worker for file hash cache (C:\Users\閮慭.gradle\caches\5.4.1\fileHashes)" [_thread_blocked, id=18536, stack(0x000000d416900000,0x000000d416a00000)]
0x000002a1785c6800 JavaThread "File lock request listener" [_thread_in_native, id=141984, stack(0x000000d416a00000,0x000000d416b00000)]
0x000002a1785c3800 JavaThread "Cache worker for journal cache (C:\Users\閮慭.gradle\caches\journal-1)" [_thread_blocked, id=149164, stack(0x000000d416b00000,0x000000d416c00000)]
0x000002a1785c1000 JavaThread "Cache worker for file hash cache (D:\story\workspace\android\asset-app-hkyh\.gradle\5.4.1\fileHashes)" [_thread_blocked, id=159940, stack(0x000000d416f00000,0x000000d417000000)]
0x000002a1785c5000 JavaThread "Cache worker for cache directory md-supplier (C:\Users\閮慭.gradle\caches\5.4.1\md-supplier)" [_thread_blocked, id=141944, stack(0x000000d417000000,0x000000d417100000)]
0x000002a179469000 JavaThread "Cache worker for cache directory md-rule (C:\Users\閮慭.gradle\caches\5.4.1\md-rule)" [_thread_blocked, id=162400, stack(0x000000d417100000,0x000000d417200000)]
0x000002a179467000 JavaThread "Cache worker for execution history cache (C:\Users\閮慭.gradle\caches\5.4.1\executionHistory)" [_thread_blocked, id=161916, stack(0x000000d417200000,0x000000d417300000)]
0x000002a179465000 JavaThread "Build operations" [_thread_blocked, id=123224, stack(0x000000d417400000,0x000000d417500000)]
0x000002a179469800 JavaThread "Build operations Thread 2" [_thread_blocked, id=162044, stack(0x000000d417500000,0x000000d417600000)]
0x000002a179465800 JavaThread "Build operations Thread 3" [_thread_blocked, id=68296, stack(0x000000d417600000,0x000000d417700000)]
0x000002a179464000 JavaThread "Build operations Thread 4" [_thread_blocked, id=162356, stack(0x000000d417700000,0x000000d417800000)]
0x000002a179466800 JavaThread "Build operations Thread 5" [_thread_blocked, id=137556, stack(0x000000d417800000,0x000000d417900000)]
0x000002a17946a800 JavaThread "Build operations Thread 6" [_thread_blocked, id=158064, stack(0x000000d417900000,0x000000d417a00000)]
0x000002a17946b800 JavaThread "Build operations Thread 7" [_thread_blocked, id=162376, stack(0x000000d417a00000,0x000000d417b00000)]
0x000002a17946c000 JavaThread "Build operations Thread 8" [_thread_blocked, id=161852, stack(0x000000d417b00000,0x000000d417c00000)]
0x000002a17946d000 JavaThread "Cache worker for Build Output Cleanup Cache (D:\story\workspace\android\asset-app-hkyh\.gradle\buildOutputCleanup)" [_thread_blocked, id=149408, stack(0x000000d417300000,0x000000d417400000)]
0x000002a17946e000 JavaThread "Memory manager" [_thread_blocked, id=158864, stack(0x000000d417c00000,0x000000d417d00000)]
0x000002a179468000 JavaThread "Cache worker for file content cache (C:\Users\閮慭.gradle\caches\5.4.1\fileContent)" [_thread_blocked, id=137736, stack(0x000000d417d00000,0x000000d417e00000)]
0x000002a179472000 JavaThread "Cache worker for file content cache (D:\story\workspace\android\asset-app-hkyh\.gradle\5.4.1\fileContent)" [_thread_blocked, id=138776, stack(0x000000d417e00000,0x000000d417f00000)]
0x000002a17d791800 JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=145040, stack(0x000000d417f00000,0x000000d418000000)]
0x000002a17946e800 JavaThread "Execution worker for ':'" [_thread_in_Java, id=147908, stack(0x000000d418000000,0x000000d418100000)]
0x000002a179471000 JavaThread "Execution worker for ':' Thread 2" [_thread_blocked, id=155812, stack(0x000000d418100000,0x000000d418200000)]
0x000002a179472800 JavaThread "Execution worker for ':' Thread 3" [_thread_in_Java, id=157236, stack(0x000000d418200000,0x000000d418300000)]
0x000002a17946f800 JavaThread "Execution worker for ':' Thread 4" [_thread_in_Java, id=160572, stack(0x000000d418300000,0x000000d418400000)]
0x000002a10109a000 JavaThread "Execution worker for ':' Thread 5" [_thread_in_Java, id=144684, stack(0x000000d418400000,0x000000d418500000)]
0x000002a10109c800 JavaThread "Execution worker for ':' Thread 6" [_thread_in_Java, id=160932, stack(0x000000d418500000,0x000000d418600000)]
0x000002a10109b800 JavaThread "Execution worker for ':' Thread 7" [_thread_in_Java, id=155468, stack(0x000000d418600000,0x000000d418700000)]
0x000002a10109d000 JavaThread "Cache worker for execution history cache (D:\story\workspace\android\asset-app-hkyh\.gradle\5.4.1\executionHistory)" [_thread_blocked, id=162560, stack(0x000000d418700000,0x000000d418800000)]
0x000002a101099000 JavaThread "WorkerExecutor Queue" [_thread_in_native, id=117452, stack(0x000000d418800000,0x000000d418900000)]
Other Threads:
0x000002a1775cd800 VMThread "VM Thread" [stack: 0x000000d414f00000,0x000000d415000000] [id=161392]
0x000002a1777e5800 WatcherThread [stack: 0x000000d415900000,0x000000d415a00000] [id=159980]
0x000002a15dbfe800 GCTaskThread "GC Thread#0" [stack: 0x000000d414a00000,0x000000d414b00000] [id=162756]
0x000002a1785b6800 GCTaskThread "GC Thread#1" [stack: 0x000000d415a00000,0x000000d415b00000] [id=159976]
0x000002a178157000 GCTaskThread "GC Thread#2" [stack: 0x000000d415b00000,0x000000d415c00000] [id=151096]
0x000002a178157800 GCTaskThread "GC Thread#3" [stack: 0x000000d415c00000,0x000000d415d00000] [id=144656]
0x000002a177e99800 GCTaskThread "GC Thread#4" [stack: 0x000000d415d00000,0x000000d415e00000] [id=160088]
0x000002a177e9a000 GCTaskThread "GC Thread#5" [stack: 0x000000d415e00000,0x000000d415f00000] [id=156764]
0x000002a1792e7000 GCTaskThread "GC Thread#6" [stack: 0x000000d416c00000,0x000000d416d00000] [id=157828]
0x000002a178f28800 GCTaskThread "GC Thread#7" [stack: 0x000000d416d00000,0x000000d416e00000] [id=160416]
0x000002a15dc26000 ConcurrentGCThread "G1 Main Marker" [stack: 0x000000d414b00000,0x000000d414c00000] [id=159608]
0x000002a15dc27800 ConcurrentGCThread "G1 Conc#0" [stack: 0x000000d414c00000,0x000000d414d00000] [id=152716]
0x000002a1784e9800 ConcurrentGCThread "G1 Conc#1" [stack: 0x000000d416e00000,0x000000d416f00000] [id=160712]
0x000002a176c3a800 ConcurrentGCThread "G1 Refine#0" [stack: 0x000000d414d00000,0x000000d414e00000] [id=159072]
0x000002a179f7b800 ConcurrentGCThread "G1 Refine#1" [stack: 0x000000d418900000,0x000000d418a00000] [id=61480]
0x000002a179f7c000 ConcurrentGCThread "G1 Refine#2" [stack: 0x000000d418a00000,0x000000d418b00000] [id=159636]
0x000002a1051e2000 ConcurrentGCThread "G1 Refine#3" [stack: 0x000000d418b00000,0x000000d418c00000] [id=161936]
0x000002a104fa9000 ConcurrentGCThread "G1 Refine#4" [stack: 0x000000d418c00000,0x000000d418d00000] [id=160748]
0x000002a176c3b800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x000000d414e00000,0x000000d414f00000] [id=155604]
Threads with active compile tasks:
C2 CompilerThread0 37828 12814 4 com.android.tools.r8.ir.optimize.PeepholeOptimizer::a (401 bytes)
C2 CompilerThread1 37828 12813 4 com.android.tools.r8.ir.code.Phi::a (339 bytes)
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap address: 0x00000000a0000000, size: 1536 MB, Compressed Oops mode: 32-bit
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
Compressed class space size: 1073741824 Address: 0x0000000100000000
Heap:
garbage-first heap total 374784K, used 220496K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 63 young (64512K), 12 survivors (12288K)
Metaspace used 81880K, capacity 83813K, committed 84216K, reserved 1122304K
class space used 10407K, capacity 11139K, committed 11256K, reserved 1048576K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next)
| 0|0x00000000a0000000, 0x00000000a0100000, 0x00000000a0100000|100%|HS| |TAMS 0x00000000a0100000, 0x00000000a0000000| Complete
| 1|0x00000000a0100000, 0x00000000a0200000, 0x00000000a0200000|100%|HC| |TAMS 0x00000000a0200000, 0x00000000a0100000| Complete
| 2|0x00000000a0200000, 0x00000000a0300000, 0x00000000a0300000|100%|HS| |TAMS 0x00000000a0300000, 0x00000000a0200000| Complete
| 3|0x00000000a0300000, 0x00000000a0400000, 0x00000000a0400000|100%|HS| |TAMS 0x00000000a0400000, 0x00000000a0300000| Complete
| 4|0x00000000a0400000, 0x00000000a0500000, 0x00000000a0500000|100%|HC| |TAMS 0x00000000a0500000, 0x00000000a0400000| Complete
| 5|0x00000000a0500000, 0x00000000a0600000, 0x00000000a0600000|100%| O| |TAMS 0x00000000a0600000, 0x00000000a0500000| Untracked
| 6|0x00000000a0600000, 0x00000000a0700000, 0x00000000a0700000|100%| O| |TAMS 0x00000000a0700000, 0x00000000a0600000| Untracked
| 7|0x00000000a0700000, 0x00000000a0800000, 0x00000000a0800000|100%|HS| |TAMS 0x00000000a0800000, 0x00000000a0700000| Complete
| 8|0x00000000a0800000, 0x00000000a0900000, 0x00000000a0900000|100%|HC| |TAMS 0x00000000a0900000, 0x00000000a0800000| Complete
| 9|0x00000000a0900000, 0x00000000a0a00000, 0x00000000a0a00000|100%|HC| |TAMS 0x00000000a0a00000, 0x00000000a0900000| Complete
| 10|0x00000000a0a00000, 0x00000000a0b00000, 0x00000000a0b00000|100%|HS| |TAMS 0x00000000a0b00000, 0x00000000a0a00000| Complete
| 11|0x00000000a0b00000, 0x00000000a0c00000, 0x00000000a0c00000|100%|HC| |TAMS 0x00000000a0c00000, 0x00000000a0b00000| Complete
| 12|0x00000000a0c00000, 0x00000000a0d00000, 0x00000000a0d00000|100%|HC| |TAMS 0x00000000a0d00000, 0x00000000a0c00000| Complete
| 13|0x00000000a0d00000, 0x00000000a0e00000, 0x00000000a0e00000|100%|HC| |TAMS 0x00000000a0e00000, 0x00000000a0d00000| Complete
| 14|0x00000000a0e00000, 0x00000000a0f00000, 0x00000000a0f00000|100%| O| |TAMS 0x00000000a0f00000, 0x00000000a0e00000| Untracked
| 15|0x00000000a0f00000, 0x00000000a1000000, 0x00000000a1000000|100%| O| |TAMS 0x00000000a1000000, 0x00000000a0f00000| Untracked
| 16|0x00000000a1000000, 0x00000000a1100000, 0x00000000a1100000|100%| O| |TAMS 0x00000000a1100000, 0x00000000a1000000| Untracked
| 17|0x00000000a1100000, 0x00000000a1200000, 0x00000000a1200000|100%| O| |TAMS 0x00000000a1200000, 0x00000000a1100000| Untracked
| 18|0x00000000a1200000, 0x00000000a1300000, 0x00000000a1300000|100%| O| |TAMS 0x00000000a1300000, 0x00000000a1200000| Untracked
| 19|0x00000000a1300000, 0x00000000a1400000, 0x00000000a1400000|100%| O| |TAMS 0x00000000a1400000, 0x00000000a1300000| Untracked
| 20|0x00000000a1400000, 0x00000000a1500000, 0x00000000a1500000|100%| O| |TAMS 0x00000000a1500000, 0x00000000a1400000| Untracked
| 21|0x00000000a1500000, 0x00000000a1600000, 0x00000000a1600000|100%| O| |TAMS 0x00000000a1600000, 0x00000000a1500000| Untracked
| 22|0x00000000a1600000, 0x00000000a1700000, 0x00000000a1700000|100%| O| |TAMS 0x00000000a1700000, 0x00000000a1600000| Untracked
| 23|0x00000000a1700000, 0x00000000a1800000, 0x00000000a1800000|100%| O| |TAMS 0x00000000a1800000, 0x00000000a1700000| Untracked
| 24|0x00000000a1800000, 0x00000000a1900000, 0x00000000a1900000|100%|HS| |TAMS 0x00000000a1900000, 0x00000000a1800000| Complete
| 25|0x00000000a1900000, 0x00000000a1a00000, 0x00000000a1a00000|100%|HC| |TAMS 0x00000000a1a00000, 0x00000000a1900000| Complete
| 26|0x00000000a1a00000, 0x00000000a1b00000, 0x00000000a1b00000|100%| O| |TAMS 0x00000000a1b00000, 0x00000000a1a00000| Untracked
| 27|0x00000000a1b00000, 0x00000000a1c00000, 0x00000000a1c00000|100%| O| |TAMS 0x00000000a1c00000, 0x00000000a1b00000| Untracked
| 28|0x00000000a1c00000, 0x00000000a1d00000, 0x00000000a1d00000|100%| O| |TAMS 0x00000000a1d00000, 0x00000000a1c00000| Untracked
| 29|0x00000000a1d00000, 0x00000000a1e00000, 0x00000000a1e00000|100%| O| |TAMS 0x00000000a1e00000, 0x00000000a1d00000| Untracked
| 30|0x00000000a1e00000, 0x00000000a1f00000, 0x00000000a1f00000|100%| O| |TAMS 0x00000000a1f00000, 0x00000000a1e00000| Untracked
| 31|0x00000000a1f00000, 0x00000000a2000000, 0x00000000a2000000|100%| O| |TAMS 0x00000000a2000000, 0x00000000a1f00000| Untracked
| 32|0x00000000a2000000, 0x00000000a2100000, 0x00000000a2100000|100%| O| |TAMS 0x00000000a2100000, 0x00000000a2000000| Untracked
| 33|0x00000000a2100000, 0x00000000a2200000, 0x00000000a2200000|100%| O| |TAMS 0x00000000a2200000, 0x00000000a2100000| Untracked
| 34|0x00000000a2200000, 0x00000000a2300000, 0x00000000a2300000|100%| O| |TAMS 0x00000000a2300000, 0x00000000a2200000| Untracked
| 35|0x00000000a2300000, 0x00000000a2400000, 0x00000000a2400000|100%| O| |TAMS 0x00000000a2400000, 0x00000000a2300000| Untracked
| 36|0x00000000a2400000, 0x00000000a2500000, 0x00000000a2500000|100%| O| |TAMS 0x00000000a2500000, 0x00000000a2400000| Untracked
| 37|0x00000000a2500000, 0x00000000a2600000, 0x00000000a2600000|100%| O| |TAMS 0x00000000a2600000, 0x00000000a2500000| Untracked
| 38|0x00000000a2600000, 0x00000000a2700000, 0x00000000a2700000|100%| O| |TAMS 0x00000000a2700000, 0x00000000a2600000| Untracked
| 39|0x00000000a2700000, 0x00000000a2800000, 0x00000000a2800000|100%| O| |TAMS 0x00000000a2800000, 0x00000000a2700000| Untracked
| 40|0x00000000a2800000, 0x00000000a2900000, 0x00000000a2900000|100%| O| |TAMS 0x00000000a2900000, 0x00000000a2800000| Untracked
| 41|0x00000000a2900000, 0x00000000a2a00000, 0x00000000a2a00000|100%| O| |TAMS 0x00000000a2a00000, 0x00000000a2900000| Untracked
| 42|0x00000000a2a00000, 0x00000000a2b00000, 0x00000000a2b00000|100%| O| |TAMS 0x00000000a2b00000, 0x00000000a2a00000| Untracked
| 43|0x00000000a2b00000, 0x00000000a2c00000, 0x00000000a2c00000|100%| O| |TAMS 0x00000000a2c00000, 0x00000000a2b00000| Untracked
| 44|0x00000000a2c00000, 0x00000000a2d00000, 0x00000000a2d00000|100%| O| |TAMS 0x00000000a2d00000, 0x00000000a2c00000| Untracked
| 45|0x00000000a2d00000, 0x00000000a2e00000, 0x00000000a2e00000|100%| O| |TAMS 0x00000000a2e00000, 0x00000000a2d00000| Untracked
| 46|0x00000000a2e00000, 0x00000000a2f00000, 0x00000000a2f00000|100%| O| |TAMS 0x00000000a2f00000, 0x00000000a2e00000| Untracked
| 47|0x00000000a2f00000, 0x00000000a3000000, 0x00000000a3000000|100%| O| |TAMS 0x00000000a3000000, 0x00000000a2f00000| Untracked
| 48|0x00000000a3000000, 0x00000000a3100000, 0x00000000a3100000|100%| O| |TAMS 0x00000000a3100000, 0x00000000a3000000| Untracked
| 49|0x00000000a3100000, 0x00000000a3200000, 0x00000000a3200000|100%| O| |TAMS 0x00000000a3200000, 0x00000000a3100000| Untracked
| 50|0x00000000a3200000, 0x00000000a3300000, 0x00000000a3300000|100%| O| |TAMS 0x00000000a3300000, 0x00000000a3200000| Untracked
| 51|0x00000000a3300000, 0x00000000a3400000, 0x00000000a3400000|100%| O| |TAMS 0x00000000a3400000, 0x00000000a3300000| Untracked
| 52|0x00000000a3400000, 0x00000000a3500000, 0x00000000a3500000|100%| O| |TAMS 0x00000000a3500000, 0x00000000a3400000| Untracked
| 53|0x00000000a3500000, 0x00000000a3600000, 0x00000000a3600000|100%| O| |TAMS 0x00000000a3600000, 0x00000000a3500000| Untracked
| 54|0x00000000a3600000, 0x00000000a3700000, 0x00000000a3700000|100%| O| |TAMS 0x00000000a3700000, 0x00000000a3600000| Untracked
| 55|0x00000000a3700000, 0x00000000a3800000, 0x00000000a3800000|100%|HS| |TAMS 0x00000000a3800000, 0x00000000a3700000| Complete
| 56|0x00000000a3800000, 0x00000000a3900000, 0x00000000a3900000|100%| O| |TAMS 0x00000000a3900000, 0x00000000a3800000| Untracked
| 57|0x00000000a3900000, 0x00000000a3a00000, 0x00000000a3a00000|100%| O| |TAMS 0x00000000a3a00000, 0x00000000a3900000| Untracked
| 58|0x00000000a3a00000, 0x00000000a3b00000, 0x00000000a3b00000|100%| O| |TAMS 0x00000000a3b00000, 0x00000000a3a00000| Untracked
| 59|0x00000000a3b00000, 0x00000000a3c00000, 0x00000000a3c00000|100%| O| |TAMS 0x00000000a3c00000, 0x00000000a3b00000| Untracked
| 60|0x00000000a3c00000, 0x00000000a3d00000, 0x00000000a3d00000|100%| O| |TAMS 0x00000000a3d00000, 0x00000000a3c00000| Untracked
| 61|0x00000000a3d00000, 0x00000000a3e00000, 0x00000000a3e00000|100%| O| |TAMS 0x00000000a3e00000, 0x00000000a3d00000| Untracked
| 62|0x00000000a3e00000, 0x00000000a3f00000, 0x00000000a3f00000|100%| O| |TAMS 0x00000000a3f00000, 0x00000000a3e00000| Untracked
| 63|0x00000000a3f00000, 0x00000000a4000000, 0x00000000a4000000|100%| O| |TAMS 0x00000000a4000000, 0x00000000a3f00000| Untracked
| 64|0x00000000a4000000, 0x00000000a4100000, 0x00000000a4100000|100%| O| |TAMS 0x00000000a4100000, 0x00000000a4000000| Untracked
| 65|0x00000000a4100000, 0x00000000a4200000, 0x00000000a4200000|100%| O| |TAMS 0x00000000a4200000, 0x00000000a4100000| Untracked
| 66|0x00000000a4200000, 0x00000000a4300000, 0x00000000a4300000|100%| O| |TAMS 0x00000000a4300000, 0x00000000a4200000| Untracked
| 67|0x00000000a4300000, 0x00000000a4400000, 0x00000000a4400000|100%| O| |TAMS 0x00000000a4400000, 0x00000000a4300000| Untracked
| 68|0x00000000a4400000, 0x00000000a4500000, 0x00000000a4500000|100%| O| |TAMS 0x00000000a4500000, 0x00000000a4400000| Untracked
| 69|0x00000000a4500000, 0x00000000a4600000, 0x00000000a4600000|100%| O| |TAMS 0x00000000a4600000, 0x00000000a4500000| Untracked
| 70|0x00000000a4600000, 0x00000000a4700000, 0x00000000a4700000|100%| O| |TAMS 0x00000000a4700000, 0x00000000a4600000| Untracked
| 71|0x00000000a4700000, 0x00000000a4800000, 0x00000000a4800000|100%| O| |TAMS 0x00000000a4800000, 0x00000000a4700000| Untracked
| 72|0x00000000a4800000, 0x00000000a4900000, 0x00000000a4900000|100%| O| |TAMS 0x00000000a4900000, 0x00000000a4800000| Untracked
| 73|0x00000000a4900000, 0x00000000a4a00000, 0x00000000a4a00000|100%| O| |TAMS 0x00000000a4a00000, 0x00000000a4900000| Untracked
| 74|0x00000000a4a00000, 0x00000000a4b00000, 0x00000000a4b00000|100%| O| |TAMS 0x00000000a4b00000, 0x00000000a4a00000| Untracked
| 75|0x00000000a4b00000, 0x00000000a4c00000, 0x00000000a4c00000|100%| O| |TAMS 0x00000000a4c00000, 0x00000000a4b00000| Untracked
| 76|0x00000000a4c00000, 0x00000000a4d00000, 0x00000000a4d00000|100%| O| |TAMS 0x00000000a4d00000, 0x00000000a4c00000| Untracked
| 77|0x00000000a4d00000, 0x00000000a4e00000, 0x00000000a4e00000|100%| O| |TAMS 0x00000000a4e00000, 0x00000000a4d00000| Untracked
| 78|0x00000000a4e00000, 0x00000000a4f00000, 0x00000000a4f00000|100%| O| |TAMS 0x00000000a4f00000, 0x00000000a4e00000| Untracked
| 79|0x00000000a4f00000, 0x00000000a5000000, 0x00000000a5000000|100%| O| |TAMS 0x00000000a5000000, 0x00000000a4f00000| Untracked
| 80|0x00000000a5000000, 0x00000000a5100000, 0x00000000a5100000|100%| O| |TAMS 0x00000000a5100000, 0x00000000a5000000| Untracked
| 81|0x00000000a5100000, 0x00000000a5200000, 0x00000000a5200000|100%| O| |TAMS 0x00000000a5200000, 0x00000000a5100000| Untracked
| 82|0x00000000a5200000, 0x00000000a5300000, 0x00000000a5300000|100%| O| |TAMS 0x00000000a5300000, 0x00000000a5200000| Untracked
| 83|0x00000000a5300000, 0x00000000a5400000, 0x00000000a5400000|100%| O| |TAMS 0x00000000a5400000, 0x00000000a5300000| Untracked
| 84|0x00000000a5400000, 0x00000000a5500000, 0x00000000a5500000|100%| O| |TAMS 0x00000000a5500000, 0x00000000a5400000| Untracked
| 85|0x00000000a5500000, 0x00000000a5600000, 0x00000000a5600000|100%| O| |TAMS 0x00000000a5600000, 0x00000000a5500000| Untracked
| 86|0x00000000a5600000, 0x00000000a5700000, 0x00000000a5700000|100%| O| |TAMS 0x00000000a5700000, 0x00000000a5600000| Untracked
| 87|0x00000000a5700000, 0x00000000a5800000, 0x00000000a5800000|100%| O| |TAMS 0x00000000a5800000, 0x00000000a5700000| Untracked
| 88|0x00000000a5800000, 0x00000000a5900000, 0x00000000a5900000|100%| O| |TAMS 0x00000000a5900000, 0x00000000a5800000| Untracked
| 89|0x00000000a5900000, 0x00000000a5a00000, 0x00000000a5a00000|100%| O| |TAMS 0x00000000a5a00000, 0x00000000a5900000| Untracked
| 90|0x00000000a5a00000, 0x00000000a5b00000, 0x00000000a5b00000|100%| O| |TAMS 0x00000000a5b00000, 0x00000000a5a00000| Untracked
| 91|0x00000000a5b00000, 0x00000000a5c00000, 0x00000000a5c00000|100%| O| |TAMS 0x00000000a5c00000, 0x00000000a5b00000| Untracked
| 92|0x00000000a5c00000, 0x00000000a5d00000, 0x00000000a5d00000|100%| O| |TAMS 0x00000000a5d00000, 0x00000000a5c00000| Untracked
| 93|0x00000000a5d00000, 0x00000000a5e00000, 0x00000000a5e00000|100%| O| |TAMS 0x00000000a5e00000, 0x00000000a5d00000| Untracked
| 94|0x00000000a5e00000, 0x00000000a5f00000, 0x00000000a5f00000|100%| O| |TAMS 0x00000000a5f00000, 0x00000000a5e00000| Untracked
| 95|0x00000000a5f00000, 0x00000000a6000000, 0x00000000a6000000|100%| O| |TAMS 0x00000000a6000000, 0x00000000a5f00000| Untracked
| 96|0x00000000a6000000, 0x00000000a6100000, 0x00000000a6100000|100%| O| |TAMS 0x00000000a6100000, 0x00000000a6000000| Untracked
| 97|0x00000000a6100000, 0x00000000a6200000, 0x00000000a6200000|100%| O| |TAMS 0x00000000a6200000, 0x00000000a6100000| Untracked
| 98|0x00000000a6200000, 0x00000000a6300000, 0x00000000a6300000|100%| O| |TAMS 0x00000000a6300000, 0x00000000a6200000| Untracked
| 99|0x00000000a6300000, 0x00000000a6400000, 0x00000000a6400000|100%| O| |TAMS 0x00000000a6400000, 0x00000000a6300000| Untracked
| 100|0x00000000a6400000, 0x00000000a6500000, 0x00000000a6500000|100%| O| |TAMS 0x00000000a6500000, 0x00000000a6400000| Untracked
| 101|0x00000000a6500000, 0x00000000a6600000, 0x00000000a6600000|100%| O| |TAMS 0x00000000a6600000, 0x00000000a6500000| Untracked
| 102|0x00000000a6600000, 0x00000000a6700000, 0x00000000a6700000|100%| O| |TAMS 0x00000000a6700000, 0x00000000a6600000| Untracked
| 103|0x00000000a6700000, 0x00000000a6800000, 0x00000000a6800000|100%| O| |TAMS 0x00000000a6800000, 0x00000000a6700000| Untracked
| 104|0x00000000a6800000, 0x00000000a6900000, 0x00000000a6900000|100%| O| |TAMS 0x00000000a6900000, 0x00000000a6800000| Untracked
| 105|0x00000000a6900000, 0x00000000a6a00000, 0x00000000a6a00000|100%| O| |TAMS 0x00000000a6a00000, 0x00000000a6900000| Untracked
| 106|0x00000000a6a00000, 0x00000000a6b00000, 0x00000000a6b00000|100%| O| |TAMS 0x00000000a6b00000, 0x00000000a6a00000| Untracked
| 107|0x00000000a6b00000, 0x00000000a6c00000, 0x00000000a6c00000|100%| O| |TAMS 0x00000000a6c00000, 0x00000000a6b00000| Untracked
| 108|0x00000000a6c00000, 0x00000000a6d00000, 0x00000000a6d00000|100%| O| |TAMS 0x00000000a6d00000, 0x00000000a6c00000| Untracked
| 109|0x00000000a6d00000, 0x00000000a6e00000, 0x00000000a6e00000|100%| O| |TAMS 0x00000000a6e00000, 0x00000000a6d00000| Untracked
| 110|0x00000000a6e00000, 0x00000000a6f00000, 0x00000000a6f00000|100%| O| |TAMS 0x00000000a6f00000, 0x00000000a6e00000| Untracked
| 111|0x00000000a6f00000, 0x00000000a7000000, 0x00000000a7000000|100%| O| |TAMS 0x00000000a7000000, 0x00000000a6f00000| Untracked
| 112|0x00000000a7000000, 0x00000000a7100000, 0x00000000a7100000|100%| O| |TAMS 0x00000000a7100000, 0x00000000a7000000| Untracked
| 113|0x00000000a7100000, 0x00000000a7200000, 0x00000000a7200000|100%| O| |TAMS 0x00000000a7200000, 0x00000000a7100000| Untracked
| 114|0x00000000a7200000, 0x00000000a7300000, 0x00000000a7300000|100%| O| |TAMS 0x00000000a7300000, 0x00000000a7200000| Untracked
| 115|0x00000000a7300000, 0x00000000a7400000, 0x00000000a7400000|100%| O| |TAMS 0x00000000a7400000, 0x00000000a7300000| Untracked
| 116|0x00000000a7400000, 0x00000000a7500000, 0x00000000a7500000|100%| O| |TAMS 0x00000000a7500000, 0x00000000a7400000| Untracked
| 117|0x00000000a7500000, 0x00000000a7600000, 0x00000000a7600000|100%| O| |TAMS 0x00000000a7600000, 0x00000000a7500000| Untracked
| 118|0x00000000a7600000, 0x00000000a7700000, 0x00000000a7700000|100%| O| |TAMS 0x00000000a7700000, 0x00000000a7600000| Untracked
| 119|0x00000000a7700000, 0x00000000a7800000, 0x00000000a7800000|100%| O| |TAMS 0x00000000a7800000, 0x00000000a7700000| Untracked
| 120|0x00000000a7800000, 0x00000000a7900000, 0x00000000a7900000|100%| O| |TAMS 0x00000000a7900000, 0x00000000a7800000| Untracked
| 121|0x00000000a7900000, 0x00000000a7a00000, 0x00000000a7a00000|100%| O| |TAMS 0x00000000a7a00000, 0x00000000a7900000| Untracked
| 122|0x00000000a7a00000, 0x00000000a7b00000, 0x00000000a7b00000|100%| O| |TAMS 0x00000000a7b00000, 0x00000000a7a00000| Untracked
| 123|0x00000000a7b00000, 0x00000000a7c00000, 0x00000000a7c00000|100%| O| |TAMS 0x00000000a7c00000, 0x00000000a7b00000| Untracked
| 124|0x00000000a7c00000, 0x00000000a7d00000, 0x00000000a7d00000|100%| O| |TAMS 0x00000000a7d00000, 0x00000000a7c00000| Untracked
| 125|0x00000000a7d00000, 0x00000000a7e00000, 0x00000000a7e00000|100%| O| |TAMS 0x00000000a7e00000, 0x00000000a7d00000| Untracked
| 126|0x00000000a7e00000, 0x00000000a7f00000, 0x00000000a7f00000|100%| O| |TAMS 0x00000000a7f00000, 0x00000000a7e00000| Untracked
| 127|0x00000000a7f00000, 0x00000000a8000000, 0x00000000a8000000|100%| O| |TAMS 0x00000000a8000000, 0x00000000a7f00000| Untracked
| 128|0x00000000a8000000, 0x00000000a8100000, 0x00000000a8100000|100%| O| |TAMS 0x00000000a8100000, 0x00000000a8000000| Untracked
| 129|0x00000000a8100000, 0x00000000a8200000, 0x00000000a8200000|100%| O| |TAMS 0x00000000a8200000, 0x00000000a8100000| Untracked
| 130|0x00000000a8200000, 0x00000000a8300000, 0x00000000a8300000|100%| O| |TAMS 0x00000000a8300000, 0x00000000a8200000| Untracked
| 131|0x00000000a8300000, 0x00000000a8400000, 0x00000000a8400000|100%| O| |TAMS 0x00000000a8400000, 0x00000000a8300000| Untracked
| 132|0x00000000a8400000, 0x00000000a8500000, 0x00000000a8500000|100%| O| |TAMS 0x00000000a8500000, 0x00000000a8400000| Untracked
| 133|0x00000000a8500000, 0x00000000a8600000, 0x00000000a8600000|100%| O| |TAMS 0x00000000a8600000, 0x00000000a8500000| Untracked
| 134|0x00000000a8600000, 0x00000000a8700000, 0x00000000a8700000|100%| O| |TAMS 0x00000000a8700000, 0x00000000a8600000| Untracked
| 135|0x00000000a8700000, 0x00000000a8800000, 0x00000000a8800000|100%| O| |TAMS 0x00000000a8800000, 0x00000000a8700000| Untracked
| 136|0x00000000a8800000, 0x00000000a8900000, 0x00000000a8900000|100%| O| |TAMS 0x00000000a8900000, 0x00000000a8800000| Untracked
| 137|0x00000000a8900000, 0x00000000a8a00000, 0x00000000a8a00000|100%| O| |TAMS 0x00000000a8a00000, 0x00000000a8900000| Untracked
| 138|0x00000000a8a00000, 0x00000000a8b00000, 0x00000000a8b00000|100%| O| |TAMS 0x00000000a8b00000, 0x00000000a8a00000| Untracked
| 139|0x00000000a8b00000, 0x00000000a8c00000, 0x00000000a8c00000|100%| O| |TAMS 0x00000000a8c00000, 0x00000000a8b00000| Untracked
| 140|0x00000000a8c00000, 0x00000000a8d00000, 0x00000000a8d00000|100%| O| |TAMS 0x00000000a8d00000, 0x00000000a8c00000| Untracked
| 141|0x00000000a8d00000, 0x00000000a8e00000, 0x00000000a8e00000|100%| O| |TAMS 0x00000000a8e00000, 0x00000000a8d00000| Untracked
| 142|0x00000000a8e00000, 0x00000000a8f00000, 0x00000000a8f00000|100%| O| |TAMS 0x00000000a8f00000, 0x00000000a8e00000| Untracked
| 143|0x00000000a8f00000, 0x00000000a9000000, 0x00000000a9000000|100%| O| |TAMS 0x00000000a9000000, 0x00000000a8f00000| Untracked
| 144|0x00000000a9000000, 0x00000000a9100000, 0x00000000a9100000|100%| O| |TAMS 0x00000000a9100000, 0x00000000a9000000| Untracked
| 145|0x00000000a9100000, 0x00000000a9200000, 0x00000000a9200000|100%| O| |TAMS 0x00000000a9200000, 0x00000000a9100000| Untracked
| 146|0x00000000a9200000, 0x00000000a9300000, 0x00000000a9300000|100%| O| |TAMS 0x00000000a9300000, 0x00000000a9200000| Untracked
| 147|0x00000000a9300000, 0x00000000a9400000, 0x00000000a9400000|100%| O| |TAMS 0x00000000a9400000, 0x00000000a9300000| Untracked
| 148|0x00000000a9400000, 0x00000000a9500000, 0x00000000a9500000|100%| O| |TAMS 0x00000000a9500000, 0x00000000a9400000| Untracked
| 149|0x00000000a9500000, 0x00000000a9600000, 0x00000000a9600000|100%| O| |TAMS 0x00000000a9531000, 0x00000000a9500000| Untracked
| 150|0x00000000a9600000, 0x00000000a9700000, 0x00000000a9700000|100%| O| |TAMS 0x00000000a9600000, 0x00000000a9600000| Untracked
| 151|0x00000000a9700000, 0x00000000a9800000, 0x00000000a9800000|100%| O| |TAMS 0x00000000a9700000, 0x00000000a9700000| Untracked
| 152|0x00000000a9800000, 0x00000000a9900000, 0x00000000a9900000|100%| O| |TAMS 0x00000000a9800000, 0x00000000a9800000| Untracked
| 153|0x00000000a9900000, 0x00000000a99e1200, 0x00000000a9a00000| 87%| O| |TAMS 0x00000000a9900000, 0x00000000a9900000| Untracked
| 154|0x00000000a9a00000, 0x00000000a9a00000, 0x00000000a9b00000| 0%| F| |TAMS 0x00000000a9a00000, 0x00000000a9a00000| Untracked
| 155|0x00000000a9b00000, 0x00000000a9b00000, 0x00000000a9c00000| 0%| F| |TAMS 0x00000000a9b00000, 0x00000000a9b00000| Untracked
| 156|0x00000000a9c00000, 0x00000000a9c00000, 0x00000000a9d00000| 0%| F| |TAMS 0x00000000a9c00000, 0x00000000a9c00000| Untracked
| 157|0x00000000a9d00000, 0x00000000a9d00000, 0x00000000a9e00000| 0%| F| |TAMS 0x00000000a9d00000, 0x00000000a9d00000| Untracked
| 158|0x00000000a9e00000, 0x00000000a9e00000, 0x00000000a9f00000| 0%| F| |TAMS 0x00000000a9e00000, 0x00000000a9e00000| Untracked
| 159|0x00000000a9f00000, 0x00000000a9f00000, 0x00000000aa000000| 0%| F| |TAMS 0x00000000a9f00000, 0x00000000a9f00000| Untracked
| 160|0x00000000aa000000, 0x00000000aa000000, 0x00000000aa100000| 0%| F| |TAMS 0x00000000aa000000, 0x00000000aa000000| Untracked
| 161|0x00000000aa100000, 0x00000000aa100000, 0x00000000aa200000| 0%| F| |TAMS 0x00000000aa100000, 0x00000000aa100000| Untracked
| 162|0x00000000aa200000, 0x00000000aa200000, 0x00000000aa300000| 0%| F| |TAMS 0x00000000aa200000, 0x00000000aa200000| Untracked
| 163|0x00000000aa300000, 0x00000000aa300000, 0x00000000aa400000| 0%| F| |TAMS 0x00000000aa300000, 0x00000000aa300000| Untracked
| 164|0x00000000aa400000, 0x00000000aa400000, 0x00000000aa500000| 0%| F| |TAMS 0x00000000aa400000, 0x00000000aa400000| Untracked
| 165|0x00000000aa500000, 0x00000000aa500000, 0x00000000aa600000| 0%| F| |TAMS 0x00000000aa500000, 0x00000000aa500000| Untracked
| 166|0x00000000aa600000, 0x00000000aa600000, 0x00000000aa700000| 0%| F| |TAMS 0x00000000aa600000, 0x00000000aa600000| Untracked
| 167|0x00000000aa700000, 0x00000000aa700000, 0x00000000aa800000| 0%| F| |TAMS 0x00000000aa700000, 0x00000000aa700000| Untracked
| 168|0x00000000aa800000, 0x00000000aa800000, 0x00000000aa900000| 0%| F| |TAMS 0x00000000aa800000, 0x00000000aa800000| Untracked
| 169|0x00000000aa900000, 0x00000000aa900000, 0x00000000aaa00000| 0%| F| |TAMS 0x00000000aa900000, 0x00000000aa900000| Untracked
| 170|0x00000000aaa00000, 0x00000000aaa00000, 0x00000000aab00000| 0%| F| |TAMS 0x00000000aaa00000, 0x00000000aaa00000| Untracked
| 171|0x00000000aab00000, 0x00000000aab00000, 0x00000000aac00000| 0%| F| |TAMS 0x00000000aab00000, 0x00000000aab00000| Untracked
| 172|0x00000000aac00000, 0x00000000aac00000, 0x00000000aad00000| 0%| F| |TAMS 0x00000000aac00000, 0x00000000aac00000| Untracked
| 173|0x00000000aad00000, 0x00000000aad00000, 0x00000000aae00000| 0%| F| |TAMS 0x00000000aad00000, 0x00000000aad00000| Untracked
| 174|0x00000000aae00000, 0x00000000aae00000, 0x00000000aaf00000| 0%| F| |TAMS 0x00000000aae00000, 0x00000000aae00000| Untracked
| 175|0x00000000aaf00000, 0x00000000aaf00000, 0x00000000ab000000| 0%| F| |TAMS 0x00000000aaf00000, 0x00000000aaf00000| Untracked
| 176|0x00000000ab000000, 0x00000000ab000000, 0x00000000ab100000| 0%| F| |TAMS 0x00000000ab000000, 0x00000000ab000000| Untracked
| 177|0x00000000ab100000, 0x00000000ab100000, 0x00000000ab200000| 0%| F| |TAMS 0x00000000ab100000, 0x00000000ab100000| Untracked
| 178|0x00000000ab200000, 0x00000000ab200000, 0x00000000ab300000| 0%| F| |TAMS 0x00000000ab200000, 0x00000000ab200000| Untracked
| 179|0x00000000ab300000, 0x00000000ab300000, 0x00000000ab400000| 0%| F| |TAMS 0x00000000ab300000, 0x00000000ab300000| Untracked
| 180|0x00000000ab400000, 0x00000000ab400000, 0x00000000ab500000| 0%| F| |TAMS 0x00000000ab400000, 0x00000000ab400000| Untracked
| 181|0x00000000ab500000, 0x00000000ab500000, 0x00000000ab600000| 0%| F| |TAMS 0x00000000ab500000, 0x00000000ab500000| Untracked
| 182|0x00000000ab600000, 0x00000000ab600000, 0x00000000ab700000| 0%| F| |TAMS 0x00000000ab600000, 0x00000000ab600000| Untracked
| 183|0x00000000ab700000, 0x00000000ab700000, 0x00000000ab800000| 0%| F| |TAMS 0x00000000ab700000, 0x00000000ab700000| Untracked
| 184|0x00000000ab800000, 0x00000000ab800000, 0x00000000ab900000| 0%| F| |TAMS 0x00000000ab800000, 0x00000000ab800000| Untracked
| 185|0x00000000ab900000, 0x00000000ab900000, 0x00000000aba00000| 0%| F| |TAMS 0x00000000ab900000, 0x00000000ab900000| Untracked
| 186|0x00000000aba00000, 0x00000000aba00000, 0x00000000abb00000| 0%| F| |TAMS 0x00000000aba00000, 0x00000000aba00000| Untracked
| 187|0x00000000abb00000, 0x00000000abb00000, 0x00000000abc00000| 0%| F| |TAMS 0x00000000abb00000, 0x00000000abb00000| Untracked
| 188|0x00000000abc00000, 0x00000000abc00000, 0x00000000abd00000| 0%| F| |TAMS 0x00000000abc00000, 0x00000000abc00000| Untracked
| 189|0x00000000abd00000, 0x00000000abd00000, 0x00000000abe00000| 0%| F| |TAMS 0x00000000abd00000, 0x00000000abd00000| Untracked
| 190|0x00000000abe00000, 0x00000000abe00000, 0x00000000abf00000| 0%| F| |TAMS 0x00000000abe00000, 0x00000000abe00000| Untracked
| 191|0x00000000abf00000, 0x00000000abf00000, 0x00000000ac000000| 0%| F| |TAMS 0x00000000abf00000, 0x00000000abf00000| Untracked
| 192|0x00000000ac000000, 0x00000000ac000000, 0x00000000ac100000| 0%| F| |TAMS 0x00000000ac000000, 0x00000000ac000000| Untracked
| 193|0x00000000ac100000, 0x00000000ac100000, 0x00000000ac200000| 0%| F| |TAMS 0x00000000ac100000, 0x00000000ac100000| Untracked
| 194|0x00000000ac200000, 0x00000000ac200000, 0x00000000ac300000| 0%| F| |TAMS 0x00000000ac200000, 0x00000000ac200000| Untracked
| 195|0x00000000ac300000, 0x00000000ac300000, 0x00000000ac400000| 0%| F| |TAMS 0x00000000ac300000, 0x00000000ac300000| Untracked
| 196|0x00000000ac400000, 0x00000000ac400000, 0x00000000ac500000| 0%| F| |TAMS 0x00000000ac400000, 0x00000000ac400000| Untracked
| 197|0x00000000ac500000, 0x00000000ac500000, 0x00000000ac600000| 0%| F| |TAMS 0x00000000ac500000, 0x00000000ac500000| Untracked
| 198|0x00000000ac600000, 0x00000000ac600000, 0x00000000ac700000| 0%| F| |TAMS 0x00000000ac600000, 0x00000000ac600000| Untracked
| 199|0x00000000ac700000, 0x00000000ac700000, 0x00000000ac800000| 0%| F| |TAMS 0x00000000ac700000, 0x00000000ac700000| Untracked
| 200|0x00000000ac800000, 0x00000000ac800000, 0x00000000ac900000| 0%| F| |TAMS 0x00000000ac800000, 0x00000000ac800000| Untracked
| 201|0x00000000ac900000, 0x00000000ac900000, 0x00000000aca00000| 0%| F| |TAMS 0x00000000ac900000, 0x00000000ac900000| Untracked
| 202|0x00000000aca00000, 0x00000000aca00000, 0x00000000acb00000| 0%| F| |TAMS 0x00000000aca00000, 0x00000000aca00000| Untracked
| 203|0x00000000acb00000, 0x00000000acb00000, 0x00000000acc00000| 0%| F| |TAMS 0x00000000acb00000, 0x00000000acb00000| Untracked
| 204|0x00000000acc00000, 0x00000000acc00000, 0x00000000acd00000| 0%| F| |TAMS 0x00000000acc00000, 0x00000000acc00000| Untracked
| 205|0x00000000acd00000, 0x00000000acd00000, 0x00000000ace00000| 0%| F| |TAMS 0x00000000acd00000, 0x00000000acd00000| Untracked
| 206|0x00000000ace00000, 0x00000000ace00000, 0x00000000acf00000| 0%| F| |TAMS 0x00000000ace00000, 0x00000000ace00000| Untracked
| 207|0x00000000acf00000, 0x00000000acf00000, 0x00000000ad000000| 0%| F| |TAMS 0x00000000acf00000, 0x00000000acf00000| Untracked
| 208|0x00000000ad000000, 0x00000000ad073008, 0x00000000ad100000| 44%| S|CS|TAMS 0x00000000ad000000, 0x00000000ad000000| Complete
| 209|0x00000000ad100000, 0x00000000ad200000, 0x00000000ad200000|100%| S|CS|TAMS 0x00000000ad100000, 0x00000000ad100000| Complete
| 210|0x00000000ad200000, 0x00000000ad300000, 0x00000000ad300000|100%| S|CS|TAMS 0x00000000ad200000, 0x00000000ad200000| Complete
| 211|0x00000000ad300000, 0x00000000ad400000, 0x00000000ad400000|100%| S|CS|TAMS 0x00000000ad300000, 0x00000000ad300000| Complete
| 212|0x00000000ad400000, 0x00000000ad500000, 0x00000000ad500000|100%| S|CS|TAMS 0x00000000ad400000, 0x00000000ad400000| Complete
| 213|0x00000000ad500000, 0x00000000ad600000, 0x00000000ad600000|100%| S|CS|TAMS 0x00000000ad500000, 0x00000000ad500000| Complete
| 214|0x00000000ad600000, 0x00000000ad700000, 0x00000000ad700000|100%| S|CS|TAMS 0x00000000ad600000, 0x00000000ad600000| Complete
| 215|0x00000000ad700000, 0x00000000ad700000, 0x00000000ad800000| 0%| F| |TAMS 0x00000000ad700000, 0x00000000ad700000| Untracked
| 216|0x00000000ad800000, 0x00000000ad800000, 0x00000000ad900000| 0%| F| |TAMS 0x00000000ad800000, 0x00000000ad800000| Untracked
| 217|0x00000000ad900000, 0x00000000ad900000, 0x00000000ada00000| 0%| F| |TAMS 0x00000000ad900000, 0x00000000ad900000| Untracked
| 218|0x00000000ada00000, 0x00000000ada00000, 0x00000000adb00000| 0%| F| |TAMS 0x00000000ada00000, 0x00000000ada00000| Untracked
| 219|0x00000000adb00000, 0x00000000adb00000, 0x00000000adc00000| 0%| F| |TAMS 0x00000000adb00000, 0x00000000adb00000| Untracked
| 220|0x00000000adc00000, 0x00000000adc00000, 0x00000000add00000| 0%| F| |TAMS 0x00000000adc00000, 0x00000000adc00000| Untracked
| 221|0x00000000add00000, 0x00000000add00000, 0x00000000ade00000| 0%| F| |TAMS 0x00000000add00000, 0x00000000add00000| Untracked
| 222|0x00000000ade00000, 0x00000000ade00000, 0x00000000adf00000| 0%| F| |TAMS 0x00000000ade00000, 0x00000000ade00000| Untracked
| 223|0x00000000adf00000, 0x00000000ae000000, 0x00000000ae000000|100%| S|CS|TAMS 0x00000000adf00000, 0x00000000adf00000| Complete
| 224|0x00000000ae000000, 0x00000000ae100000, 0x00000000ae100000|100%| S|CS|TAMS 0x00000000ae000000, 0x00000000ae000000| Complete
| 225|0x00000000ae100000, 0x00000000ae200000, 0x00000000ae200000|100%| S|CS|TAMS 0x00000000ae100000, 0x00000000ae100000| Complete
| 226|0x00000000ae200000, 0x00000000ae300000, 0x00000000ae300000|100%| S|CS|TAMS 0x00000000ae200000, 0x00000000ae200000| Complete
| 227|0x00000000ae300000, 0x00000000ae400000, 0x00000000ae400000|100%| S|CS|TAMS 0x00000000ae300000, 0x00000000ae300000| Complete
| 228|0x00000000ae400000, 0x00000000ae400000, 0x00000000ae500000| 0%| F| |TAMS 0x00000000ae400000, 0x00000000ae400000| Untracked
| 229|0x00000000ae500000, 0x00000000ae500000, 0x00000000ae600000| 0%| F| |TAMS 0x00000000ae500000, 0x00000000ae500000| Untracked
| 230|0x00000000ae600000, 0x00000000ae600000, 0x00000000ae700000| 0%| F| |TAMS 0x00000000ae600000, 0x00000000ae600000| Untracked
| 231|0x00000000ae700000, 0x00000000ae700000, 0x00000000ae800000| 0%| F| |TAMS 0x00000000ae700000, 0x00000000ae700000| Untracked
| 232|0x00000000ae800000, 0x00000000ae800000, 0x00000000ae900000| 0%| F| |TAMS 0x00000000ae800000, 0x00000000ae800000| Untracked
| 233|0x00000000ae900000, 0x00000000ae900000, 0x00000000aea00000| 0%| F| |TAMS 0x00000000ae900000, 0x00000000ae900000| Untracked
| 234|0x00000000aea00000, 0x00000000aea00000, 0x00000000aeb00000| 0%| F| |TAMS 0x00000000aea00000, 0x00000000aea00000| Untracked
| 235|0x00000000aeb00000, 0x00000000aeb00000, 0x00000000aec00000| 0%| F| |TAMS 0x00000000aeb00000, 0x00000000aeb00000| Untracked
| 236|0x00000000aec00000, 0x00000000aec00000, 0x00000000aed00000| 0%| F| |TAMS 0x00000000aec00000, 0x00000000aec00000| Untracked
| 237|0x00000000aed00000, 0x00000000aed00000, 0x00000000aee00000| 0%| F| |TAMS 0x00000000aed00000, 0x00000000aed00000| Untracked
| 238|0x00000000aee00000, 0x00000000aee00000, 0x00000000aef00000| 0%| F| |TAMS 0x00000000aee00000, 0x00000000aee00000| Untracked
| 239|0x00000000aef00000, 0x00000000aef00000, 0x00000000af000000| 0%| F| |TAMS 0x00000000aef00000, 0x00000000aef00000| Untracked
| 240|0x00000000af000000, 0x00000000af000000, 0x00000000af100000| 0%| F| |TAMS 0x00000000af000000, 0x00000000af000000| Untracked
| 241|0x00000000af100000, 0x00000000af100000, 0x00000000af200000| 0%| F| |TAMS 0x00000000af100000, 0x00000000af100000| Untracked
| 242|0x00000000af200000, 0x00000000af200000, 0x00000000af300000| 0%| F| |TAMS 0x00000000af200000, 0x00000000af200000| Untracked
| 243|0x00000000af300000, 0x00000000af300000, 0x00000000af400000| 0%| F| |TAMS 0x00000000af300000, 0x00000000af300000| Untracked
| 244|0x00000000af400000, 0x00000000af400000, 0x00000000af500000| 0%| F| |TAMS 0x00000000af400000, 0x00000000af400000| Untracked
| 245|0x00000000af500000, 0x00000000af500000, 0x00000000af600000| 0%| F| |TAMS 0x00000000af500000, 0x00000000af500000| Untracked
| 246|0x00000000af600000, 0x00000000af600000, 0x00000000af700000| 0%| F| |TAMS 0x00000000af600000, 0x00000000af600000| Untracked
| 247|0x00000000af700000, 0x00000000af700000, 0x00000000af800000| 0%| F| |TAMS 0x00000000af700000, 0x00000000af700000| Untracked
| 248|0x00000000af800000, 0x00000000af800000, 0x00000000af900000| 0%| F| |TAMS 0x00000000af800000, 0x00000000af800000| Untracked
| 249|0x00000000af900000, 0x00000000af900000, 0x00000000afa00000| 0%| F| |TAMS 0x00000000af900000, 0x00000000af900000| Untracked
| 250|0x00000000afa00000, 0x00000000afa00000, 0x00000000afb00000| 0%| F| |TAMS 0x00000000afa00000, 0x00000000afa00000| Untracked
| 251|0x00000000afb00000, 0x00000000afb00000, 0x00000000afc00000| 0%| F| |TAMS 0x00000000afb00000, 0x00000000afb00000| Untracked
| 252|0x00000000afc00000, 0x00000000afc00000, 0x00000000afd00000| 0%| F| |TAMS 0x00000000afc00000, 0x00000000afc00000| Untracked
| 253|0x00000000afd00000, 0x00000000afd00000, 0x00000000afe00000| 0%| F| |TAMS 0x00000000afd00000, 0x00000000afd00000| Untracked
| 254|0x00000000afe00000, 0x00000000afe00000, 0x00000000aff00000| 0%| F| |TAMS 0x00000000afe00000, 0x00000000afe00000| Untracked
| 255|0x00000000aff00000, 0x00000000aff00000, 0x00000000b0000000| 0%| F| |TAMS 0x00000000aff00000, 0x00000000aff00000| Untracked
| 256|0x00000000b0000000, 0x00000000b0000000, 0x00000000b0100000| 0%| F| |TAMS 0x00000000b0000000, 0x00000000b0000000| Untracked
| 257|0x00000000b0100000, 0x00000000b0100000, 0x00000000b0200000| 0%| F| |TAMS 0x00000000b0100000, 0x00000000b0100000| Untracked
| 258|0x00000000b0200000, 0x00000000b0200000, 0x00000000b0300000| 0%| F| |TAMS 0x00000000b0200000, 0x00000000b0200000| Untracked
| 259|0x00000000b0300000, 0x00000000b0300000, 0x00000000b0400000| 0%| F| |TAMS 0x00000000b0300000, 0x00000000b0300000| Untracked
| 260|0x00000000b0400000, 0x00000000b0400000, 0x00000000b0500000| 0%| F| |TAMS 0x00000000b0400000, 0x00000000b0400000| Untracked
| 261|0x00000000b0500000, 0x00000000b0500000, 0x00000000b0600000| 0%| F| |TAMS 0x00000000b0500000, 0x00000000b0500000| Untracked
| 262|0x00000000b0600000, 0x00000000b0600000, 0x00000000b0700000| 0%| F| |TAMS 0x00000000b0600000, 0x00000000b0600000| Untracked
| 263|0x00000000b0700000, 0x00000000b0700000, 0x00000000b0800000| 0%| F| |TAMS 0x00000000b0700000, 0x00000000b0700000| Untracked
| 264|0x00000000b0800000, 0x00000000b0800000, 0x00000000b0900000| 0%| F| |TAMS 0x00000000b0800000, 0x00000000b0800000| Untracked
| 265|0x00000000b0900000, 0x00000000b0900000, 0x00000000b0a00000| 0%| F| |TAMS 0x00000000b0900000, 0x00000000b0900000| Untracked
| 266|0x00000000b0a00000, 0x00000000b0a00000, 0x00000000b0b00000| 0%| F| |TAMS 0x00000000b0a00000, 0x00000000b0a00000| Untracked
| 267|0x00000000b0b00000, 0x00000000b0b00000, 0x00000000b0c00000| 0%| F| |TAMS 0x00000000b0b00000, 0x00000000b0b00000| Untracked
| 268|0x00000000b0c00000, 0x00000000b0c00000, 0x00000000b0d00000| 0%| F| |TAMS 0x00000000b0c00000, 0x00000000b0c00000| Untracked
| 269|0x00000000b0d00000, 0x00000000b0d00000, 0x00000000b0e00000| 0%| F| |TAMS 0x00000000b0d00000, 0x00000000b0d00000| Untracked
| 270|0x00000000b0e00000, 0x00000000b0e00000, 0x00000000b0f00000| 0%| F| |TAMS 0x00000000b0e00000, 0x00000000b0e00000| Untracked
| 271|0x00000000b0f00000, 0x00000000b0f00000, 0x00000000b1000000| 0%| F| |TAMS 0x00000000b0f00000, 0x00000000b0f00000| Untracked
| 272|0x00000000b1000000, 0x00000000b1000000, 0x00000000b1100000| 0%| F| |TAMS 0x00000000b1000000, 0x00000000b1000000| Untracked
| 273|0x00000000b1100000, 0x00000000b1100000, 0x00000000b1200000| 0%| F| |TAMS 0x00000000b1100000, 0x00000000b1100000| Untracked
| 274|0x00000000b1200000, 0x00000000b1200000, 0x00000000b1300000| 0%| F| |TAMS 0x00000000b1200000, 0x00000000b1200000| Untracked
| 275|0x00000000b1300000, 0x00000000b1300000, 0x00000000b1400000| 0%| F| |TAMS 0x00000000b1300000, 0x00000000b1300000| Untracked
| 276|0x00000000b1400000, 0x00000000b1400000, 0x00000000b1500000| 0%| F| |TAMS 0x00000000b1400000, 0x00000000b1400000| Untracked
| 277|0x00000000b1500000, 0x00000000b1500000, 0x00000000b1600000| 0%| F| |TAMS 0x00000000b1500000, 0x00000000b1500000| Untracked
| 278|0x00000000b1600000, 0x00000000b1600000, 0x00000000b1700000| 0%| F| |TAMS 0x00000000b1600000, 0x00000000b1600000| Untracked
| 279|0x00000000b1700000, 0x00000000b1700000, 0x00000000b1800000| 0%| F| |TAMS 0x00000000b1700000, 0x00000000b1700000| Untracked
| 280|0x00000000b1800000, 0x00000000b1800000, 0x00000000b1900000| 0%| F| |TAMS 0x00000000b1800000, 0x00000000b1800000| Untracked
| 281|0x00000000b1900000, 0x00000000b1900000, 0x00000000b1a00000| 0%| F| |TAMS 0x00000000b1900000, 0x00000000b1900000| Untracked
| 282|0x00000000b1a00000, 0x00000000b1a00000, 0x00000000b1b00000| 0%| F| |TAMS 0x00000000b1a00000, 0x00000000b1a00000| Untracked
| 283|0x00000000b1b00000, 0x00000000b1b00000, 0x00000000b1c00000| 0%| F| |TAMS 0x00000000b1b00000, 0x00000000b1b00000| Untracked
| 284|0x00000000b1c00000, 0x00000000b1c00000, 0x00000000b1d00000| 0%| F| |TAMS 0x00000000b1c00000, 0x00000000b1c00000| Untracked
| 285|0x00000000b1d00000, 0x00000000b1d00000, 0x00000000b1e00000| 0%| F| |TAMS 0x00000000b1d00000, 0x00000000b1d00000| Untracked
| 286|0x00000000b1e00000, 0x00000000b1e00000, 0x00000000b1f00000| 0%| F| |TAMS 0x00000000b1e00000, 0x00000000b1e00000| Untracked
| 287|0x00000000b1f00000, 0x00000000b1f00000, 0x00000000b2000000| 0%| F| |TAMS 0x00000000b1f00000, 0x00000000b1f00000| Untracked
| 288|0x00000000b2000000, 0x00000000b2000000, 0x00000000b2100000| 0%| F| |TAMS 0x00000000b2000000, 0x00000000b2000000| Untracked
| 289|0x00000000b2100000, 0x00000000b2100000, 0x00000000b2200000| 0%| F| |TAMS 0x00000000b2100000, 0x00000000b2100000| Untracked
| 290|0x00000000b2200000, 0x00000000b2200000, 0x00000000b2300000| 0%| F| |TAMS 0x00000000b2200000, 0x00000000b2200000| Untracked
| 291|0x00000000b2300000, 0x00000000b2300000, 0x00000000b2400000| 0%| F| |TAMS 0x00000000b2300000, 0x00000000b2300000| Untracked
| 292|0x00000000b2400000, 0x00000000b2400000, 0x00000000b2500000| 0%| F| |TAMS 0x00000000b2400000, 0x00000000b2400000| Untracked
| 293|0x00000000b2500000, 0x00000000b2500000, 0x00000000b2600000| 0%| F| |TAMS 0x00000000b2500000, 0x00000000b2500000| Untracked
| 294|0x00000000b2600000, 0x00000000b2600000, 0x00000000b2700000| 0%| F| |TAMS 0x00000000b2600000, 0x00000000b2600000| Untracked
| 295|0x00000000b2700000, 0x00000000b27f8c98, 0x00000000b2800000| 97%| E| |TAMS 0x00000000b2700000, 0x00000000b2700000| Complete
| 296|0x00000000b2800000, 0x00000000b2900000, 0x00000000b2900000|100%| E|CS|TAMS 0x00000000b2800000, 0x00000000b2800000| Complete
| 297|0x00000000b2900000, 0x00000000b2a00000, 0x00000000b2a00000|100%| E|CS|TAMS 0x00000000b2900000, 0x00000000b2900000| Complete
| 298|0x00000000b2a00000, 0x00000000b2b00000, 0x00000000b2b00000|100%| E|CS|TAMS 0x00000000b2a00000, 0x00000000b2a00000| Complete
| 299|0x00000000b2b00000, 0x00000000b2c00000, 0x00000000b2c00000|100%| E|CS|TAMS 0x00000000b2b00000, 0x00000000b2b00000| Complete
| 300|0x00000000b2c00000, 0x00000000b2d00000, 0x00000000b2d00000|100%| E|CS|TAMS 0x00000000b2c00000, 0x00000000b2c00000| Complete
| 301|0x00000000b2d00000, 0x00000000b2e00000, 0x00000000b2e00000|100%| E|CS|TAMS 0x00000000b2d00000, 0x00000000b2d00000| Complete
| 302|0x00000000b2e00000, 0x00000000b2f00000, 0x00000000b2f00000|100%| E|CS|TAMS 0x00000000b2e00000, 0x00000000b2e00000| Complete
| 303|0x00000000b2f00000, 0x00000000b3000000, 0x00000000b3000000|100%| E|CS|TAMS 0x00000000b2f00000, 0x00000000b2f00000| Complete
| 304|0x00000000b3000000, 0x00000000b3100000, 0x00000000b3100000|100%| E|CS|TAMS 0x00000000b3000000, 0x00000000b3000000| Complete
| 305|0x00000000b3100000, 0x00000000b3200000, 0x00000000b3200000|100%| E|CS|TAMS 0x00000000b3100000, 0x00000000b3100000| Complete
| 306|0x00000000b3200000, 0x00000000b3300000, 0x00000000b3300000|100%| E|CS|TAMS 0x00000000b3200000, 0x00000000b3200000| Complete
| 307|0x00000000b3300000, 0x00000000b3400000, 0x00000000b3400000|100%| E|CS|TAMS 0x00000000b3300000, 0x00000000b3300000| Complete
| 308|0x00000000b3400000, 0x00000000b3500000, 0x00000000b3500000|100%| E|CS|TAMS 0x00000000b3400000, 0x00000000b3400000| Complete
| 309|0x00000000b3500000, 0x00000000b3600000, 0x00000000b3600000|100%| E|CS|TAMS 0x00000000b3500000, 0x00000000b3500000| Complete
| 310|0x00000000b3600000, 0x00000000b3700000, 0x00000000b3700000|100%| E|CS|TAMS 0x00000000b3600000, 0x00000000b3600000| Complete
| 311|0x00000000b3700000, 0x00000000b3800000, 0x00000000b3800000|100%| E|CS|TAMS 0x00000000b3700000, 0x00000000b3700000| Complete
| 312|0x00000000b3800000, 0x00000000b3900000, 0x00000000b3900000|100%| E|CS|TAMS 0x00000000b3800000, 0x00000000b3800000| Complete
| 313|0x00000000b3900000, 0x00000000b3a00000, 0x00000000b3a00000|100%| E|CS|TAMS 0x00000000b3900000, 0x00000000b3900000| Complete
| 314|0x00000000b3a00000, 0x00000000b3b00000, 0x00000000b3b00000|100%| E|CS|TAMS 0x00000000b3a00000, 0x00000000b3a00000| Complete
| 315|0x00000000b3b00000, 0x00000000b3c00000, 0x00000000b3c00000|100%| E|CS|TAMS 0x00000000b3b00000, 0x00000000b3b00000| Complete
| 316|0x00000000b3c00000, 0x00000000b3d00000, 0x00000000b3d00000|100%| E|CS|TAMS 0x00000000b3c00000, 0x00000000b3c00000| Complete
| 317|0x00000000b3d00000, 0x00000000b3e00000, 0x00000000b3e00000|100%| E|CS|TAMS 0x00000000b3d00000, 0x00000000b3d00000| Complete
| 318|0x00000000b3e00000, 0x00000000b3f00000, 0x00000000b3f00000|100%| E|CS|TAMS 0x00000000b3e00000, 0x00000000b3e00000| Complete
| 319|0x00000000b3f00000, 0x00000000b4000000, 0x00000000b4000000|100%| E|CS|TAMS 0x00000000b3f00000, 0x00000000b3f00000| Complete
| 320|0x00000000b4000000, 0x00000000b4100000, 0x00000000b4100000|100%| E|CS|TAMS 0x00000000b4000000, 0x00000000b4000000| Complete
| 321|0x00000000b4100000, 0x00000000b4200000, 0x00000000b4200000|100%| E|CS|TAMS 0x00000000b4100000, 0x00000000b4100000| Complete
| 322|0x00000000b4200000, 0x00000000b4300000, 0x00000000b4300000|100%| E|CS|TAMS 0x00000000b4200000, 0x00000000b4200000| Complete
| 323|0x00000000b4300000, 0x00000000b4400000, 0x00000000b4400000|100%| E|CS|TAMS 0x00000000b4300000, 0x00000000b4300000| Complete
| 324|0x00000000b4400000, 0x00000000b4500000, 0x00000000b4500000|100%| E|CS|TAMS 0x00000000b4400000, 0x00000000b4400000| Complete
| 325|0x00000000b4500000, 0x00000000b4600000, 0x00000000b4600000|100%| E|CS|TAMS 0x00000000b4500000, 0x00000000b4500000| Complete
| 326|0x00000000b4600000, 0x00000000b4700000, 0x00000000b4700000|100%| E|CS|TAMS 0x00000000b4600000, 0x00000000b4600000| Complete
| 327|0x00000000b4700000, 0x00000000b4800000, 0x00000000b4800000|100%| E|CS|TAMS 0x00000000b4700000, 0x00000000b4700000| Complete
| 328|0x00000000b4800000, 0x00000000b4900000, 0x00000000b4900000|100%| E|CS|TAMS 0x00000000b4800000, 0x00000000b4800000| Complete
| 329|0x00000000b4900000, 0x00000000b4a00000, 0x00000000b4a00000|100%| E|CS|TAMS 0x00000000b4900000, 0x00000000b4900000| Complete
| 330|0x00000000b4a00000, 0x00000000b4b00000, 0x00000000b4b00000|100%| E|CS|TAMS 0x00000000b4a00000, 0x00000000b4a00000| Complete
| 331|0x00000000b4b00000, 0x00000000b4c00000, 0x00000000b4c00000|100%| E|CS|TAMS 0x00000000b4b00000, 0x00000000b4b00000| Complete
| 332|0x00000000b4c00000, 0x00000000b4d00000, 0x00000000b4d00000|100%| E|CS|TAMS 0x00000000b4c00000, 0x00000000b4c00000| Complete
| 333|0x00000000b4d00000, 0x00000000b4e00000, 0x00000000b4e00000|100%| E|CS|TAMS 0x00000000b4d00000, 0x00000000b4d00000| Complete
| 334|0x00000000b4e00000, 0x00000000b4f00000, 0x00000000b4f00000|100%| E|CS|TAMS 0x00000000b4e00000, 0x00000000b4e00000| Complete
| 335|0x00000000b4f00000, 0x00000000b5000000, 0x00000000b5000000|100%| E|CS|TAMS 0x00000000b4f00000, 0x00000000b4f00000| Complete
| 336|0x00000000b5000000, 0x00000000b5100000, 0x00000000b5100000|100%| E|CS|TAMS 0x00000000b5000000, 0x00000000b5000000| Complete
| 337|0x00000000b5100000, 0x00000000b5200000, 0x00000000b5200000|100%| E|CS|TAMS 0x00000000b5100000, 0x00000000b5100000| Complete
| 338|0x00000000b5200000, 0x00000000b5300000, 0x00000000b5300000|100%| E|CS|TAMS 0x00000000b5200000, 0x00000000b5200000| Complete
| 339|0x00000000b5300000, 0x00000000b5400000, 0x00000000b5400000|100%| E|CS|TAMS 0x00000000b5300000, 0x00000000b5300000| Complete
| 340|0x00000000b5400000, 0x00000000b5500000, 0x00000000b5500000|100%| E|CS|TAMS 0x00000000b5400000, 0x00000000b5400000| Complete
| 341|0x00000000b5500000, 0x00000000b5600000, 0x00000000b5600000|100%| E|CS|TAMS 0x00000000b5500000, 0x00000000b5500000| Complete
| 342|0x00000000b5600000, 0x00000000b5700000, 0x00000000b5700000|100%| E|CS|TAMS 0x00000000b5600000, 0x00000000b5600000| Complete
| 343|0x00000000b5700000, 0x00000000b5800000, 0x00000000b5800000|100%| E|CS|TAMS 0x00000000b5700000, 0x00000000b5700000| Complete
| 344|0x00000000b5800000, 0x00000000b5900000, 0x00000000b5900000|100%| E|CS|TAMS 0x00000000b5800000, 0x00000000b5800000| Complete
| 345|0x00000000b5900000, 0x00000000b5a00000, 0x00000000b5a00000|100%| E|CS|TAMS 0x00000000b5900000, 0x00000000b5900000| Complete
| 346|0x00000000b5a00000, 0x00000000b5b00000, 0x00000000b5b00000|100%| E|CS|TAMS 0x00000000b5a00000, 0x00000000b5a00000| Complete
| 347|0x00000000b5b00000, 0x00000000b5c00000, 0x00000000b5c00000|100%| E|CS|TAMS 0x00000000b5b00000, 0x00000000b5b00000| Complete
| 348|0x00000000b5c00000, 0x00000000b5d00000, 0x00000000b5d00000|100%| E|CS|TAMS 0x00000000b5c00000, 0x00000000b5c00000| Complete
| 349|0x00000000b5d00000, 0x00000000b5e00000, 0x00000000b5e00000|100%| E|CS|TAMS 0x00000000b5d00000, 0x00000000b5d00000| Complete
| 350|0x00000000b5e00000, 0x00000000b5f00000, 0x00000000b5f00000|100%| E|CS|TAMS 0x00000000b5e00000, 0x00000000b5e00000| Complete
| 351|0x00000000b5f00000, 0x00000000b6000000, 0x00000000b6000000|100%| E|CS|TAMS 0x00000000b5f00000, 0x00000000b5f00000| Complete
| 352|0x00000000b6000000, 0x00000000b6100000, 0x00000000b6100000|100%| E|CS|TAMS 0x00000000b6000000, 0x00000000b6000000| Complete
| 353|0x00000000b6100000, 0x00000000b6200000, 0x00000000b6200000|100%| E|CS|TAMS 0x00000000b6100000, 0x00000000b6100000| Complete
| 354|0x00000000b6200000, 0x00000000b6300000, 0x00000000b6300000|100%| E|CS|TAMS 0x00000000b6200000, 0x00000000b6200000| Complete
| 355|0x00000000b6300000, 0x00000000b6400000, 0x00000000b6400000|100%| E|CS|TAMS 0x00000000b6300000, 0x00000000b6300000| Complete
| 356|0x00000000b6400000, 0x00000000b6500000, 0x00000000b6500000|100%| E|CS|TAMS 0x00000000b6400000, 0x00000000b6400000| Complete
| 357|0x00000000b6500000, 0x00000000b6600000, 0x00000000b6600000|100%| E|CS|TAMS 0x00000000b6500000, 0x00000000b6500000| Complete
| 358|0x00000000b6600000, 0x00000000b6700000, 0x00000000b6700000|100%| E|CS|TAMS 0x00000000b6600000, 0x00000000b6600000| Complete
| 359|0x00000000b6700000, 0x00000000b6800000, 0x00000000b6800000|100%| E|CS|TAMS 0x00000000b6700000, 0x00000000b6700000| Complete
| 360|0x00000000b6800000, 0x00000000b6900000, 0x00000000b6900000|100%| E|CS|TAMS 0x00000000b6800000, 0x00000000b6800000| Complete
| 361|0x00000000b6900000, 0x00000000b6a00000, 0x00000000b6a00000|100%| E|CS|TAMS 0x00000000b6900000, 0x00000000b6900000| Complete
| 362|0x00000000b6a00000, 0x00000000b6b00000, 0x00000000b6b00000|100%| E|CS|TAMS 0x00000000b6a00000, 0x00000000b6a00000| Complete
| 363|0x00000000b6b00000, 0x00000000b6c00000, 0x00000000b6c00000|100%| E|CS|TAMS 0x00000000b6b00000, 0x00000000b6b00000| Complete
| 364|0x00000000b6c00000, 0x00000000b6d00000, 0x00000000b6d00000|100%| E|CS|TAMS 0x00000000b6c00000, 0x00000000b6c00000| Complete
| 365|0x00000000b6d00000, 0x00000000b6e00000, 0x00000000b6e00000|100%| E|CS|TAMS 0x00000000b6d00000, 0x00000000b6d00000| Complete
Card table byte_map: [0x000002a170d10000,0x000002a171010000] _byte_map_base: 0x000002a170810000
Marking Bits (Prev, Next): (CMBitMap*) 0x000002a15dc1d3d8, (CMBitMap*) 0x000002a15dc1d410
Prev Bits: [0x000002a171310000, 0x000002a172b10000)
Next Bits: [0x000002a172b10000, 0x000002a174310000)
Polling page: 0x000002a15d3b0000
Metaspace:
Usage:
Non-class: 70.97 MB capacity, 69.80 MB ( 98%) used, 1005.55 KB ( 1%) free+waste, 194.75 KB ( <1%) overhead.
Class: 10.88 MB capacity, 10.16 MB ( 93%) used, 645.19 KB ( 6%) free+waste, 86.06 KB ( <1%) overhead.
Both: 81.85 MB capacity, 79.96 MB ( 98%) used, 1.61 MB ( 2%) free+waste, 280.81 KB ( <1%) overhead.
Virtual space:
Non-class space: 72.00 MB reserved, 71.25 MB ( 99%) committed
Class space: 1.00 GB reserved, 10.99 MB ( 1%) committed
Both: 1.07 GB reserved, 82.24 MB ( 8%) committed
Chunk freelists:
Non-Class: 94.00 KB
Class: 61.00 KB
Both: 155.00 KB
MaxMetaspaceSize: 17179869184.00 GB
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 20.80 MB
Current GC threshold: 137.07 MB
CDS: off
CodeHeap 'non-profiled nmethods': size=120000Kb used=6992Kb max_used=6992Kb free=113007Kb
bounds [0x000002a1691b0000, 0x000002a169890000, 0x000002a1706e0000]
CodeHeap 'profiled nmethods': size=120000Kb used=31593Kb max_used=31593Kb free=88407Kb
bounds [0x000002a161c80000, 0x000002a163b60000, 0x000002a1691b0000]
CodeHeap 'non-nmethods': size=5760Kb used=2368Kb max_used=2418Kb free=3391Kb
bounds [0x000002a1616e0000, 0x000002a161950000, 0x000002a161c80000]
total_blobs=13385 nmethods=12516 adapters=776
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
Compilation events (20 events):
Event: 37.572 Thread 0x000002a177676800 12828 % 3 com.android.tools.r8.ir.regalloc.LinearScanRegisterAllocator::a @ 33 (544 bytes)
Event: 37.572 Thread 0x000002a177671000 nmethod 12769 0x000002a16987cc10 code [0x000002a16987d040, 0x000002a169881e48]
Event: 37.572 Thread 0x000002a177671000 12814 4 com.android.tools.r8.ir.optimize.PeepholeOptimizer::a (401 bytes)
Event: 37.575 Thread 0x000002a177676800 nmethod 12828% 0x000002a163b23410 code [0x000002a163b23960, 0x000002a163b26818]
Event: 37.575 Thread 0x000002a177676800 12829 2 com.android.tools.r8.ir.optimize.CodeRewriter$g::<init> (98 bytes)
Event: 37.576 Thread 0x000002a177676800 nmethod 12829 0x000002a163b27890 code [0x000002a163b27a60, 0x000002a163b27cf8]
Event: 37.585 Thread 0x000002a177676800 12830 2 com.android.tools.r8.n.a.a.a.g.H0::a (126 bytes)
Event: 37.587 Thread 0x000002a177676800 nmethod 12830 0x000002a163b27e90 code [0x000002a163b281a0, 0x000002a163b28c88]
Event: 37.587 Thread 0x000002a177676800 12831 2 com.android.tools.r8.n.a.a.a.g.P::j (16 bytes)
Event: 37.587 Thread 0x000002a177676800 nmethod 12831 0x000002a163b29210 code [0x000002a163b293c0, 0x000002a163b294d8]
Event: 37.592 Thread 0x000002a177676800 12834 2 java.util.TimSort::minRunLength (43 bytes)
Event: 37.593 Thread 0x000002a177676800 nmethod 12834 0x000002a163b29590 code [0x000002a163b29740, 0x000002a163b29878]
Event: 37.593 Thread 0x000002a177676800 12833 2 java.util.TimSort::<init> (181 bytes)
Event: 37.593 Thread 0x000002a177676800 nmethod 12833 0x000002a163b29910 code [0x000002a163b29b00, 0x000002a163b2a0d8]
Event: 37.634 Thread 0x000002a177676800 12836 % 3 com.android.tools.r8.t.a.a.f::a @ 2864 (4166 bytes)
Event: 37.678 Thread 0x000002a177676800 nmethod 12836% 0x000002a163b2a290 code [0x000002a163b2bee0, 0x000002a163b40808]
Event: 37.679 Thread 0x000002a177676800 12837 2 com.android.tools.r8.ir.code.g::add (16 bytes)
Event: 37.679 Thread 0x000002a177676800 nmethod 12837 0x000002a163b4c110 code [0x000002a163b4c2c0, 0x000002a163b4c408]
Event: 37.700 Thread 0x000002a177676800 12838 2 com.android.tools.r8.ir.code.Phi::a0 (57 bytes)
Event: 37.701 Thread 0x000002a177676800 nmethod 12838 0x000002a163b4c510 code [0x000002a163b4c700, 0x000002a163b4ca48]
GC Heap History (20 events):
Event: 35.021 GC heap before
{Heap before GC invocations=27 (full 0):
garbage-first heap total 260096K, used 220583K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 76 young (77824K), 6 survivors (6144K)
Metaspace used 80595K, capacity 82429K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.029 GC heap after
{Heap after GC invocations=28 (full 0):
garbage-first heap total 260096K, used 150688K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 7 young (7168K), 7 survivors (7168K)
Metaspace used 80595K, capacity 82429K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.184 GC heap before
{Heap before GC invocations=28 (full 0):
garbage-first heap total 260096K, used 222368K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 77 young (78848K), 7 survivors (7168K)
Metaspace used 80618K, capacity 82429K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.194 GC heap after
{Heap after GC invocations=29 (full 0):
garbage-first heap total 260096K, used 151433K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 6 young (6144K), 6 survivors (6144K)
Metaspace used 80618K, capacity 82429K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.433 GC heap before
{Heap before GC invocations=29 (full 0):
garbage-first heap total 260096K, used 224137K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 77 young (78848K), 6 survivors (6144K)
Metaspace used 80633K, capacity 82429K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.449 GC heap after
{Heap after GC invocations=30 (full 0):
garbage-first heap total 260096K, used 150605K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 5 young (5120K), 5 survivors (5120K)
Metaspace used 80633K, capacity 82429K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.624 GC heap before
{Heap before GC invocations=31 (full 0):
garbage-first heap total 260096K, used 223309K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 76 young (77824K), 5 survivors (5120K)
Metaspace used 80649K, capacity 82493K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.636 GC heap after
{Heap after GC invocations=32 (full 0):
garbage-first heap total 312320K, used 151031K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 5 young (5120K), 5 survivors (5120K)
Metaspace used 80649K, capacity 82493K, committed 83064K, reserved 1122304K
class space used 10249K, capacity 10875K, committed 11128K, reserved 1048576K
}
Event: 35.986 GC heap before
{Heap before GC invocations=32 (full 0):
garbage-first heap total 312320K, used 260599K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 113 young (115712K), 5 survivors (5120K)
Metaspace used 81191K, capacity 83162K, committed 83704K, reserved 1122304K
class space used 10327K, capacity 11012K, committed 11256K, reserved 1048576K
}
Event: 35.998 GC heap after
{Heap after GC invocations=33 (full 0):
garbage-first heap total 312320K, used 158354K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 12 young (12288K), 12 survivors (12288K)
Metaspace used 81191K, capacity 83162K, committed 83704K, reserved 1122304K
class space used 10327K, capacity 11012K, committed 11256K, reserved 1048576K
}
Event: 36.356 GC heap before
{Heap before GC invocations=34 (full 0):
garbage-first heap total 312320K, used 261778K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 113 young (115712K), 12 survivors (12288K)
Metaspace used 81397K, capacity 83324K, committed 83960K, reserved 1122304K
class space used 10345K, capacity 11022K, committed 11256K, reserved 1048576K
}
Event: 36.370 GC heap after
{Heap after GC invocations=35 (full 0):
garbage-first heap total 312320K, used 157175K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 8 young (8192K), 8 survivors (8192K)
Metaspace used 81397K, capacity 83324K, committed 83960K, reserved 1122304K
class space used 10345K, capacity 11022K, committed 11256K, reserved 1048576K
}
Event: 36.660 GC heap before
{Heap before GC invocations=35 (full 0):
garbage-first heap total 312320K, used 261623K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 112 young (114688K), 8 survivors (8192K)
Metaspace used 81822K, capacity 83804K, committed 84216K, reserved 1122304K
class space used 10404K, capacity 11137K, committed 11256K, reserved 1048576K
}
Event: 36.672 GC heap after
{Heap after GC invocations=36 (full 0):
garbage-first heap total 312320K, used 158636K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 6 young (6144K), 6 survivors (6144K)
Metaspace used 81822K, capacity 83804K, committed 84216K, reserved 1122304K
class space used 10404K, capacity 11137K, committed 11256K, reserved 1048576K
}
Event: 37.086 GC heap before
{Heap before GC invocations=37 (full 0):
garbage-first heap total 312320K, used 263084K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 109 young (111616K), 6 survivors (6144K)
Metaspace used 81841K, capacity 83808K, committed 84216K, reserved 1122304K
class space used 10407K, capacity 11138K, committed 11256K, reserved 1048576K
}
Event: 37.095 GC heap after
{Heap after GC invocations=38 (full 0):
garbage-first heap total 374784K, used 158778K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 6 young (6144K), 6 survivors (6144K)
Metaspace used 81841K, capacity 83808K, committed 84216K, reserved 1122304K
class space used 10407K, capacity 11138K, committed 11256K, reserved 1048576K
}
Event: 37.133 GC heap before
{Heap before GC invocations=38 (full 0):
garbage-first heap total 374784K, used 170042K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 18 young (18432K), 6 survivors (6144K)
Metaspace used 81842K, capacity 83808K, committed 84216K, reserved 1122304K
class space used 10407K, capacity 11138K, committed 11256K, reserved 1048576K
}
Event: 37.139 GC heap after
{Heap after GC invocations=39 (full 0):
garbage-first heap total 374784K, used 159578K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 81842K, capacity 83808K, committed 84216K, reserved 1122304K
class space used 10407K, capacity 11138K, committed 11256K, reserved 1048576K
}
Event: 37.435 GC heap before
{Heap before GC invocations=39 (full 0):
garbage-first heap total 374784K, used 303962K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 143 young (146432K), 2 survivors (2048K)
Metaspace used 81868K, capacity 83812K, committed 84216K, reserved 1122304K
class space used 10407K, capacity 11139K, committed 11256K, reserved 1048576K
}
Event: 37.445 GC heap after
{Heap after GC invocations=40 (full 0):
garbage-first heap total 374784K, used 165272K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 8 young (8192K), 8 survivors (8192K)
Metaspace used 81868K, capacity 83812K, committed 84216K, reserved 1122304K
class space used 10407K, capacity 11139K, committed 11256K, reserved 1048576K
}
Deoptimization events (20 events):
Event: 37.228 Thread 0x000002a10109c800 DEOPT PACKING pc=0x000002a1696bc39c sp=0x000000d4185fa580
Event: 37.228 Thread 0x000002a10109c800 DEOPT UNPACKING pc=0x000002a1616e85af sp=0x000000d4185fa4d0 mode 2
Event: 37.310 Thread 0x000002a17946e800 DEOPT PACKING pc=0x000002a1631cd433 sp=0x000000d4180fa8b0
Event: 37.310 Thread 0x000002a17946e800 DEOPT UNPACKING pc=0x000002a161729d0e sp=0x000000d4180f9d48 mode 0
Event: 37.400 Thread 0x000002a17946e800 DEOPT PACKING pc=0x000002a1631cd433 sp=0x000000d4180fa8b0
Event: 37.400 Thread 0x000002a17946e800 DEOPT UNPACKING pc=0x000002a161729d0e sp=0x000000d4180f9d48 mode 0
Event: 37.425 Thread 0x000002a17946f800 Uncommon trap: trap_request=0xffffff4d fr.pc=0x000002a16985b524 relative=0x0000000000003164
Event: 37.425 Thread 0x000002a17946f800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000002a16985b524 method=com.android.tools.r8.t.a.a.B.equals(Ljava/lang/Object;)Z @ 113 c2
Event: 37.425 Thread 0x000002a17946f800 DEOPT PACKING pc=0x000002a16985b524 sp=0x000000d4183fa130
Event: 37.425 Thread 0x000002a17946f800 DEOPT UNPACKING pc=0x000002a1616e85af sp=0x000000d4183fa088 mode 2
Event: 37.466 Thread 0x000002a10109c800 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x000002a1698420f8 relative=0x0000000000005d38
Event: 37.472 Thread 0x000002a10109c800 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x000002a1698420f8 method=com.android.tools.r8.ir.code.k0.a(Lcom/android/tools/r8/ir/analysis/type/TypeLatticeElement;)Lcom/android/tools/r8/ir/code/k0; @ 29 c2
Event: 37.472 Thread 0x000002a10109c800 DEOPT PACKING pc=0x000002a1698420f8 sp=0x000000d4185f93a0
Event: 37.472 Thread 0x000002a10109c800 DEOPT UNPACKING pc=0x000002a1616e85af sp=0x000000d4185f9378 mode 2
Event: 37.473 Thread 0x000002a10109c800 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x000002a1698420f8 relative=0x0000000000005d38
Event: 37.473 Thread 0x000002a10109c800 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x000002a1698420f8 method=com.android.tools.r8.ir.code.k0.a(Lcom/android/tools/r8/ir/analysis/type/TypeLatticeElement;)Lcom/android/tools/r8/ir/code/k0; @ 29 c2
Event: 37.473 Thread 0x000002a10109c800 DEOPT PACKING pc=0x000002a1698420f8 sp=0x000000d4185f9e50
Event: 37.473 Thread 0x000002a10109c800 DEOPT UNPACKING pc=0x000002a1616e85af sp=0x000000d4185f9e28 mode 2
Event: 37.528 Thread 0x000002a179472800 DEOPT PACKING pc=0x000002a1631cd433 sp=0x000000d4182fadb0
Event: 37.528 Thread 0x000002a179472800 DEOPT UNPACKING pc=0x000002a161729d0e sp=0x000000d4182fa248 mode 0
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 31.264 Thread 0x000002a179472800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000add8d3b0}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, int)'> (0x00000000add8d3b0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 31.265 Thread 0x000002a10109b800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ad1ac480}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, int)'> (0x00000000ad1ac480) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 31.265 Thread 0x000002a17946f800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ad5edca0}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, int)'> (0x00000000ad5edca0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 31.301 Thread 0x000002a17946f800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ace9bd38}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000000ace9bd38) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 31.329 Thread 0x000002a17946f800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ac33a798}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeInterface(java.lang.Object, java.lang.Object, int)'> (0x00000000ac33a798) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 31.628 Thread 0x000002a17946e800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000ae5299d8}> (0x00000000ae5299d8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 31.681 Thread 0x000002a17946f800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000add4a5f0}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object, int, java.lang.Object)'> (0x00000000add4a5f0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 32.223 Thread 0x000002a179472800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ac15ac38}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, int)'> (0x00000000ac15ac38) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 32.225 Thread 0x000002a179472800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ac15ea80}: 'java.lang.Object java.lang.invoke.Invokers$Holder.linkToTargetMethod(java.lang.Object, java.lang.Object, java.lang.Object, int, java.lang.Object)'> (0x00000000ac15ea80) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 33.389 Thread 0x000002a17946f800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ac754740}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, java.lang.Object, int, java.lang.Object)'> (0x00000000ac754740) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 33.421 Thread 0x000002a17946f800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ac7587d0}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, int, java.lang.Object)'> (0x00000000ac7587d0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 33.422 Thread 0x000002a17946f800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000ac75c270}: 'java.lang.Object java.lang.invoke.Invokers$Holder.linkToTargetMethod(java.lang.Object, int, java.lang.Object, java.lang.Object)'> (0x00000000ac75c270) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 33.575 Thread 0x000002a10109c800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000aec757c8}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000000aec757c8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 36.181 Thread 0x000002a178f72000 Exception <a 'java/lang/NoSuchMethodError'{0x00000000af19e888}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeInterface(java.lang.Object, java.lang.Object, int)'> (0x00000000af19e888) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 36.407 Thread 0x000002a10109c800 Exception <a 'java/lang/NoSuchMethodError'{0x00000000b20ec948}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object, int)'> (0x00000000b20ec948) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 36.407 Thread 0x000002a10109a000 Exception <a 'java/lang/NoSuchMethodError'{0x00000000b1fa0fb8}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object, int)'> (0x00000000b1fa0fb8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 36.507 Thread 0x000002a10109c800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b04cd830}> (0x00000000b04cd830) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 36.507 Thread 0x000002a10109a000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b0241cb0}> (0x00000000b0241cb0) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 37.118 Thread 0x000002a10109a000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b66710b0}> (0x00000000b66710b0) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 37.143 Thread 0x000002a10109c800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b6bd5da8}> (0x00000000b6bd5da8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Events (20 events):
Event: 36.659 Executing VM operation: G1CollectForAllocation
Event: 36.672 Executing VM operation: G1CollectForAllocation done
Event: 36.857 Executing VM operation: CGC_Operation
Event: 36.880 Executing VM operation: CGC_Operation done
Event: 36.980 Executing VM operation: CGC_Operation
Event: 37.000 Executing VM operation: CGC_Operation done
Event: 37.014 loading class com/android/tools/r8/n/a/a/a/h/E0
Event: 37.014 loading class com/android/tools/r8/n/a/a/a/h/E0 done
Event: 37.034 loading class com/android/tools/r8/n/a/a/a/h/e0
Event: 37.034 loading class com/android/tools/r8/n/a/a/a/h/e0 done
Event: 37.083 Executing VM operation: G1CollectForAllocation
Event: 37.085 Executing VM operation: G1CollectForAllocation done
Event: 37.085 Executing VM operation: G1CollectForAllocation
Event: 37.095 Executing VM operation: G1CollectForAllocation done
Event: 37.131 Executing VM operation: G1CollectForAllocation
Event: 37.139 Executing VM operation: G1CollectForAllocation done
Event: 37.188 loading class com/android/tools/r8/graph/A
Event: 37.188 loading class com/android/tools/r8/graph/A done
Event: 37.432 Executing VM operation: G1CollectForAllocation
Event: 37.445 Executing VM operation: G1CollectForAllocation done
Dynamic libraries:
0x00007ff6b56c0000 - 0x00007ff6b56ca000 C:\Program Files\Android\Android Studio\jre\bin\java.exe
0x00007ffbb0290000 - 0x00007ffbb04a7000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffbae8c0000 - 0x00007ffbae984000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffbad930000 - 0x00007ffbadcdd000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffbadea0000 - 0x00007ffbadfb1000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffb95c90000 - 0x00007ffb95ca9000 C:\Program Files\Android\Android Studio\jre\bin\jli.dll
0x00007ffb94ad0000 - 0x00007ffb94ae7000 C:\Program Files\Android\Android Studio\jre\bin\VCRUNTIME140.dll
0x00007ffbae990000 - 0x00007ffbaeb3e000 C:\WINDOWS\System32\USER32.dll
0x00007ffbade70000 - 0x00007ffbade96000 C:\WINDOWS\System32\win32u.dll
0x00007ffbaf040000 - 0x00007ffbaf069000 C:\WINDOWS\System32\GDI32.dll
0x00007ffbad5b0000 - 0x00007ffbad6c9000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffbaddd0000 - 0x00007ffbade6a000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffb907c0000 - 0x00007ffb90a53000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3672_none_2713b9d173822955\COMCTL32.dll
0x00007ffbaeb40000 - 0x00007ffbaebe7000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffbaf4b0000 - 0x00007ffbaf4e1000 C:\WINDOWS\System32\IMM32.DLL
0x00007ffb5de80000 - 0x00007ffb5df1d000 C:\Program Files\Android\Android Studio\jre\bin\msvcp140.dll
0x00007ffb66380000 - 0x00007ffb66e65000 C:\Program Files\Android\Android Studio\jre\bin\server\jvm.dll
0x00007ffbaf7d0000 - 0x00007ffbaf882000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffbaf070000 - 0x00007ffbaf119000 C:\WINDOWS\System32\sechost.dll
0x00007ffbad900000 - 0x00007ffbad928000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffbaef20000 - 0x00007ffbaf034000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffbafdc0000 - 0x00007ffbafdc8000 C:\WINDOWS\System32\PSAPI.DLL
0x00007ffb8bad0000 - 0x00007ffb8bad9000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffbaf740000 - 0x00007ffbaf7b1000 C:\WINDOWS\System32\WS2_32.dll
0x00007ffbac250000 - 0x00007ffbac25a000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffba5730000 - 0x00007ffba5764000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffbac5e0000 - 0x00007ffbac5f8000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll
0x00007ffb95ce0000 - 0x00007ffb95cf1000 C:\Program Files\Android\Android Studio\jre\bin\verify.dll
0x00007ffbaab80000 - 0x00007ffbaadb2000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL
0x00007ffbaf120000 - 0x00007ffbaf4ad000 C:\WINDOWS\System32\combase.dll
0x00007ffbaf650000 - 0x00007ffbaf727000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffb86350000 - 0x00007ffb86382000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x00007ffbadce0000 - 0x00007ffbadd5b000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ffb95cb0000 - 0x00007ffb95cd9000 C:\Program Files\Android\Android Studio\jre\bin\java.dll
0x00007ffba3bf0000 - 0x00007ffba3bfb000 C:\Program Files\Android\Android Studio\jre\bin\jimage.dll
0x00007ffb95c70000 - 0x00007ffb95c88000 C:\Program Files\Android\Android Studio\jre\bin\zip.dll
0x00007ffbae050000 - 0x00007ffbae8b8000 C:\WINDOWS\System32\SHELL32.dll
0x00007ffbab8b0000 - 0x00007ffbac1ae000 C:\WINDOWS\SYSTEM32\windows.storage.dll
0x00007ffbab770000 - 0x00007ffbab8af000 C:\WINDOWS\SYSTEM32\wintypes.dll
0x00007ffbafa50000 - 0x00007ffbafb49000 C:\WINDOWS\System32\SHCORE.dll
0x00007ffbaee60000 - 0x00007ffbaeebe000 C:\WINDOWS\System32\shlwapi.dll
0x00007ffbad4e0000 - 0x00007ffbad501000 C:\WINDOWS\SYSTEM32\profapi.dll
0x00007ffb940e0000 - 0x00007ffb940fa000 C:\Program Files\Android\Android Studio\jre\bin\net.dll
0x00007ffba8bf0000 - 0x00007ffba8d26000 C:\WINDOWS\SYSTEM32\WINHTTP.dll
0x00007ffbacac0000 - 0x00007ffbacb29000 C:\WINDOWS\system32\mswsock.dll
0x00007ffb94000000 - 0x00007ffb94014000 C:\Program Files\Android\Android Studio\jre\bin\nio.dll
0x00007ffb94200000 - 0x00007ffb94226000 C:\Users\郑\.gradle\native\29\windows-amd64\native-platform.dll
0x00007ffb969c0000 - 0x00007ffb969ca000 C:\Program Files\Android\Android Studio\jre\bin\management.dll
0x00007ffb96980000 - 0x00007ffb9698d000 C:\Program Files\Android\Android Studio\jre\bin\management_ext.dll
0x00007ffbacd50000 - 0x00007ffbacd6b000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll
0x00007ffbac540000 - 0x00007ffbac575000 C:\WINDOWS\system32\rsaenh.dll
0x00007ffbacbc0000 - 0x00007ffbacbe8000 C:\WINDOWS\SYSTEM32\USERENV.dll
0x00007ffbacd70000 - 0x00007ffbacd7c000 C:\WINDOWS\SYSTEM32\CRYPTBASE.dll
0x00007ffbab430000 - 0x00007ffbab45d000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x00007ffbaf730000 - 0x00007ffbaf739000 C:\WINDOWS\System32\NSI.dll
0x00007ffba8bb0000 - 0x00007ffba8bc9000 C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL
0x00007ffba8b90000 - 0x00007ffba8baf000 C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL
0x00007ffbab4a0000 - 0x00007ffbab598000 C:\WINDOWS\SYSTEM32\DNSAPI.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Program Files\Android\Android Studio\jre\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3672_none_2713b9d173822955;C:\Program Files\Android\Android Studio\jre\bin\server;C:\Users\郑\.gradle\native\29\windows-amd6;C:\Users\郑\.gradle\native\29\windows-amd;C:\Users\郑\.gradle\native\29\windows-am;C:\Users\郑\.gradle\native\29\windows-a
VM Arguments:
jvm_args: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -Xmx1536m -Dfile.encoding=GBK -Duser.country=CN -Duser.language=zh -Duser.variant
java_command: org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1
java_class_path (initial): C:\Users\郑\.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx\gradle-5.4.1\lib\gradle-launcher-5.4.1.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 4 {product} {ergonomic}
uint ConcGCThreads = 2 {product} {ergonomic}
uint G1ConcRefinementThreads = 8 {product} {ergonomic}
size_t G1HeapRegionSize = 1048576 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 266338304 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 1610612736 {product} {command line}
size_t MaxNewSize = 965738496 {product} {ergonomic}
size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5836300 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122910970 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122910970 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
bool UseCompressedClassPointers = true {lp64_product} {ergonomic}
bool UseCompressedOops = true {lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
PATH=D:\app\product\11.2.0\dbhome_1\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\TortoiseSVN\bin;D:\story\android-sdk-windows-idea\platform-tools;D:\story\android-sdk-windows-idea\tools;C:\Program Files\dotnet\;C:\Program Files\Calibre2\;C:\Program Files\Java\jre1.8.0_341\bin;C:\Users\郑\AppData\Local\Microsoft\WindowsApps;C:\Users\郑\AppData\Roaming\npm;C:\Users\郑\AppData\Local\Programs\Microsoft VS Code\bin;;C:\Users\郑\AppData\Local\Programs\Fiddler
USERNAME=郑
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows 10 , 64 bit Build 22621 (10.0.22621.3958)
OS uptime: 12 days 9:20 hours
CPU:total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 140 stepping 1 microcode 0x86, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, evex, sha, fma
Memory: 4k page, system-wide physical 16167M (259M free)
TotalPageFile size 41767M (AvailPageFile size 7M)
current process WorkingSet (physical memory assigned to process): 711M, peak: 712M
current process commit charge ("private bytes"): 784M, peak: 786M
vm_info: OpenJDK 64-Bit Server VM (11.0.12+7-b1504.28-7817840) for windows-amd64 JRE (11.0.12+7-b1504.28-7817840), built on Oct 13 2021 22:12:33 by "builder" with MS VC++ 14.0 (VS2015)
END.
This source diff could not be displayed because it is too large. You can view the blob instead.
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 96468992 bytes for Failed to commit area from 0x00000000b6300000 to 0x00000000bbf00000 of length 96468992.
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (./src/hotspot/os/windows/os_windows.cpp:3521), pid=80660, tid=155956
#
# JRE version: OpenJDK Runtime Environment (11.0.12+7) (build 11.0.12+7-b1504.28-7817840)
# Java VM: OpenJDK 64-Bit Server VM (11.0.12+7-b1504.28-7817840, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -Xmx1536m -Dfile.encoding=GBK -Duser.country=CN -Duser.language=zh -Duser.variant org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1
Host: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, 8 cores, 15G, Windows 10 , 64 bit Build 22621 (10.0.22621.3958)
Time: Tue Aug 27 18:07:40 2024 中国标准时间 elapsed time: 45.037821 seconds (0d 0h 0m 45s)
--------------- T H R E A D ---------------
Current thread (0x000001a6795dd000): VMThread "VM Thread" [stack: 0x0000003ea5c00000,0x0000003ea5d00000] [id=155956]
Stack: [0x0000003ea5c00000,0x0000003ea5d00000]
[error occurred during error reporting (printing stack bounds), id 0xc0000005, EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000001a6636d12e7]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x5fbcea]
V [jvm.dll+0x731905]
V [jvm.dll+0x732f1d]
V [jvm.dll+0x733535]
V [jvm.dll+0x7334eb]
V [jvm.dll+0x5fb080]
V [jvm.dll+0x5fb818]
C [ntdll.dll+0xa504f]
C [ntdll.dll+0x1e866]
C [ntdll.dll+0xa403e]
C 0x000001a6636d12e7
VM_Operation (0x0000003ea93f9ab0): G1CollectForAllocation, mode: safepoint, requested by thread 0x000001a6013a8800
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x000001a600c7b140, length=53, elements={
0x000001a65dacc000, 0x000001a6795df800, 0x000001a6795e5800, 0x000001a679658800,
0x000001a67965e000, 0x000001a67965f000, 0x000001a679660000, 0x000001a679663800,
0x000001a6796cd000, 0x000001a6797c9800, 0x000001a67a1c0000, 0x000001a679730800,
0x000001a67aede000, 0x000001a67ac55800, 0x000001a67a1b8800, 0x000001a67ad68800,
0x000001a67b273800, 0x000001a67a07c800, 0x000001a67aefd000, 0x000001a67a075000,
0x000001a67a073800, 0x000001a67a06f800, 0x000001a67a072000, 0x000001a67a074800,
0x000001a67a071000, 0x000001a67b0b7000, 0x000001a67b0b6800, 0x000001a67b0b5800,
0x000001a67b0b9800, 0x000001a67b0b4800, 0x000001a67b0bd000, 0x000001a67b0b8000,
0x000001a67b0c0000, 0x000001a67b0bf800, 0x000001a67b0bb000, 0x000001a67b0ba800,
0x000001a67b0c2000, 0x000001a67b0bd800, 0x000001a67b0be800, 0x000001a67b0bc000,
0x000001a67b0c2800, 0x000001a67b0c3800, 0x000001a6013a8800, 0x000001a6013ae000,
0x000001a6013ad000, 0x000001a6013af000, 0x000001a6013aa000, 0x000001a6013b0800,
0x000001a6013b1800, 0x000001a6013ab800, 0x000001a6013b2000, 0x000001a67d6a8800,
0x000001a6013af800
}
Java Threads: ( => current thread )
0x000001a65dacc000 JavaThread "main" [_thread_blocked, id=161108, stack(0x0000003ea5600000,0x0000003ea5700000)]
0x000001a6795df800 JavaThread "Reference Handler" daemon [_thread_blocked, id=141500, stack(0x0000003ea5d00000,0x0000003ea5e00000)]
0x000001a6795e5800 JavaThread "Finalizer" daemon [_thread_blocked, id=149164, stack(0x0000003ea5e00000,0x0000003ea5f00000)]
0x000001a679658800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=67212, stack(0x0000003ea5f00000,0x0000003ea6000000)]
0x000001a67965e000 JavaThread "Attach Listener" daemon [_thread_blocked, id=154200, stack(0x0000003ea6000000,0x0000003ea6100000)]
0x000001a67965f000 JavaThread "Service Thread" daemon [_thread_blocked, id=5768, stack(0x0000003ea6100000,0x0000003ea6200000)]
0x000001a679660000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=147736, stack(0x0000003ea6200000,0x0000003ea6300000)]
0x000001a679663800 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=159532, stack(0x0000003ea6300000,0x0000003ea6400000)]
0x000001a6796cd000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=153988, stack(0x0000003ea6400000,0x0000003ea6500000)]
0x000001a6797c9800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=153288, stack(0x0000003ea6500000,0x0000003ea6600000)]
0x000001a67a1c0000 JavaThread "Daemon health stats" [_thread_blocked, id=162736, stack(0x0000003ea6c00000,0x0000003ea6d00000)]
0x000001a679730800 JavaThread "Incoming local TCP Connector on port 51911" [_thread_in_native, id=151232, stack(0x0000003ea6d00000,0x0000003ea6e00000)]
0x000001a67aede000 JavaThread "Daemon periodic checks" [_thread_blocked, id=137556, stack(0x0000003ea6e00000,0x0000003ea6f00000)]
0x000001a67ac55800 JavaThread "Daemon" [_thread_blocked, id=157224, stack(0x0000003ea6f00000,0x0000003ea7000000)]
0x000001a67a1b8800 JavaThread "Handler for socket connection from /127.0.0.1:51911 to /127.0.0.1:51912" [_thread_in_native, id=161944, stack(0x0000003ea7000000,0x0000003ea7100000)]
0x000001a67ad68800 JavaThread "Cancel handler" [_thread_blocked, id=161916, stack(0x0000003ea7100000,0x0000003ea7200000)]
0x000001a67b273800 JavaThread "Daemon worker" [_thread_blocked, id=161920, stack(0x0000003ea7200000,0x0000003ea7300000)]
0x000001a67a07c800 JavaThread "Asynchronous log dispatcher for DefaultDaemonConnection: socket connection from /127.0.0.1:51911 to /127.0.0.1:51912" [_thread_blocked, id=160896, stack(0x0000003ea7300000,0x0000003ea7400000)]
0x000001a67aefd000 JavaThread "Stdin handler" [_thread_blocked, id=162100, stack(0x0000003ea7400000,0x0000003ea7500000)]
0x000001a67a075000 JavaThread "Thread-8" [_thread_blocked, id=161208, stack(0x0000003ea7500000,0x0000003ea7600000)]
0x000001a67a073800 JavaThread "Cache worker for file hash cache (C:\Users\閮慭.gradle\caches\5.4.1\fileHashes)" [_thread_blocked, id=140324, stack(0x0000003ea7600000,0x0000003ea7700000)]
0x000001a67a06f800 JavaThread "File lock request listener" [_thread_in_native, id=143492, stack(0x0000003ea7700000,0x0000003ea7800000)]
0x000001a67a072000 JavaThread "Cache worker for journal cache (C:\Users\閮慭.gradle\caches\journal-1)" [_thread_blocked, id=162140, stack(0x0000003ea7800000,0x0000003ea7900000)]
0x000001a67a074800 JavaThread "Cache worker for file hash cache (D:\story\workspace\android\asset-app-hkyh\.gradle\5.4.1\fileHashes)" [_thread_blocked, id=157892, stack(0x0000003ea7900000,0x0000003ea7a00000)]
0x000001a67a071000 JavaThread "Cache worker for cache directory md-supplier (C:\Users\閮慭.gradle\caches\5.4.1\md-supplier)" [_thread_blocked, id=160772, stack(0x0000003ea7e00000,0x0000003ea7f00000)]
0x000001a67b0b7000 JavaThread "Cache worker for cache directory md-rule (C:\Users\閮慭.gradle\caches\5.4.1\md-rule)" [_thread_blocked, id=155908, stack(0x0000003ea7f00000,0x0000003ea8000000)]
0x000001a67b0b6800 JavaThread "Cache worker for execution history cache (C:\Users\閮慭.gradle\caches\5.4.1\executionHistory)" [_thread_blocked, id=159988, stack(0x0000003ea8000000,0x0000003ea8100000)]
0x000001a67b0b5800 JavaThread "Build operations" [_thread_blocked, id=162216, stack(0x0000003ea8200000,0x0000003ea8300000)]
0x000001a67b0b9800 JavaThread "Build operations Thread 2" [_thread_blocked, id=161312, stack(0x0000003ea8300000,0x0000003ea8400000)]
0x000001a67b0b4800 JavaThread "Build operations Thread 3" [_thread_blocked, id=154520, stack(0x0000003ea8400000,0x0000003ea8500000)]
0x000001a67b0bd000 JavaThread "Build operations Thread 4" [_thread_blocked, id=113292, stack(0x0000003ea8500000,0x0000003ea8600000)]
0x000001a67b0b8000 JavaThread "Build operations Thread 5" [_thread_blocked, id=159860, stack(0x0000003ea8600000,0x0000003ea8700000)]
0x000001a67b0c0000 JavaThread "Build operations Thread 6" [_thread_blocked, id=156872, stack(0x0000003ea8700000,0x0000003ea8800000)]
0x000001a67b0bf800 JavaThread "Build operations Thread 7" [_thread_blocked, id=1488, stack(0x0000003ea8800000,0x0000003ea8900000)]
0x000001a67b0bb000 JavaThread "Build operations Thread 8" [_thread_blocked, id=161760, stack(0x0000003ea8900000,0x0000003ea8a00000)]
0x000001a67b0ba800 JavaThread "Cache worker for Build Output Cleanup Cache (D:\story\workspace\android\asset-app-hkyh\.gradle\buildOutputCleanup)" [_thread_blocked, id=147160, stack(0x0000003ea8100000,0x0000003ea8200000)]
0x000001a67b0c2000 JavaThread "Memory manager" [_thread_blocked, id=144636, stack(0x0000003ea8d00000,0x0000003ea8e00000)]
0x000001a67b0bd800 JavaThread "Cache worker for file content cache (C:\Users\閮慭.gradle\caches\5.4.1\fileContent)" [_thread_blocked, id=162276, stack(0x0000003ea8e00000,0x0000003ea8f00000)]
0x000001a67b0be800 JavaThread "Cache worker for file content cache (D:\story\workspace\android\asset-app-hkyh\.gradle\5.4.1\fileContent)" [_thread_blocked, id=154456, stack(0x0000003ea8f00000,0x0000003ea9000000)]
0x000001a67b0bc000 JavaThread "Execution worker for ':'" [_thread_blocked, id=130944, stack(0x0000003ea9000000,0x0000003ea9100000)]
0x000001a67b0c2800 JavaThread "Execution worker for ':' Thread 2" [_thread_blocked, id=145676, stack(0x0000003ea9100000,0x0000003ea9200000)]
0x000001a67b0c3800 JavaThread "Execution worker for ':' Thread 3" [_thread_blocked, id=110476, stack(0x0000003ea9200000,0x0000003ea9300000)]
0x000001a6013a8800 JavaThread "Execution worker for ':' Thread 4" [_thread_blocked, id=162268, stack(0x0000003ea9300000,0x0000003ea9400000)]
0x000001a6013ae000 JavaThread "Execution worker for ':' Thread 5" [_thread_blocked, id=156700, stack(0x0000003ea9400000,0x0000003ea9500000)]
0x000001a6013ad000 JavaThread "Execution worker for ':' Thread 6" [_thread_blocked, id=157548, stack(0x0000003ea9500000,0x0000003ea9600000)]
0x000001a6013af000 JavaThread "Execution worker for ':' Thread 7" [_thread_blocked, id=142264, stack(0x0000003ea9600000,0x0000003ea9700000)]
0x000001a6013aa000 JavaThread "Cache worker for execution history cache (D:\story\workspace\android\asset-app-hkyh\.gradle\5.4.1\executionHistory)" [_thread_blocked, id=150164, stack(0x0000003ea9700000,0x0000003ea9800000)]
0x000001a6013b0800 JavaThread "WorkerExecutor Queue Thread 2" [_thread_blocked, id=158732, stack(0x0000003ea9900000,0x0000003ea9a00000)]
0x000001a6013b1800 JavaThread "pool-2-thread-1" [_thread_blocked, id=112336, stack(0x0000003ea9a00000,0x0000003ea9b00000)]
0x000001a6013ab800 JavaThread "stderr" [_thread_in_native, id=162304, stack(0x0000003ea9b00000,0x0000003ea9c00000)]
0x000001a6013b2000 JavaThread "stdout" [_thread_in_native, id=147632, stack(0x0000003ea9c00000,0x0000003ea9d00000)]
0x000001a67d6a8800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=160648, stack(0x0000003ea7d00000,0x0000003ea7e00000)]
0x000001a6013af800 JavaThread "WorkerExecutor Queue Thread 3" [_thread_blocked, id=160184, stack(0x0000003ea9800000,0x0000003ea9900000)]
Other Threads:
=>0x000001a6795dd000 VMThread "VM Thread" [stack: 0x0000003ea5c00000,0x0000003ea5d00000] [id=155956]
0x000001a679827000 WatcherThread [stack: 0x0000003ea6600000,0x0000003ea6700000] [id=155620]
0x000001a65fbef000 GCTaskThread "GC Thread#0" [stack: 0x0000003ea5700000,0x0000003ea5800000] [id=161440]
0x000001a679e2e800 GCTaskThread "GC Thread#1" [stack: 0x0000003ea6700000,0x0000003ea6800000] [id=161864]
0x000001a67a124000 GCTaskThread "GC Thread#2" [stack: 0x0000003ea6800000,0x0000003ea6900000] [id=161868]
0x000001a67a124800 GCTaskThread "GC Thread#3" [stack: 0x0000003ea6900000,0x0000003ea6a00000] [id=161872]
0x000001a67a0fc000 GCTaskThread "GC Thread#4" [stack: 0x0000003ea6a00000,0x0000003ea6b00000] [id=161876]
0x000001a67a0fc800 GCTaskThread "GC Thread#5" [stack: 0x0000003ea6b00000,0x0000003ea6c00000] [id=161880]
0x000001a67aefd800 GCTaskThread "GC Thread#6" [stack: 0x0000003ea7a00000,0x0000003ea7b00000] [id=162160]
0x000001a67a4cb800 GCTaskThread "GC Thread#7" [stack: 0x0000003ea7b00000,0x0000003ea7c00000] [id=160744]
0x000001a65fc17000 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000003ea5800000,0x0000003ea5900000] [id=159844]
0x000001a65fc18000 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000003ea5900000,0x0000003ea5a00000] [id=137416]
0x000001a67a438000 ConcurrentGCThread "G1 Conc#1" [stack: 0x0000003ea7c00000,0x0000003ea7d00000] [id=162168]
0x000001a65fc9e000 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000003ea5a00000,0x0000003ea5b00000] [id=161140]
0x000001a67b585000 ConcurrentGCThread "G1 Refine#1" [stack: 0x0000003ea8a00000,0x0000003ea8b00000] [id=160976]
0x000001a67b58a000 ConcurrentGCThread "G1 Refine#2" [stack: 0x0000003ea8b00000,0x0000003ea8c00000] [id=147020]
0x000001a67b586800 ConcurrentGCThread "G1 Refine#3" [stack: 0x0000003ea8c00000,0x0000003ea8d00000] [id=161152]
0x000001a678c26800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x0000003ea5b00000,0x0000003ea5c00000] [id=157372]
Threads with active compile tasks:
C2 CompilerThread0 45245 14807 4 com.android.tools.r8.ir.conversion.IRBuilder::a (706 bytes)
C2 CompilerThread1 45245 14754 4 com.android.tools.r8.ir.code.Phi::a (339 bytes)
VM state:at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x000001a65fbd7660] Threads_lock - owner thread: 0x000001a6795dd000
[0x000001a65fbd7ff0] Heap_lock - owner thread: 0x000001a6013a8800
Heap address: 0x00000000a0000000, size: 1536 MB, Compressed Oops mode: 32-bit
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
Compressed class space size: 1073741824 Address: 0x0000000100000000
Heap:
garbage-first heap total 457728K, used 174275K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 5 young (5120K), 5 survivors (5120K)
Metaspace used 85158K, capacity 87217K, committed 87932K, reserved 1126400K
class space used 10682K, capacity 11401K, committed 11644K, reserved 1048576K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next)
| 0|0x00000000a0000000, 0x00000000a0100000, 0x00000000a0100000|100%|HS| |TAMS 0x00000000a0100000, 0x00000000a0100000| Complete
| 1|0x00000000a0100000, 0x00000000a0200000, 0x00000000a0200000|100%|HC| |TAMS 0x00000000a0200000, 0x00000000a0200000| Complete
| 2|0x00000000a0200000, 0x00000000a0300000, 0x00000000a0300000|100%|HS| |TAMS 0x00000000a0300000, 0x00000000a0300000| Complete
| 3|0x00000000a0300000, 0x00000000a0400000, 0x00000000a0400000|100%|HS| |TAMS 0x00000000a0400000, 0x00000000a0400000| Complete
| 4|0x00000000a0400000, 0x00000000a0500000, 0x00000000a0500000|100%|HC| |TAMS 0x00000000a0500000, 0x00000000a0500000| Complete
| 5|0x00000000a0500000, 0x00000000a0600000, 0x00000000a0600000|100%| O| |TAMS 0x00000000a0600000, 0x00000000a0600000| Untracked
| 6|0x00000000a0600000, 0x00000000a0700000, 0x00000000a0700000|100%| O| |TAMS 0x00000000a0700000, 0x00000000a0700000| Untracked
| 7|0x00000000a0700000, 0x00000000a0800000, 0x00000000a0800000|100%|HS| |TAMS 0x00000000a0800000, 0x00000000a0800000| Complete
| 8|0x00000000a0800000, 0x00000000a0900000, 0x00000000a0900000|100%|HC| |TAMS 0x00000000a0900000, 0x00000000a0900000| Complete
| 9|0x00000000a0900000, 0x00000000a0a00000, 0x00000000a0a00000|100%|HC| |TAMS 0x00000000a0a00000, 0x00000000a0a00000| Complete
| 10|0x00000000a0a00000, 0x00000000a0b00000, 0x00000000a0b00000|100%|HS| |TAMS 0x00000000a0b00000, 0x00000000a0b00000| Complete
| 11|0x00000000a0b00000, 0x00000000a0c00000, 0x00000000a0c00000|100%|HC| |TAMS 0x00000000a0c00000, 0x00000000a0c00000| Complete
| 12|0x00000000a0c00000, 0x00000000a0d00000, 0x00000000a0d00000|100%|HC| |TAMS 0x00000000a0d00000, 0x00000000a0d00000| Complete
| 13|0x00000000a0d00000, 0x00000000a0e00000, 0x00000000a0e00000|100%|HC| |TAMS 0x00000000a0e00000, 0x00000000a0e00000| Complete
| 14|0x00000000a0e00000, 0x00000000a0f00000, 0x00000000a0f00000|100%| O| |TAMS 0x00000000a0f00000, 0x00000000a0f00000| Untracked
| 15|0x00000000a0f00000, 0x00000000a1000000, 0x00000000a1000000|100%| O| |TAMS 0x00000000a1000000, 0x00000000a1000000| Untracked
| 16|0x00000000a1000000, 0x00000000a1100000, 0x00000000a1100000|100%| O| |TAMS 0x00000000a1100000, 0x00000000a1100000| Untracked
| 17|0x00000000a1100000, 0x00000000a1200000, 0x00000000a1200000|100%| O| |TAMS 0x00000000a1200000, 0x00000000a1200000| Untracked
| 18|0x00000000a1200000, 0x00000000a1300000, 0x00000000a1300000|100%| O| |TAMS 0x00000000a1300000, 0x00000000a1300000| Untracked
| 19|0x00000000a1300000, 0x00000000a1400000, 0x00000000a1400000|100%| O| |TAMS 0x00000000a1400000, 0x00000000a1400000| Untracked
| 20|0x00000000a1400000, 0x00000000a1500000, 0x00000000a1500000|100%| O| |TAMS 0x00000000a1500000, 0x00000000a1500000| Untracked
| 21|0x00000000a1500000, 0x00000000a1600000, 0x00000000a1600000|100%| O| |TAMS 0x00000000a1600000, 0x00000000a1600000| Untracked
| 22|0x00000000a1600000, 0x00000000a1700000, 0x00000000a1700000|100%| O| |TAMS 0x00000000a1700000, 0x00000000a1700000| Untracked
| 23|0x00000000a1700000, 0x00000000a1800000, 0x00000000a1800000|100%| O| |TAMS 0x00000000a1800000, 0x00000000a1800000| Untracked
| 24|0x00000000a1800000, 0x00000000a1900000, 0x00000000a1900000|100%| O| |TAMS 0x00000000a1900000, 0x00000000a1900000| Untracked
| 25|0x00000000a1900000, 0x00000000a1a00000, 0x00000000a1a00000|100%|HS| |TAMS 0x00000000a1a00000, 0x00000000a1a00000| Complete
| 26|0x00000000a1a00000, 0x00000000a1b00000, 0x00000000a1b00000|100%|HC| |TAMS 0x00000000a1b00000, 0x00000000a1b00000| Complete
| 27|0x00000000a1b00000, 0x00000000a1c00000, 0x00000000a1c00000|100%| O| |TAMS 0x00000000a1c00000, 0x00000000a1c00000| Untracked
| 28|0x00000000a1c00000, 0x00000000a1d00000, 0x00000000a1d00000|100%| O| |TAMS 0x00000000a1d00000, 0x00000000a1d00000| Untracked
| 29|0x00000000a1d00000, 0x00000000a1e00000, 0x00000000a1e00000|100%| O| |TAMS 0x00000000a1e00000, 0x00000000a1e00000| Untracked
| 30|0x00000000a1e00000, 0x00000000a1f00000, 0x00000000a1f00000|100%| O| |TAMS 0x00000000a1f00000, 0x00000000a1f00000| Untracked
| 31|0x00000000a1f00000, 0x00000000a2000000, 0x00000000a2000000|100%| O| |TAMS 0x00000000a2000000, 0x00000000a2000000| Untracked
| 32|0x00000000a2000000, 0x00000000a2100000, 0x00000000a2100000|100%| O| |TAMS 0x00000000a2100000, 0x00000000a2100000| Untracked
| 33|0x00000000a2100000, 0x00000000a2200000, 0x00000000a2200000|100%| O| |TAMS 0x00000000a2200000, 0x00000000a2200000| Untracked
| 34|0x00000000a2200000, 0x00000000a2300000, 0x00000000a2300000|100%| O| |TAMS 0x00000000a2300000, 0x00000000a2300000| Untracked
| 35|0x00000000a2300000, 0x00000000a2400000, 0x00000000a2400000|100%| O| |TAMS 0x00000000a2400000, 0x00000000a2400000| Untracked
| 36|0x00000000a2400000, 0x00000000a2500000, 0x00000000a2500000|100%| O| |TAMS 0x00000000a2500000, 0x00000000a2500000| Untracked
| 37|0x00000000a2500000, 0x00000000a2600000, 0x00000000a2600000|100%| O| |TAMS 0x00000000a2600000, 0x00000000a2600000| Untracked
| 38|0x00000000a2600000, 0x00000000a2700000, 0x00000000a2700000|100%| O| |TAMS 0x00000000a2700000, 0x00000000a2700000| Untracked
| 39|0x00000000a2700000, 0x00000000a2800000, 0x00000000a2800000|100%| O| |TAMS 0x00000000a2800000, 0x00000000a2800000| Untracked
| 40|0x00000000a2800000, 0x00000000a2900000, 0x00000000a2900000|100%| O| |TAMS 0x00000000a2900000, 0x00000000a2900000| Untracked
| 41|0x00000000a2900000, 0x00000000a2a00000, 0x00000000a2a00000|100%| O| |TAMS 0x00000000a2a00000, 0x00000000a2a00000| Untracked
| 42|0x00000000a2a00000, 0x00000000a2b00000, 0x00000000a2b00000|100%| O| |TAMS 0x00000000a2b00000, 0x00000000a2b00000| Untracked
| 43|0x00000000a2b00000, 0x00000000a2c00000, 0x00000000a2c00000|100%| O| |TAMS 0x00000000a2c00000, 0x00000000a2c00000| Untracked
| 44|0x00000000a2c00000, 0x00000000a2d00000, 0x00000000a2d00000|100%| O| |TAMS 0x00000000a2d00000, 0x00000000a2d00000| Untracked
| 45|0x00000000a2d00000, 0x00000000a2e00000, 0x00000000a2e00000|100%| O| |TAMS 0x00000000a2e00000, 0x00000000a2e00000| Untracked
| 46|0x00000000a2e00000, 0x00000000a2f00000, 0x00000000a2f00000|100%| O| |TAMS 0x00000000a2f00000, 0x00000000a2f00000| Untracked
| 47|0x00000000a2f00000, 0x00000000a3000000, 0x00000000a3000000|100%| O| |TAMS 0x00000000a3000000, 0x00000000a3000000| Untracked
| 48|0x00000000a3000000, 0x00000000a3100000, 0x00000000a3100000|100%| O| |TAMS 0x00000000a3100000, 0x00000000a3100000| Untracked
| 49|0x00000000a3100000, 0x00000000a3200000, 0x00000000a3200000|100%| O| |TAMS 0x00000000a3200000, 0x00000000a3200000| Untracked
| 50|0x00000000a3200000, 0x00000000a3300000, 0x00000000a3300000|100%| O| |TAMS 0x00000000a3300000, 0x00000000a3300000| Untracked
| 51|0x00000000a3300000, 0x00000000a3400000, 0x00000000a3400000|100%| O| |TAMS 0x00000000a3400000, 0x00000000a3400000| Untracked
| 52|0x00000000a3400000, 0x00000000a3500000, 0x00000000a3500000|100%|HS| |TAMS 0x00000000a3500000, 0x00000000a3500000| Complete
| 53|0x00000000a3500000, 0x00000000a3600000, 0x00000000a3600000|100%| O| |TAMS 0x00000000a3600000, 0x00000000a3600000| Untracked
| 54|0x00000000a3600000, 0x00000000a3700000, 0x00000000a3700000|100%| O| |TAMS 0x00000000a3700000, 0x00000000a3700000| Untracked
| 55|0x00000000a3700000, 0x00000000a3800000, 0x00000000a3800000|100%| O| |TAMS 0x00000000a3800000, 0x00000000a3800000| Untracked
| 56|0x00000000a3800000, 0x00000000a3900000, 0x00000000a3900000|100%| O| |TAMS 0x00000000a3900000, 0x00000000a3900000| Untracked
| 57|0x00000000a3900000, 0x00000000a3a00000, 0x00000000a3a00000|100%| O| |TAMS 0x00000000a3a00000, 0x00000000a3a00000| Untracked
| 58|0x00000000a3a00000, 0x00000000a3b00000, 0x00000000a3b00000|100%| O| |TAMS 0x00000000a3b00000, 0x00000000a3b00000| Untracked
| 59|0x00000000a3b00000, 0x00000000a3c00000, 0x00000000a3c00000|100%| O| |TAMS 0x00000000a3c00000, 0x00000000a3c00000| Untracked
| 60|0x00000000a3c00000, 0x00000000a3d00000, 0x00000000a3d00000|100%| O| |TAMS 0x00000000a3d00000, 0x00000000a3d00000| Untracked
| 61|0x00000000a3d00000, 0x00000000a3e00000, 0x00000000a3e00000|100%| O| |TAMS 0x00000000a3e00000, 0x00000000a3e00000| Untracked
| 62|0x00000000a3e00000, 0x00000000a3f00000, 0x00000000a3f00000|100%| O| |TAMS 0x00000000a3f00000, 0x00000000a3f00000| Untracked
| 63|0x00000000a3f00000, 0x00000000a4000000, 0x00000000a4000000|100%| O| |TAMS 0x00000000a3f00000, 0x00000000a4000000| Untracked
| 64|0x00000000a4000000, 0x00000000a4100000, 0x00000000a4100000|100%| O| |TAMS 0x00000000a4100000, 0x00000000a4100000| Untracked
| 65|0x00000000a4100000, 0x00000000a4200000, 0x00000000a4200000|100%| O| |TAMS 0x00000000a4200000, 0x00000000a4200000| Untracked
| 66|0x00000000a4200000, 0x00000000a4300000, 0x00000000a4300000|100%| O| |TAMS 0x00000000a4300000, 0x00000000a4300000| Untracked
| 67|0x00000000a4300000, 0x00000000a4400000, 0x00000000a4400000|100%| O| |TAMS 0x00000000a4400000, 0x00000000a4400000| Untracked
| 68|0x00000000a4400000, 0x00000000a4500000, 0x00000000a4500000|100%| O| |TAMS 0x00000000a4500000, 0x00000000a4500000| Untracked
| 69|0x00000000a4500000, 0x00000000a4600000, 0x00000000a4600000|100%| O| |TAMS 0x00000000a4600000, 0x00000000a4600000| Untracked
| 70|0x00000000a4600000, 0x00000000a4700000, 0x00000000a4700000|100%| O| |TAMS 0x00000000a4700000, 0x00000000a4700000| Untracked
| 71|0x00000000a4700000, 0x00000000a4800000, 0x00000000a4800000|100%| O| |TAMS 0x00000000a4800000, 0x00000000a4800000| Untracked
| 72|0x00000000a4800000, 0x00000000a4900000, 0x00000000a4900000|100%| O| |TAMS 0x00000000a4900000, 0x00000000a4900000| Untracked
| 73|0x00000000a4900000, 0x00000000a4a00000, 0x00000000a4a00000|100%| O| |TAMS 0x00000000a4a00000, 0x00000000a4a00000| Untracked
| 74|0x00000000a4a00000, 0x00000000a4b00000, 0x00000000a4b00000|100%| O| |TAMS 0x00000000a4b00000, 0x00000000a4b00000| Untracked
| 75|0x00000000a4b00000, 0x00000000a4c00000, 0x00000000a4c00000|100%| O| |TAMS 0x00000000a4c00000, 0x00000000a4c00000| Untracked
| 76|0x00000000a4c00000, 0x00000000a4d00000, 0x00000000a4d00000|100%| O| |TAMS 0x00000000a4d00000, 0x00000000a4d00000| Untracked
| 77|0x00000000a4d00000, 0x00000000a4e00000, 0x00000000a4e00000|100%| O| |TAMS 0x00000000a4e00000, 0x00000000a4e00000| Untracked
| 78|0x00000000a4e00000, 0x00000000a4f00000, 0x00000000a4f00000|100%| O| |TAMS 0x00000000a4f00000, 0x00000000a4f00000| Untracked
| 79|0x00000000a4f00000, 0x00000000a5000000, 0x00000000a5000000|100%| O| |TAMS 0x00000000a5000000, 0x00000000a5000000| Untracked
| 80|0x00000000a5000000, 0x00000000a5100000, 0x00000000a5100000|100%| O| |TAMS 0x00000000a5100000, 0x00000000a5100000| Untracked
| 81|0x00000000a5100000, 0x00000000a5200000, 0x00000000a5200000|100%| O| |TAMS 0x00000000a5200000, 0x00000000a5200000| Untracked
| 82|0x00000000a5200000, 0x00000000a5300000, 0x00000000a5300000|100%| O| |TAMS 0x00000000a5300000, 0x00000000a5300000| Untracked
| 83|0x00000000a5300000, 0x00000000a5400000, 0x00000000a5400000|100%| O| |TAMS 0x00000000a5400000, 0x00000000a5400000| Untracked
| 84|0x00000000a5400000, 0x00000000a5500000, 0x00000000a5500000|100%| O| |TAMS 0x00000000a5500000, 0x00000000a5500000| Untracked
| 85|0x00000000a5500000, 0x00000000a5600000, 0x00000000a5600000|100%| O| |TAMS 0x00000000a5600000, 0x00000000a5600000| Untracked
| 86|0x00000000a5600000, 0x00000000a5700000, 0x00000000a5700000|100%| O| |TAMS 0x00000000a5700000, 0x00000000a5700000| Untracked
| 87|0x00000000a5700000, 0x00000000a5800000, 0x00000000a5800000|100%| O| |TAMS 0x00000000a5800000, 0x00000000a5800000| Untracked
| 88|0x00000000a5800000, 0x00000000a5900000, 0x00000000a5900000|100%| O| |TAMS 0x00000000a5900000, 0x00000000a5900000| Untracked
| 89|0x00000000a5900000, 0x00000000a5a00000, 0x00000000a5a00000|100%| O| |TAMS 0x00000000a5a00000, 0x00000000a5a00000| Untracked
| 90|0x00000000a5a00000, 0x00000000a5b00000, 0x00000000a5b00000|100%| O| |TAMS 0x00000000a5b00000, 0x00000000a5b00000| Untracked
| 91|0x00000000a5b00000, 0x00000000a5c00000, 0x00000000a5c00000|100%| O| |TAMS 0x00000000a5c00000, 0x00000000a5c00000| Untracked
| 92|0x00000000a5c00000, 0x00000000a5d00000, 0x00000000a5d00000|100%| O| |TAMS 0x00000000a5d00000, 0x00000000a5d00000| Untracked
| 93|0x00000000a5d00000, 0x00000000a5e00000, 0x00000000a5e00000|100%| O| |TAMS 0x00000000a5e00000, 0x00000000a5e00000| Untracked
| 94|0x00000000a5e00000, 0x00000000a5f00000, 0x00000000a5f00000|100%| O| |TAMS 0x00000000a5f00000, 0x00000000a5f00000| Untracked
| 95|0x00000000a5f00000, 0x00000000a6000000, 0x00000000a6000000|100%| O| |TAMS 0x00000000a6000000, 0x00000000a6000000| Untracked
| 96|0x00000000a6000000, 0x00000000a6100000, 0x00000000a6100000|100%| O| |TAMS 0x00000000a6100000, 0x00000000a6100000| Untracked
| 97|0x00000000a6100000, 0x00000000a6100000, 0x00000000a6200000| 0%| F| |TAMS 0x00000000a6100000, 0x00000000a6100000| Untracked
| 98|0x00000000a6200000, 0x00000000a6300000, 0x00000000a6300000|100%| O| |TAMS 0x00000000a6300000, 0x00000000a6300000| Untracked
| 99|0x00000000a6300000, 0x00000000a6400000, 0x00000000a6400000|100%| O| |TAMS 0x00000000a6400000, 0x00000000a6400000| Untracked
| 100|0x00000000a6400000, 0x00000000a6500000, 0x00000000a6500000|100%| O| |TAMS 0x00000000a6500000, 0x00000000a6500000| Untracked
| 101|0x00000000a6500000, 0x00000000a6600000, 0x00000000a6600000|100%| O| |TAMS 0x00000000a6600000, 0x00000000a6600000| Untracked
| 102|0x00000000a6600000, 0x00000000a6700000, 0x00000000a6700000|100%| O| |TAMS 0x00000000a6700000, 0x00000000a6700000| Untracked
| 103|0x00000000a6700000, 0x00000000a6800000, 0x00000000a6800000|100%| O| |TAMS 0x00000000a6800000, 0x00000000a6800000| Untracked
| 104|0x00000000a6800000, 0x00000000a6900000, 0x00000000a6900000|100%| O| |TAMS 0x00000000a6900000, 0x00000000a6900000| Untracked
| 105|0x00000000a6900000, 0x00000000a6a00000, 0x00000000a6a00000|100%| O| |TAMS 0x00000000a6a00000, 0x00000000a6a00000| Untracked
| 106|0x00000000a6a00000, 0x00000000a6b00000, 0x00000000a6b00000|100%| O| |TAMS 0x00000000a6a00000, 0x00000000a6b00000| Untracked
| 107|0x00000000a6b00000, 0x00000000a6c00000, 0x00000000a6c00000|100%| O| |TAMS 0x00000000a6c00000, 0x00000000a6c00000| Untracked
| 108|0x00000000a6c00000, 0x00000000a6d00000, 0x00000000a6d00000|100%| O| |TAMS 0x00000000a6d00000, 0x00000000a6d00000| Untracked
| 109|0x00000000a6d00000, 0x00000000a6e00000, 0x00000000a6e00000|100%| O| |TAMS 0x00000000a6e00000, 0x00000000a6e00000| Untracked
| 110|0x00000000a6e00000, 0x00000000a6e00000, 0x00000000a6f00000| 0%| F| |TAMS 0x00000000a6e00000, 0x00000000a6e00000| Untracked
| 111|0x00000000a6f00000, 0x00000000a7000000, 0x00000000a7000000|100%| O| |TAMS 0x00000000a7000000, 0x00000000a7000000| Untracked
| 112|0x00000000a7000000, 0x00000000a7100000, 0x00000000a7100000|100%| O| |TAMS 0x00000000a7100000, 0x00000000a7100000| Untracked
| 113|0x00000000a7100000, 0x00000000a7200000, 0x00000000a7200000|100%| O| |TAMS 0x00000000a7200000, 0x00000000a7200000| Untracked
| 114|0x00000000a7200000, 0x00000000a7300000, 0x00000000a7300000|100%| O| |TAMS 0x00000000a7300000, 0x00000000a7300000| Untracked
| 115|0x00000000a7300000, 0x00000000a7400000, 0x00000000a7400000|100%| O| |TAMS 0x00000000a7400000, 0x00000000a7400000| Untracked
| 116|0x00000000a7400000, 0x00000000a7500000, 0x00000000a7500000|100%| O| |TAMS 0x00000000a7500000, 0x00000000a7500000| Untracked
| 117|0x00000000a7500000, 0x00000000a7600000, 0x00000000a7600000|100%| O| |TAMS 0x00000000a7600000, 0x00000000a7600000| Untracked
| 118|0x00000000a7600000, 0x00000000a7700000, 0x00000000a7700000|100%| O| |TAMS 0x00000000a7700000, 0x00000000a7700000| Untracked
| 119|0x00000000a7700000, 0x00000000a7800000, 0x00000000a7800000|100%| O| |TAMS 0x00000000a7800000, 0x00000000a7800000| Untracked
| 120|0x00000000a7800000, 0x00000000a7900000, 0x00000000a7900000|100%| O| |TAMS 0x00000000a7900000, 0x00000000a7900000| Untracked
| 121|0x00000000a7900000, 0x00000000a7a00000, 0x00000000a7a00000|100%| O| |TAMS 0x00000000a7a00000, 0x00000000a7a00000| Untracked
| 122|0x00000000a7a00000, 0x00000000a7a00000, 0x00000000a7b00000| 0%| F| |TAMS 0x00000000a7a00000, 0x00000000a7a00000| Untracked
| 123|0x00000000a7b00000, 0x00000000a7c00000, 0x00000000a7c00000|100%| O| |TAMS 0x00000000a7b00000, 0x00000000a7c00000| Untracked
| 124|0x00000000a7c00000, 0x00000000a7d00000, 0x00000000a7d00000|100%| O| |TAMS 0x00000000a7d00000, 0x00000000a7d00000| Untracked
| 125|0x00000000a7d00000, 0x00000000a7e00000, 0x00000000a7e00000|100%| O| |TAMS 0x00000000a7e00000, 0x00000000a7e00000| Untracked
| 126|0x00000000a7e00000, 0x00000000a7f00000, 0x00000000a7f00000|100%| O| |TAMS 0x00000000a7f00000, 0x00000000a7f00000| Untracked
| 127|0x00000000a7f00000, 0x00000000a8000000, 0x00000000a8000000|100%| O| |TAMS 0x00000000a8000000, 0x00000000a8000000| Untracked
| 128|0x00000000a8000000, 0x00000000a8100000, 0x00000000a8100000|100%| O| |TAMS 0x00000000a8100000, 0x00000000a8100000| Untracked
| 129|0x00000000a8100000, 0x00000000a8200000, 0x00000000a8200000|100%| O| |TAMS 0x00000000a8200000, 0x00000000a8200000| Untracked
| 130|0x00000000a8200000, 0x00000000a8300000, 0x00000000a8300000|100%| O| |TAMS 0x00000000a8300000, 0x00000000a8300000| Untracked
| 131|0x00000000a8300000, 0x00000000a8400000, 0x00000000a8400000|100%| O| |TAMS 0x00000000a8400000, 0x00000000a8400000| Untracked
| 132|0x00000000a8400000, 0x00000000a8500000, 0x00000000a8500000|100%| O| |TAMS 0x00000000a8500000, 0x00000000a8500000| Untracked
| 133|0x00000000a8500000, 0x00000000a8600000, 0x00000000a8600000|100%| O| |TAMS 0x00000000a8600000, 0x00000000a8600000| Untracked
| 134|0x00000000a8600000, 0x00000000a8700000, 0x00000000a8700000|100%| O| |TAMS 0x00000000a8700000, 0x00000000a8700000| Untracked
| 135|0x00000000a8700000, 0x00000000a8700000, 0x00000000a8800000| 0%| F| |TAMS 0x00000000a8700000, 0x00000000a8700000| Untracked
| 136|0x00000000a8800000, 0x00000000a8900000, 0x00000000a8900000|100%| O| |TAMS 0x00000000a8800000, 0x00000000a8900000| Untracked
| 137|0x00000000a8900000, 0x00000000a8a00000, 0x00000000a8a00000|100%| O| |TAMS 0x00000000a8a00000, 0x00000000a8a00000| Untracked
| 138|0x00000000a8a00000, 0x00000000a8b00000, 0x00000000a8b00000|100%| O| |TAMS 0x00000000a8b00000, 0x00000000a8b00000| Untracked
| 139|0x00000000a8b00000, 0x00000000a8c00000, 0x00000000a8c00000|100%| O| |TAMS 0x00000000a8c00000, 0x00000000a8c00000| Untracked
| 140|0x00000000a8c00000, 0x00000000a8c00000, 0x00000000a8d00000| 0%| F| |TAMS 0x00000000a8c00000, 0x00000000a8c00000| Untracked
| 141|0x00000000a8d00000, 0x00000000a8e00000, 0x00000000a8e00000|100%| O| |TAMS 0x00000000a8d00000, 0x00000000a8e00000| Untracked
| 142|0x00000000a8e00000, 0x00000000a8e00000, 0x00000000a8f00000| 0%| F| |TAMS 0x00000000a8e00000, 0x00000000a8e00000| Untracked
| 143|0x00000000a8f00000, 0x00000000a9000000, 0x00000000a9000000|100%| O| |TAMS 0x00000000a9000000, 0x00000000a9000000| Untracked
| 144|0x00000000a9000000, 0x00000000a9100000, 0x00000000a9100000|100%| O| |TAMS 0x00000000a9100000, 0x00000000a9100000| Untracked
| 145|0x00000000a9100000, 0x00000000a9200000, 0x00000000a9200000|100%| O| |TAMS 0x00000000a9200000, 0x00000000a9200000| Untracked
| 146|0x00000000a9200000, 0x00000000a9300000, 0x00000000a9300000|100%| O| |TAMS 0x00000000a9300000, 0x00000000a9300000| Untracked
| 147|0x00000000a9300000, 0x00000000a9400000, 0x00000000a9400000|100%| O| |TAMS 0x00000000a9400000, 0x00000000a9400000| Untracked
| 148|0x00000000a9400000, 0x00000000a9500000, 0x00000000a9500000|100%| O| |TAMS 0x00000000a9500000, 0x00000000a9500000| Untracked
| 149|0x00000000a9500000, 0x00000000a9600000, 0x00000000a9600000|100%| O| |TAMS 0x00000000a9600000, 0x00000000a9600000| Untracked
| 150|0x00000000a9600000, 0x00000000a9700000, 0x00000000a9700000|100%| O| |TAMS 0x00000000a9700000, 0x00000000a9700000| Untracked
| 151|0x00000000a9700000, 0x00000000a9800000, 0x00000000a9800000|100%| O| |TAMS 0x00000000a9800000, 0x00000000a9800000| Untracked
| 152|0x00000000a9800000, 0x00000000a9900000, 0x00000000a9900000|100%| O| |TAMS 0x00000000a9900000, 0x00000000a9900000| Untracked
| 153|0x00000000a9900000, 0x00000000a9a00000, 0x00000000a9a00000|100%| O| |TAMS 0x00000000a9a00000, 0x00000000a9a00000| Untracked
| 154|0x00000000a9a00000, 0x00000000a9b00000, 0x00000000a9b00000|100%|HS| |TAMS 0x00000000a9b00000, 0x00000000a9b00000| Complete
| 155|0x00000000a9b00000, 0x00000000a9c00000, 0x00000000a9c00000|100%| O| |TAMS 0x00000000a9c00000, 0x00000000a9c00000| Untracked
| 156|0x00000000a9c00000, 0x00000000a9d00000, 0x00000000a9d00000|100%| O| |TAMS 0x00000000a9d00000, 0x00000000a9d00000| Untracked
| 157|0x00000000a9d00000, 0x00000000a9e00000, 0x00000000a9e00000|100%| O| |TAMS 0x00000000a9e00000, 0x00000000a9e00000| Untracked
| 158|0x00000000a9e00000, 0x00000000a9f00000, 0x00000000a9f00000|100%| O| |TAMS 0x00000000a9f00000, 0x00000000a9f00000| Untracked
| 159|0x00000000a9f00000, 0x00000000aa000000, 0x00000000aa000000|100%| O| |TAMS 0x00000000aa000000, 0x00000000aa000000| Untracked
| 160|0x00000000aa000000, 0x00000000aa100000, 0x00000000aa100000|100%| O| |TAMS 0x00000000aa100000, 0x00000000aa100000| Untracked
| 161|0x00000000aa100000, 0x00000000aa200000, 0x00000000aa200000|100%| O| |TAMS 0x00000000aa200000, 0x00000000aa200000| Untracked
| 162|0x00000000aa200000, 0x00000000aa300000, 0x00000000aa300000|100%| O| |TAMS 0x00000000aa300000, 0x00000000aa300000| Untracked
| 163|0x00000000aa300000, 0x00000000aa400000, 0x00000000aa400000|100%| O| |TAMS 0x00000000aa400000, 0x00000000aa400000| Untracked
| 164|0x00000000aa400000, 0x00000000aa500000, 0x00000000aa500000|100%| O| |TAMS 0x00000000aa500000, 0x00000000aa500000| Untracked
| 165|0x00000000aa500000, 0x00000000aa600000, 0x00000000aa600000|100%| O| |TAMS 0x00000000aa600000, 0x00000000aa600000| Untracked
| 166|0x00000000aa600000, 0x00000000aa700000, 0x00000000aa700000|100%| O| |TAMS 0x00000000aa700000, 0x00000000aa700000| Untracked
| 167|0x00000000aa700000, 0x00000000aa800000, 0x00000000aa800000|100%| O| |TAMS 0x00000000aa800000, 0x00000000aa800000| Untracked
| 168|0x00000000aa800000, 0x00000000aa900000, 0x00000000aa900000|100%| O| |TAMS 0x00000000aa900000, 0x00000000aa900000| Untracked
| 169|0x00000000aa900000, 0x00000000aaa00000, 0x00000000aaa00000|100%| O| |TAMS 0x00000000aa924200, 0x00000000aaa00000| Untracked
| 170|0x00000000aaa00000, 0x00000000aab00000, 0x00000000aab00000|100%| O| |TAMS 0x00000000aaa00000, 0x00000000aab00000| Untracked
| 171|0x00000000aab00000, 0x00000000aac00000, 0x00000000aac00000|100%| O| |TAMS 0x00000000aab00000, 0x00000000aac00000| Untracked
| 172|0x00000000aac00000, 0x00000000aac1b400, 0x00000000aad00000| 10%| O| |TAMS 0x00000000aac00000, 0x00000000aac1b400| Untracked
| 173|0x00000000aad00000, 0x00000000aad00000, 0x00000000aae00000| 0%| F| |TAMS 0x00000000aad00000, 0x00000000aad00000| Untracked
| 174|0x00000000aae00000, 0x00000000aae00000, 0x00000000aaf00000| 0%| F| |TAMS 0x00000000aae00000, 0x00000000aae00000| Untracked
| 175|0x00000000aaf00000, 0x00000000aaf00000, 0x00000000ab000000| 0%| F| |TAMS 0x00000000aaf00000, 0x00000000aaf00000| Untracked
| 176|0x00000000ab000000, 0x00000000ab000000, 0x00000000ab100000| 0%| F| |TAMS 0x00000000ab000000, 0x00000000ab000000| Untracked
| 177|0x00000000ab100000, 0x00000000ab100000, 0x00000000ab200000| 0%| F| |TAMS 0x00000000ab100000, 0x00000000ab100000| Untracked
| 178|0x00000000ab200000, 0x00000000ab200000, 0x00000000ab300000| 0%| F| |TAMS 0x00000000ab200000, 0x00000000ab200000| Untracked
| 179|0x00000000ab300000, 0x00000000ab300000, 0x00000000ab400000| 0%| F| |TAMS 0x00000000ab300000, 0x00000000ab300000| Untracked
| 180|0x00000000ab400000, 0x00000000ab400000, 0x00000000ab500000| 0%| F| |TAMS 0x00000000ab400000, 0x00000000ab400000| Untracked
| 181|0x00000000ab500000, 0x00000000ab500000, 0x00000000ab600000| 0%| F| |TAMS 0x00000000ab500000, 0x00000000ab500000| Untracked
| 182|0x00000000ab600000, 0x00000000ab600000, 0x00000000ab700000| 0%| F| |TAMS 0x00000000ab600000, 0x00000000ab600000| Untracked
| 183|0x00000000ab700000, 0x00000000ab700000, 0x00000000ab800000| 0%| F| |TAMS 0x00000000ab700000, 0x00000000ab700000| Untracked
| 184|0x00000000ab800000, 0x00000000ab800000, 0x00000000ab900000| 0%| F| |TAMS 0x00000000ab800000, 0x00000000ab800000| Untracked
| 185|0x00000000ab900000, 0x00000000ab900000, 0x00000000aba00000| 0%| F| |TAMS 0x00000000ab900000, 0x00000000ab900000| Untracked
| 186|0x00000000aba00000, 0x00000000aba00000, 0x00000000abb00000| 0%| F| |TAMS 0x00000000aba00000, 0x00000000aba00000| Untracked
| 187|0x00000000abb00000, 0x00000000abb00000, 0x00000000abc00000| 0%| F| |TAMS 0x00000000abb00000, 0x00000000abb00000| Untracked
| 188|0x00000000abc00000, 0x00000000abc00000, 0x00000000abd00000| 0%| F| |TAMS 0x00000000abc00000, 0x00000000abc00000| Untracked
| 189|0x00000000abd00000, 0x00000000abd00000, 0x00000000abe00000| 0%| F| |TAMS 0x00000000abd00000, 0x00000000abd00000| Untracked
| 190|0x00000000abe00000, 0x00000000abe00000, 0x00000000abf00000| 0%| F| |TAMS 0x00000000abe00000, 0x00000000abe00000| Untracked
| 191|0x00000000abf00000, 0x00000000abf00000, 0x00000000ac000000| 0%| F| |TAMS 0x00000000abf00000, 0x00000000abf00000| Untracked
| 192|0x00000000ac000000, 0x00000000ac000000, 0x00000000ac100000| 0%| F| |TAMS 0x00000000ac000000, 0x00000000ac000000| Untracked
| 193|0x00000000ac100000, 0x00000000ac100000, 0x00000000ac200000| 0%| F| |TAMS 0x00000000ac100000, 0x00000000ac100000| Untracked
| 194|0x00000000ac200000, 0x00000000ac200000, 0x00000000ac300000| 0%| F| |TAMS 0x00000000ac200000, 0x00000000ac200000| Untracked
| 195|0x00000000ac300000, 0x00000000ac300000, 0x00000000ac400000| 0%| F| |TAMS 0x00000000ac300000, 0x00000000ac300000| Untracked
| 196|0x00000000ac400000, 0x00000000ac400000, 0x00000000ac500000| 0%| F| |TAMS 0x00000000ac400000, 0x00000000ac400000| Untracked
| 197|0x00000000ac500000, 0x00000000ac500000, 0x00000000ac600000| 0%| F| |TAMS 0x00000000ac500000, 0x00000000ac500000| Untracked
| 198|0x00000000ac600000, 0x00000000ac600000, 0x00000000ac700000| 0%| F| |TAMS 0x00000000ac600000, 0x00000000ac600000| Untracked
| 199|0x00000000ac700000, 0x00000000ac700000, 0x00000000ac800000| 0%| F| |TAMS 0x00000000ac700000, 0x00000000ac700000| Untracked
| 200|0x00000000ac800000, 0x00000000ac800000, 0x00000000ac900000| 0%| F| |TAMS 0x00000000ac800000, 0x00000000ac800000| Untracked
| 201|0x00000000ac900000, 0x00000000ac900000, 0x00000000aca00000| 0%| F| |TAMS 0x00000000ac900000, 0x00000000ac900000| Untracked
| 202|0x00000000aca00000, 0x00000000aca00000, 0x00000000acb00000| 0%| F| |TAMS 0x00000000aca00000, 0x00000000aca00000| Untracked
| 203|0x00000000acb00000, 0x00000000acb00000, 0x00000000acc00000| 0%| F| |TAMS 0x00000000acb00000, 0x00000000acb00000| Untracked
| 204|0x00000000acc00000, 0x00000000acc00000, 0x00000000acd00000| 0%| F| |TAMS 0x00000000acc00000, 0x00000000acc00000| Untracked
| 205|0x00000000acd00000, 0x00000000acd00000, 0x00000000ace00000| 0%| F| |TAMS 0x00000000acd00000, 0x00000000acd00000| Untracked
| 206|0x00000000ace00000, 0x00000000ace00000, 0x00000000acf00000| 0%| F| |TAMS 0x00000000ace00000, 0x00000000ace00000| Untracked
| 207|0x00000000acf00000, 0x00000000acf00000, 0x00000000ad000000| 0%| F| |TAMS 0x00000000acf00000, 0x00000000acf00000| Untracked
| 208|0x00000000ad000000, 0x00000000ad000000, 0x00000000ad100000| 0%| F| |TAMS 0x00000000ad000000, 0x00000000ad000000| Untracked
| 209|0x00000000ad100000, 0x00000000ad100000, 0x00000000ad200000| 0%| F| |TAMS 0x00000000ad100000, 0x00000000ad100000| Untracked
| 210|0x00000000ad200000, 0x00000000ad200000, 0x00000000ad300000| 0%| F| |TAMS 0x00000000ad200000, 0x00000000ad200000| Untracked
| 211|0x00000000ad300000, 0x00000000ad300000, 0x00000000ad400000| 0%| F| |TAMS 0x00000000ad300000, 0x00000000ad300000| Untracked
| 212|0x00000000ad400000, 0x00000000ad400000, 0x00000000ad500000| 0%| F| |TAMS 0x00000000ad400000, 0x00000000ad400000| Untracked
| 213|0x00000000ad500000, 0x00000000ad500000, 0x00000000ad600000| 0%| F| |TAMS 0x00000000ad500000, 0x00000000ad500000| Untracked
| 214|0x00000000ad600000, 0x00000000ad600000, 0x00000000ad700000| 0%| F| |TAMS 0x00000000ad600000, 0x00000000ad600000| Untracked
| 215|0x00000000ad700000, 0x00000000ad700000, 0x00000000ad800000| 0%| F| |TAMS 0x00000000ad700000, 0x00000000ad700000| Untracked
| 216|0x00000000ad800000, 0x00000000ad800000, 0x00000000ad900000| 0%| F| |TAMS 0x00000000ad800000, 0x00000000ad800000| Untracked
| 217|0x00000000ad900000, 0x00000000ad900000, 0x00000000ada00000| 0%| F| |TAMS 0x00000000ad900000, 0x00000000ad900000| Untracked
| 218|0x00000000ada00000, 0x00000000ada00000, 0x00000000adb00000| 0%| F| |TAMS 0x00000000ada00000, 0x00000000ada00000| Untracked
| 219|0x00000000adb00000, 0x00000000adb15ae0, 0x00000000adc00000| 8%| S|CS|TAMS 0x00000000adb00000, 0x00000000adb00000| Complete
| 220|0x00000000adc00000, 0x00000000add00000, 0x00000000add00000|100%| S|CS|TAMS 0x00000000adc00000, 0x00000000adc00000| Complete
| 221|0x00000000add00000, 0x00000000ade00000, 0x00000000ade00000|100%| S|CS|TAMS 0x00000000add00000, 0x00000000add00000| Complete
| 222|0x00000000ade00000, 0x00000000adf00000, 0x00000000adf00000|100%| S|CS|TAMS 0x00000000ade00000, 0x00000000ade00000| Complete
| 223|0x00000000adf00000, 0x00000000ae000000, 0x00000000ae000000|100%| S|CS|TAMS 0x00000000adf00000, 0x00000000adf00000| Complete
| 224|0x00000000ae000000, 0x00000000ae000000, 0x00000000ae100000| 0%| F| |TAMS 0x00000000ae000000, 0x00000000ae000000| Untracked
| 225|0x00000000ae100000, 0x00000000ae100000, 0x00000000ae200000| 0%| F| |TAMS 0x00000000ae100000, 0x00000000ae100000| Untracked
| 226|0x00000000ae200000, 0x00000000ae200000, 0x00000000ae300000| 0%| F| |TAMS 0x00000000ae200000, 0x00000000ae200000| Untracked
| 227|0x00000000ae300000, 0x00000000ae300000, 0x00000000ae400000| 0%| F| |TAMS 0x00000000ae300000, 0x00000000ae300000| Untracked
| 228|0x00000000ae400000, 0x00000000ae400000, 0x00000000ae500000| 0%| F| |TAMS 0x00000000ae400000, 0x00000000ae400000| Untracked
| 229|0x00000000ae500000, 0x00000000ae500000, 0x00000000ae600000| 0%| F| |TAMS 0x00000000ae500000, 0x00000000ae500000| Untracked
| 230|0x00000000ae600000, 0x00000000ae600000, 0x00000000ae700000| 0%| F| |TAMS 0x00000000ae600000, 0x00000000ae600000| Untracked
| 231|0x00000000ae700000, 0x00000000ae700000, 0x00000000ae800000| 0%| F| |TAMS 0x00000000ae700000, 0x00000000ae700000| Untracked
| 232|0x00000000ae800000, 0x00000000ae800000, 0x00000000ae900000| 0%| F| |TAMS 0x00000000ae800000, 0x00000000ae800000| Untracked
| 233|0x00000000ae900000, 0x00000000ae900000, 0x00000000aea00000| 0%| F| |TAMS 0x00000000ae900000, 0x00000000ae900000| Untracked
| 234|0x00000000aea00000, 0x00000000aea00000, 0x00000000aeb00000| 0%| F| |TAMS 0x00000000aea00000, 0x00000000aea00000| Untracked
| 235|0x00000000aeb00000, 0x00000000aeb00000, 0x00000000aec00000| 0%| F| |TAMS 0x00000000aeb00000, 0x00000000aeb00000| Untracked
| 236|0x00000000aec00000, 0x00000000aec00000, 0x00000000aed00000| 0%| F| |TAMS 0x00000000aec00000, 0x00000000aec00000| Untracked
| 237|0x00000000aed00000, 0x00000000aed00000, 0x00000000aee00000| 0%| F| |TAMS 0x00000000aed00000, 0x00000000aed00000| Untracked
| 238|0x00000000aee00000, 0x00000000aee00000, 0x00000000aef00000| 0%| F| |TAMS 0x00000000aee00000, 0x00000000aee00000| Untracked
| 239|0x00000000aef00000, 0x00000000aef00000, 0x00000000af000000| 0%| F| |TAMS 0x00000000aef00000, 0x00000000aef00000| Untracked
| 240|0x00000000af000000, 0x00000000af000000, 0x00000000af100000| 0%| F| |TAMS 0x00000000af000000, 0x00000000af000000| Untracked
| 241|0x00000000af100000, 0x00000000af100000, 0x00000000af200000| 0%| F| |TAMS 0x00000000af100000, 0x00000000af100000| Untracked
| 242|0x00000000af200000, 0x00000000af200000, 0x00000000af300000| 0%| F| |TAMS 0x00000000af200000, 0x00000000af200000| Untracked
| 243|0x00000000af300000, 0x00000000af300000, 0x00000000af400000| 0%| F| |TAMS 0x00000000af300000, 0x00000000af300000| Untracked
| 244|0x00000000af400000, 0x00000000af400000, 0x00000000af500000| 0%| F| |TAMS 0x00000000af400000, 0x00000000af400000| Untracked
| 245|0x00000000af500000, 0x00000000af500000, 0x00000000af600000| 0%| F| |TAMS 0x00000000af500000, 0x00000000af500000| Untracked
| 246|0x00000000af600000, 0x00000000af600000, 0x00000000af700000| 0%| F| |TAMS 0x00000000af600000, 0x00000000af600000| Untracked
| 247|0x00000000af700000, 0x00000000af700000, 0x00000000af800000| 0%| F| |TAMS 0x00000000af700000, 0x00000000af700000| Untracked
| 248|0x00000000af800000, 0x00000000af800000, 0x00000000af900000| 0%| F| |TAMS 0x00000000af800000, 0x00000000af800000| Untracked
| 249|0x00000000af900000, 0x00000000af900000, 0x00000000afa00000| 0%| F| |TAMS 0x00000000af900000, 0x00000000af900000| Untracked
| 250|0x00000000afa00000, 0x00000000afa00000, 0x00000000afb00000| 0%| F| |TAMS 0x00000000afa00000, 0x00000000afa00000| Untracked
| 251|0x00000000afb00000, 0x00000000afb00000, 0x00000000afc00000| 0%| F| |TAMS 0x00000000afb00000, 0x00000000afb00000| Untracked
| 252|0x00000000afc00000, 0x00000000afc00000, 0x00000000afd00000| 0%| F| |TAMS 0x00000000afc00000, 0x00000000afc00000| Untracked
| 253|0x00000000afd00000, 0x00000000afd00000, 0x00000000afe00000| 0%| F| |TAMS 0x00000000afd00000, 0x00000000afd00000| Untracked
| 254|0x00000000afe00000, 0x00000000afe00000, 0x00000000aff00000| 0%| F| |TAMS 0x00000000afe00000, 0x00000000afe00000| Untracked
| 255|0x00000000aff00000, 0x00000000aff00000, 0x00000000b0000000| 0%| F| |TAMS 0x00000000aff00000, 0x00000000aff00000| Untracked
| 256|0x00000000b0000000, 0x00000000b0000000, 0x00000000b0100000| 0%| F| |TAMS 0x00000000b0000000, 0x00000000b0000000| Untracked
| 257|0x00000000b0100000, 0x00000000b0100000, 0x00000000b0200000| 0%| F| |TAMS 0x00000000b0100000, 0x00000000b0100000| Untracked
| 258|0x00000000b0200000, 0x00000000b0200000, 0x00000000b0300000| 0%| F| |TAMS 0x00000000b0200000, 0x00000000b0200000| Untracked
| 259|0x00000000b0300000, 0x00000000b0300000, 0x00000000b0400000| 0%| F| |TAMS 0x00000000b0300000, 0x00000000b0300000| Untracked
| 260|0x00000000b0400000, 0x00000000b0400000, 0x00000000b0500000| 0%| F| |TAMS 0x00000000b0400000, 0x00000000b0400000| Untracked
| 261|0x00000000b0500000, 0x00000000b0500000, 0x00000000b0600000| 0%| F| |TAMS 0x00000000b0500000, 0x00000000b0500000| Untracked
| 262|0x00000000b0600000, 0x00000000b0600000, 0x00000000b0700000| 0%| F| |TAMS 0x00000000b0600000, 0x00000000b0600000| Untracked
| 263|0x00000000b0700000, 0x00000000b0700000, 0x00000000b0800000| 0%| F| |TAMS 0x00000000b0700000, 0x00000000b0700000| Untracked
| 264|0x00000000b0800000, 0x00000000b0800000, 0x00000000b0900000| 0%| F| |TAMS 0x00000000b0800000, 0x00000000b0800000| Untracked
| 265|0x00000000b0900000, 0x00000000b0900000, 0x00000000b0a00000| 0%| F| |TAMS 0x00000000b0900000, 0x00000000b0900000| Untracked
| 266|0x00000000b0a00000, 0x00000000b0a00000, 0x00000000b0b00000| 0%| F| |TAMS 0x00000000b0a00000, 0x00000000b0a00000| Untracked
| 267|0x00000000b0b00000, 0x00000000b0b00000, 0x00000000b0c00000| 0%| F| |TAMS 0x00000000b0b00000, 0x00000000b0b00000| Untracked
| 268|0x00000000b0c00000, 0x00000000b0c00000, 0x00000000b0d00000| 0%| F| |TAMS 0x00000000b0c00000, 0x00000000b0c00000| Untracked
| 269|0x00000000b0d00000, 0x00000000b0d00000, 0x00000000b0e00000| 0%| F| |TAMS 0x00000000b0d00000, 0x00000000b0d00000| Untracked
| 270|0x00000000b0e00000, 0x00000000b0e00000, 0x00000000b0f00000| 0%| F| |TAMS 0x00000000b0e00000, 0x00000000b0e00000| Untracked
| 271|0x00000000b0f00000, 0x00000000b0f00000, 0x00000000b1000000| 0%| F| |TAMS 0x00000000b0f00000, 0x00000000b0f00000| Untracked
| 272|0x00000000b1000000, 0x00000000b1000000, 0x00000000b1100000| 0%| F| |TAMS 0x00000000b1000000, 0x00000000b1000000| Untracked
| 273|0x00000000b1100000, 0x00000000b1100000, 0x00000000b1200000| 0%| F| |TAMS 0x00000000b1100000, 0x00000000b1100000| Untracked
| 274|0x00000000b1200000, 0x00000000b1200000, 0x00000000b1300000| 0%| F| |TAMS 0x00000000b1200000, 0x00000000b1200000| Untracked
| 275|0x00000000b1300000, 0x00000000b1300000, 0x00000000b1400000| 0%| F| |TAMS 0x00000000b1300000, 0x00000000b1300000| Untracked
| 276|0x00000000b1400000, 0x00000000b1400000, 0x00000000b1500000| 0%| F| |TAMS 0x00000000b1400000, 0x00000000b1400000| Untracked
| 277|0x00000000b1500000, 0x00000000b1500000, 0x00000000b1600000| 0%| F| |TAMS 0x00000000b1500000, 0x00000000b1500000| Untracked
| 278|0x00000000b1600000, 0x00000000b1600000, 0x00000000b1700000| 0%| F| |TAMS 0x00000000b1600000, 0x00000000b1600000| Untracked
| 279|0x00000000b1700000, 0x00000000b1700000, 0x00000000b1800000| 0%| F| |TAMS 0x00000000b1700000, 0x00000000b1700000| Untracked
| 280|0x00000000b1800000, 0x00000000b1800000, 0x00000000b1900000| 0%| F| |TAMS 0x00000000b1800000, 0x00000000b1800000| Untracked
| 281|0x00000000b1900000, 0x00000000b1900000, 0x00000000b1a00000| 0%| F| |TAMS 0x00000000b1900000, 0x00000000b1900000| Untracked
| 282|0x00000000b1a00000, 0x00000000b1a00000, 0x00000000b1b00000| 0%| F| |TAMS 0x00000000b1a00000, 0x00000000b1a00000| Untracked
| 283|0x00000000b1b00000, 0x00000000b1b00000, 0x00000000b1c00000| 0%| F| |TAMS 0x00000000b1b00000, 0x00000000b1b00000| Untracked
| 284|0x00000000b1c00000, 0x00000000b1c00000, 0x00000000b1d00000| 0%| F| |TAMS 0x00000000b1c00000, 0x00000000b1c00000| Untracked
| 285|0x00000000b1d00000, 0x00000000b1d00000, 0x00000000b1e00000| 0%| F| |TAMS 0x00000000b1d00000, 0x00000000b1d00000| Untracked
| 286|0x00000000b1e00000, 0x00000000b1e00000, 0x00000000b1f00000| 0%| F| |TAMS 0x00000000b1e00000, 0x00000000b1e00000| Untracked
| 287|0x00000000b1f00000, 0x00000000b1f00000, 0x00000000b2000000| 0%| F| |TAMS 0x00000000b1f00000, 0x00000000b1f00000| Untracked
| 288|0x00000000b2000000, 0x00000000b2000000, 0x00000000b2100000| 0%| F| |TAMS 0x00000000b2000000, 0x00000000b2000000| Untracked
| 289|0x00000000b2100000, 0x00000000b2100000, 0x00000000b2200000| 0%| F| |TAMS 0x00000000b2100000, 0x00000000b2100000| Untracked
| 290|0x00000000b2200000, 0x00000000b2200000, 0x00000000b2300000| 0%| F| |TAMS 0x00000000b2200000, 0x00000000b2200000| Untracked
| 291|0x00000000b2300000, 0x00000000b2300000, 0x00000000b2400000| 0%| F| |TAMS 0x00000000b2300000, 0x00000000b2300000| Untracked
| 292|0x00000000b2400000, 0x00000000b2400000, 0x00000000b2500000| 0%| F| |TAMS 0x00000000b2400000, 0x00000000b2400000| Untracked
| 293|0x00000000b2500000, 0x00000000b2500000, 0x00000000b2600000| 0%| F| |TAMS 0x00000000b2500000, 0x00000000b2500000| Untracked
| 294|0x00000000b2600000, 0x00000000b2600000, 0x00000000b2700000| 0%| F| |TAMS 0x00000000b2600000, 0x00000000b2600000| Untracked
| 295|0x00000000b2700000, 0x00000000b2700000, 0x00000000b2800000| 0%| F| |TAMS 0x00000000b2700000, 0x00000000b2700000| Untracked
| 296|0x00000000b2800000, 0x00000000b2800000, 0x00000000b2900000| 0%| F| |TAMS 0x00000000b2800000, 0x00000000b2800000| Untracked
| 297|0x00000000b2900000, 0x00000000b2900000, 0x00000000b2a00000| 0%| F| |TAMS 0x00000000b2900000, 0x00000000b2900000| Untracked
| 298|0x00000000b2a00000, 0x00000000b2a00000, 0x00000000b2b00000| 0%| F| |TAMS 0x00000000b2a00000, 0x00000000b2a00000| Untracked
| 299|0x00000000b2b00000, 0x00000000b2b00000, 0x00000000b2c00000| 0%| F| |TAMS 0x00000000b2b00000, 0x00000000b2b00000| Untracked
| 300|0x00000000b2c00000, 0x00000000b2c00000, 0x00000000b2d00000| 0%| F| |TAMS 0x00000000b2c00000, 0x00000000b2c00000| Untracked
| 301|0x00000000b2d00000, 0x00000000b2d00000, 0x00000000b2e00000| 0%| F| |TAMS 0x00000000b2d00000, 0x00000000b2d00000| Untracked
| 302|0x00000000b2e00000, 0x00000000b2e00000, 0x00000000b2f00000| 0%| F| |TAMS 0x00000000b2e00000, 0x00000000b2e00000| Untracked
| 303|0x00000000b2f00000, 0x00000000b2f00000, 0x00000000b3000000| 0%| F| |TAMS 0x00000000b2f00000, 0x00000000b2f00000| Untracked
| 304|0x00000000b3000000, 0x00000000b3000000, 0x00000000b3100000| 0%| F| |TAMS 0x00000000b3000000, 0x00000000b3000000| Untracked
| 305|0x00000000b3100000, 0x00000000b3100000, 0x00000000b3200000| 0%| F| |TAMS 0x00000000b3100000, 0x00000000b3100000| Untracked
| 306|0x00000000b3200000, 0x00000000b3200000, 0x00000000b3300000| 0%| F| |TAMS 0x00000000b3200000, 0x00000000b3200000| Untracked
| 307|0x00000000b3300000, 0x00000000b3300000, 0x00000000b3400000| 0%| F| |TAMS 0x00000000b3300000, 0x00000000b3300000| Untracked
| 308|0x00000000b3400000, 0x00000000b3400000, 0x00000000b3500000| 0%| F| |TAMS 0x00000000b3400000, 0x00000000b3400000| Untracked
| 309|0x00000000b3500000, 0x00000000b3500000, 0x00000000b3600000| 0%| F| |TAMS 0x00000000b3500000, 0x00000000b3500000| Untracked
| 310|0x00000000b3600000, 0x00000000b3600000, 0x00000000b3700000| 0%| F| |TAMS 0x00000000b3600000, 0x00000000b3600000| Untracked
| 311|0x00000000b3700000, 0x00000000b3700000, 0x00000000b3800000| 0%| F| |TAMS 0x00000000b3700000, 0x00000000b3700000| Untracked
| 312|0x00000000b3800000, 0x00000000b3800000, 0x00000000b3900000| 0%| F| |TAMS 0x00000000b3800000, 0x00000000b3800000| Untracked
| 313|0x00000000b3900000, 0x00000000b3900000, 0x00000000b3a00000| 0%| F| |TAMS 0x00000000b3900000, 0x00000000b3900000| Untracked
| 314|0x00000000b3a00000, 0x00000000b3a00000, 0x00000000b3b00000| 0%| F| |TAMS 0x00000000b3a00000, 0x00000000b3a00000| Untracked
| 315|0x00000000b3b00000, 0x00000000b3b00000, 0x00000000b3c00000| 0%| F| |TAMS 0x00000000b3b00000, 0x00000000b3b00000| Untracked
| 316|0x00000000b3c00000, 0x00000000b3c00000, 0x00000000b3d00000| 0%| F| |TAMS 0x00000000b3c00000, 0x00000000b3c00000| Untracked
| 317|0x00000000b3d00000, 0x00000000b3d00000, 0x00000000b3e00000| 0%| F| |TAMS 0x00000000b3d00000, 0x00000000b3d00000| Untracked
| 318|0x00000000b3e00000, 0x00000000b3e00000, 0x00000000b3f00000| 0%| F| |TAMS 0x00000000b3e00000, 0x00000000b3e00000| Untracked
| 319|0x00000000b3f00000, 0x00000000b3f00000, 0x00000000b4000000| 0%| F| |TAMS 0x00000000b3f00000, 0x00000000b3f00000| Untracked
| 320|0x00000000b4000000, 0x00000000b4000000, 0x00000000b4100000| 0%| F| |TAMS 0x00000000b4000000, 0x00000000b4000000| Untracked
| 321|0x00000000b4100000, 0x00000000b4100000, 0x00000000b4200000| 0%| F| |TAMS 0x00000000b4100000, 0x00000000b4100000| Untracked
| 322|0x00000000b4200000, 0x00000000b4200000, 0x00000000b4300000| 0%| F| |TAMS 0x00000000b4200000, 0x00000000b4200000| Untracked
| 323|0x00000000b4300000, 0x00000000b4300000, 0x00000000b4400000| 0%| F| |TAMS 0x00000000b4300000, 0x00000000b4300000| Untracked
| 324|0x00000000b4400000, 0x00000000b4400000, 0x00000000b4500000| 0%| F| |TAMS 0x00000000b4400000, 0x00000000b4400000| Untracked
| 325|0x00000000b4500000, 0x00000000b4500000, 0x00000000b4600000| 0%| F| |TAMS 0x00000000b4500000, 0x00000000b4500000| Untracked
| 326|0x00000000b4600000, 0x00000000b4600000, 0x00000000b4700000| 0%| F| |TAMS 0x00000000b4600000, 0x00000000b4600000| Untracked
| 327|0x00000000b4700000, 0x00000000b4700000, 0x00000000b4800000| 0%| F| |TAMS 0x00000000b4700000, 0x00000000b4700000| Untracked
| 328|0x00000000b4800000, 0x00000000b4800000, 0x00000000b4900000| 0%| F| |TAMS 0x00000000b4800000, 0x00000000b4800000| Untracked
| 329|0x00000000b4900000, 0x00000000b4900000, 0x00000000b4a00000| 0%| F| |TAMS 0x00000000b4900000, 0x00000000b4900000| Untracked
| 330|0x00000000b4a00000, 0x00000000b4a00000, 0x00000000b4b00000| 0%| F| |TAMS 0x00000000b4a00000, 0x00000000b4a00000| Untracked
| 331|0x00000000b4b00000, 0x00000000b4b00000, 0x00000000b4c00000| 0%| F| |TAMS 0x00000000b4b00000, 0x00000000b4b00000| Untracked
| 332|0x00000000b4c00000, 0x00000000b4c00000, 0x00000000b4d00000| 0%| F| |TAMS 0x00000000b4c00000, 0x00000000b4c00000| Untracked
| 333|0x00000000b4d00000, 0x00000000b4d00000, 0x00000000b4e00000| 0%| F| |TAMS 0x00000000b4d00000, 0x00000000b4d00000| Untracked
| 334|0x00000000b4e00000, 0x00000000b4e00000, 0x00000000b4f00000| 0%| F| |TAMS 0x00000000b4e00000, 0x00000000b4e00000| Untracked
| 335|0x00000000b4f00000, 0x00000000b4f00000, 0x00000000b5000000| 0%| F| |TAMS 0x00000000b4f00000, 0x00000000b4f00000| Untracked
| 336|0x00000000b5000000, 0x00000000b5000000, 0x00000000b5100000| 0%| F| |TAMS 0x00000000b5000000, 0x00000000b5000000| Untracked
| 337|0x00000000b5100000, 0x00000000b5100000, 0x00000000b5200000| 0%| F| |TAMS 0x00000000b5100000, 0x00000000b5100000| Untracked
| 338|0x00000000b5200000, 0x00000000b5200000, 0x00000000b5300000| 0%| F| |TAMS 0x00000000b5200000, 0x00000000b5200000| Untracked
| 339|0x00000000b5300000, 0x00000000b5300000, 0x00000000b5400000| 0%| F| |TAMS 0x00000000b5300000, 0x00000000b5300000| Untracked
| 340|0x00000000b5400000, 0x00000000b5400000, 0x00000000b5500000| 0%| F| |TAMS 0x00000000b5400000, 0x00000000b5400000| Untracked
| 341|0x00000000b5500000, 0x00000000b5500000, 0x00000000b5600000| 0%| F| |TAMS 0x00000000b5500000, 0x00000000b5500000| Untracked
| 342|0x00000000b5600000, 0x00000000b5600000, 0x00000000b5700000| 0%| F| |TAMS 0x00000000b5600000, 0x00000000b5600000| Untracked
| 343|0x00000000b5700000, 0x00000000b5700000, 0x00000000b5800000| 0%| F| |TAMS 0x00000000b5700000, 0x00000000b5700000| Untracked
| 344|0x00000000b5800000, 0x00000000b5800000, 0x00000000b5900000| 0%| F| |TAMS 0x00000000b5800000, 0x00000000b5800000| Untracked
| 345|0x00000000b5900000, 0x00000000b5900000, 0x00000000b5a00000| 0%| F| |TAMS 0x00000000b5900000, 0x00000000b5900000| Untracked
| 346|0x00000000b5a00000, 0x00000000b5a00000, 0x00000000b5b00000| 0%| F| |TAMS 0x00000000b5a00000, 0x00000000b5a00000| Untracked
| 347|0x00000000b5b00000, 0x00000000b5b00000, 0x00000000b5c00000| 0%| F| |TAMS 0x00000000b5b00000, 0x00000000b5b00000| Untracked
| 348|0x00000000b5c00000, 0x00000000b5c00000, 0x00000000b5d00000| 0%| F| |TAMS 0x00000000b5c00000, 0x00000000b5c00000| Untracked
| 349|0x00000000b5d00000, 0x00000000b5d00000, 0x00000000b5e00000| 0%| F| |TAMS 0x00000000b5d00000, 0x00000000b5d00000| Untracked
| 350|0x00000000b5e00000, 0x00000000b5e00000, 0x00000000b5f00000| 0%| F| |TAMS 0x00000000b5e00000, 0x00000000b5e00000| Untracked
| 351|0x00000000b5f00000, 0x00000000b5f00000, 0x00000000b6000000| 0%| F| |TAMS 0x00000000b5f00000, 0x00000000b5f00000| Untracked
| 352|0x00000000b6000000, 0x00000000b6000000, 0x00000000b6100000| 0%| F| |TAMS 0x00000000b6000000, 0x00000000b6000000| Untracked
| 353|0x00000000b6100000, 0x00000000b6100000, 0x00000000b6200000| 0%| F| |TAMS 0x00000000b6100000, 0x00000000b6100000| Untracked
| 354|0x00000000b6200000, 0x00000000b6200000, 0x00000000b6300000| 0%| F| |TAMS 0x00000000b6200000, 0x00000000b6200000| Untracked
Card table byte_map: [0x000001a672d00000,0x000001a673000000] _byte_map_base: 0x000001a672800000
Marking Bits (Prev, Next): (CMBitMap*) 0x000001a65fc0ff18, (CMBitMap*) 0x000001a65fc0ff50
Prev Bits: [0x000001a673300000, 0x000001a674b00000)
Next Bits: [0x000001a674b00000, 0x000001a676300000)
Polling page: 0x000001a65dd60000
Metaspace:
Usage:
Non-class: 74.04 MB capacity, 72.73 MB ( 98%) used, 1.10 MB ( 1%) free+waste, 209.63 KB ( <1%) overhead.
Class: 11.13 MB capacity, 10.43 MB ( 94%) used, 628.06 KB ( 6%) free+waste, 90.81 KB ( <1%) overhead.
Both: 85.17 MB capacity, 83.16 MB ( 98%) used, 1.72 MB ( 2%) free+waste, 300.44 KB ( <1%) overhead.
Virtual space:
Non-class space: 76.00 MB reserved, 74.50 MB ( 98%) committed
Class space: 1.00 GB reserved, 11.37 MB ( 1%) committed
Both: 1.07 GB reserved, 85.87 MB ( 8%) committed
Chunk freelists:
Non-Class: 344.00 KB
Class: 215.00 KB
Both: 559.00 KB
MaxMetaspaceSize: 17179869184.00 GB
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 20.80 MB
Current GC threshold: 143.12 MB
CDS: off
CodeHeap 'non-profiled nmethods': size=120000Kb used=8052Kb max_used=8052Kb free=111947Kb
bounds [0x000001a66b1a0000, 0x000001a66b980000, 0x000001a6726d0000]
CodeHeap 'profiled nmethods': size=120000Kb used=35071Kb max_used=35071Kb free=84928Kb
bounds [0x000001a663c70000, 0x000001a665eb0000, 0x000001a66b1a0000]
CodeHeap 'non-nmethods': size=5760Kb used=2383Kb max_used=2442Kb free=3376Kb
bounds [0x000001a6636d0000, 0x000001a663940000, 0x000001a663c70000]
total_blobs=15178 nmethods=14292 adapters=797
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
Compilation events (20 events):
Event: 44.467 Thread 0x000001a679663800 14803 2 com.android.tools.r8.ir.code.Y::instructionTypeCanThrow (25 bytes)
Event: 44.467 Thread 0x000001a679663800 nmethod 14803 0x000001a665ea6890 code [0x000001a665ea6a40, 0x000001a665ea6b78]
Event: 44.482 Thread 0x000001a679663800 14804 3 com.android.tools.r8.ir.optimize.CodeRewriter::d (42 bytes)
Event: 44.483 Thread 0x000001a679663800 nmethod 14804 0x000001a665ea6c10 code [0x000001a665ea6ea0, 0x000001a665ea7be8]
Event: 44.488 Thread 0x000001a679663800 14805 2 com.android.tools.r8.ir.code.Add::a (4 bytes)
Event: 44.488 Thread 0x000001a679663800 nmethod 14805 0x000001a665ea8010 code [0x000001a665ea81c0, 0x000001a665ea82b8]
Event: 44.493 Thread 0x000001a679663800 14806 2 com.android.tools.r8.ir.code.Monitor::a (27 bytes)
Event: 44.493 Thread 0x000001a679663800 nmethod 14806 0x000001a665ea8390 code [0x000001a665ea8560, 0x000001a665ea86f8]
Event: 44.496 Thread 0x000001a679660000 nmethod 14772 0x000001a66b975690 code [0x000001a66b975a60, 0x000001a66b978b00]
Event: 44.496 Thread 0x000001a679660000 14784 4 com.android.tools.r8.ir.conversion.N::getCanonicalDebugPositionAtOffset (109 bytes)
Event: 44.499 Thread 0x000001a679663800 14808 3 com.android.tools.r8.ir.code.BasicBlock::k (66 bytes)
Event: 44.500 Thread 0x000001a679663800 nmethod 14808 0x000001a665ea8810 code [0x000001a665ea8aa0, 0x000001a665ea97b8]
Event: 44.526 Thread 0x000001a679663800 14810 2 com.android.tools.r8.ir.code.j::a (8 bytes)
Event: 44.527 Thread 0x000001a679663800 nmethod 14810 0x000001a665ea9c10 code [0x000001a665ea9de0, 0x000001a665ea9f38]
Event: 44.527 Thread 0x000001a679663800 14811 2 com.android.tools.r8.ir.conversion.IRBuilder::b (39 bytes)
Event: 44.527 Thread 0x000001a679663800 nmethod 14811 0x000001a665eaa090 code [0x000001a665eaa280, 0x000001a665eaa548]
Event: 44.531 Thread 0x000001a679663800 14812 % 3 com.android.tools.r8.ir.optimize.CodeRewriter::a @ 56 (275 bytes)
Event: 44.534 Thread 0x000001a679663800 nmethod 14812% 0x000001a665eaa790 code [0x000001a665eaada0, 0x000001a665eaea88]
Event: 44.543 Thread 0x000001a679660000 nmethod 14784 0x000001a66b97b510 code [0x000001a66b97b780, 0x000001a66b97c930]
Event: 44.543 Thread 0x000001a679660000 14807 4 com.android.tools.r8.ir.conversion.IRBuilder::a (706 bytes)
GC Heap History (20 events):
Event: 42.865 GC heap after
{Heap after GC invocations=33 (full 0):
garbage-first heap total 312320K, used 145146K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 7 young (7168K), 7 survivors (7168K)
Metaspace used 85093K, capacity 87144K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11399K, committed 11644K, reserved 1048576K
}
Event: 43.026 GC heap before
{Heap before GC invocations=33 (full 0):
garbage-first heap total 312320K, used 259834K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 119 young (121856K), 7 survivors (7168K)
Metaspace used 85101K, capacity 87144K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11399K, committed 11644K, reserved 1048576K
}
Event: 43.035 GC heap after
{Heap after GC invocations=34 (full 0):
garbage-first heap total 312320K, used 150626K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 13 young (13312K), 13 survivors (13312K)
Metaspace used 85101K, capacity 87144K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11399K, committed 11644K, reserved 1048576K
}
Event: 43.148 GC heap before
{Heap before GC invocations=34 (full 0):
garbage-first heap total 312320K, used 260194K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 120 young (122880K), 13 survivors (13312K)
Metaspace used 85103K, capacity 87144K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11399K, committed 11644K, reserved 1048576K
}
Event: 43.165 GC heap after
{Heap after GC invocations=35 (full 0):
garbage-first heap total 312320K, used 158432K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 15 young (15360K), 15 survivors (15360K)
Metaspace used 85103K, capacity 87144K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11399K, committed 11644K, reserved 1048576K
}
Event: 43.313 GC heap before
{Heap before GC invocations=35 (full 0):
garbage-first heap total 312320K, used 260832K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 115 young (117760K), 15 survivors (15360K)
Metaspace used 85109K, capacity 87145K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11399K, committed 11644K, reserved 1048576K
}
Event: 43.335 GC heap after
{Heap after GC invocations=36 (full 0):
garbage-first heap total 363520K, used 165773K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 9 young (9216K), 9 survivors (9216K)
Metaspace used 85109K, capacity 87145K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11399K, committed 11644K, reserved 1048576K
}
Event: 43.656 GC heap before
{Heap before GC invocations=37 (full 0):
garbage-first heap total 363520K, used 294797K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 134 young (137216K), 9 survivors (9216K)
Metaspace used 85124K, capacity 87148K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 43.674 GC heap after
{Heap after GC invocations=38 (full 0):
garbage-first heap total 363520K, used 172237K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 14 young (14336K), 14 survivors (14336K)
Metaspace used 85124K, capacity 87148K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 43.680 GC heap before
{Heap before GC invocations=38 (full 0):
garbage-first heap total 363520K, used 175309K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 17 young (17408K), 14 survivors (14336K)
Metaspace used 85124K, capacity 87148K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 43.694 GC heap after
{Heap after GC invocations=39 (full 0):
garbage-first heap total 363520K, used 169685K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 85124K, capacity 87148K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 43.883 GC heap before
{Heap before GC invocations=39 (full 0):
garbage-first heap total 363520K, used 296661K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 126 young (129024K), 2 survivors (2048K)
Metaspace used 85136K, capacity 87149K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 43.890 GC heap after
{Heap after GC invocations=40 (full 0):
garbage-first heap total 363520K, used 172017K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 4 young (4096K), 4 survivors (4096K)
Metaspace used 85136K, capacity 87149K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 44.175 GC heap before
{Heap before GC invocations=40 (full 0):
garbage-first heap total 363520K, used 301041K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 130 young (133120K), 4 survivors (4096K)
Metaspace used 85144K, capacity 87214K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 44.182 GC heap after
{Heap after GC invocations=41 (full 0):
garbage-first heap total 363520K, used 171769K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 4 young (4096K), 4 survivors (4096K)
Metaspace used 85144K, capacity 87214K, committed 87932K, reserved 1126400K
class space used 10681K, capacity 11400K, committed 11644K, reserved 1048576K
}
Event: 44.366 GC heap before
{Heap before GC invocations=42 (full 0):
garbage-first heap total 363520K, used 303865K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 133 young (136192K), 4 survivors (4096K)
Metaspace used 85155K, capacity 87217K, committed 87932K, reserved 1126400K
class space used 10682K, capacity 11401K, committed 11644K, reserved 1048576K
}
Event: 44.372 GC heap after
{Heap after GC invocations=43 (full 0):
garbage-first heap total 363520K, used 174570K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 7 young (7168K), 7 survivors (7168K)
Metaspace used 85155K, capacity 87217K, committed 87932K, reserved 1126400K
class space used 10682K, capacity 11401K, committed 11644K, reserved 1048576K
}
Event: 44.386 GC heap before
{Heap before GC invocations=43 (full 0):
garbage-first heap total 363520K, used 184810K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 17 young (17408K), 7 survivors (7168K)
Metaspace used 85156K, capacity 87217K, committed 87932K, reserved 1126400K
class space used 10682K, capacity 11401K, committed 11644K, reserved 1048576K
}
Event: 44.397 GC heap after
{Heap after GC invocations=44 (full 0):
garbage-first heap total 363520K, used 171255K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 85156K, capacity 87217K, committed 87932K, reserved 1126400K
class space used 10682K, capacity 11401K, committed 11644K, reserved 1048576K
}
Event: 44.562 GC heap before
{Heap before GC invocations=44 (full 0):
garbage-first heap total 363520K, used 303351K [0x00000000a0000000, 0x0000000100000000)
region size 1024K, 131 young (134144K), 2 survivors (2048K)
Metaspace used 85158K, capacity 87217K, committed 87932K, reserved 1126400K
class space used 10682K, capacity 11401K, committed 11644K, reserved 1048576K
}
Deoptimization events (20 events):
Event: 44.433 Thread 0x000001a6013af000 DEOPT PACKING pc=0x000001a665e8f20d sp=0x0000003ea96fa2f0
Event: 44.433 Thread 0x000001a6013af000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea96f9800 mode 0
Event: 44.444 Thread 0x000001a67b0bc000 DEOPT PACKING pc=0x000001a6655368f6 sp=0x0000003ea90f9fc0
Event: 44.444 Thread 0x000001a67b0bc000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea90f97a0 mode 0
Event: 44.447 Thread 0x000001a6013af000 DEOPT PACKING pc=0x000001a665e8f19c sp=0x0000003ea96fa3d0
Event: 44.447 Thread 0x000001a6013af000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea96f98e8 mode 0
Event: 44.458 Thread 0x000001a67b0bc000 DEOPT PACKING pc=0x000001a6655368f6 sp=0x0000003ea90f9fc0
Event: 44.458 Thread 0x000001a67b0bc000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea90f97a0 mode 0
Event: 44.469 Thread 0x000001a67b0bc000 DEOPT PACKING pc=0x000001a665e8f1c6 sp=0x0000003ea90fa340
Event: 44.469 Thread 0x000001a67b0bc000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea90f9840 mode 0
Event: 44.523 Thread 0x000001a67b0bc000 DEOPT PACKING pc=0x000001a6653d94b3 sp=0x0000003ea90faaf0
Event: 44.523 Thread 0x000001a67b0bc000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea90f9f98 mode 0
Event: 44.523 Thread 0x000001a6013af000 DEOPT PACKING pc=0x000001a665e8f0e4 sp=0x0000003ea96f9a40
Event: 44.523 Thread 0x000001a6013af000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea96f8f50 mode 0
Event: 44.553 Thread 0x000001a67b0bc000 DEOPT PACKING pc=0x000001a665e8f1e7 sp=0x0000003ea90f9930
Event: 44.553 Thread 0x000001a67b0bc000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea90f8e38 mode 0
Event: 44.558 Thread 0x000001a6013a8800 DEOPT PACKING pc=0x000001a6655368f6 sp=0x0000003ea93fa2f0
Event: 44.558 Thread 0x000001a6013a8800 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea93f9ad0 mode 0
Event: 44.559 Thread 0x000001a6013af000 DEOPT PACKING pc=0x000001a6653d94b3 sp=0x0000003ea96faab0
Event: 44.559 Thread 0x000001a6013af000 DEOPT UNPACKING pc=0x000001a663719d0e sp=0x0000003ea96f9f48 mode 0
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 39.274 Thread 0x000001a67b0c3800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000ab7622c8}> (0x00000000ab7622c8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 39.295 Thread 0x000001a67b0bc000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000ab6cd2e8}> (0x00000000ab6cd2e8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 39.442 Thread 0x000001a6013ad000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000aec55388}> (0x00000000aec55388) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 39.442 Thread 0x000001a6013a8800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000aedc9e00}> (0x00000000aedc9e00) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 39.462 Thread 0x000001a67b0c3800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000aefa49f8}> (0x00000000aefa49f8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 39.730 Thread 0x000001a67b0bc000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000aebf9558}> (0x00000000aebf9558) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 39.770 Thread 0x000001a67b273800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000add520a8}> (0x00000000add520a8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 40.352 Thread 0x000001a67b0c3800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000a9b29ec8}> (0x00000000a9b29ec8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 40.531 Thread 0x000001a6013af000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000acd13230}> (0x00000000acd13230) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 40.762 Thread 0x000001a6013af000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000ae06eaf8}> (0x00000000ae06eaf8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 40.902 Thread 0x000001a6013a8800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000aadd0258}> (0x00000000aadd0258) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 41.318 Thread 0x000001a6013af000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b06dd018}> (0x00000000b06dd018) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 41.363 Thread 0x000001a67b273800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000af9b00c0}> (0x00000000af9b00c0) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 41.458 Thread 0x000001a67b273800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000ad9d3840}> (0x00000000ad9d3840) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 41.551 Thread 0x000001a6013a8800 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b30c4c28}> (0x00000000b30c4c28) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 41.936 Thread 0x000001a6013af000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b13b2288}> (0x00000000b13b2288) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Event: 42.650 Thread 0x000001a6013af000 Exception <a 'java/lang/NoSuchMethodError'{0x00000000af32e5f0}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, java.lang.Object, int, java.lang.Object)'> (0x00000000af32e5f0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 42.652 Thread 0x000001a6013af000 Exception <a 'java/lang/NoSuchMethodError'{0x00000000af332680}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, int, java.lang.Object)'> (0x00000000af332680) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 42.652 Thread 0x000001a6013af000 Exception <a 'java/lang/NoSuchMethodError'{0x00000000af336120}: 'java.lang.Object java.lang.invoke.Invokers$Holder.linkToTargetMethod(java.lang.Object, int, java.lang.Object, java.lang.Object)'> (0x00000000af336120) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 773]
Event: 42.927 Thread 0x000001a67b0bc000 Exception <a 'sun/nio/fs/WindowsException'{0x00000000b209f0d8}> (0x00000000b209f0d8) thrown at [./src/hotspot/share/prims/jni.cpp, line 615]
Events (20 events):
Event: 43.651 loading class com/android/tools/r8/ir/code/Position done
Event: 43.651 loading class com/android/tools/r8/ir/desugar/p
Event: 43.651 loading class com/android/tools/r8/ir/desugar/p done
Event: 43.655 Executing VM operation: G1CollectForAllocation
Event: 43.674 Executing VM operation: G1CollectForAllocation done
Event: 43.679 Executing VM operation: G1CollectForAllocation
Event: 43.694 Executing VM operation: G1CollectForAllocation done
Event: 43.882 Executing VM operation: G1CollectForAllocation
Event: 43.890 Executing VM operation: G1CollectForAllocation done
Event: 44.073 Executing VM operation: CGC_Operation
Event: 44.081 Executing VM operation: CGC_Operation done
Event: 44.175 Executing VM operation: G1CollectForAllocation
Event: 44.182 Executing VM operation: G1CollectForAllocation done
Event: 44.186 Executing VM operation: CGC_Operation
Event: 44.187 Executing VM operation: CGC_Operation done
Event: 44.366 Executing VM operation: G1CollectForAllocation
Event: 44.372 Executing VM operation: G1CollectForAllocation done
Event: 44.386 Executing VM operation: G1CollectForAllocation
Event: 44.397 Executing VM operation: G1CollectForAllocation done
Event: 44.562 Executing VM operation: G1CollectForAllocation
Dynamic libraries:
0x00007ff6b56c0000 - 0x00007ff6b56ca000 C:\Program Files\Android\Android Studio\jre\bin\java.exe
0x00007ffbb0290000 - 0x00007ffbb04a7000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffbae8c0000 - 0x00007ffbae984000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffbad930000 - 0x00007ffbadcdd000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffbadea0000 - 0x00007ffbadfb1000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffb95c90000 - 0x00007ffb95ca9000 C:\Program Files\Android\Android Studio\jre\bin\jli.dll
0x00007ffbae990000 - 0x00007ffbaeb3e000 C:\WINDOWS\System32\USER32.dll
0x00007ffbade70000 - 0x00007ffbade96000 C:\WINDOWS\System32\win32u.dll
0x00007ffbaf040000 - 0x00007ffbaf069000 C:\WINDOWS\System32\GDI32.dll
0x00007ffbad5b0000 - 0x00007ffbad6c9000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffbaddd0000 - 0x00007ffbade6a000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffb94af0000 - 0x00007ffb94b07000 C:\Program Files\Android\Android Studio\jre\bin\VCRUNTIME140.dll
0x00007ffb907c0000 - 0x00007ffb90a53000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3672_none_2713b9d173822955\COMCTL32.dll
0x00007ffbaeb40000 - 0x00007ffbaebe7000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffbaf4b0000 - 0x00007ffbaf4e1000 C:\WINDOWS\System32\IMM32.DLL
0x00007ffb93e70000 - 0x00007ffb93f0d000 C:\Program Files\Android\Android Studio\jre\bin\msvcp140.dll
0x00007ffb66380000 - 0x00007ffb66e65000 C:\Program Files\Android\Android Studio\jre\bin\server\jvm.dll
0x00007ffbaf7d0000 - 0x00007ffbaf882000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffbaf070000 - 0x00007ffbaf119000 C:\WINDOWS\System32\sechost.dll
0x00007ffbad900000 - 0x00007ffbad928000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffbaef20000 - 0x00007ffbaf034000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffbafdc0000 - 0x00007ffbafdc8000 C:\WINDOWS\System32\PSAPI.DLL
0x00007ffb8bad0000 - 0x00007ffb8bad9000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffbaf740000 - 0x00007ffbaf7b1000 C:\WINDOWS\System32\WS2_32.dll
0x00007ffba5730000 - 0x00007ffba5764000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffbac250000 - 0x00007ffbac25a000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffbac5e0000 - 0x00007ffbac5f8000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll
0x00007ffb95ce0000 - 0x00007ffb95cf1000 C:\Program Files\Android\Android Studio\jre\bin\verify.dll
0x00007ffbaab80000 - 0x00007ffbaadb2000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL
0x00007ffbaf120000 - 0x00007ffbaf4ad000 C:\WINDOWS\System32\combase.dll
0x00007ffbaf650000 - 0x00007ffbaf727000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffb86350000 - 0x00007ffb86382000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x00007ffbadce0000 - 0x00007ffbadd5b000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ffb95cb0000 - 0x00007ffb95cd9000 C:\Program Files\Android\Android Studio\jre\bin\java.dll
0x00007ffba3bf0000 - 0x00007ffba3bfb000 C:\Program Files\Android\Android Studio\jre\bin\jimage.dll
0x00007ffb95c70000 - 0x00007ffb95c88000 C:\Program Files\Android\Android Studio\jre\bin\zip.dll
0x00007ffbae050000 - 0x00007ffbae8b8000 C:\WINDOWS\System32\SHELL32.dll
0x00007ffbab8b0000 - 0x00007ffbac1ae000 C:\WINDOWS\SYSTEM32\windows.storage.dll
0x00007ffbab770000 - 0x00007ffbab8af000 C:\WINDOWS\SYSTEM32\wintypes.dll
0x00007ffbafa50000 - 0x00007ffbafb49000 C:\WINDOWS\System32\SHCORE.dll
0x00007ffbaee60000 - 0x00007ffbaeebe000 C:\WINDOWS\System32\shlwapi.dll
0x00007ffbad4e0000 - 0x00007ffbad501000 C:\WINDOWS\SYSTEM32\profapi.dll
0x00007ffb940e0000 - 0x00007ffb940fa000 C:\Program Files\Android\Android Studio\jre\bin\net.dll
0x00007ffba8bf0000 - 0x00007ffba8d26000 C:\WINDOWS\SYSTEM32\WINHTTP.dll
0x00007ffbacac0000 - 0x00007ffbacb29000 C:\WINDOWS\system32\mswsock.dll
0x00007ffb94000000 - 0x00007ffb94014000 C:\Program Files\Android\Android Studio\jre\bin\nio.dll
0x00007ffb94200000 - 0x00007ffb94226000 C:\Users\郑\.gradle\native\29\windows-amd64\native-platform.dll
0x00007ffb969c0000 - 0x00007ffb969ca000 C:\Program Files\Android\Android Studio\jre\bin\management.dll
0x00007ffb96980000 - 0x00007ffb9698d000 C:\Program Files\Android\Android Studio\jre\bin\management_ext.dll
0x00007ffbacd50000 - 0x00007ffbacd6b000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll
0x00007ffbac540000 - 0x00007ffbac575000 C:\WINDOWS\system32\rsaenh.dll
0x00007ffbacbc0000 - 0x00007ffbacbe8000 C:\WINDOWS\SYSTEM32\USERENV.dll
0x00007ffbacd70000 - 0x00007ffbacd7c000 C:\WINDOWS\SYSTEM32\CRYPTBASE.dll
0x00007ffbab430000 - 0x00007ffbab45d000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x00007ffbaf730000 - 0x00007ffbaf739000 C:\WINDOWS\System32\NSI.dll
0x00007ffba8bb0000 - 0x00007ffba8bc9000 C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL
0x00007ffba8b90000 - 0x00007ffba8baf000 C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL
0x00007ffbab4a0000 - 0x00007ffbab598000 C:\WINDOWS\SYSTEM32\DNSAPI.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Program Files\Android\Android Studio\jre\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3672_none_2713b9d173822955;C:\Program Files\Android\Android Studio\jre\bin\server;C:\Users\郑\.gradle\native\29\windows-amd6;C:\Users\郑\.gradle\native\29\windows-amd;C:\Users\郑\.gradle\native\29\windows-am;C:\Users\郑\.gradle\native\29\windows-a
VM Arguments:
jvm_args: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED -Xmx1536m -Dfile.encoding=GBK -Duser.country=CN -Duser.language=zh -Duser.variant
java_command: org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1
java_class_path (initial): C:\Users\郑\.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx\gradle-5.4.1\lib\gradle-launcher-5.4.1.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 4 {product} {ergonomic}
uint ConcGCThreads = 2 {product} {ergonomic}
uint G1ConcRefinementThreads = 8 {product} {ergonomic}
size_t G1HeapRegionSize = 1048576 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 266338304 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 1610612736 {product} {command line}
size_t MaxNewSize = 965738496 {product} {ergonomic}
size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5836300 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122910970 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122910970 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
bool UseCompressedClassPointers = true {lp64_product} {ergonomic}
bool UseCompressedOops = true {lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
PATH=D:\app\product\11.2.0\dbhome_1\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\TortoiseSVN\bin;D:\story\android-sdk-windows-idea\platform-tools;D:\story\android-sdk-windows-idea\tools;C:\Program Files\dotnet\;C:\Program Files\Calibre2\;C:\Program Files\Java\jre1.8.0_341\bin;C:\Users\郑\AppData\Local\Microsoft\WindowsApps;C:\Users\郑\AppData\Roaming\npm;C:\Users\郑\AppData\Local\Programs\Microsoft VS Code\bin;;C:\Users\郑\AppData\Local\Programs\Fiddler
USERNAME=郑
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 140 Stepping 1, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows 10 , 64 bit Build 22621 (10.0.22621.3958)
OS uptime: 12 days 9:18 hours
CPU:total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 140 stepping 1 microcode 0x86, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, evex, sha, fma
Memory: 4k page, system-wide physical 16167M (360M free)
TotalPageFile size 41767M (AvailPageFile size 64M)
current process WorkingSet (physical memory assigned to process): 707M, peak: 713M
current process commit charge ("private bytes"): 757M, peak: 849M
vm_info: OpenJDK 64-Bit Server VM (11.0.12+7-b1504.28-7817840) for windows-amd64 JRE (11.0.12+7-b1504.28-7817840), built on Oct 13 2021 22:12:33 by "builder" with MS VC++ 14.0 (VS2015)
END.
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Jul 30 16:15:08 CST 2024
sdk.dir=D\:\\story\\android-sdk-windows-idea
This source diff could not be displayed because it is too large. You can view the blob instead.
File deleted
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment