)]}'
{
  "log": [
    {
      "commit": "031149cd5f22bd858142633c7a763450f42793f7",
      "tree": "2a405fc0c7cae702e5d85eeb3979d560f6caca99",
      "parents": [
        "aa4e23bbb36994708ba72c5f4c83255025d99e07"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri Jul 25 16:00:52 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Jul 28 11:02:15 2014 -0700"
      },
      "message": "Add context to MediaController constructor\n\nThis also adds a convenience method to MediaSession to allow getting\na controller instead of having to create and cache your own.\n\nbug:16561220\nChange-Id: I87f551a7474e71f1cf2f07e0e541c3a4515cd977\n"
    },
    {
      "commit": "aa4e23bbb36994708ba72c5f4c83255025d99e07",
      "tree": "ba6776a3c108a1a31351c212abfb1ba800f34a15",
      "parents": [
        "b214efbb9170a9f6a4991684a63ca59680074cc7"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Jul 24 18:35:11 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri Jul 25 16:22:59 2014 -0700"
      },
      "message": "Add getPackageName to MediaController\n\nThis removes the MediaSessionInfo class and adds a method on the\ncontroller to get the package name. This also converts code that\ndepended on the session\u0027s UUID to use the token for comparison or\nthe Tag in the case of test code that needs a string identifier.\n\nChange-Id: Icb8dc76c70e23e897da8fd07651c524b96372bf9\n"
    },
    {
      "commit": "20e0c50f601e5930a246d4556118423a49c12ca1",
      "tree": "02e5ab04fff88af15912830344c8ddff9774f25f",
      "parents": [
        "a753f4c6cb8558795e673df1896532cd148781e2"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jul 25 14:09:37 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Jul 25 21:11:47 2014 +0000"
      },
      "message": "Offer force-dex-opt when running as root.\n\nRecently we removed the PackageManager inotify triggers, meaning the\nonly supported ways of installing apps were:\n\n-- adb install -r Foo.apk\n-- adb shell stop \u0026\u0026 adb sync \u0026\u0026 adb shell start\n\nIterating on most system apps (like Settings) can use the first\napproach, but it doesn\u0027t work for \"persistent\" processes like\nSystemUI.  (ActivityManager is very particular about how it deals\nwith persistent apps, and it always sticks with the first\nApplicationInfo found at boot.)\n\nSo to enable rapid iteration on persistent apps, we now offer the\none missing piece of forcing a dexopt with a new pm force-dex-opt\ncommand only available to -eng or -userdebug builds.  Typical use\nfor iterating on persistent apps now looks like this:\n\n$ mmm frameworks/base/packages/SystemUI/ \u0026\u0026 adb sync \u0026\u0026\n    adb shell pm force-dex-opt com.android.systemui \u0026\u0026\n    adb shell kill `pid systemui`\n\nYay!\n\nChange-Id: I0ae2467f1d7cda56c70ba20953cd25fa8ee766ff\n"
    },
    {
      "commit": "16c8e3f49497b6046972ae650772f65768366be8",
      "tree": "56ad5dc58ab923e35029d25430d30bc77b218994",
      "parents": [
        "186655285fb5deafc4d56ca8efad2d115dfd6af3"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 24 17:08:17 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jul 25 11:59:48 2014 -0700"
      },
      "message": "PackageInstaller changes based on feedback.\n\nMostly cosmetic changes from API council feedback.\n\nBug: 16543552\nChange-Id: Ic926829b3f77c31f50a899c59b779353daf00d59\n"
    },
    {
      "commit": "b9583c9d93bd1d2c9d506dffae87a5ca2b7f7307",
      "tree": "42d7b26e9fcc1df8db992f4428d675a91f092c83",
      "parents": [
        "ccf9fca47149d102293668c2e81febc175e0329e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 24 17:03:22 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Jul 25 00:30:07 2014 +0000"
      },
      "message": "Turn on debugging override of idle time\n\n\u0027adb shell am idle-maintenance\u0027 has traditionally been used to force\nthe system to consider itself to be in an \"idle\" state.  Unfortunately\nthe new Job Manager hadn\u0027t yet been aware of this.  Rectify the situation.\n\nAlso fixes a bug in debug logging that would cause a system server\ncrash under certain race circumstances.\n\nChange-Id: I8a29bd7757924f8e464865235c344233fc03d8c3\n"
    },
    {
      "commit": "be19c3a91a11508bd12e3355f3b1d9adf7f53194",
      "tree": "905c591f5289e2342a8290bbc6cc1d96e5acf0db",
      "parents": [
        "52ff21d841ad5b39b6def0c286a737fd4b74b2e2"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 21 23:46:05 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 23 02:25:25 2014 +0000"
      },
      "message": "Adding shell commands for grant/revoke of bind app widget permisison.\n\nTesting the app widget APIs requires binding of widgets which is guarded\nby a system signature permission or white listing. Since CTS tests can\nnot be signed with the platform certificate, they should be able to\ntemporariliy white list their package. This command adds the ability to\ngrant and revoke the provilege to bind app widgets to a given package.\n\nChange-Id: I6de1bbf27ac684ec47e61157f19ec6d29e2db979\n"
    },
    {
      "commit": "e5bcff624fb58b6f95be8ddff7f5b6b3bf5d19c7",
      "tree": "0a758d1029f2b8aed41a089330c7fa79564a6a32",
      "parents": [
        "c2ae1a6b455d97c4e89e2bf7b113435dd63bb36f"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Jul 19 15:44:09 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Jul 21 22:18:40 2014 +0000"
      },
      "message": "Rename setApplicationBlocked to setApplicationHidden\n\nThis corrects the expected behavior of the app state. Hidden apps\ncan be installed by the store to be brought out of hidden state.\n\nBug: 16191518\nChange-Id: Id128ce971ceee99ba1dea14ba07ce03bd8d77335\n"
    },
    {
      "commit": "9a445771f57dd15b06db0dbefd66c368d84eec2d",
      "tree": "d418591835aec7c22724e49e0a8681efea5fc39c",
      "parents": [
        "4990e4f0e3d493036e99e1f5fb893635a9b66eb1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 16 11:32:08 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 16 13:38:09 2014 -0700"
      },
      "message": "Install sessions only inherit APK files.\n\nAlso track historical install sessions for debugging purposes.  Hide\nsignature verification API for now.  Clear code cache only after\nkilling the app being upgraded.\n\nBug: 14975160\nChange-Id: I52fc7f11d2506f792236d8a365c8cfed21b46c30\n"
    },
    {
      "commit": "8b4bffcac996b4083e720310a09d315ca1c4a000",
      "tree": "56726422a371d15b204756f80bce5e487d1ed318",
      "parents": [
        "54892c8b813eb2de3c5c6bcd08c90b8dd0abbec8"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Jul 10 13:48:01 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Jul 16 12:03:45 2014 -0700"
      },
      "message": "Make MediaSession and MediaController constructors public\n\nThis makes the MediaSession/Controller constructors public and registers\nwith the system behind the scenes.\n\nThis also adds a bit about needing to call setActive(true) to start receiving\ncommands in MediaSession\u0027s docs.\n\nChange-Id: If882d229b54c36bf0831aca0255052dda667a2bc\n"
    },
    {
      "commit": "69ea974f1712c83a9ad194187237edf1169f9064",
      "tree": "c8d768527b58502da7b575b86ffa1b343044c9e2",
      "parents": [
        "969167dc05a6485a32d160895871cff46fd81884",
        "6c833e07a05c48ca60ee4d72421bf8b1e78dc710"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 15 06:16:37 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 15 00:41:06 2014 +0000"
      },
      "message": "Merge \"Public API for PackageInstaller!\" into lmp-dev"
    },
    {
      "commit": "6c833e07a05c48ca60ee4d72421bf8b1e78dc710",
      "tree": "f16f3c2a12dea6fd5131d82d007fd75cd61fb915",
      "parents": [
        "5c6a8e322227354acbded5c49f44c0b289021bf5"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jul 14 22:44:30 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jul 14 23:06:52 2014 -0700"
      },
      "message": "Public API for PackageInstaller!\n\nFlesh out documentation and finalize first cut of API.  Also surface\ninstallLocation and splitNames through PackageInfo.\n\nBug: 14975160, 15348430\nChange-Id: Ic27696d20ed06e508aa3526218e9cb20835af6a0\n"
    },
    {
      "commit": "ad11eb52fe62b6696df2194cb9e176f7d799e844",
      "tree": "440f9699b759d4b14b20a9280234d352faf2b0ce",
      "parents": [
        "5c6a8e322227354acbded5c49f44c0b289021bf5"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Jul 13 17:33:07 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jul 14 10:57:04 2014 -0700"
      },
      "message": "Pass install result message; path selection.\n\nOops, forgot to include message argument to invoke the new-style\ncallback.  Also use more robust way of generating cluster APK\ndirectory names, and add more logging details on rename failure.\n\nChange-Id: Ifa8abdd1db58b73e13b9a8077ec126cf20a0d90e\n"
    },
    {
      "commit": "01a500ed1c6ae3fff66678144ae637aa8cad0ecc",
      "tree": "579571453290b6824da22fa9748286bfc3acb727",
      "parents": [
        "9fb7b07c6cbdd1c6f394bfc456ccc034619b6727"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 10 22:50:50 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 14 04:06:44 2014 -0700"
      },
      "message": "Delete first draft of media routing APIs.\n\nThe new APIs will not be as tightly integrated into MediaSession.\n\nChange-Id: I5cfd37d9d8d0c5d46c55edb5cf0772a8f1ef13ab\n"
    },
    {
      "commit": "a10311434778ea1be1621c2251c0c8c2966f337b",
      "tree": "3496202e354ae761d7c750e105c610f67f82542d",
      "parents": [
        "e0b0bef75b66f0a87039c8f58c17b1596a2baebe"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Jul 12 18:09:46 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Jul 12 21:12:25 2014 -0700"
      },
      "message": "Package installation listener events.\n\nFlesh out implementation of install session observers.  Carve out 20%\nof published install progress for final system operations such as\ndexopt, etc.\n\nAdd dumpsys output for active install sessions.  Create explicit\nfsync() instead of overriding meaning of flush().  Hack to throw\nIOExceptions over Binder calls.\n\nBug: 14975160, 15348430\nChange-Id: I874457e40c45d2661bc0a526df9285ffea4bb77c\n"
    },
    {
      "commit": "bb580670350b76fa2fcc5ee873f99b7970759cbf",
      "tree": "b4e22eeaaf299d9c5b2272a292fe9117e94bc0b3",
      "parents": [
        "4901d62f1629ef5b9fb4c821e5fafbbfde4b8a47"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 10 12:10:25 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jul 11 16:54:49 2014 -0700"
      },
      "message": "Progress toward installer public API: callbacks.\n\nInstead of surfacing all the existing cryptic error codes, we\u0027re\ngoing to classify them into broad categories when surfacing through\npublic API.  This change introduces InstallResultCallback and\nUninstallResultCallback, and wires them up to existing AIDL\ninterfaces.\n\nAlso start defining general SessionObserver for apps interested\nin general progress details, such as Launcher apps.  Details about\nactive sessions are returned through new InstallSessionInfo objects.\n\nBug: 14975160\nChange-Id: I068e2b0c30135f6340f59ae0fff93c321047f8f9\n"
    },
    {
      "commit": "ec55ef0934b8e0d1bb705434947de817f7be57f1",
      "tree": "4855af37aa2c312bc2a645f5d94c463a2859d516",
      "parents": [
        "2cfc8482267707a671cbe4275ea8927c1aef991a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 08 11:28:00 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 09 16:55:56 2014 -0700"
      },
      "message": "Extend pm to support sessions and split APKs.\n\nSeparate commands to create an install session, stream files into the\nstaging area, and then commit the install.  Streaming can accept data\nfrom stdin across adb, avoiding extra copy from push.\n\nExtend FileBridge to support blocking close().  Always destroy\nsession regardless of result.\n\nBug: 14975160\nChange-Id: Ic3f462e7d1901079b785e210228950cdfa676466\n"
    },
    {
      "commit": "513a074de68a4772a9900e90f38e74ff92c15e7c",
      "tree": "410c98a83b684a34063903496863247c303cb5cb",
      "parents": [
        "8d479b0c2ddb150182bcf510876a240cb869661b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 08 17:10:32 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 08 17:41:29 2014 -0700"
      },
      "message": "Clean up IPackageManager install surface area.\n\nAlso more removal of encryption support.\n\nChange-Id: If525dc5a8422134515f225a8ac4731e968069468\n"
    },
    {
      "commit": "42a1d08df7d417fd4e67eabc91ff05ee77fd9995",
      "tree": "7bfa7e66b153087c56b19c6dd8b340e0ea2ddb42",
      "parents": [
        "95f621a1a4a0891075f1f9daf8e0323aab488793"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jul 07 18:06:18 2014 -0400"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jul 07 18:11:24 2014 -0400"
      },
      "message": "SkBitmap::Config is deprecated, use SkColorType\n\nChange-Id: Ida181d2aac760072cf2d01409edac37699dea216\n"
    },
    {
      "commit": "ab225b301b8b13a141053a33d5dd5eeccfc69887",
      "tree": "e79e890866f6002fb9656ade335cc6bd4b31d812",
      "parents": [
        "7218e9c6beaa066237c6b2aac6d10dd7dc84e0a2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 24 16:28:48 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 24 16:52:09 2014 -0700"
      },
      "message": "Add \u0027fullbackup\u0027 to bmgr\u0027s usage statement\n\nAlso make it handle the list of packages to be backed up as a single\nmultiple-app argument to fullTransportBackup() rather than N calls\neach backing up one app.\n\nChange-Id: I9fe4d5caca54fafef70ffe9af4c26e3941dc5d26\n"
    },
    {
      "commit": "b933055cf3f7f8ea89bfd3bc9c37a3891ff7310a",
      "tree": "7d68b96a6fd02ca6ece664d5c53ee9778ef49d17",
      "parents": [
        "9285d1bf9c57e5f1da8f8d8ef7a6a38b2f0e4ec3"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jun 16 17:31:48 2014 -0400"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Fri Jun 20 10:28:37 2014 -0400"
      },
      "message": "stop using (deprecated) SkBitmap::Config\n\nChange-Id: Ic75b5fc6996578e9d95bd3a220439ec1541d7c3b\n"
    },
    {
      "commit": "d3c8642dae9a1f6db60e2f8e5c7b32cd1b3169df",
      "tree": "8bad91681f0c47e401482db95f630ed6edf4d139",
      "parents": [
        "150bfcd73d53cd824b4ab20161a3d87710ce259b"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Jun 16 14:00:48 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Jun 19 10:37:00 2014 -0700"
      },
      "message": "Remove some more old code and fix Media command\n\nRemoves some more hidden apis from AudioService/Manager. This also\nfixes up Media.java to support commands for the new service to help\nwith debugging. Also fixes a couple bugs that were found while fixing\nup Media.\n\nChange-Id: I68e4aa80a4de430b98236aafc883664b9432c62b\n"
    },
    {
      "commit": "f90f2f8dc36e7243b85e0b6a7fd5a590893c827e",
      "tree": "b2fb1fc49961c7c5f5c1712872ce2ffcfe550a89",
      "parents": [
        "c802c8cda234129c1ce3c7a939bd68a1d5813ce6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 06 14:27:00 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 18 19:20:08 2014 +0000"
      },
      "message": "Support multiple resource tables with same package\n\nIn order to support APK split features, the resource\ntable needs to support loading multiple resource\ntables with the same package but potentially new set\nof type IDs.\n\nThis adds some complexity as the type ID space changes\nfrom dense and ordered to potentially sparse.\n\nA ByteBucketArray is used to store the type IDs in\na memory efficient way that allows for fast retrieval.\n\nIn addition, the IDMAP format has changed. We no longer\nneed random access to the type data, since we store the\ntypes differently. However, random access to entries of\na given type is still required.\n\nChange-Id: If6f5be680b405b368941d9c1f2b5d2ddca964160\n"
    },
    {
      "commit": "8a4c9721a9e09d20c63381c13fa29bd9f7cbc3e3",
      "tree": "b2564620026c0ca6081de864b20ac1d5e6827135",
      "parents": [
        "564054146e7286b0d046591c0bd3195b0e4a6cf3"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jun 16 13:48:42 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jun 17 14:38:44 2014 -0700"
      },
      "message": "Plumb split APKs into public API.\n\nIntroduces new ApplicationInfo fields to surface zero or more split\nAPKs for an application.  Splice these APKs into both the class\nloader and resource system.  Cleaner building of these paths.\n\nRun dexopt() on all split APKs found after a parse, and populate\ninto ApplicationInfo.\n\nChange-Id: I4a376bf4492d84ea95aafa866e106ea43a43e492\n"
    },
    {
      "commit": "afc00e1c81a2ae00dc01bb980bc617f382441102",
      "tree": "116ff9d9668e3209f3950264f2c66b1474d10852",
      "parents": [
        "e54a764cfd83825096edd55dd22cc7b3a6af45da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 17 10:44:05 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 17 20:27:39 2014 +0000"
      },
      "message": "Change am get-config command to use ABI string array\n\nThere is a list of supported ABIs in android.os.Build which\nis ordered by preference. This is a more flexible list to use\ninstead of 2 fixed ABIs.\n\nChange-Id: I6aa3b39b5ffa888ed83a870b937e18328dd6de39\n"
    },
    {
      "commit": "2c749d242759ea36c0229ea933f22b6363337b19",
      "tree": "26f9c01de17f8fca123212e2946e4093d8b9f819",
      "parents": [
        "b69fc08303af782539d09d1775e6f63d4ccad3a1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 04 13:00:29 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 16 23:01:19 2014 +0000"
      },
      "message": "New command to get device config\n\nChange-Id: I7172a3a150fd83e2382ca3e4e4a0188758189f14\n"
    },
    {
      "commit": "9ff53a7100b1a40f5d2df3eb19a2f3f2fff39a46",
      "tree": "162c23a51e116f9506e7d6801236dd2e2c8f3788",
      "parents": [
        "ad60891a6ecaf2a5815677b33e96afe7f49ee113"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 03 17:20:07 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Sun Jun 15 17:35:33 2014 -0700"
      },
      "message": "Implement full data backup through transport\n\nCurrently no timed/scheduled full-data backup operations are\nperformed by the OS, but the plumbing is now in place and can\nbe tested using \u0027adb shell bmgr fullbackup pkg [pkg2 pkg3 ...]\u0027.\n\nThe LocalTransport test transport implementation has been augmented\nto support the new full-data backup API as well.\n\nIn addition, \u0027adb backup\u0027 now takes the -compress/-nocompress\ncommand line options to control whether the resulting archive is\ncompressed before leaving the device.  Previously the archive was\nalways compressed.  (The default is still to compress, as it will\nusually reduce the archive size considerably.)\n\nInternally, the core implementation of gathering the full backup\ndata stream from the target application has been refactored into\nan \"engine\" component that is shared by both \u0027adb backup\u0027 and the\ntransport-oriented full backup task.  The archive file header\ngeneration, encryption, and compression logic are now factored out\nof the engine itself instead of being hardwired into the data\nhandling.\n\nBug 15329632\n\nChange-Id: I4a044faa4070d684ef457bd3e11771198cdf557c\n"
    },
    {
      "commit": "439688cf3940571fde9063a02e5f539857b66142",
      "tree": "c79b66dbdc0ececb24b6f10f6f1483edf90db1a3",
      "parents": [
        "104e14531ca2212117540d8b6abc06ab67564ebc",
        "6de057816f2feb8e0ecbd2e9ccf73ad53e4dc7ed"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 12 00:03:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 12 00:03:55 2014 +0000"
      },
      "message": "am 6d758619: Merge \"Implement control of auto power save mode.\" into lmp-preview-dev\n\n* commit \u00276d758619d90a0dda7f1136dcd44d0ac02cdada7e\u0027:\n  Implement control of auto power save mode.\n"
    },
    {
      "commit": "14272302a8b635bd8e9267c1411d0a7ef11bff45",
      "tree": "7d77f5ef5ca90889f4afed32bdf27e668b1afac6",
      "parents": [
        "95981dc8ad08002bab932cefcb6b07c6944491f5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 10 23:13:02 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 11 10:34:26 2014 -0700"
      },
      "message": "Implement control of auto power save mode.\n\nFollow the setting for auto power save mode in both\nbattery service and battery UI.  Default level is 15 when\nsetting is not set; otherwise it is whatever the setting\ngives, with 0 meaning auto battery save is off.\n\nChange how we define the \"turn off warn\" level to be\nan adjustment from the warn level, so we can have a good\nvalue for whatever auto setting is set.\n\nFix power manager to never go in to power save mode when\nplugged in, even if the user has manually turned it on.\n\nAdd new delete option to settings command, because I needed\nit for testing.\n\nChange-Id: I512b691df84399d50b8e751fd50732c6093ebe85\n"
    },
    {
      "commit": "dad8f819a710510be28e9fdeee84f9b5b2ddacbf",
      "tree": "34d947b5c4459e017b3e14bb3f43d8f0e7b02b53",
      "parents": [
        "e4d7fc02ab0c333f5cd898928f97e7bce812dfa0",
        "116bdbd823b607d860b039ec334a1f985eed7a7f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jun 03 12:01:53 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 03 12:01:53 2014 +0000"
      },
      "message": "Merge \"Add an --abi argument to \"pm install\"\""
    },
    {
      "commit": "116bdbd823b607d860b039ec334a1f985eed7a7f",
      "tree": "948d436a288ed6e2edc62988df6394e736e92b82",
      "parents": [
        "8627cef5382035dac8f3e68823b239724cc39708"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 29 11:51:59 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jun 03 11:35:49 2014 +0100"
      },
      "message": "Add an --abi argument to \"pm install\"\n\nThis allows callers to force an install to a particular\nABI. This is intended only for testing (and CTS) and is\nnot meant for usage by the installer package.\n\nbug: 14453227\n\n(cherry picked from commit 6431d11cd420536aaa9d93ae510a3151ccc4df1d)\n\nChange-Id: I85d4f8785deea02a6a4d3cb0b05e6ef8bf64826b\n"
    },
    {
      "commit": "d8e9050e22265ba49ff2d8b48f01162e09a4324c",
      "tree": "037fcc1b1aba728eed1b1e5fdb7c09c97bb5c807",
      "parents": [
        "559321abbfd2e66763accc172f3596e4cf7f9172",
        "a312c03fd830c489ffc81fad0812826b093b73ee"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jun 02 17:44:47 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 02 17:44:47 2014 +0000"
      },
      "message": "Merge \"Read data from stdin/stdout to follow adb change.\""
    },
    {
      "commit": "dfed4bc99f9f3d48ee7bf9e8ea051a8d5bc4f299",
      "tree": "166fb21faaced287ba8dfb8adc9324a8df436a33",
      "parents": [
        "8c29df5afcde5e1dd27c3ca21cfdec2af47205d1",
        "f7871c31469c6245c1b232a15104704f7481103c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 11:51:03 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 11:51:03 2014 +0000"
      },
      "message": "am f7871c31: am b9b31f4b: am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027f7871c31469c6245c1b232a15104704f7481103c\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "f7871c31469c6245c1b232a15104704f7481103c",
      "tree": "cf332f40710fa1359c80c63c93532438a80991bf",
      "parents": [
        "92ab0b91cdcb83c3cb101386d01f04c7d7dfd404",
        "b9b31f4b8eda123e7b544d1a0fa886576064adca"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 10:49:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 10:49:00 2014 +0000"
      },
      "message": "am b9b31f4b: am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027b9b31f4b8eda123e7b544d1a0fa886576064adca\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "b9b31f4b8eda123e7b544d1a0fa886576064adca",
      "tree": "f08261f8c8c2458969df0c840a4789d5eb06463d",
      "parents": [
        "52b4146273ea29f6d1ed89e4de79f2d7ff0d71dc",
        "bd4d320344833ce67dad3a4e10a61d0502a81d0e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 10:41:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 10:41:24 2014 +0000"
      },
      "message": "am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027bd4d320344833ce67dad3a4e10a61d0502a81d0e\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "a312c03fd830c489ffc81fad0812826b093b73ee",
      "tree": "7562a82de9ab19ffa0f1f5a2f9c9b83f91b81257",
      "parents": [
        "05ad48206a082057e17723d32493c153faa6881e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu May 29 18:03:22 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu May 29 18:03:22 2014 -0700"
      },
      "message": "Read data from stdin/stdout to follow adb change.\n\nChange-Id: I29ee5e05a538c6836f18b9cc9331c74f41936b29\n"
    },
    {
      "commit": "00f535845bebe4fba1de77ebd0119c7c23197a4f",
      "tree": "b951e26901f724289d97299103b4445ef3e8f1c3",
      "parents": [
        "a46d3e11587567fc3caa1a32112267bae4a68864",
        "9890e341bf9d565309cd7db5e6c4194c66c0a1d8"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed May 28 18:31:38 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 28 18:31:38 2014 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Add sourceCrop to screenshot\""
    },
    {
      "commit": "1bdbd4be02aec4fd164ba41c164735639b9c7e15",
      "tree": "419c917e1813053a43af5af700563bb021bbcffb",
      "parents": [
        "27692098d7afb77237a98d25da2e6cdfe0a85883"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed May 14 19:53:22 2014 +0100"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Fri May 23 18:37:34 2014 +0100"
      },
      "message": "Add ability to uninstall per user to adb shell pm.\n\nDefault is still uninstall for all users, but if --user\nis passed in it will just uninstall for that user.\nFor system apps if --user is supplied it will uninstall\nrather than revert to the current system version.\n\nChange-Id: If1be0f78f01391f7ac6b53150dfeeccd0c002899\n"
    },
    {
      "commit": "9890e341bf9d565309cd7db5e6c4194c66c0a1d8",
      "tree": "f885b4dcc80f68147440940388f386f69312a03c",
      "parents": [
        "c33fb2b5c014f37ce36dbc12eff1e969562f7d50"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu May 22 16:12:54 2014 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri May 23 09:19:02 2014 -0700"
      },
      "message": "SurfaceFlinger: Add sourceCrop to screenshot\n\nAdds a sourceCrop Rect parameter to screenshot commands, which allows\nclients to capture only a portion of the screen instead of the whole\nscreen.\n\nBug: 15137922\nChange-Id: I629447573cd34ffb96334cde7ba02490b9ea06d8\n"
    },
    {
      "commit": "8dcfefd652fa2c5612b3acbc4bf842d2dfb1cf21",
      "tree": "012fc44dd25c9ab1005d993df0db0b77711fa7fc",
      "parents": [
        "402120a2236b294dff9a51461cb22400a6ef67f6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 18:12:59 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 16 10:30:00 2014 +0100"
      },
      "message": "Support an ABI flag for instrumentation.\n\nAllows us to choose what ABI a process uses when\nlaunching it with \"adb shell am instrument\", for eg.\n\nadb shell am instrument --abi arm64-v8a component/runner\n\nNote that we only perform very basic validation of the\nABI. In general, there is no guarantee that the app will\nlaunch with the instruction set we choose, for eg. if it\nhas native libraries that are for a different ABI.\n\nbug: 14453227\n\nChange-Id: Ifb7e89b53675080dc87941091ee5ac360f218d7f\n"
    },
    {
      "commit": "72a194e6d5d8427ee9816364781b180afffc5393",
      "tree": "6c9ea3a505e79fec7400654915fa04ad36a07326",
      "parents": [
        "1e74c37f8e1acb595f407e0f65744bb6b00c9314",
        "1810927a9b8f6d2597d18c0e77389b4a6fcb5118"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 10:34:43 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 10:34:43 2014 +0000"
      },
      "message": "am 1810927a: am eabc93db: am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u00271810927a9b8f6d2597d18c0e77389b4a6fcb5118\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "1810927a9b8f6d2597d18c0e77389b4a6fcb5118",
      "tree": "25d72c50802f56c6405f16172adb2d46e0277ff0",
      "parents": [
        "d850be5d1491d255a64db9bc95334748e455c782",
        "eabc93db1020be4b71f0db7d5b5d3a7991f3c264"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 09:45:33 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 09:45:33 2014 +0000"
      },
      "message": "am eabc93db: am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u0027eabc93db1020be4b71f0db7d5b5d3a7991f3c264\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "eabc93db1020be4b71f0db7d5b5d3a7991f3c264",
      "tree": "55afbba6f2ef664c708013aa6233fe580526184b",
      "parents": [
        "c0f18b9d0cce0c140b1274055faabff732f1e27c",
        "c4c08803a8cc090aa27720e97df342231e8433af"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 09:41:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 09:41:40 2014 +0000"
      },
      "message": "am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u0027c4c08803a8cc090aa27720e97df342231e8433af\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "559484ed6a3ed98980579e35d12543be2835aa35",
      "tree": "85168a027a7d7d333488e69da6337016d82c14e6",
      "parents": [
        "b7d7cbc9c3a9315a5c5ecd85e16f5916c4bc3f3a"
      ],
      "author": {
        "name": "Yongqin Liu",
        "email": "yongqin.liu@linaro.org",
        "time": "Tue May 06 23:30:40 2014 +0800"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 14 18:48:42 2014 +0100"
      },
      "message": "app_process: change app_process a symlink of primary version\n\nChange app_process to be a symlink to the primary version\nand have app_process32/app_process64 be the 32-bit/64-bit\nversions respectively.\n\nThis will make it possible to use the primary zygote for\nam/pm commands and other scripts that use app_process and\ndon\u0027t need a specific zygote.\n\nSigned-off-by: Yongqin Liu \u003cyongqin.liu@linaro.org\u003e\nChange-Id: Ibef545994eb95ddc82101c95df613ad1d06345e6\n"
    },
    {
      "commit": "7b81602f3c18df8a4ca0342c514af8f7e394c0d7",
      "tree": "eab3e4610cff0db0745e151cfacc780ae713b306",
      "parents": [
        "4ddebf7f5b85d082c56f6a8aad11bd0c5ca68fde"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 18 15:25:25 2014 -0700"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed May 14 03:56:34 2014 -0700"
      },
      "message": "Enabling internal msg apis\n\nNetworkFactory and NetworkAgent.  First trying with wifi and\ngetting rid of WifiStateTracker.\n\nConflicts:\n\tapi/current.txt\n\tservices/core/java/com/android/server/ConnectivityService.java\n\nChange-Id: I7f0ec13d7d8988b32f3c6dc71f72012f3349fe02\n"
    },
    {
      "commit": "b6c04899e1ed614985d638b55dafe2c20e7b673a",
      "tree": "66efba07adcb948d6a14af641bb1457b8719913d",
      "parents": [
        "fd30a0e7b747eb4b781ef8def3008626f14eddfe",
        "c8a045d451522adab5226b0063f3a15d34542bf7"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:43:23 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:43:23 2014 +0000"
      },
      "message": "am c8a045d4: am 41f40581: Merge \"Fix x86 build in app_process.\"\n\n* commit \u0027c8a045d451522adab5226b0063f3a15d34542bf7\u0027:\n  Fix x86 build in app_process.\n"
    },
    {
      "commit": "fd30a0e7b747eb4b781ef8def3008626f14eddfe",
      "tree": "156b42f9d38003eabb8150c1e3e117d247f5b2b3",
      "parents": [
        "6c2e806200dc1a422aa681bfd78aae1eb8f1d508",
        "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:43:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:43:19 2014 +0000"
      },
      "message": "am ff34f6fa: am 27b03e62: Merge \"Create arch specific cache dirs during zygote startup.\"\n\n* commit \u0027ff34f6faaad21f5f72decc0b6a0bbde8dab68e29\u0027:\n  Create arch specific cache dirs during zygote startup.\n"
    },
    {
      "commit": "c8a045d451522adab5226b0063f3a15d34542bf7",
      "tree": "84ea46328305477785a0416373e8f0c219e779b1",
      "parents": [
        "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29",
        "41f40581ee0284660d30be8ef28f6bf721c4ce10"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:39:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:39:55 2014 +0000"
      },
      "message": "am 41f40581: Merge \"Fix x86 build in app_process.\"\n\n* commit \u002741f40581ee0284660d30be8ef28f6bf721c4ce10\u0027:\n  Fix x86 build in app_process.\n"
    },
    {
      "commit": "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29",
      "tree": "23008260f943fcbc69eb79ed0e2307f4eeb69f6e",
      "parents": [
        "703442238200c2f1a35b51e7aadc693322feb69d",
        "27b03e6272479ed82762a4a5d6e4be4f26c1ed58"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:39:52 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:39:52 2014 +0000"
      },
      "message": "am 27b03e62: Merge \"Create arch specific cache dirs during zygote startup.\"\n\n* commit \u002727b03e6272479ed82762a4a5d6e4be4f26c1ed58\u0027:\n  Create arch specific cache dirs during zygote startup.\n"
    },
    {
      "commit": "d6183204e438a738b68301aeac452c0be41c8cb3",
      "tree": "76da5e53d9141f3689a49bb91a360d005b4183ff",
      "parents": [
        "973cdeed8eb9aa250b1b3bd5549df0e0dc78457e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:27:49 2014 +0100"
      },
      "message": "Fix x86 build in app_process.\n\nLook for __i386__ and not __x86__.\n\n(cherry picked from commit 47d526217b3fd0d17ba751c66d25cfaf1c6ed7cd)\n\nChange-Id: I848ba351c378e59ab6744ca1983ae4463ae75ba4\n"
    },
    {
      "commit": "973cdeed8eb9aa250b1b3bd5549df0e0dc78457e",
      "tree": "dc92e8b3a7cdc7b32f14ddaf0f85298ba9abdb8e",
      "parents": [
        "fbb0ab02bed5c49159acb3dba6848a154e524169"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 25 11:43:22 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:26:49 2014 +0100"
      },
      "message": "Create arch specific cache dirs during zygote startup.\n\nThe runtime expects them to exist before it\u0027s launched.\nThe boot image / art files are created during the first\nzygote launch.\n\n(cherry picked from commit da738713e4e2120a324e8ab6fd11aa0e54a3c66e)\n\nChange-Id: I7472aa25c16a1cf95791af2bdf80ed0d73123872\n"
    },
    {
      "commit": "52adfdaafd464348628d9257101f24a67d7c8bbb",
      "tree": "06e21eb893fdcdee82e81a8de2b8adc88a7e8479",
      "parents": [
        "10882ec8d7890c7d5712e6b7f23e007e09bd0062",
        "516130ccb1841afb6ef154c28269d91594925429"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 17:36:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 17:36:10 2014 +0000"
      },
      "message": "am 516130cc: am dbbf431b: am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027516130ccb1841afb6ef154c28269d91594925429\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "6eb1b2611cd2db7f2c2063f8be219d4ef19d11d0",
      "tree": "901d755c7c0aa4091b63ed70deb90497b9aee1d2",
      "parents": [
        "ab45d1d6d296f4f61632a472cf7bd8626c8d5a06"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "message": "Fix x86 build in app_process.\n\nLook for __i386__ and not __x86__.\n\nChange-Id: Iffa3709f9d0c96cce17f3183a6f036a78eccc787\n"
    },
    {
      "commit": "516130ccb1841afb6ef154c28269d91594925429",
      "tree": "bac72a0ed5301c698026fc567a19f60c2d92e320",
      "parents": [
        "d21082ca0c116ba737e6e93c2917d0b557cc48fc",
        "dbbf431b289bb7a01b43db3412ecab00abe18362"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 15:37:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 15:37:44 2014 +0000"
      },
      "message": "am dbbf431b: am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027dbbf431b289bb7a01b43db3412ecab00abe18362\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "dbbf431b289bb7a01b43db3412ecab00abe18362",
      "tree": "4f5d00c79726901706cd534547d4d4707b2e9e42",
      "parents": [
        "9a76e9ba1adbdf7cc431b1e6fe454cf0c5d900de",
        "d0f7f41828493b0679e908f7bb3ed3b8e838c463"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 15:12:58 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 15:12:58 2014 +0000"
      },
      "message": "am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027d0f7f41828493b0679e908f7bb3ed3b8e838c463\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "0c1eeb3c8ab53954218d3b8f4be08ff21be3e985",
      "tree": "3a59dbad3788ed44780ea728f306e3eb84d915fe",
      "parents": [
        "ade631eed0df228e343f2a00db653058ff588846"
      ],
      "author": {
        "name": "Mykola Kondratenko",
        "email": "mykola.kondratenko@sonymobile.com",
        "time": "Tue Apr 15 09:35:44 2014 +0200"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 10:58:20 2014 +0000"
      },
      "message": "Freeing frame map\n\nFileMap memory is never released until application exit\n\nRelease it now as the texture is already loaded and the memory\nused for the packed resource can be released.\n\nChange-Id: Id08a1e466337b3a0179684eb6a444e18147ee343\n"
    },
    {
      "commit": "dfacf855fd91eb2d40891721ad4b92ed65d0b46d",
      "tree": "0c680d4bb302de68f8816be038daf98efed21d35",
      "parents": [
        "aa2112f671e4f14555e25a6d765ce4bad454a43f",
        "d1e127e141a8080477f3b3becb792f138ca9ab65"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 08:34:56 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 30 08:34:56 2014 +0000"
      },
      "message": "Merge \"Create arch specific cache dirs during zygote startup.\""
    },
    {
      "commit": "d1e127e141a8080477f3b3becb792f138ca9ab65",
      "tree": "53544b6d9b19b84d4f712502a93406f4bf470266",
      "parents": [
        "19db0f036aa889ff05220b630262461e333faa85"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 25 11:43:22 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 09:26:05 2014 +0100"
      },
      "message": "Create arch specific cache dirs during zygote startup.\n\nThe runtime expects them to exist before it\u0027s launched.\nThe boot image / art files are created during the first\nzygote launch.\n\nChange-Id: I5ed0ad4854dc7785246344c8f6eaf54e560feb7d\n"
    },
    {
      "commit": "293513a59d36cd96a3e474dde5981380d372d8c9",
      "tree": "4268c9994be194a7f4fccdecd089af58516d0953",
      "parents": [
        "1866e5dc8bb04b58a67e54f66cb4ec22e878667d",
        "0b62467b142b61ee1e449ba958ba37dfd961ef56"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 16:07:29 2014 -0700"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 16:07:29 2014 -0700"
      },
      "message": "Merge commit \u00270b62467b142b61ee1e449ba958ba37dfd961ef56\u0027 into HEAD\n"
    },
    {
      "commit": "d37ae7c13d527a0019275fda44ce4eb83fd99bed",
      "tree": "9e81ce188574bf62e4d16e8402b843b10faca1bc",
      "parents": [
        "15c32f2699f03ba2065e663b3beb2c8d328f42ef",
        "ab5834545da906f1a150672ead825c28a2e1f82a"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 22:34:54 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 29 22:34:54 2014 +0000"
      },
      "message": "am ab583454: am 1866e5dc: am af40649e: Merge \"Set NO_NEW_PRIVS on zygote init\"\n\n* commit \u0027ab5834545da906f1a150672ead825c28a2e1f82a\u0027:\n  Set NO_NEW_PRIVS on zygote init\n"
    },
    {
      "commit": "ab5834545da906f1a150672ead825c28a2e1f82a",
      "tree": "0fe672f230c99f56a18eece3bd531b5f2036af73",
      "parents": [
        "60037302208be033442cc3f3c50a25c7064ebbd1",
        "1866e5dc8bb04b58a67e54f66cb4ec22e878667d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 22:26:41 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 29 22:26:41 2014 +0000"
      },
      "message": "am 1866e5dc: am af40649e: Merge \"Set NO_NEW_PRIVS on zygote init\"\n\n* commit \u00271866e5dc8bb04b58a67e54f66cb4ec22e878667d\u0027:\n  Set NO_NEW_PRIVS on zygote init\n"
    },
    {
      "commit": "195c73c9b2c5be50ab325099dc2160215ac7562a",
      "tree": "d96f10bd5467d1c3788e9393a6b9f5ee367c0b2c",
      "parents": [
        "5c220cc4e4c0584a9083529b58e30e17ab7d2d9e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Apr 25 15:01:24 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 15:10:58 2014 -0700"
      },
      "message": "Set NO_NEW_PRIVS on zygote init\n\nWhen app_process/zygote starts, make sure PR_SET_NO_NEW_PRIVS is set.\nThis prevents zygote spawned apps from acquiring new privileges\non exec.\n\nIn particular, this allows the CTS test\nandroid.os.cts.SecurityFeaturesTest#testNoNewPrivs() to pass if ART is set\nas the default runtime.\n\nChange-Id: I81139cda999c7b1430242561aad28f566e9b6da0\n"
    },
    {
      "commit": "28f0877073e0ebc59f1eeeb6e0d54b614b9d3fa5",
      "tree": "715d463e05f8f558335a9919e038334d51460a6d",
      "parents": [
        "bdd4491b322bebd96b99da508ec7b0b7d59d97ae"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 16 09:41:58 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 28 08:54:17 2014 -0700"
      },
      "message": "Allow custom wallpaper and boot animation.\n\nAdd new \"ro.config.wallpaper\" and \"ro.config.wallpaper_component\"\nproperties which may be defined outside of the bundled framework\nresources.  Falls back to bundled resources when properties are\nundefined.\n\nAlso look for boot animation under OEM partition.\n\nBug: 13340779\nChange-Id: Ibdc9935dbdaae3319bf63b40573de0503d82ae67\n"
    },
    {
      "commit": "91097de49b0f683b00e26a75dbc0ac6082344137",
      "tree": "82c3185634a71233ce2e81a3645b07b1ba55f412",
      "parents": [
        "23af77a3cd1febc740d885ff03ead09837df269c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 04 18:02:06 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 24 17:48:58 2014 -0700"
      },
      "message": "Initial implementation of new voice interaction API.\n\nThis gives a basic working implementation of a persist\nrunning service that can start a voice interaction when\nit wants, with the target activity(s) able to go through\nthe protocol to interact with it.  It may even work when\nthe screen is off by putting the activity manager in the\ncorrect state to act like the screen is on.\n\nIncludes a sample app that is a voice interation service\nand also has an activity it can launch.\n\nNow that I have this initial implementation, I think I\nwant to rework some aspects of the API.\n\nChange-Id: I7646d0af8fb4ac768c63a18fe3de43f8091f60e9\n"
    },
    {
      "commit": "f4567f0c50e88261dd897a9933b5d885c1406a45",
      "tree": "28c5f203a67d6c696b20ab471e5e911de91c8cbe",
      "parents": [
        "e255d7399f46de4b4e3d94b95b26df3408274394",
        "56cc5ba79bdf75a73281dc73f13169a409d96c28"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 24 15:43:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 24 15:43:24 2014 +0000"
      },
      "message": "am 56cc5ba7: am 8d47f23e: am dbb0de21: Merge \"Fix a typo in an assertion.\"\n\n* commit \u002756cc5ba79bdf75a73281dc73f13169a409d96c28\u0027:\n  Fix a typo in an assertion.\n"
    },
    {
      "commit": "56cc5ba79bdf75a73281dc73f13169a409d96c28",
      "tree": "f25ddc190d7b4e268f4235b2e2dba1b9d1b9d3a0",
      "parents": [
        "8f9d92c4ca5233607ca01dac0b3b66fde5539307",
        "8d47f23e43760dcbf051aaeffff668c3c6340276"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 24 09:01:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 24 09:01:44 2014 +0000"
      },
      "message": "am 8d47f23e: am dbb0de21: Merge \"Fix a typo in an assertion.\"\n\n* commit \u00278d47f23e43760dcbf051aaeffff668c3c6340276\u0027:\n  Fix a typo in an assertion.\n"
    },
    {
      "commit": "6bd762289b911e8876759ebbfd9e8960ba825844",
      "tree": "6837055e52424d78e7c3e024e16ebc841895a59e",
      "parents": [
        "683cf1bffe33f49f26d46201f96cd2eff60e8192"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 23 16:54:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 23 16:54:33 2014 -0700"
      },
      "message": "Fix a typo in an assertion.\n\nChange-Id: I3e97bb3cb8070c0ec0c6b97769f1da3e7b4ef8f5\n"
    },
    {
      "commit": "846318a3250fa95f47a9decfbffb05a31dbd0006",
      "tree": "c5d28f5d77e1fd625117e65bc9d24acfdfb6b94e",
      "parents": [
        "fb5d9f338153f569775bbc76177cab05441999c1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 04 12:12:41 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Apr 22 21:06:49 2014 -0700"
      },
      "message": "Allow prefix-based Uri permission grants.\n\nDefine new FLAG_GRANT_PREFIX_URI_PERMISSION which indicates that a\nUri permission grant should also apply to any other Uris that have\nmatching scheme, authority, and path segments.  For example, a prefix\ngrant for /foo/ would allow /foo/bar/ but not /foo2/.\n\nAllow persistable and prefix grants to be issued directly through\ngrantUriPermission().  Relaxing persistable is fine, since it still\nrequires the receiver to actively take the permission.\n\nSince exact- and prefix-match grants for the same Uri can coexist,\nwe track them separately using a new UriGrant key.  (Consider the\ncase where an app separately extends READ|PREFIX and WRITE for\nthe same Uri: we can\u0027t let that become READ|WRITE|PREFIX.)\n\nFix revoke to always take away persisted permissions.  Move prefix\nmatching logic to Uri and add tests.  Add new flags to \"am\" tool, and\nvarious internal uses around Intent and Context.  Switch some lagging\nusers to ArraySet.\n\nBug: 10607375\nChange-Id: Ia8ce2b88421ff9f2fe5a979a27a026fc445d46f1\n"
    },
    {
      "commit": "cee823e4d4d3a7217cbaf8fcdd10da7999881290",
      "tree": "ff7b6a024bc52516e65dc92c96c3335824a8c9c0",
      "parents": [
        "1c3f409284b47312c1c7e5d36283df9a05d29dfb"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Apr 15 11:36:20 2014 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Apr 15 19:28:08 2014 -0400"
      },
      "message": "Add \u0027read\u0027 subcommand to the \u0027content\u0027 tool.\n\nAccess raw content exposed by content provider\nopenFile uris.\n\nBug:14079104\nChange-Id: I9ef0e19f9354fa12408df1583b211a8d8a2e9fdb\n"
    },
    {
      "commit": "db8b130a19484cb6018667905e64d42ab793654f",
      "tree": "80e2815f3685e00f455c78d91d4657adb6888f47",
      "parents": [
        "dc800e85138f3ab57303a879b3e1abd109b90247",
        "964570044ef6b5d721a1372b2bb65c4585947353"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 14 15:49:25 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 14 15:49:25 2014 +0000"
      },
      "message": "am 96457004: am 549ae327: am aa19a2f6: Merge \"Don\\\u0027t compare String8s to NULL.\"\n\n* commit \u0027964570044ef6b5d721a1372b2bb65c4585947353\u0027:\n  Don\u0027t compare String8s to NULL.\n"
    },
    {
      "commit": "964570044ef6b5d721a1372b2bb65c4585947353",
      "tree": "78c046acec1d3988da018a66e885f3754c911500",
      "parents": [
        "eaa8a6b7feb4a520f48654b087223ccaf49b6a2f",
        "549ae327245a844862065dc9bb0562544e8c3beb"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 14 08:46:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 14 08:46:17 2014 +0000"
      },
      "message": "am 549ae327: am aa19a2f6: Merge \"Don\\\u0027t compare String8s to NULL.\"\n\n* commit \u0027549ae327245a844862065dc9bb0562544e8c3beb\u0027:\n  Don\u0027t compare String8s to NULL.\n"
    },
    {
      "commit": "90c75cf02e8e36be8679273f4ea15fd145001033",
      "tree": "8619abb2bafa9ece6622855ec829b0573d4f99bb",
      "parents": [
        "b093e485bbd790cc4d9678451c8cce4d361c2cf2"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Sat Apr 12 12:25:50 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Sat Apr 12 12:25:50 2014 +0100"
      },
      "message": "Don\u0027t compare String8s to NULL.\n\nUse String8::isEmpty instead. Note that this code path is hit\nonly if the zygote calls ::exit, and that never happens unless\nthe VM invocation fails.\n\nChange-Id: I0e7d3a86a79b12b2174ca3bf0dbe1904e33c041a\n"
    },
    {
      "commit": "26ad3af74d4b8a6f960de7a4370684a987551f6d",
      "tree": "13b175e7ec45411f71d3ed9f7e2b1cc78df30017",
      "parents": [
        "4bdcd299da48f9abe5f9c67abed0dbe79080445d",
        "c3255ae04c8bec36f6701b92bf645323558e23c1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 11 10:02:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 11 10:02:17 2014 +0000"
      },
      "message": "am c3255ae0: am de442781: am 909a6a0e: Merge \"Dual zygote cleanup.\"\n\n* commit \u0027c3255ae04c8bec36f6701b92bf645323558e23c1\u0027:\n  Dual zygote cleanup.\n"
    },
    {
      "commit": "c3255ae04c8bec36f6701b92bf645323558e23c1",
      "tree": "30ef01bb6382cb45710565a05e411a4f6a6c6c7f",
      "parents": [
        "55dab4dd3b5b56ade91c012d688b581b6cbdebdf",
        "de442781cd4f7404e8aaa3f7ca5d1d3fc28cccc6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 11 09:57:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 11 09:57:27 2014 +0000"
      },
      "message": "am de442781: am 909a6a0e: Merge \"Dual zygote cleanup.\"\n\n* commit \u0027de442781cd4f7404e8aaa3f7ca5d1d3fc28cccc6\u0027:\n  Dual zygote cleanup.\n"
    },
    {
      "commit": "d35d3e5d391b8daf20f9af2c5f01d5ff1985c1ee",
      "tree": "d5ffc966f3e4d3bf0711209213e73e03651d6749",
      "parents": [
        "09e13cc5f9f98382376eb49bfa6ceb94a50d37a1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 10 12:13:06 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 10 12:15:39 2014 +0100"
      },
      "message": "Dual zygote cleanup.\n\n- Use different process names for the 32 / 64 bit zygote.\n- Pass command line arguments correctly. The first unmatched\n  argument must be passed through to the java main class.\n\nChange-Id: I952ebbdbba941f118d992354b9bd0ada2dade417\n"
    },
    {
      "commit": "7be06900a824babd17c5f4e018c08aeca9ba57e3",
      "tree": "e9a7c6ad493e0128c784dcbc6482cffbead570b3",
      "parents": [
        "8ee0b48d607fd6afc5e75f56bdadce19272c60ff",
        "9f777008eaead3cb9cee80d0c00e5a3d55de9de7"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:06:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:06:14 2014 +0000"
      },
      "message": "am 9f777008: am 05f980d4: am d4b64409: Merge \"Make zygotes aware of their supported ABIs.\"\n\n* commit \u00279f777008eaead3cb9cee80d0c00e5a3d55de9de7\u0027:\n  Make zygotes aware of their supported ABIs.\n"
    },
    {
      "commit": "8ee0b48d607fd6afc5e75f56bdadce19272c60ff",
      "tree": "d021d0fbdebf4b9d1607a359f69adb3a51283034",
      "parents": [
        "a981e3b01ae6af2b67e582f0d1cbb95560d05626",
        "97175deb446cdaca7f3910b71940cb443bda3cc4"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:06:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:06:10 2014 +0000"
      },
      "message": "am 97175deb: am 3856a219: am cecfb94f: Merge \"Clean up argc / argv processing for runtime args.\"\n\n* commit \u002797175deb446cdaca7f3910b71940cb443bda3cc4\u0027:\n  Clean up argc / argv processing for runtime args.\n"
    },
    {
      "commit": "9f777008eaead3cb9cee80d0c00e5a3d55de9de7",
      "tree": "95241374d0e30c18b265fb376a65ca3ec84d8a70",
      "parents": [
        "97175deb446cdaca7f3910b71940cb443bda3cc4",
        "05f980d42d4926ab2130cdcf9e646eb610a7080b"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:02:18 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:02:18 2014 +0000"
      },
      "message": "am 05f980d4: am d4b64409: Merge \"Make zygotes aware of their supported ABIs.\"\n\n* commit \u002705f980d42d4926ab2130cdcf9e646eb610a7080b\u0027:\n  Make zygotes aware of their supported ABIs.\n"
    },
    {
      "commit": "97175deb446cdaca7f3910b71940cb443bda3cc4",
      "tree": "7f316f4f074f8427d3046f99b683b97136cc3b14",
      "parents": [
        "dc7eb9c947f36cbd34021663845bcbb090c3169d",
        "3856a219fa414ee53c5ef3a0c35dae35e2ca80b1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:02:08 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:02:08 2014 +0000"
      },
      "message": "am 3856a219: am cecfb94f: Merge \"Clean up argc / argv processing for runtime args.\"\n\n* commit \u00273856a219fa414ee53c5ef3a0c35dae35e2ca80b1\u0027:\n  Clean up argc / argv processing for runtime args.\n"
    },
    {
      "commit": "c41638cb759ce569630ffae4c5c4cdee1b0f3b82",
      "tree": "06f51dec3427c6e8322816b2e43f2bb784f28fe0",
      "parents": [
        "22ec1eefa4dc8e12f7da8e8750d4770144941526"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 07 13:56:15 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 13:41:15 2014 +0100"
      },
      "message": "Make zygotes aware of their supported ABIs.\n\nQuery system properties for the list of ABIs and pass\nit as a command line argument to ZygoteInit.\n\nAlso add a new Zygote command that returns this list of\nABIs to peers.\n\nChange-Id: I68034c6f63fa626911122579a011a0a25a8cda94\n"
    },
    {
      "commit": "22ec1eefa4dc8e12f7da8e8750d4770144941526",
      "tree": "f5ca6c4f0055e8c4ef01cf484abc65d983ec990b",
      "parents": [
        "a5608acbd7647e0fd9aa87e5319715b0cbd6b0c0"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 07 12:44:58 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 13:39:41 2014 +0100"
      },
      "message": "Clean up argc / argv processing for runtime args.\n\n- Make copies of argc, argv before argv is potentially\n  overwritten with the process name.\n- Allow multiple command line arguments to be passed to\n  ZygoteInit (this is required for some of the 64 bit\n  zygote work).\n- Add an explanatory comment about how these argments\n  are processed.\n\nChange-Id: I752be69c5c0f97ed17d1a3dded19f46ee00929b0\n"
    },
    {
      "commit": "c6f6ba3265d2b07649277682fd3ca0f9ce4d011a",
      "tree": "94f163ea0ae453d5beb396fc82b250924bf89895",
      "parents": [
        "33822312e65a38400b189c6deda59b8d047b89cf",
        "71ae2bd42be21de6d25d1f8c52e3973c172462df"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 03 16:56:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 03 16:56:32 2014 +0000"
      },
      "message": "am 71ae2bd4: am f87b3a25: am 374db6c3: Merge \"Remove ProcessState::mArgc,mArgV,mArgLen\"\n\n* commit \u002771ae2bd42be21de6d25d1f8c52e3973c172462df\u0027:\n  Remove ProcessState::mArgc,mArgV,mArgLen\n"
    },
    {
      "commit": "71ae2bd42be21de6d25d1f8c52e3973c172462df",
      "tree": "16ce2ca454184f06841a1da827623adeeb1a5b2a",
      "parents": [
        "55da62288dcec75c34721a59d71f917dcb8a62b4",
        "f87b3a25b928f145558f6f60183944f513878b63"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 03 14:11:34 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 03 14:11:34 2014 +0000"
      },
      "message": "am f87b3a25: am 374db6c3: Merge \"Remove ProcessState::mArgc,mArgV,mArgLen\"\n\n* commit \u0027f87b3a25b928f145558f6f60183944f513878b63\u0027:\n  Remove ProcessState::mArgc,mArgV,mArgLen\n"
    },
    {
      "commit": "a23fcd7be8e40078a913b1a99222cdd89229e67b",
      "tree": "9580df860d196b7b1edab40837c0c08fbc4ff6da",
      "parents": [
        "369a00574da218975718ce07ffe6abba5c17bf92"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 28 13:39:21 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 03 12:29:07 2014 +0000"
      },
      "message": "Remove ProcessState::mArgc,mArgV,mArgLen\n\nThese look like historical oddities, and weren\u0027t really being\nused for anything useful.\n\nProcess:setArgV0 was being called by android.util.Process, but\nthat functionality can be moved directly into the implementation\nof that class.\n\nbug: 13647418\n\nChange-Id: I216c8f8a4c065f0cf3a61f19f9e32decd26f93f6"
    },
    {
      "commit": "2a764949c943681a4d25a17a0b203a0127a4a486",
      "tree": "5cacb4e3be3f0c47e25f4e98389110310622e4b0",
      "parents": [
        "30cac644f161433fca92ca65edcb26b351a04e5a"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed Apr 02 13:29:20 2014 +0100"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed Apr 02 13:44:50 2014 +0100"
      },
      "message": "Rename related users to profiles.\n\nRename the related user concept as profiles.\nWhen returning profiles of a user include the\nuser as a profile of itself.\n\nChange-Id: Id5d4f29017b7ca6844632ce643f10331ad733e1d\n"
    },
    {
      "commit": "f1977b4500e82b72ea6aa5c46d97406a20017caf",
      "tree": "9d6b4e63bc4b4c70eb9fbd5eb2cff9587ba45485",
      "parents": [
        "9ad8a5331ca5eb6390c702ec57952043b56170bf"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Mar 24 16:25:51 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 27 12:37:47 2014 -0700"
      },
      "message": "Expand install observer semantics\n\n...and now fail conservatively when two apps both attempt to define\nthe same permission.  Apps signed with the same certificate are\npermitted to redefine permissions.\n\nWe also finally have a (hidden) interface class for observing package\ninstallation so that we can now rev the interface without breaking\nexisting callers.\n\nBug 13551375\n\nChange-Id: Ifa4e59154dcccbb286ee46a35a6f25e4ad0f0f01\n"
    },
    {
      "commit": "1c14c327e8781d843c3b94252db391d1baeec23d",
      "tree": "1e9da8f7d9a7801f279bda0fc853cf1f223f2c5c",
      "parents": [
        "350159c65a52092db04f1b8efce6943f61e50e73",
        "c1a7d0758de065da80129baa85f1471e67c7fe21"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 18:29:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 27 18:29:19 2014 +0000"
      },
      "message": "am c1a7d075: am 232d4224: am f0ffa8a3: Merge \"app_process: use LOCAL_MULTILIB :\u003d both\"\n\n* commit \u0027c1a7d0758de065da80129baa85f1471e67c7fe21\u0027:\n  app_process: use LOCAL_MULTILIB :\u003d both\n"
    },
    {
      "commit": "c1a7d0758de065da80129baa85f1471e67c7fe21",
      "tree": "31e0a53c9339da4782e84f666f71d0f951423126",
      "parents": [
        "6984e4f9bbeb48fb7437183ed2aeb06661bbc228",
        "232d422405d686eb493b48370a2b2f7c35fe96fb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 17:36:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 27 17:36:27 2014 +0000"
      },
      "message": "am 232d4224: am f0ffa8a3: Merge \"app_process: use LOCAL_MULTILIB :\u003d both\"\n\n* commit \u0027232d422405d686eb493b48370a2b2f7c35fe96fb\u0027:\n  app_process: use LOCAL_MULTILIB :\u003d both\n"
    },
    {
      "commit": "f130f0aaea58358dafbe83ccec2b5163b5bed1fb",
      "tree": "06be6d4b9de8764d34ef29e7dc2eca085833c2c4",
      "parents": [
        "5daf51c0fe6d5bea858c37291fed88bd3094d3ec"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 10:20:29 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 10:20:29 2014 -0700"
      },
      "message": "app_process: use LOCAL_MULTILIB :\u003d both\n\nUse LOCAL_MULTILIB :\u003d both to build app_process64 instead of\nduplicating the build rule.\n\nAlso causes PRODUCT_PACKAGES :\u003d app_process to install both\nversions on 64-bit platforms, as the module names for both\napp_process and app_process64 are now app_process.\n\nChange-Id: Ia3c3265d15475771b0cae8bace53b8fbf351c186\n"
    },
    {
      "commit": "1ee4eb074c2d85148658e93e865a18834bdced72",
      "tree": "9ac244717091a290c8c06a3de80b4eeb8d97679b",
      "parents": [
        "460572b22fe8fe5880ad099090b38765e2f8a2f6",
        "7629a18a3f190368e6268d3f2827824905683268"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 20:00:10 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 20:00:11 2014 +0000"
      },
      "message": "Merge \"Revert \"Expand install observer semantics\"\""
    },
    {
      "commit": "7629a18a3f190368e6268d3f2827824905683268",
      "tree": "392b2bde32c959d39d7a37bc0f3c46d7fbe3a55b",
      "parents": [
        "ab8a501f255b272af887acb0e66eb71cdf24c755"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 19:59:48 2014 +0000"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 19:59:48 2014 +0000"
      },
      "message": "Revert \"Expand install observer semantics\"\n\nThis reverts commit ab8a501f255b272af887acb0e66eb71cdf24c755.\n\nChange-Id: I4ab4ae1a96efa2adf9d5a513793d8b84eef38b4e\n"
    },
    {
      "commit": "9067dc03ffc76c5210d26d5a53a211eff046d412",
      "tree": "23576fc1d98647012488024e19b3254fbb4d3382",
      "parents": [
        "583080d87cbf08c253e79feafd6a1b74cf3cddc1",
        "ab8a501f255b272af887acb0e66eb71cdf24c755"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Mar 26 19:23:53 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 19:24:09 2014 +0000"
      },
      "message": "Merge \"Expand install observer semantics\""
    },
    {
      "commit": "ab8a501f255b272af887acb0e66eb71cdf24c755",
      "tree": "4428aa0f60d4a2a309e8882d27fab9c5b20ad5c3",
      "parents": [
        "48a5dbd3cc5dd8a919983455757dc4c7b82500ab"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Mar 24 16:25:51 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Mar 25 19:28:54 2014 -0700"
      },
      "message": "Expand install observer semantics\n\n...and now fail conservatively when two apps both attempt to define\nthe same permission.\n\nWe also finally have a (hidden) interface class for observing package\ninstallation so that we can now rev the interface without breaking\nexisting callers.\n\nBug 13551375\n\nChange-Id: I3a286d024a30e812ee4b098f345401df3c00e178\n"
    },
    {
      "commit": "de898ff42912bd7ca1bfb099cd439562496765a4",
      "tree": "849b591a99a7e6a8fd790aedca3afff6f6b6eade",
      "parents": [
        "05f79758cd2688f89444a38baba326a0a1c1a438"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 29 18:20:45 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 25 12:09:56 2014 -0700"
      },
      "message": "Shared library resource support\n\nShared libraries can now export resources for applications\nto use.\n\nExporting resources works the same way the framework exports\nresources, by defining the public symbols in res/values/public.xml.\n\nBuilding a shared library requires aapt to be invoked with the\n--shared-lib option. Shared libraries will be assigned a package\nID of 0x00 at build-time. At runtime, all loaded shared libraries\nwill be assigned a new package ID.\n\nCurrently, shared libraries should not import other shared libraries,\nas those dependencies will not be loaded at runtime.\n\nAt runtime, reflection is used to update the package ID of resource\nsymbols in the shared library\u0027s R class file. The package name of\nthe R class file is assumed to be the same as the shared library\u0027s\npackage name declared in its manifest. This will be customizable in\na future commit.\n\nSee /tests/SharedLibrary/ for examples of a shared library and its\nclient.\n\nBug:12724178\nChange-Id: I60c0cb8ab87849f8f8a1a13431562fe8603020a7\n"
    },
    {
      "commit": "63665f2ac4f25131728a7efff0a449ecdc3f4c50",
      "tree": "395dec9ab1b065c3038f013b9f7628a888f483f0",
      "parents": [
        "52eb953278ad68ba5e5995feb1c8f8d43a7af4c9",
        "a3633c25033b576ae160ea86194e4f7f20d82fe2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 21:05:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 21:05:40 2014 +0000"
      },
      "message": "am a3633c25: am 71a3d40d: am e4360c8e: am 4308a523: Merge \"bootanimation: build 32-bit if 64-bit gl libraries are not available\"\n\n* commit \u0027a3633c25033b576ae160ea86194e4f7f20d82fe2\u0027:\n  bootanimation: build 32-bit if 64-bit gl libraries are not available\n"
    },
    {
      "commit": "adfe8b86e9178a553b6db9722340fa4ff5201cf1",
      "tree": "2054d99dc17b0ada61693b97d9f3e306b4fe4d4a",
      "parents": [
        "aef4f6ebc8f8eb1f9fbfbe4ae2556c9f1a26a63c"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Feb 04 16:23:32 2014 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 20 12:30:51 2014 -0700"
      },
      "message": "App widget backup/restore infrastructure\n\nBackup/restore now supports app widgets.\n\nAn application involved with app widgets, either hosting or publishing,\nnow has associated data in its backup dataset related to the state of\nwidget instantiation on the ancestral device.  That data is processed\nby the OS during restore so that the matching widget instances can be\n\"automatically\" regenerated.\n\nTo take advantage of this facility, widget-using apps need to do two\nthings:  first, implement a backup agent and store whatever widget\nstate they need to properly deal with them post-restore (e.g. the\nwidget instance size \u0026 location, for a host); and second, implement\nhandlers for new AppWidgetManager broadcasts that describe how to\ntranslate ancestral-dataset widget id numbers to the post-restore\nworld.  Note that a host or provider doesn\u0027t technically need to\nstore *any* data on its own via its agent; it just needs to opt in\nto the backup/restore process by publishing an agent.  The OS will\nthen store a small amount of data on behalf of each widget-savvy\napp within the backup dataset, and act on that data at restore time.\n\nThe broadcasts are AppWidgetManager.ACTION_APPWIDGET_RESTORED and\nACTION_APPWIDGET_HOST_RESTORED, and have three associated extras:\n\n    EXTRA_APPWIDGET_OLD_IDS\n    EXTRA_APPWIDGET_IDS\n    EXTRA_HOST_ID [for the host-side broadcast]\n\nThe first two are same-sized arrays of integer widget IDs.  The\n_OLD_IDS values are the widget IDs as known to the ancestral device.\nThe _IDS array holds the corresponding widget IDs in the new post-\nrestore environment.  The app should simply update the stored\nwidget IDs in its bookkeeping to the new values, and things are\noff and running.  The HOST_ID extra, as one might expect, is the\napp-defined host ID value of the particular host instance which\nhas just been restored.\n\nThe broadcasts are sent following the conclusion of the overall\nrestore pass.  This is because the restore might have occurred in a\ntightly restricted lifecycle environment without content providers\nor the package\u0027s custom Application class.  The _RESTORED broadcast,\nhowever, is always delivered into a normal application environment,\nso that the app can use its content provider etc as expected.\n\n*All* widget instances that were processed over the course of the\nsystem restore are indicated in the _RESTORED broadcast, even if\nthe backing provider or host is not yet installed.  The widget\nparticipant is responsible for understanding that these are\npromises that might be fulfilled later rather than necessarily\nreflecting the immediate presentable widget state.  (Remember\nthat following a cloud restore, apps may be installed piecemeal\nover a lengthy period of time.)  Telling the hosts up front\nabout all intended widget instances allows them to show placeholder\nUI or similarly useful information rather than surprising the user\nwith piecemeal unexpected appearances.\n\nThe AppWidgetProvider helper class has been updated to add a new\ncallback, onRestored(...), invoked when the _RESTORED broadcast\nis received.  The call to onRestored() is immediately followed by\nan invocation of onUpdate() for the affected widgets because\nthey will need to have their RemoteViews regenerated under the\nnew ID values.\n\nBug 10622506\nBug 10707117\n\nChange-Id: Ie0007cdf809600b880d91989c00c3c3b8a4f988b\n"
    },
    {
      "commit": "4a1bc7dfc1fc13c29e30353e488bd12ee91836cb",
      "tree": "05f416d9d7563115e3a2a12457e2f3ee89a92682",
      "parents": [
        "1f839d92100c5f05cbd52b8f5d0671d984a48334",
        "e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 17:47:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 17:47:10 2014 +0000"
      },
      "message": "am e4360c8e: am 4308a523: Merge \"bootanimation: build 32-bit if 64-bit gl libraries are not available\"\n\n* commit \u0027e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00\u0027:\n  bootanimation: build 32-bit if 64-bit gl libraries are not available\n"
    },
    {
      "commit": "71a3d40d20c9507efab94260431e330558b90cd0",
      "tree": "f6a131aec0ca2e6c5714e4a5971403dd3f99dbea",
      "parents": [
        "065b8fd1c388812a789be48aaa0a0f7918d2755d",
        "e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 17:46:50 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 17:46:50 2014 +0000"
      },
      "message": "am e4360c8e: am 4308a523: Merge \"bootanimation: build 32-bit if 64-bit gl libraries are not available\"\n\n* commit \u0027e4360c8e14d1ea362fb1d13b7a5c9bf003f3be00\u0027:\n  bootanimation: build 32-bit if 64-bit gl libraries are not available\n"
    },
    {
      "commit": "6ac8a20b8f2a2378e8fc6edec8deb42b7c09c2bf",
      "tree": "eb35166c38dcb562aeb392462d9abf4f21061465",
      "parents": [
        "046e0a7ba68c95e303842812e835e0f321e8d892",
        "a78b389e544894ccb9673e2e416c3a1b51260513"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 01:55:52 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 01:55:52 2014 +0000"
      },
      "message": "am a78b389e: am 49fca697: am 0dccb02b: am 19fc55e1: Merge \"build app_process64 on 64-bit targets\"\n\n* commit \u0027a78b389e544894ccb9673e2e416c3a1b51260513\u0027:\n  build app_process64 on 64-bit targets\n"
    },
    {
      "commit": "49fca697470b8321a02bdd2a828e9beec1ef1182",
      "tree": "ea9e5d4620c179c1c3606f8ec041e0f162c8d714",
      "parents": [
        "c60ac2b825459165b7e708fc2049d04d6f5c3fb2",
        "0dccb02b9fd714af1db91e4ba3ca0b0da4e563c1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 01:23:28 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 01:23:28 2014 +0000"
      },
      "message": "am 0dccb02b: am 19fc55e1: Merge \"build app_process64 on 64-bit targets\"\n\n* commit \u00270dccb02b9fd714af1db91e4ba3ca0b0da4e563c1\u0027:\n  build app_process64 on 64-bit targets\n"
    },
    {
      "commit": "af9205626fdb92c1ebb4a229fd25a654c1cfdfcb",
      "tree": "8ce2c03618ea99d8a64c72a6646cb06c587cd442",
      "parents": [
        "674dd27ca17636360253a8f9ecdd7b382f3b5b8c",
        "0dccb02b9fd714af1db91e4ba3ca0b0da4e563c1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 20 01:22:59 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 20 01:22:59 2014 +0000"
      },
      "message": "am 0dccb02b: am 19fc55e1: Merge \"build app_process64 on 64-bit targets\"\n\n* commit \u00270dccb02b9fd714af1db91e4ba3ca0b0da4e563c1\u0027:\n  build app_process64 on 64-bit targets\n"
    }
  ],
  "next": "31d16e5bf9e4edc8c3af08d8405ebe90bde99220"
}
