)]}'
{
  "log": [
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "98365d7663cbd82979a5700faf0050220b01084d",
      "tree": "8a4ff3e0a8afd814ed29609b26aa1c6ade2367f6",
      "parents": [
        "848c2dc93b6795e171f3dd6f64ea0be65e2762ca"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 20:30:52 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 19 22:42:08 2012 -0700"
      },
      "message": "Refactor for multi-display support.\n\nSplit WindowManagerImpl into two parts, the WindowManager\ninterface implementation remains where it is but the global\ncommunications with the window manager are now handled by\nthe WindowManagerGlobal class.  This change greatly simplifies\nthe challenge of having separate WindowManager instances\nfor each Context.\n\nRemoved WindowManagerImpl.getDefault().  This represents the\nbulk of this change.  Most of the usages of this method were\neither to perform global functions (now handled by WindowManagerGlobal)\nor to obtain the default display (now handled by DisplayManager).\n\nExplicitly associate each new window with a display and make\nthe Display object available to the View hierarchy.\n\nAdd stubs for some new display manager API features.\n\nStart to split apart the concepts of display id and layer stack.\nsince they operate at different layers of abstraction.\nWhile it\u0027s true that each logical display uniquely corresponds to a\nsurface flinger layer stack, it is not necessarily the case that\nthey must use the same ids.  Added Display.getLayerStack()\nand started using it in places where it was relatively easy to do.\n\nChange-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61\n"
    },
    {
      "commit": "d2ae85d41ec1651dd1bf4c33fe31833ba5c5cff5",
      "tree": "a13ab2da158404c627977d9316501332cd863dd8",
      "parents": [
        "aeca6898041437a7e2ba68c1421b9be90669154d",
        "832cb229cd748505c90f74ae8154fc3557d61a73"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 13:03:15 2012 -0700"
      },
      "message": "Merge \"Adding a thumbnail scale down animation\" into jb-mr1-dev"
    },
    {
      "commit": "79af1dd54c16cde063152922b42c96d72ae9eca8",
      "tree": "142abf0037d20841712e88d65febcbbd92dd5561",
      "parents": [
        "f1b995f9d049cb5c7225b3b17f09369237a83ca2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 16 16:42:52 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 17 10:36:08 2012 -0700"
      },
      "message": "Switch public APIs to use new UserHandle class for identifying users.\n\nGets rid of \"yet another integer\" confusion.\n\nChange-Id: Id07ea7307aea7c62f0087c6663a1f1c08e2e5dee\n"
    },
    {
      "commit": "832cb229cd748505c90f74ae8154fc3557d61a73",
      "tree": "ff2c3b98b5bd2c91c195f39d320b14d56062a8f1",
      "parents": [
        "32e7bd9fe1343e365dc40c8d215b0d98df99a2de"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Fri Apr 13 09:32:47 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Aug 16 00:14:03 2012 -0700"
      },
      "message": "Adding a thumbnail scale down animation\n\nRecents animation will temporarily look a bit\nwrong, but a subsequent change will fix this."
    },
    {
      "commit": "9630704ed3b265f008a8f64ec60a33cf9dcd3345",
      "tree": "0c905e55ac062b625bf7a9ced250f05213d7873f",
      "parents": [
        "ff7e6ef4f18ff94a9836492ff3ccd1ba7f6804f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:51:34 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 03:06:24 2012 -0700"
      },
      "message": "Power manager rewrite.\n\nThe major goal of this rewrite is to make it easier to implement\npower management policies correctly.  According, the new\nimplementation primarily uses state-based rather than event-based\ntriggers for applying changes to the current power state.\n\nFor example, when an application requests that the proximity\nsensor be used to manage the screen state (by way of a wake lock),\nthe power manager makes note of the fact that the set of\nwake locks changed.  Then it executes a common update function\nthat recalculates the entire state, first looking at wake locks,\nthen considering user activity, and eventually determining whether\nthe screen should be turned on or off.  At this point it may\nmake a request to a component called the DisplayPowerController\nto asynchronously update the display\u0027s powe state.  Likewise,\nDisplayPowerController makes note of the updated power request\nand schedules its own update function to figure out what needs\nto be changed.\n\nThe big benefit of this approach is that it\u0027s easy to mutate\nmultiple properties of the power state simultaneously then\napply their joint effects together all at once.  Transitions\nbetween states are detected and resolved by the update in\na consistent manner.\n\nThe new power manager service has is implemented as a set of\nloosely coupled components.  For the most part, information\nonly flows one way through these components (by issuing a\nrequest to that component) although some components support\nsending a message back to indicate when the work has been\ncompleted.  For example, the DisplayPowerController posts\na callback runnable asynchronously to tell the PowerManagerService\nwhen the display is ready.  An important feature of this\napproach is that each component neatly encapsulates its\nstate and maintains its own invariants.  Moreover, we do\nnot need to worry about deadlocks or awkward mutual exclusion\nsemantics because most of the requests are asynchronous.\n\nThe benefits of this design are especially apparent in\nthe implementation of the screen on / off and brightness\ncontrol animations which are able to take advantage of\nframework features like properties, ObjectAnimator\nand Choreographer.\n\nThe screen on / off animation is now the responsibility\nof the power manager (instead of surface flinger).  This change\nmakes it much easier to ensure that the animation is properly\ncoordinated with other power state changes and eliminates\nthe cause of race conditions in the older implementation.\n\nThe because of the userActivity() function has been changed\nso that it never wakes the device from sleep.  This change\nremoves ambiguity around forcing or disabling user activity\nfor various purposes.  To wake the device, use wakeUp().\nTo put it to sleep, use goToSleep().  Simple.\n\nThe power manager service interface and API has been significantly\nsimplified and consolidated.  Also fixed some inconsistencies\nrelated to how the minimum and maximum screen brightness setting\nwas presented in brightness control widgets and enforced behind\nthe scenes.\n\nAt present the following features are implemented:\n\n- Wake locks.\n- User activity.\n- Wake up / go to sleep.\n- Power state broadcasts.\n- Battery stats and event log notifications.\n- Dreams.\n- Proximity screen off.\n- Animated screen on / off transitions.\n- Auto-dimming.\n- Auto-brightness control for the screen backlight with\n  different timeouts for ramping up versus ramping down.\n- Auto-on when plugged or unplugged.\n- Stay on when plugged.\n- Device administration maximum user activity timeout.\n- Application controlled brightness via window manager.\n\nThe following features are not yet implemented:\n\n- Reduced user activity timeout for the key guard.\n- Reduced user activity timeout for the phone application.\n- Coordinating screen on barriers with the window manager.\n- Preventing auto-rotation during power state changes.\n- Auto-brightness adjustment setting (feature was disabled\n  in previous version of the power manager service pending\n  an improved UI design so leaving it out for now).\n- Interpolated brightness control (a proposed new scheme\n  for more compactly specifying auto-brightness levels\n  in config.xml).\n- Button / keyboard backlight control.\n- Change window manager to associated WorkSource with\n  KEEP_SCREEN_ON_FLAG wake lock instead of talking\n  directly to the battery stats service.\n- Optionally support animating screen brightness when\n  turning on/off instead of playing electron beam animation\n  (config_animateScreenLights).\n\nChange-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7\n"
    },
    {
      "commit": "756220bd1912535840388a6743830d2e59ad4964",
      "tree": "ee97c666d4bb1f015fd3e89463af09c712ce47e4",
      "parents": [
        "863b19bc8fcfa436011781b67a237fcce3cb703a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:45:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 14 16:51:38 2012 -0700"
      },
      "message": "Add API to create new contexts with custom configurations.\n\nThis allows you to, say, make a Context whose configuration\nis set to a different density than the actual density of the device.\n\nThe main API is Context.createConfigurationContext().  There is\nalso a new API on ContextThemeWrapper that allows you to apply\nan override context before its resources are retrieved, which\naddresses some feature requests from developers to be able to\ncustomize the context their app is running in.\n\nChange-Id: I88364986660088521e24b567e2fda22fb7042819\n"
    },
    {
      "commit": "c386ee56b995ec6562c4a20238ace2297562834b",
      "tree": "22a977ad36270904817dd8f4d36d378e847d9eae",
      "parents": [
        "aef4af4cd122ca5713110ccc7539828ce6e2f642",
        "c1c55afb474dd85a6205bc8ab94065f3ac38aa77"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 12:03:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 12:03:43 2012 -0700"
      },
      "message": "am c1c55afb: am e67f8c8c: Merge \"Normalize output from aapt d xmltree\"\n\n* commit \u0027c1c55afb474dd85a6205bc8ab94065f3ac38aa77\u0027:\n  Normalize output from aapt d xmltree\n"
    },
    {
      "commit": "c1c55afb474dd85a6205bc8ab94065f3ac38aa77",
      "tree": "abbf38d69839d0a2e4f3070aee28a7422a27d678",
      "parents": [
        "64ed6b2cfa6a4bb58f3f8a9b59d840cdce049c80",
        "e67f8c8c279e20fff5f426eccd062b709e6280ed"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 12:01:35 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 12:01:35 2012 -0700"
      },
      "message": "am e67f8c8c: Merge \"Normalize output from aapt d xmltree\"\n\n* commit \u0027e67f8c8c279e20fff5f426eccd062b709e6280ed\u0027:\n  Normalize output from aapt d xmltree\n"
    },
    {
      "commit": "e67f8c8c279e20fff5f426eccd062b709e6280ed",
      "tree": "e53054cf3446cc91228a1ea5ae48b0c803ca5cc6",
      "parents": [
        "d77d17c28d6f120ceb648747c7e2ef1a50215700",
        "429dad687bcb5f00587e8b91b3a614502907aaa1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 11:21:28 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 08 11:21:29 2012 -0700"
      },
      "message": "Merge \"Normalize output from aapt d xmltree\""
    },
    {
      "commit": "537915828b45693e846a126292e026c5b4f05152",
      "tree": "6c47dca99eda5792f1fc006e0f20088ad4048db1",
      "parents": [
        "ec0feefd4422db1151aee722732d8c9528f6dfa8",
        "7d19e0242faac8017033dabb872cdf1542fa184c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 08 10:22:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 08 10:22:49 2012 -0700"
      },
      "message": "Merge \"More mult-user API work.\" into jb-mr1-dev"
    },
    {
      "commit": "7d19e0242faac8017033dabb872cdf1542fa184c",
      "tree": "ab12d3c6597bc42bc7c0dca10ded546192c5c249",
      "parents": [
        "03ad783c5078c7bd487e47bb2a2af67dfbe89f1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:12:33 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 07 19:19:22 2012 -0700"
      },
      "message": "More mult-user API work.\n\n- You can now use android:singleUser with receivers and providers.\n- New API to send ordered broadcasts as a user.\n- New Process.myUserHandle() API.\n\nFor now I am trying out \"user handle\" as the name for the numbers\nrepresenting users.\n\nChange-Id: I754c713ab172494bb4251bc7a37a17324a2e235e\n"
    },
    {
      "commit": "b14c215eb2dd617214d867d38449eb1d1214d41c",
      "tree": "7d29a2b19aab3b7d5a8f49e080f394535f90ff10",
      "parents": [
        "53bec9af8b415af87cc51c065c8bec02e26759a6",
        "4b4b44381b133e9ab7418806c046774b7fd31393"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 13:20:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 07 13:20:50 2012 -0700"
      },
      "message": "am 4b4b4438: am 33c5670b: Merge \"Fewer warnings in aidl generated code.\"\n\n* commit \u00274b4b44381b133e9ab7418806c046774b7fd31393\u0027:\n  Fewer warnings in aidl generated code.\n"
    },
    {
      "commit": "4b4b44381b133e9ab7418806c046774b7fd31393",
      "tree": "b5fce87b6f9346cf9957938ee63c5debb5134deb",
      "parents": [
        "d7cb30484ba94ecb8f4844f45742bf2ffc004599",
        "33c5670b315810f1f3dc66fe8cd38f7b3e05f3ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 13:18:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 07 13:18:53 2012 -0700"
      },
      "message": "am 33c5670b: Merge \"Fewer warnings in aidl generated code.\"\n\n* commit \u002733c5670b315810f1f3dc66fe8cd38f7b3e05f3ac\u0027:\n  Fewer warnings in aidl generated code.\n"
    },
    {
      "commit": "b327c41e125a3be15a6c6c4dba318fe1b2392605",
      "tree": "f2a28c312caed39bd47fb8788aa514847a8476e6",
      "parents": [
        "dfac68eacc60c130e54345d98bd45c99573cb627"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 10:34:02 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 10:34:02 2012 -0700"
      },
      "message": "Fewer warnings in aidl generated code.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d19196\nChange-Id: If054e60c19dc73fe32f55d0fa1054309565a6de6\n"
    },
    {
      "commit": "758143ecfedbe08cc6c4fed0ad8ad7a854194ca4",
      "tree": "c7102e7f3b5f71180cb23d1a13c01158f558feb6",
      "parents": [
        "4cb3384772cf7015a4e05789470123efb07219d9"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 16:40:27 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Aug 06 23:49:38 2012 -0700"
      },
      "message": "Window position not reported if the window is not moved.\n\n1.If a window is shown but never moved the window window\n  is never notified for its current location. Therefore,\n  accessibility nodes do not contain correct bounds in\n  screen coordinates.\n\nbug:6926295\n\nChange-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393\n"
    },
    {
      "commit": "b49a065d9904567624a088857ecd1626fad91511",
      "tree": "e5a7dce90e878f97e3351a9ee1faa2f799155c39",
      "parents": [
        "cbb6b41aeff9d70bee30ac670237e45b35689cc0"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 03 19:03:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Aug 03 19:03:24 2012 -0700"
      },
      "message": "Fix build with density methods.\n\nChange-Id: I95c0a4f12db40f200a3a004394763beaef904232\n"
    },
    {
      "commit": "437a0fbd57662e1d9d260da6f62ff83da2769a7e",
      "tree": "7df1f02b3bcc2d3fc4e22926e55c33e712879419",
      "parents": [
        "a7ce1551a6c05d4f983e283b413cadb1ddc1026d",
        "59c009776dae5ccbdfb93d7151ff2065ca049dc3"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 09:20:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 09:20:14 2012 -0700"
      },
      "message": "Merge \"Introduce multiple displays with DisplayContent.\" into jb-mr1-dev"
    },
    {
      "commit": "59c009776dae5ccbdfb93d7151ff2065ca049dc3",
      "tree": "45ffbc8d93e8f245ed1c78ffa64b8bcc5ae59355",
      "parents": [
        "fa14d824d235c33b137a429c3eb6818f273407ab"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jul 30 12:10:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 08:47:44 2012 -0700"
      },
      "message": "Introduce multiple displays with DisplayContent.\n\nFix a couple of bugs that turned up.\nRemove touch/focus from display. Add iterators for access.\nRespond to comments. Remove TODOs, and some deviceId parameters.\n\nChange-Id: Idcdb4f1979aa7b14634d450fd0333d6eff26994d\n"
    },
    {
      "commit": "908aecc3a63c5520d5b11da14a9383f885b7d126",
      "tree": "11806df7f127ea695474ae7ab490a95c19965508",
      "parents": [
        "b1980049855fd6c53e109b44ff012a053f9436f7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 31 16:37:34 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 01 10:54:39 2012 -0700"
      },
      "message": "Start moving away from DisplayMetrics.DENSITY_DEVICE.\n\nThis puts in most of the infrastructure needed to allow us to\nswitch between different densities at run time.  The main remaining\nuses of the global are to initialize the Bitmap object (not sure\nwhat to do about that since it doesn\u0027t have anything passed in\nthe constructor to get this information from), and being able to\nload drawables if we need a different density than what was preloaded\nby zygote.\n\nChange-Id: Ifdbfd6b7a5c59e6aa22e63b95b78d96af3d96848\n"
    },
    {
      "commit": "39df578acddb739d7608e458533904bf5814c0da",
      "tree": "e64efcaf4249b57618dcd0a5d48de16c600895f6",
      "parents": [
        "f063fa0c30be849d0e067fb40d6f388b7c0d8340"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Jul 27 14:30:59 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Fri Jul 27 14:30:59 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I52bbebae38912a4fb71c96174b3d4d8eb6be10c1\n"
    },
    {
      "commit": "aa871b0ff0fb38112a1693e80e1146cecc5db21d",
      "tree": "9382c5c05be896dcb3f79b0ae0d2af7b9ecce034",
      "parents": [
        "fa25bf5382467b1018bd9af7f1cb30a23d7d59f7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 20:06:22 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 20:06:22 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: Ife2fd58447205407e41ce3d27e28a705b744bede\n"
    },
    {
      "commit": "fa25bf5382467b1018bd9af7f1cb30a23d7d59f7",
      "tree": "2b65e9c19319112d1873db55a02303a43d68547a",
      "parents": [
        "bbcb123d4923b0c2f36af7b2ade82f5d7832357d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 23 19:26:30 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 25 18:56:16 2012 -0700"
      },
      "message": "Add display manager skeleton.\n\nThe purpose of this change is to remove direct reliance on\nSurfaceFlinger for describing the size and characteristics of\ndisplays.\n\nThis patch also starts to make a distinction between logical displays\nand physical display devices.  Currently, the window manager owns\nthe concept of a logical display whereas the new display\nmanager owns the concept of a physical display device.\n\nChange-Id: I7e0761f83f033be6c06fd1041280c21500bcabc0\n"
    },
    {
      "commit": "212dfccc74e37521f771a52c8209b049fe984793",
      "tree": "9e7efaa15e993c0a04b234443d151d1365185b7a",
      "parents": [
        "95f1158908d990bbf954d7cc78f3f214a6c84f1f",
        "be925017201ad547a72e8d1e333dbc7eae3fc76f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Jul 20 10:00:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 20 10:00:11 2012 -0700"
      },
      "message": "am be925017: am b71393bd: Merge \"Fix aapt -G to properly support class attr in fragment.\" into jb-dev\n\n* commit \u0027be925017201ad547a72e8d1e333dbc7eae3fc76f\u0027:\n  Fix aapt -G to properly support class attr in fragment.\n"
    },
    {
      "commit": "be925017201ad547a72e8d1e333dbc7eae3fc76f",
      "tree": "d07536a4132acc745f4170342898aeee1ceffd56",
      "parents": [
        "1c7a9b2ec9a75fe5975bd35482d74dc3d07e6205",
        "b71393bd34a48eeb622292e78f43b99e374a5e3a"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jul 19 14:30:39 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 19 14:30:39 2012 -0700"
      },
      "message": "am b71393bd: Merge \"Fix aapt -G to properly support class attr in fragment.\" into jb-dev\n\n* commit \u0027b71393bd34a48eeb622292e78f43b99e374a5e3a\u0027:\n  Fix aapt -G to properly support class attr in fragment.\n"
    },
    {
      "commit": "095cd2e2d14e4fe25b66df54861fb66000a25adc",
      "tree": "b16c8e094f998b23b77a68e364e70f45629f13b5",
      "parents": [
        "12a5475205243bc2d069a87d2c7d4982b5f4d11d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 18 18:06:09 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jul 19 09:06:03 2012 -0700"
      },
      "message": "Fix aapt -G to properly support class attr in fragment.\n\nThe code added attributes android:name and class to a\nKeyedVector under the same key (fragment) so the 2nd\nadd (android:name) removed class with was never checked.\n\nThis replace the value type in the KeyedVector to be\nVector\u003cNamespaceAttributePair\u003e instead of just\nNamespaceAttributePair.\n\nChange-Id: I009b8a8cca878191661c2a63bb14c967d230498d\n"
    },
    {
      "commit": "c9c9a48e7bafae63cb35a9aa69255e80aba83988",
      "tree": "80295bae9e6546d9d7fb604af0fa772ebd18a4fc",
      "parents": [
        "dd0d0ba654cea3051e44ba9ae20ac4b269e123c0"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 16 08:46:07 2012 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 16 08:46:11 2012 -0700"
      },
      "message": "Removing a workaround for incorrect window position on window move.\n\n1. The window manager was not notifying a window when the latter\n   has been moved. This was causing incorrect coordinates of the\n   nodes reported to accessibility services. To workaround that\n   we have carried the correct window location when making a\n   call from the accessibility layer into a window. Now the\n   window manager notifies the window when it is moved and the\n   workaround is no longer needed. This change takes it out.\n\n2. The left and right in the attach info were not updated properly\n   after a report that the window has moved.\n\n3. The accessibility manager service was calling directly methods\n   on the window manager service without going through the interface\n   of the latter. This leads to unnecessary coupling and in the\n   long rung increases system complexity and reduces maintability.\n\nbug:6623031\n\nChange-Id: Iacb734b1bf337a47fad02c827ece45bb2f53a79d\n"
    },
    {
      "commit": "54059cd38de24bbffc2525b56955535df73bf1eb",
      "tree": "693abe2c8ae261ba276ef46f72e9c7b16cb2adf4",
      "parents": [
        "23316a1ef8868bc641ed72d42839c20b7b86fadb",
        "15c15eaac51c0c375d18fb70cd1bd066d87b034e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 10 18:38:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 10 18:38:21 2012 -0700"
      },
      "message": "am 15c15eaa: Merge \"Replace LruCache implementation for layoutlib. do not merge.\" into jb-dev\n\n* commit \u002715c15eaac51c0c375d18fb70cd1bd066d87b034e\u0027:\n  Replace LruCache implementation for layoutlib. do not merge.\n"
    },
    {
      "commit": "105b78bb310a75dc44e0baa49fe7d20341cc0f15",
      "tree": "f724600922f997278723d8d650e469a8ce561f09",
      "parents": [
        "fbf885b652272013f44da71e9f77923333bf62eb"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Jul 10 15:17:25 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Tue Jul 10 15:17:25 2012 -0700"
      },
      "message": "Add missing interface method.\n\nFix broken build.\n\nChange-Id: I6644df218e11a35330a985bdcb9ace33723330f5\n"
    },
    {
      "commit": "54a18ef7ad9da65a95f4d383952ae6268f8a4f34",
      "tree": "627ce814923bcd9cedc56c43b57faeddd2f1bea5",
      "parents": [
        "40a4ab130a3e3c99afb1a57e9aa30de03a89b51e"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 09 15:53:40 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 10 12:51:30 2012 -0700"
      },
      "message": "Replace LruCache implementation for layoutlib. do not merge.\n\nThe android version depends on a custom version of LinkedHashMap\nwhich is not present on desktop VMs. This new implementation is done\nin a way that minimizes the difference between the two.\n\nAlso some minor fixes.\n\n(cherry picked from commit 01b6c755dbcf24e71192dc44757e2eea2a426091)\n\nChange-Id: Idc7bca820e472e281a3024a5b610fd55606cf428\n"
    },
    {
      "commit": "01b6c755dbcf24e71192dc44757e2eea2a426091",
      "tree": "ca4347753ccb79e7dc4307a8a54387a087c8d1a1",
      "parents": [
        "42eae21fb9abcff50ad69ab2faf2ffbdbd3b1156"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Jul 09 15:53:40 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 10 11:48:10 2012 -0700"
      },
      "message": "Replace LruCache implementation for layoutlib.\n\nThe android version depends on a custom version of LinkedHashMap\nwhich is not present on desktop VMs. This new implementation is done\nin a way that minimizes the difference between the two.\n\nAlso some minor fixes.\n\nChange-Id: Ib27b0419f9d0e6ba4d4abb26b2ccd968af59eba8\n"
    },
    {
      "commit": "429dad687bcb5f00587e8b91b3a614502907aaa1",
      "tree": "ee2b4ad0c456c6dde1cd81979565b72e9c389fa6",
      "parents": [
        "dc99555d61d50820b398096bb774ee56b2500476"
      ],
      "author": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Sun Jul 08 06:37:48 2012 +0300"
      },
      "committer": {
        "name": "Shachar Shemesh",
        "email": "lingnu@gmail.com",
        "time": "Sun Jul 08 06:37:48 2012 +0300"
      },
      "message": "Normalize output from aapt d xmltree\n\nWhen using aapt dump xmltree to dump an XML which has a content element with newlines, the output contains a\nnewline. This makes it very difficult, sometimes impossible, to understand what is part of the content, and\nwhat is the meta-data.\n\nWe now pass XML content through the same normalizer used for other tags.\n\nChange-Id: I327321520fac563eb32aecaf796f2473866697fc\n"
    },
    {
      "commit": "a4b7f2f75e7803193429ec1179fb5e2eb1c6fbda",
      "tree": "287a64b2e558134e4f80ce5ae2356405204a369b",
      "parents": [
        "6a15634f601617b815935bc7fdbe0c356d020f44"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 21 11:28:41 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 25 19:19:15 2012 -0700"
      },
      "message": "Use two fingers to work some magic...\n\nChange-Id: Ibcb3dbd3d158c22da8277e544d81fb47eadccd49\n"
    },
    {
      "commit": "cee303fac4324d32e78e3d174e256f39d70d820f",
      "tree": "69c8100ab55d4cd0990b21260a730dc5723b4d1b",
      "parents": [
        "17f006ea92b802ddc63f36f0ea876cabca278eb7",
        "cc6cf51b80eabd199f797f40b76f7980c343962b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jun 22 14:36:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 14:36:49 2012 -0700"
      },
      "message": "am cc6cf51b: am 8c71784e: Merge \"Initialize mJunkPath to false\"\n\n* commit \u0027cc6cf51b80eabd199f797f40b76f7980c343962b\u0027:\n  Initialize mJunkPath to false\n"
    },
    {
      "commit": "cc6cf51b80eabd199f797f40b76f7980c343962b",
      "tree": "1db1e94e54cec4da8d771afd1d802c72c21d3c2d",
      "parents": [
        "8a0f63bb588138a9e4f1ef7830e94282efe57c6b",
        "8c71784e9e83e914135e996591aa7903edd2fd96"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jun 22 14:34:54 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 14:34:54 2012 -0700"
      },
      "message": "am 8c71784e: Merge \"Initialize mJunkPath to false\"\n\n* commit \u00278c71784e9e83e914135e996591aa7903edd2fd96\u0027:\n  Initialize mJunkPath to false\n"
    },
    {
      "commit": "dbcfed9e2cad3175109aca4b55bbe41da7238a4f",
      "tree": "0d00f26132e510b1bb0c8758ecd09d9c57410064",
      "parents": [
        "a9543a3dad0da58f30580bdf99b76bc2ab97a2df"
      ],
      "author": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Fri Jun 22 09:20:26 2012 +0800"
      },
      "committer": {
        "name": "Haitao Feng",
        "email": "haitao.feng@intel.com",
        "time": "Fri Jun 22 09:20:26 2012 +0800"
      },
      "message": "Initialize mJunkPath to false\n\nChange-Id: Ib48bb1d91736d27f055528c3ba275237ff5ada07\n"
    },
    {
      "commit": "752e7b3bf624f72261bb789c5a6e8d34b419c8f1",
      "tree": "521ccf8d6879ba1671c611cbd92c10505b4734a7",
      "parents": [
        "e66ad7c900f7b5cfedd0056769b8d19306aa396f",
        "58a8d8d2d4b15cd4abf010680181359823ebfda4"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:09:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 18:09:14 2012 -0700"
      },
      "message": "am 58a8d8d2: am 0e302bc8: Merge \"Disable debug output in SDK layoutlib.\" into jb-dev\n\n* commit \u002758a8d8d2d4b15cd4abf010680181359823ebfda4\u0027:\n  Disable debug output in SDK layoutlib.\n"
    },
    {
      "commit": "58a8d8d2d4b15cd4abf010680181359823ebfda4",
      "tree": "2d5eb4858fa0599a93671be236fe41949585a544",
      "parents": [
        "f99e81a6ff22b6b93dd057802e553f66c0a7b97b",
        "0e302bc884fa4b25eb391d625f2fb0eddc25d9b7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:06:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 18:06:37 2012 -0700"
      },
      "message": "am 0e302bc8: Merge \"Disable debug output in SDK layoutlib.\" into jb-dev\n\n* commit \u00270e302bc884fa4b25eb391d625f2fb0eddc25d9b7\u0027:\n  Disable debug output in SDK layoutlib.\n"
    },
    {
      "commit": "4d7f301f94b9d2dda0ef109e9991ad2d77442f75",
      "tree": "f7a5bbab6a84abe5b9272b3e294e130c80e4ea72",
      "parents": [
        "1b36a68f607538bd090c33b31bd418169657ff6c"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:01:50 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jun 19 18:02:21 2012 -0700"
      },
      "message": "Disable debug output in SDK layoutlib.\n\nBug: 6697442\n\nChange-Id: I9741761342ea220c158aa124089430b0db80bf7e\n"
    },
    {
      "commit": "89e1ad05e7cca990f46d5b13b8b5892de1736faa",
      "tree": "1fc609bf0f392d6a34348cb4b174b30aee6d85d0",
      "parents": [
        "e526f14e3bc6b82e7977708c13683b21a0df7935",
        "bce1011dd2a371c587d2e39ad8c3d446b63049d0"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:46:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 14:46:25 2012 -0700"
      },
      "message": "am bce1011d: resolved conflicts for merge of 8cf489c1 to jb-dev-plus-aosp\n\n* commit \u0027bce1011dd2a371c587d2e39ad8c3d446b63049d0\u0027:\n  Layoutlib Create: Find dependencies.\n"
    },
    {
      "commit": "bce1011dd2a371c587d2e39ad8c3d446b63049d0",
      "tree": "3e99f4996919ff44364c895e95999f3f9c03d37b",
      "parents": [
        "eb02d40c6d068ffcbb822910c5449b7081d1ae51",
        "8cf489c1f509ad2414a887035ad3d6996d1931a3"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:14:45 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Thu Jun 14 14:14:45 2012 -0700"
      },
      "message": "resolved conflicts for merge of 8cf489c1 to jb-dev-plus-aosp\n\nChange-Id: I06608e3c122b8f321429d457c51aa2213dd238b4\n"
    },
    {
      "commit": "8cf489c1f509ad2414a887035ad3d6996d1931a3",
      "tree": "9a2fc3f8ab1860b3cec34dc35eefd5fb7b452311",
      "parents": [
        "cfe75518ef23efede1359274c91c732c0ac7ccf3",
        "0f160c95122276c40ca84afe6fcd2b9cd800e35c"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Thu Jun 14 11:34:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 11:34:31 2012 -0700"
      },
      "message": "am 0f160c95: Merge \"Layoutlib Create: Find dependencies.\"\n\n* commit \u00270f160c95122276c40ca84afe6fcd2b9cd800e35c\u0027:\n  Layoutlib Create: Find dependencies.\n"
    },
    {
      "commit": "4306096a4351030cab4ea413b5e87460b60a84bf",
      "tree": "359ee2d75645d0d641f052fde11469628194add8",
      "parents": [
        "f01f6b6d379c911a2c1e350bc758cea26bfe6d9d"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 13 00:22:47 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed Jun 13 15:44:54 2012 -0700"
      },
      "message": "Layoutlib Create: Find dependencies.\n\nUsage: layoutlib_create --list-deps /path/to/layoutlib.jar\n\nPrints:\n- all classes found in the Jar and the types they use (the dependencies).\n- all the dependencies missing from the Jar and what uses them.\n\nChange-Id: I8b2674df127e1494feed7a653282e88e4d2f5494\n"
    },
    {
      "commit": "b1add0b8f251e237297ff7bad6a1107ef7d760f2",
      "tree": "c4f2ab40b07b03dd32baf96afe33d95c7a2da142",
      "parents": [
        "830dfe41d164184741cc9f446d3fb6c39987469e",
        "6892f1ec9670432f1cab71813592077bea991a8b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 12 13:00:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 13:00:15 2012 -0700"
      },
      "message": "am 6892f1ec: am 0f6471ac: Merge \"Fix issue #6641368: can\\\u0027t launch gallery\" into jb-dev\n\n* commit \u00276892f1ec9670432f1cab71813592077bea991a8b\u0027:\n  Fix issue #6641368: can\u0027t launch gallery\n"
    },
    {
      "commit": "6892f1ec9670432f1cab71813592077bea991a8b",
      "tree": "13dfe731323f7a32f0854d54da80aa8d3f54f438",
      "parents": [
        "19e046c4d2f11e6ed5d324122996080942e94569",
        "0f6471ace77387560988964ed0679f843bba6f1f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 12 12:41:36 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 12:41:36 2012 -0700"
      },
      "message": "am 0f6471ac: Merge \"Fix issue #6641368: can\\\u0027t launch gallery\" into jb-dev\n\n* commit \u00270f6471ace77387560988964ed0679f843bba6f1f\u0027:\n  Fix issue #6641368: can\u0027t launch gallery\n"
    },
    {
      "commit": "2bd8d0403be62df679f0f94ab4d84c9ae9a2e918",
      "tree": "64bab80cac947253c02794f0aea7d765aecb5e3b",
      "parents": [
        "a7e3a1e0e7d308e7e78a1992038a34485d04ab29"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 11 12:27:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 11 12:27:05 2012 -0700"
      },
      "message": "Fix issue #6641368: can\u0027t launch gallery\n\nThis is a revert of 1db36528b12395b9ed9bf8a1005a6d4ace737627,\nbut with comments added so I don\u0027t make this mistake again. :)\n\nChange-Id: I053216279e3721f08f32f561bb989736ef619f82\n"
    },
    {
      "commit": "f22eb96301aa1c4e0f7ac317daa64a617c21855c",
      "tree": "d85eda22d166b57293c05ae2e916eb63352f5f24",
      "parents": [
        "4835c17b13c08693cf9a370df86d660818f8d391",
        "c9fe6568f3e7e4d9dc6da072afc929b9a81001ed"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 18:48:00 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 18:48:00 2012 -0700"
      },
      "message": "am c9fe6568: am 9e22d9c5: Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\"\n\n* commit \u0027c9fe6568f3e7e4d9dc6da072afc929b9a81001ed\u0027:\n  Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n"
    },
    {
      "commit": "c9fe6568f3e7e4d9dc6da072afc929b9a81001ed",
      "tree": "7b99d88b9c2c59836870644894ba9996cbbd5f74",
      "parents": [
        "44ff9b8f9294e015031fc9293974604771e5efdd",
        "9e22d9c514457c4b163d03b9241e4e28b1698368"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 18:43:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 18:43:49 2012 -0700"
      },
      "message": "am 9e22d9c5: Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\"\n\n* commit \u00279e22d9c514457c4b163d03b9241e4e28b1698368\u0027:\n  Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n"
    },
    {
      "commit": "41bdb03ffb81d7bcbf6fa35d7b40e196635c86f3",
      "tree": "5eedea44e81362a897f143d2c43bbc60f669b370",
      "parents": [
        "36ac43ba9982a78b4a047c8970776505a3fab4da"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed May 30 18:02:55 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jun 05 14:30:39 2012 -0700"
      },
      "message": "Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n\nWith SDK 10.6 without _DARWIN_UNLIMITED_STREAMS aapt sometimes fails\nright away with the error \"Too many open files\" when calling fopen().\n\nChange-Id: Ifa7bd8a9530d706aa47f98be8186f1aefe943d76\n"
    },
    {
      "commit": "f6447b1878290960883314c8faa5ff705390f216",
      "tree": "99a5dd1f004e508fbe1ecab3cad6b205e2b390fb",
      "parents": [
        "0c60fabff2ee70a1ecaec2ab3a6cd79bd3021709",
        "8c8297f295be46e5ffefff73edbcd00e1848055f"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Jun 05 11:20:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 05 11:20:41 2012 -0700"
      },
      "message": "Merge \"Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\""
    },
    {
      "commit": "0eedd4be12c7bdcfe84ab28aa5fc0d07cb9334e7",
      "tree": "4c43e9c07258f5d78407b8cdfc9e0e3b80682d81",
      "parents": [
        "bce6f97202dba948808e702a7a75d9ed8f46f537",
        "9f374b9de5a557a7977b24d41f45c3464cfff8c1"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 09:55:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 09:55:22 2012 -0700"
      },
      "message": "am 9f374b9d: am 44ff9b8f: am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u00279f374b9de5a557a7977b24d41f45c3464cfff8c1\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "9f374b9de5a557a7977b24d41f45c3464cfff8c1",
      "tree": "7d2eba9b27fcddaf67d48fa22e1bebc2ff0b6dca",
      "parents": [
        "b25605cd7111bcab41ec10547f015bd2d6215c91",
        "44ff9b8f9294e015031fc9293974604771e5efdd"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "message": "am 44ff9b8f: am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002744ff9b8f9294e015031fc9293974604771e5efdd\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "44ff9b8f9294e015031fc9293974604771e5efdd",
      "tree": "91eabfeb2a567799b801af23f5e59b23d735488c",
      "parents": [
        "3df4e1a2f1b4f0eb110c8983107b7c7fa21ed338",
        "36ac43ba9982a78b4a047c8970776505a3fab4da"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "message": "am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002736ac43ba9982a78b4a047c8970776505a3fab4da\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "71ebf2830494e353dee797424bd2ebbc4fea2ff3",
      "tree": "b042acb954219718637c6136d7e67deed0f9d187",
      "parents": [
        "d7f13b4f0abea27b7ce947b69eab4716c4a2b67f",
        "fcd738240a7d716e21721514202caa5bfb2dcb98"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 04 11:13:27 2012 -0700"
      },
      "message": "am fcd73824: am dd251cab: Merge \"Fix build.\" into jb-dev\n\n* commit \u0027fcd738240a7d716e21721514202caa5bfb2dcb98\u0027:\n  Fix build.\n"
    },
    {
      "commit": "fcd738240a7d716e21721514202caa5bfb2dcb98",
      "tree": "caaa71a10f3154c2925f0c5b060126f74f1a81bf",
      "parents": [
        "5bf8f01be1cd9800e53b30117fe9ea7fb1153301",
        "dd251cab5b6e5b590cc0aeae8be8f885a7794e72"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 11:09:00 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 04 11:09:00 2012 -0700"
      },
      "message": "am dd251cab: Merge \"Fix build.\" into jb-dev\n\n* commit \u0027dd251cab5b6e5b590cc0aeae8be8f885a7794e72\u0027:\n  Fix build.\n"
    },
    {
      "commit": "bb47cf66ec72adff895d0e8b94c26f5d438be49a",
      "tree": "58824f18a2e3e751de8ef06e5cb2883bb19a36a5",
      "parents": [
        "6593be0c200f69d932e40e05e9df54b89c157c48"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 10:51:17 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 04 10:51:17 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I41415fed99d98406bc033289428bde59475c2917\n"
    },
    {
      "commit": "e0219c8baa9d63b3794f90ab772f1c19ecb74ec4",
      "tree": "cc5f1052ffefb73dcd46da1683d6bcfe6eda5adf",
      "parents": [
        "0748a5698776d1a9693a5449ffc983af26cc533b"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:38:13 2012 -0700"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:41:38 2012 -0700"
      },
      "message": "Tweak default ignore-assets path\n\nAdd .DS_Store to the list of ignored files that are silently\nignored (other dot-files are ignored but aapt emits a \"(skipping \u003cx\u003e)\"\nmessage.)\n\nAlso, add a \"!\" prefix to the *~ pattern for Emacs/Vim/Gedit backup\nfiles.\n\nFinally, move the !*.scc pattern up in front of the .* pattern, such\nthat it doesn\u0027t match the earlier .* pattern (which is verbose, unlike\n!*.scc).\n\nChange-Id: Id3e96490f1802486aea8c58366d43e9d413971b8\n"
    },
    {
      "commit": "3df4e1a2f1b4f0eb110c8983107b7c7fa21ed338",
      "tree": "1d687db32a08d214e7522eae3d9850c7fcb59036",
      "parents": [
        "ae545bb87c8509c31a72bbc03c0bee7cb23a5133",
        "0748a5698776d1a9693a5449ffc983af26cc533b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 02 09:56:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jun 02 09:56:45 2012 -0700"
      },
      "message": "am 0748a569: Merge \"aapt: Remove terminal pointer incrementaion\"\n\n* commit \u00270748a5698776d1a9693a5449ffc983af26cc533b\u0027:\n  aapt: Remove terminal pointer incrementaion\n"
    },
    {
      "commit": "0748a5698776d1a9693a5449ffc983af26cc533b",
      "tree": "cd409bf30a0c15e69a7417a7c22f9c53af70965b",
      "parents": [
        "54a2a6df410ad860f048ef4ff653820787f68f3a",
        "c4293c14083d833bb5d13dc19e73daed8cbbb4ea"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jun 02 09:21:36 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 02 09:21:37 2012 -0700"
      },
      "message": "Merge \"aapt: Remove terminal pointer incrementaion\""
    },
    {
      "commit": "8c8297f295be46e5ffefff73edbcd00e1848055f",
      "tree": "f38f71bdc62934d23e3fc5700d0aa354bcad8a7b",
      "parents": [
        "022a656396a9ceef931cbd6e24c9c44bcf7d2a90"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed May 30 18:02:55 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu May 31 15:06:22 2012 -0700"
      },
      "message": "Fix \"Too many open files\" error for aapt built with Mac OS X SDK 10.6.\n\nWith SDK 10.6 without _DARWIN_UNLIMITED_STREAMS aapt sometimes fails\nright away with the error \"Too many open files\" when calling fopen().\n\nChange-Id: Ifa7bd8a9530d706aa47f98be8186f1aefe943d76\n"
    },
    {
      "commit": "ce783749b191a58e4fed9a397066376915c1db65",
      "tree": "fe7bbae9d9db880b5e69d82d96cdffa5d4040ed9",
      "parents": [
        "b042f2d9908e20852e4077878e50a0c07b8eee79",
        "f3b4c93e0da9af2db9e16864faa734cf70fecfe3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 29 15:57:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 29 15:57:52 2012 -0700"
      },
      "message": "am f3b4c93e: am ae5811c7: Merge \"Fix (mostly) issue #5109947: Race condition between retrieving a...\" into jb-dev\n\n* commit \u0027f3b4c93e0da9af2db9e16864faa734cf70fecfe3\u0027:\n  Fix (mostly) issue #5109947: Race condition between retrieving a...\n"
    },
    {
      "commit": "f3b4c93e0da9af2db9e16864faa734cf70fecfe3",
      "tree": "7e9700c7556be59ccc6919bcb4cd0a3cdb50b7f6",
      "parents": [
        "09dfd60bc37585e2670e4ca997940256e5b21ac8",
        "ae5811c71405878b09eace395ec2b28e54eeb427"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 29 15:53:38 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 29 15:53:38 2012 -0700"
      },
      "message": "am ae5811c7: Merge \"Fix (mostly) issue #5109947: Race condition between retrieving a...\" into jb-dev\n\n* commit \u0027ae5811c71405878b09eace395ec2b28e54eeb427\u0027:\n  Fix (mostly) issue #5109947: Race condition between retrieving a...\n"
    },
    {
      "commit": "6ae8d1821822296df0606c9cd1c46708cc21cb58",
      "tree": "eb4b17b255b1f0e78078923474afcaad67755f12",
      "parents": [
        "3dac02265e42bf176e26b83da430ce15d6fd06df"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 23 13:12:42 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 29 13:33:09 2012 -0700"
      },
      "message": "Fix (mostly) issue #5109947: Race condition between retrieving a...\n\n...content provider and updating its oom adj\n\nThis introduces the concept of an \"unstable\" reference on a content\nprovider.  When holding such a reference (and no normal stable ref),\nthe content provider dying will not cause the client process to be\nkilled.\n\nThis is used in ContentResolver.query(), .openAssetFileDescriptor(),\nand .openTypedAssetFileDescriptor() to first access the provider\nwith an unstable reference, and if at the point of calling into the\nprovider we find it is dead then acquiring a new stable reference\nand doing the operation again.  Thus if the provider process dies\nat any point until we get the result back, our own process will not\nbe killed and we can safely retry the operation.\n\nArguably there is still the potential for a race -- if somehow the\nprovider is killed way late by the OOM killer after the query or\nopen has returned -- but this should now be *extremely* unlikely.\nWe also continue to have the issue with the other calls, but these\nare much less critical, and the same model can\u0027t be used there (we\nwouldn\u0027t want to execute two insert operations for example).\n\nThe implementation of this required some significant changes to the\nunderlying plumbing of content providers, now keeping track of the\ntwo different reference counts, and managing them appropriately.  To\nfacilitate this, the activity manager now has a formal connection\nobject for a client reference on a content provider, which hands to\nthe application when opening the provider.\n\nThese changes have allowed a lot of the code to be cleaned up and\nsubtle issues closed.  For example, when a process is crashing, we\nnow have a much better idea of the state of content provider clients\n(olding a stable ref, unstable ref, or waiting for it to launch), so\nthat we can correctly handle each of these.\n\nThe client side code is also a fair amount cleaner, though in the\nfuture there is more than should be done.  In particular, the two\nProviderClientRecord and ProviderRefCount classes should be combined\ninto one, part of which is exposed to the ContentResolver internal\nAPI as a reference on a content provider with methods for updating\nreference counts and such.  Some day we\u0027ll do that.\n\nChange-Id: I87b10d1b67573ab899e09ca428f1b556fd669c8c\n"
    },
    {
      "commit": "98a0607a314a7a6023fabdafaa8e470a1e800c09",
      "tree": "820f623b5b8b83061597cc24996cab7615f54e34",
      "parents": [
        "d4cb08df751e29338f4df1a76b303aa720f2bc00"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:24:22 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Thu May 24 11:07:14 2012 -0700"
      },
      "message": "Merge \"Fix length of pattern.\" DO NOT MERGE.\n\nAfter skipping * with \"token++\", the length should decrease by 1 as\nwell.\n\n(merged from 996b073e813ba1a22a13282ccdebb664f14ba898)\n\nChange-Id: Ie6232ef603bb31e25e03b926e6c1bb92ac34902d\n"
    },
    {
      "commit": "bb5a8fd908a53e5d0fdaf84548d3b835b2ccc426",
      "tree": "9269c7f21af63f58bb50f1e8ac69c90eac86f3a0",
      "parents": [
        "27637173bb815b4cf8684474595d32604753ccba",
        "9d98a089756b692eefeae7f92cca15e121196e0c"
      ],
      "author": {
        "name": "Manuel Roman",
        "email": "manuelroman@google.com",
        "time": "Wed May 23 16:00:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 23 16:00:37 2012 -0700"
      },
      "message": "am 9d98a089: Check result handler is not null\n\n* commit \u00279d98a089756b692eefeae7f92cca15e121196e0c\u0027:\n  Check result handler is not null\n"
    },
    {
      "commit": "9d98a089756b692eefeae7f92cca15e121196e0c",
      "tree": "8e2f4095f1845d2e410ba5da75b4116bd8f75b25",
      "parents": [
        "993f8a8c6518ac7d623af487c1b20835149ab673"
      ],
      "author": {
        "name": "Manuel Roman",
        "email": "manuelroman@google.com",
        "time": "Wed May 23 14:25:31 2012 -0700"
      },
      "committer": {
        "name": "Manuel Roman",
        "email": "manuelroman@google.com",
        "time": "Wed May 23 14:25:31 2012 -0700"
      },
      "message": "Check result handler is not null\n\nIf caller passes a null result handler to the proxy methods, we need\nto check it when getting the result. Otherwise we try to invoke a method\non a null object\n\nChange-Id: Ic2f456c36cb542b782b6a6d0d4d607ccf0987496\n"
    },
    {
      "commit": "b50a64878e0af817baf7f1ce491f6c08e55d9419",
      "tree": "edc11f37cbb4e0f7f648201ddd05fd112b87a6f0",
      "parents": [
        "a6cfe52eb83995b124efec5f73bcb179caadf888",
        "ac9f50573dad2050d261850f1accbcea383cc6f0"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 14:20:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 22 14:20:14 2012 -0700"
      },
      "message": "am ac9f5057: am 996b073e: Fix length of pattern.\n\n* commit \u0027ac9f50573dad2050d261850f1accbcea383cc6f0\u0027:\n  Fix length of pattern.\n"
    },
    {
      "commit": "ac9f50573dad2050d261850f1accbcea383cc6f0",
      "tree": "20b3b890015bf87346a6c5ebfa019d3f734b77e0",
      "parents": [
        "88ab8c8de4d8d2e2c1f3237024ecdefd77300916",
        "996b073e813ba1a22a13282ccdebb664f14ba898"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:43:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 22 11:43:14 2012 -0700"
      },
      "message": "am 996b073e: Fix length of pattern.\n\n* commit \u0027996b073e813ba1a22a13282ccdebb664f14ba898\u0027:\n  Fix length of pattern.\n"
    },
    {
      "commit": "996b073e813ba1a22a13282ccdebb664f14ba898",
      "tree": "0f59bedc48c4da4a49b82eac6170c5d8d7e37e6f",
      "parents": [
        "0eaeb69d1c4849da8ab1df70b84e90837193df67"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:24:22 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:35:22 2012 -0700"
      },
      "message": "Fix length of pattern.\n\nAfter skipping * with \"token++\", the length should decrease by 1 as\nwell.\n\nChange-Id: I132eb7d12bb756f2f713c607e92741ca834aef81\n"
    },
    {
      "commit": "b1b0058346190d6194afc7a87dd7d19cc6fd02c5",
      "tree": "0210d332e8d0e7ceec106ceb3495a05794029ffe",
      "parents": [
        "a43a91b72723948efee5eb1b84692a687aa90333",
        "72669b5f4663937b09d33f9d951f0b86a03fa98b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 21 14:29:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 21 14:29:14 2012 -0700"
      },
      "message": "am 72669b5f: am 13a0271c: Merge \"Add aapt support for generating proguard rules for onClick methods.\" into jb-dev\n\n* commit \u002772669b5f4663937b09d33f9d951f0b86a03fa98b\u0027:\n  Add aapt support for generating proguard rules for onClick methods.\n"
    },
    {
      "commit": "b80866a44e0e6fd46ea42615d4cff2d4289ee832",
      "tree": "60bfe363d67c27f9eeafb24efc6584bb3f84cc35",
      "parents": [
        "0af2f46da7fcb8a38bb723067cd3555a4b0379c3",
        "f67f834a9cb7ee9b743e79af85cb42bd45b5aa23"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 21 14:27:08 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 21 14:27:08 2012 -0700"
      },
      "message": "am f67f834a: am 8748399f: am 61394501: Merge \"Support a new ANDROID_AAPT_IGNORE env var.\"\n\n* commit \u0027f67f834a9cb7ee9b743e79af85cb42bd45b5aa23\u0027:\n  Support a new ANDROID_AAPT_IGNORE env var.\n"
    },
    {
      "commit": "3a00a28ddfee17a4f7d73e02329f25a2eb923bab",
      "tree": "af213a35741f3ab838b77af45e44e18f3f3113fb",
      "parents": [
        "c39b8fa901693bab8af939c051f60209d2509d3c",
        "a4cae2847eb086742ff9d3b24a469242bd9ddae1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 21 14:12:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 21 14:12:16 2012 -0700"
      },
      "message": "am a4cae284: am 4b51e293: Merge \"Fix the preloaded-classes tool for JellyBean.\" into jb-dev\n\n* commit \u0027a4cae2847eb086742ff9d3b24a469242bd9ddae1\u0027:\n  Fix the preloaded-classes tool for JellyBean.\n"
    },
    {
      "commit": "9c06ac09c3530c5f0bc0b47a3350eedb5b539c35",
      "tree": "4ce6121aa3126bd243e014b449df65c72296de1f",
      "parents": [
        "ee3bb6498adc801023798b4fc48b5dcd77e059f5",
        "6c255a3a378143af59021d29b4980b28f1ab4544"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 21 13:09:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 21 13:09:29 2012 -0700"
      },
      "message": "Merge \"Merge \"AAPT: support a new --ignore-assets flag.\"\" into jb-dev"
    },
    {
      "commit": "6c255a3a378143af59021d29b4980b28f1ab4544",
      "tree": "145d2632678e6227c664a046de8930ff2e3873be",
      "parents": [
        "43a760ba84a5357bae792a33ad4a0e946f02679c"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 07 16:16:46 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Fri May 18 20:34:44 2012 -0700"
      },
      "message": "Merge \"AAPT: support a new --ignore-assets flag.\"\n\nAAPT has a fixed built-in list of files and directories\nto ignore when parsing resource files. Over the years we\nalways had developers requiring specific patterns.\n\nAdded a command-line option for it:\n  aapt di --ignore-assets \"foo*:*.blah\"\n\nIf the env var ANDROID_AAPT_IGNORE is set, it is parsed\nto find which file/directory patterns to ignore.\n\nOtherwise a default is used that matches the current behavior.\n\nSDK Bug: 5343 24067\n\n(cherry-pick from AOSP 90897ed87bce639bf6bb2ccf15fbabb59b131bab)\n\nChange-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f\n"
    },
    {
      "commit": "72669b5f4663937b09d33f9d951f0b86a03fa98b",
      "tree": "3daf749f3aa07123d471ab58c86ceaace6cee55f",
      "parents": [
        "099a220cf57f00732d347cd49422c849354d2e38",
        "13a0271cb81d497edbf93f3d6ecf4b9b8da4ee69"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:41:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 19:41:10 2012 -0700"
      },
      "message": "am 13a0271c: Merge \"Add aapt support for generating proguard rules for onClick methods.\" into jb-dev\n\n* commit \u002713a0271cb81d497edbf93f3d6ecf4b9b8da4ee69\u0027:\n  Add aapt support for generating proguard rules for onClick methods.\n"
    },
    {
      "commit": "9275197d35a99c3f187d18d0eda6ead3b8a32603",
      "tree": "ba364f6cf805ce6dac0d3eb8ced5d82d71cd956a",
      "parents": [
        "fb5c3dba4ddac023cfd4cdcabdfdbcf343197c94"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:22:14 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:23:19 2012 -0700"
      },
      "message": "Add aapt support for generating proguard rules for onClick methods.\n\nAlso fix Activity menu inflater when using the dark on light\ntheme wrapper to still be able to find onClick listeners.\n\nChange-Id: Ie206db26d1df96041bc477804e476b02ad99dc9d\n"
    },
    {
      "commit": "f67f834a9cb7ee9b743e79af85cb42bd45b5aa23",
      "tree": "44605c7c36f04f1c951a07374e32d325a856721a",
      "parents": [
        "38e34874a89b6e71464bfa3e89480252000765ad",
        "8748399f6f999d21eef9226baadb20f71dfb61ea"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Fri May 18 16:33:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 16:33:14 2012 -0700"
      },
      "message": "am 8748399f: am 61394501: Merge \"Support a new ANDROID_AAPT_IGNORE env var.\"\n\n* commit \u00278748399f6f999d21eef9226baadb20f71dfb61ea\u0027:\n  Support a new ANDROID_AAPT_IGNORE env var.\n"
    },
    {
      "commit": "38e34874a89b6e71464bfa3e89480252000765ad",
      "tree": "4d1c5a4945991dec9dcefbb85ca59ca28a83afe5",
      "parents": [
        "1b61dc2eb7f738bb49142db14a7d339e2fd90545",
        "2a9b85d7ccdd3b8e6be90454cdcb4be3b032cd64"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri May 18 16:33:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 16:33:10 2012 -0700"
      },
      "message": "am 2a9b85d7: am c0f17383: Merge \"Move kxml2 to prebuilts/misc\"\n\n* commit \u00272a9b85d7ccdd3b8e6be90454cdcb4be3b032cd64\u0027:\n  Move kxml2 to prebuilts/misc\n"
    },
    {
      "commit": "a4cae2847eb086742ff9d3b24a469242bd9ddae1",
      "tree": "7b64bbefff9c6a040d64ceaac1bc8bec8c4bc4cb",
      "parents": [
        "5f0d6063fac445f4628feeeafbc34dab35d34966",
        "4b51e293d86d60dc651c409ae0e25078a2170740"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 18 15:59:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 18 15:59:41 2012 -0700"
      },
      "message": "am 4b51e293: Merge \"Fix the preloaded-classes tool for JellyBean.\" into jb-dev\n\n* commit \u00274b51e293d86d60dc651c409ae0e25078a2170740\u0027:\n  Fix the preloaded-classes tool for JellyBean.\n"
    },
    {
      "commit": "613945011ef9f79388a1cf21acf514154e2d5af2",
      "tree": "f3ffbfd0d969139f01b9f349ea7821f4e4af0018",
      "parents": [
        "c0f17383579cf49f897fdd1d55aaf44b8d6be0da",
        "90897ed87bce639bf6bb2ccf15fbabb59b131bab"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Fri May 18 13:00:31 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 18 13:00:31 2012 -0700"
      },
      "message": "Merge \"Support a new ANDROID_AAPT_IGNORE env var.\""
    },
    {
      "commit": "c0f17383579cf49f897fdd1d55aaf44b8d6be0da",
      "tree": "d9e7f0a6611afb43096269bfc37008e8172a07ca",
      "parents": [
        "ad3f86a526c49ecd733564771b5c2ce7eade2a96",
        "bda124453d58d8b55d9026e4c5e7ae8c804e995a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri May 18 09:51:03 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 18 09:51:04 2012 -0700"
      },
      "message": "Merge \"Move kxml2 to prebuilts/misc\""
    },
    {
      "commit": "98e00add5544df3d8fc1804bc0be825b2238701c",
      "tree": "79d6ce9ea61ba9e2f7c34334396abdcad4d1738f",
      "parents": [
        "c6015df128811a52faf918bd34d0d7296c8a6834"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 17 17:03:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 17 17:03:51 2012 -0700"
      },
      "message": "Fix the preloaded-classes tool for JellyBean.\n\nBug: 5213043\nChange-Id: I8178ca04da0bd72a90244983be5e8ecfbc1b0573\n"
    },
    {
      "commit": "e4b1c08abf88c55e71c0afab4c3c853d96d5d26c",
      "tree": "b8de69fe4984e76a96141550d27cb656280ecfac",
      "parents": [
        "6917b2a10d9b701282fbfb85be48eeb7e7877882",
        "095c2d315d3bdf4cdb61439d427413c0bd7796e1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 14 19:37:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 14 19:37:24 2012 -0700"
      },
      "message": "am 095c2d31: am 4286d6d1: Fix build.\n\n* commit \u0027095c2d315d3bdf4cdb61439d427413c0bd7796e1\u0027:\n  Fix build.\n"
    },
    {
      "commit": "6917b2a10d9b701282fbfb85be48eeb7e7877882",
      "tree": "0fd56ec04c94ee9202908cdf814ec6ab5d1b2ee8",
      "parents": [
        "9a19d16a1a44b8f394f93e116adb48024148f8ef",
        "2da87ec32e72c2c25998e2444155c00074cfbd40"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 14 19:37:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 14 19:37:21 2012 -0700"
      },
      "message": "am 2da87ec3: am 2a7a6ca0: Merge \"Implement new window cropping.\" into jb-dev\n\n* commit \u00272da87ec32e72c2c25998e2444155c00074cfbd40\u0027:\n  Implement new window cropping.\n"
    },
    {
      "commit": "095c2d315d3bdf4cdb61439d427413c0bd7796e1",
      "tree": "31ddc4f91d1631b8c3183120da12eab33732d147",
      "parents": [
        "2da87ec32e72c2c25998e2444155c00074cfbd40",
        "4286d6d115385391b75db8e6c4e397008ef9b3db"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 14 19:32:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 14 19:32:43 2012 -0700"
      },
      "message": "am 4286d6d1: Fix build.\n\n* commit \u00274286d6d115385391b75db8e6c4e397008ef9b3db\u0027:\n  Fix build.\n"
    },
    {
      "commit": "2da87ec32e72c2c25998e2444155c00074cfbd40",
      "tree": "49dd2b0d98e7b0e451c23c15738a5e4cdf0e24c4",
      "parents": [
        "58b0dcde83354bd1ae9091a7cbc7f207fb29960a",
        "2a7a6ca00ab176105b5bbfa6b17bb0dcd058d517"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 14 19:32:39 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 14 19:32:39 2012 -0700"
      },
      "message": "am 2a7a6ca0: Merge \"Implement new window cropping.\" into jb-dev\n\n* commit \u00272a7a6ca00ab176105b5bbfa6b17bb0dcd058d517\u0027:\n  Implement new window cropping.\n"
    },
    {
      "commit": "4286d6d115385391b75db8e6c4e397008ef9b3db",
      "tree": "a44118310b76995e9b1eed18f6707b062117504b",
      "parents": [
        "2a7a6ca00ab176105b5bbfa6b17bb0dcd058d517"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 16:03:39 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 16:03:39 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I53263d509559c70100cd78ad49f225f0dafd8891\n"
    },
    {
      "commit": "85afd1b6f871d471fdff1980134676a5f1690525",
      "tree": "94f1a2661418208e7969d659dc694353ff43d304",
      "parents": [
        "dca5fb9e7e193d6aed233e0650691675a56022a3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 13:31:06 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun May 13 13:31:06 2012 -0700"
      },
      "message": "Implement new window cropping.\n\nThe window manager now performs the crop internally, evaluating\nit every animation from, to be able to update it along with\nthe surface position.\n\nChange-Id: I960a2161b9defb6fba4840fa35aee4e411c39b32\n"
    },
    {
      "commit": "e5c511a1cceffd17b8edb355f2c19a7498a5e229",
      "tree": "16924ebcae93f40adc90e35766b8734e45373adf",
      "parents": [
        "800421ba616598098278e63fdc0f189a17541c95",
        "bf1b5fa944158044a595706924b935b5577ec0f0"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu May 10 11:57:33 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 10 11:57:33 2012 -0700"
      },
      "message": "am bf1b5fa9: am 421dceb0: Merge \"Making transition out of recents look better\" into jb-dev\n\n* commit \u0027bf1b5fa944158044a595706924b935b5577ec0f0\u0027:\n  Making transition out of recents look better\n"
    },
    {
      "commit": "58d4f2e36f4091272c40d59fb3b7b80ee792ba57",
      "tree": "41e60ca2e85a20b3c9c38ba8080b73eb19b11b62",
      "parents": [
        "9979ee45852a304fbf41d818092e509224152cde",
        "e2e0391389fce1a9fd9d5c5442ba1901b6d96211"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 10 11:38:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 10 11:38:52 2012 -0700"
      },
      "message": "am e2e03913: am dd79ae6b: Merge \"Add infrastructure for accessing \"unstable\" content providers.\" into jb-dev\n\n* commit \u0027e2e0391389fce1a9fd9d5c5442ba1901b6d96211\u0027:\n  Add infrastructure for accessing \"unstable\" content providers.\n"
    },
    {
      "commit": "bf1b5fa944158044a595706924b935b5577ec0f0",
      "tree": "7f1c394643715a533da215864c4858a762e8955d",
      "parents": [
        "2c51f2b949d7b07d1f349dad7b90ce7bb1314c1b",
        "421dceb0a4fd8f20349a0de277f82b56e71cb90b"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu May 10 10:45:30 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 10 10:45:30 2012 -0700"
      },
      "message": "am 421dceb0: Merge \"Making transition out of recents look better\" into jb-dev\n\n* commit \u0027421dceb0a4fd8f20349a0de277f82b56e71cb90b\u0027:\n  Making transition out of recents look better\n"
    },
    {
      "commit": "421dceb0a4fd8f20349a0de277f82b56e71cb90b",
      "tree": "092633533796bf65021ee895b1bd7d7a42cb99c2",
      "parents": [
        "dc442534070aa8ff4c07cae16fc5207ba6821651",
        "21385cd83d7d7938b57a4acbaa236dd4c7804ed4"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu May 10 10:35:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 10:35:19 2012 -0700"
      },
      "message": "Merge \"Making transition out of recents look better\" into jb-dev"
    },
    {
      "commit": "e2e0391389fce1a9fd9d5c5442ba1901b6d96211",
      "tree": "303919fb5787ef92da3a372b2d5a18abd2ee28c5",
      "parents": [
        "dfca63f37484b207ff8dfe5fefc553c5ce1d7bc4",
        "dd79ae6b7201b68dbe2a223d2f371ea1a473f6c4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 10 09:26:03 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 10 09:26:03 2012 -0700"
      },
      "message": "am dd79ae6b: Merge \"Add infrastructure for accessing \"unstable\" content providers.\" into jb-dev\n\n* commit \u0027dd79ae6b7201b68dbe2a223d2f371ea1a473f6c4\u0027:\n  Add infrastructure for accessing \"unstable\" content providers.\n"
    },
    {
      "commit": "90897ed87bce639bf6bb2ccf15fbabb59b131bab",
      "tree": "53b5b28bf5a41e41a35751f12becef9dd94a0dbe",
      "parents": [
        "ad3f86a526c49ecd733564771b5c2ce7eade2a96"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 07 16:16:46 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed May 09 21:16:26 2012 -0700"
      },
      "message": "Support a new ANDROID_AAPT_IGNORE env var.\n\nAAPT has a fixed built-in list of files and directories\nto ignore when parsing resource files. Over the years we\nalways had developers requiring specific patterns.\nIf the env var ANDROID_AAPT_IGNORE is set, it is parsed\nto find which file/directory patterns to ignore.\nOtherwise a default is used that matches the current behavior.\n\nAdded a command-line option for it:\n  aapt di --ignore-assets \"foo*:*.blah\"\n\nSDK Bug: 5343 24067\n\nChange-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f\n"
    },
    {
      "commit": "21385cd83d7d7938b57a4acbaa236dd4c7804ed4",
      "tree": "4437d4ba6ded58da748f2231c2d87c5c406b807e",
      "parents": [
        "0fa152912e55f2d08f0a8d1260332a81e5706694"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu May 03 10:57:31 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Wed May 09 20:25:28 2012 -0700"
      },
      "message": "Making transition out of recents look better\n\n- Fading out recents first, then scaling up app\nthumbnail\n- Fade Recents out over 130ms\n- Delay the window animation for 200ms first,\nthen animate for 200ms (previously we didn\u0027t delay\nand then animated for 300ms)\n\nBug: 6390075\n\nChange-Id: Ia8c753bf7ee03d2acef6eb2772b28d88fe10a682"
    },
    {
      "commit": "652b6d1e591f6684cda4b93d4712920f287991b4",
      "tree": "5ffe183aa2cbe66c8b8b89e8f3a809e4e7f4c603",
      "parents": [
        "a53de0629f3b94472c0f160f5bbe1090b020feab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 09 18:18:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 09 18:18:40 2012 -0700"
      },
      "message": "Add infrastructure for accessing \"unstable\" content providers.\n\nWe have an API and some stuff that purports to this, but no real\nimplementation yet.\n\nChange-Id: I93555440014a50fdf79fa3f65318d90fb82265b4\n"
    },
    {
      "commit": "30600306592b571a455cfbc89e609522a5a158ab",
      "tree": "7e28a53823c63119e93ca1b57abe06ec1e7f3c28",
      "parents": [
        "ef63d094118d86d7ce371fd98bd05415d3f17ea2",
        "50e657e66ce6663fdff929cd365a3daf87cef9ae"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed May 09 10:10:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 10:10:48 2012 -0700"
      },
      "message": "am 50e657e6: am 024d3b23: Merge \"Add missing native method to Canvas_Delegate.\" into jb-dev\n\n* commit \u002750e657e66ce6663fdff929cd365a3daf87cef9ae\u0027:\n  Add missing native method to Canvas_Delegate.\n"
    },
    {
      "commit": "8fd851709fae7bb48aa513ebcf2285a8cdb28dce",
      "tree": "4585460e55bfc10ea8b2fcd90cc76d66de1eebad",
      "parents": [
        "f3f107140cb1b937d45e14dda6d18fcf78ca9948",
        "a394efa33531ce36c432872ec56ad0c93a9999e7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 10:09:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 10:09:20 2012 -0700"
      },
      "message": "am a394efa3: am 947f1c8d: Merge \"Move CancellationSignal to android.os package.\" into jb-dev\n\n* commit \u0027a394efa33531ce36c432872ec56ad0c93a9999e7\u0027:\n  Move CancellationSignal to android.os package.\n"
    },
    {
      "commit": "f3f107140cb1b937d45e14dda6d18fcf78ca9948",
      "tree": "232cd11274dffd8f936875efc18234b5cbb3fcd3",
      "parents": [
        "df74ef8ea51641d60e763deee73db76a8897b5d3",
        "fbb7b072d87f15fce2b694054a27a8ec5db3daaf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 10:09:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 10:09:17 2012 -0700"
      },
      "message": "am fbb7b072: am 6d6d186c: Merge \"The \\\u0027localize\\\u0027 tool is dead.\" into jb-dev\n\n* commit \u0027fbb7b072d87f15fce2b694054a27a8ec5db3daaf\u0027:\n  The \u0027localize\u0027 tool is dead.\n"
    },
    {
      "commit": "1c08c1b0f1e3dbaa6c53c78054ae0ce17547f4a6",
      "tree": "ad4562d51de62dc795885bcb1533308b48d575b1",
      "parents": [
        "b20f0d752214de9325b37a72832a19b0cc6b33cb",
        "e8e94a0743eae912658865645db75619533449b3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 10:08:26 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 10:08:26 2012 -0700"
      },
      "message": "am e8e94a07: am 41a4704b: Merge \"Small tweaks to orientation.\" into jb-dev\n\n* commit \u0027e8e94a0743eae912658865645db75619533449b3\u0027:\n  Small tweaks to orientation.\n"
    }
  ],
  "next": "50e657e66ce6663fdff929cd365a3daf87cef9ae"
}
