)]}'
{
  "log": [
    {
      "commit": "d21cfab2446f07945b822641681e6b59c839158d",
      "tree": "c4d5392ec02f860abdf03a57f4d1124af202a34b",
      "parents": [
        "601ccfbcb75355852e5dba40ba4d169aee2331ec"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Mar 10 08:58:36 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Mar 10 09:05:30 2017 -0800"
      },
      "message": "Add missing includes.\n\nIncludes are transitively imported by \u003cstring\u003e in String8.h + String16.h\nbut that include is being removed.\n\nTest: pass\nChange-Id: Ide5c011b40b4a4f031dd26ead08b5c8d5d299693\n"
    },
    {
      "commit": "22dbf3947fedf988e714a4703ddf85fc41413f90",
      "tree": "ad823e9592de58265e4740a4d1ae251bfa260348",
      "parents": [
        "6048d9db5f11045412504b533ea9a92a7df6354c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 28 15:06:51 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 03 14:47:47 2017 -0800"
      },
      "message": "clean-up libutils includes\n\nmoved Foo.h as first include of Foo.cpp, and\nremoved redundant includes.\n\nMade NativeHandle non virtual.\n\n\nTest: run \u0026 compile\nBug: n/a\n\nChange-Id: I37fa746cd42c9ba23aba181f84cb6c619386406a"
    },
    {
      "commit": "1dcc0c82394ec9cd6887c7ca39f9b5024db01ac9",
      "tree": "5e07e40ae8bc52895b05b42e9d627c4f3057a0e0",
      "parents": [
        "de717d55c7a3f7d8051222f26ef12eb38b3777f2"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Jul 20 20:01:33 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Aug 02 18:47:53 2016 +0000"
      },
      "message": "Unicode: specify destination length in utf8_to_utf16 methods\n\nString16(const char *utf8) now returns the empty string in case\na string ends halfway throw a utf8 character.\n\nBug: 29267949\n\nChange-Id: I5223caa7d42f4582a982609a898a02043265c6d3\n"
    },
    {
      "commit": "2a9a993af99585af0bce6eca6d92c86370977a27",
      "tree": "a91bec16022b9d29174f69418b206fe2a2af3e47",
      "parents": [
        "a0c90085ecd2477e8ccdcc7155e92ab38a8e928c",
        "8b452b876b90dcfff1dab9012b65b5e67c4531a4"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 16 15:06:22 2016 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 16 15:06:22 2016 +0100"
      },
      "message": "Merge commit \u00278b452b876b90dcfff1dab9012b65b5e67c4531a4\u0027 into manual_merge_8b452b8\n\nChange-Id: Iacdc2d521f669661b4979c03b0476512abdb37c7\n"
    },
    {
      "commit": "5bacef33c91e9625dfd09ecf638c2de7faecd34e",
      "tree": "545ac749f183ec37edc89eb5e2066427cc0457fa",
      "parents": [
        "ea41a18c933d20264b89fc89febf387231dc0c24"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 09 14:43:31 2016 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 09 19:45:07 2016 +0100"
      },
      "message": "Add String16#contains and strstr16 methods.\n\nThese are needed for aapt to find javadoc comments that contain\n\"@removed\" in order to skip them when printing styleable docs.\n\nBug: 28663748\nChange-Id: I8866d2167c41e11d6c2586da369560d5815fd13e\n"
    },
    {
      "commit": "9ac4e005b4fbc32fe63dd566c5c7e54e186fbe5c",
      "tree": "1d06f26f2d8eed8db561cbcbc7343a070c2f4761",
      "parents": [
        "95fd5270653d9004466ab54bfc3d7f82a5014baf"
      ],
      "author": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Tue Feb 16 14:20:05 2016 -0800"
      },
      "committer": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Thu Feb 18 17:04:23 2016 -0800"
      },
      "message": "libutils: add String8 and String16 std_string utility methods\n\nAdd utility methods that convert String16 and String8 into\nstd::string.\n\nAlso, remove a repeated include of \u003cutils/Unicode.h\u003e in\nString16.h, since it is not used in that header file,\nand is already included in String16.cpp.\n\nBUG: 27200800\nChange-Id: I5238aeb70689499763060a99dff9950fbb7adb3e\nTEST: libutils builds successfully.\n"
    },
    {
      "commit": "f9d16ef1065bc2bb6162d3e4cdd40f47f9961edf",
      "tree": "842738a20cf892950e6fbe9bbcf06908a46ba7d4",
      "parents": [
        "361b14777616a2d667d55eddeabfca24d816df0b"
      ],
      "author": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Tue Feb 16 15:17:10 2016 -0800"
      },
      "committer": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Tue Feb 16 15:21:34 2016 -0800"
      },
      "message": "libutils: remove whitespaces in String16.cpp and String16.h\n\nRemove trailing whitespaces in both these files.\n\nBUG: None\nChange-Id: I18eca5162871b5b2bf7757a7ef36a4e80073798c\n"
    },
    {
      "commit": "282efae9c3d14ca2641e5fea223cb1be204feff1",
      "tree": "4c2dfa576e743d3cf7780c017ca9757a95a2e1a2",
      "parents": [
        "fca4821e05f1d4684185b559d177ffde6937bf61"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 30 15:28:30 2015 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 30 15:42:02 2015 +0100"
      },
      "message": "system/core: remove methods returning SharedBuffer in String8, String16\n\nTowards deprecation of SharedBuffer\n\nChange-Id: I3069837db32837bcc0f5d8f1118ccd502c9070dc\n"
    },
    {
      "commit": "d2529f28308ba7583f4d8baaa937218d81cbe8bd",
      "tree": "08e7ec119fa22c98d69f649e7ffa05f544a7d9f0",
      "parents": [
        "1d758c90959225c76ed4d318290ad1bf11532409"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 16:22:59 2015 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 16:22:59 2015 +0100"
      },
      "message": "libutils: hide SharedBuffer by moving SharedBuffer.h to the implementation directory\n\nSome methods in header files of classes using SharedBuffer need\nto be moved to the implementation files accordingly\n\nChange-Id: I891f3ace2b940ab219e4e449040bfed71c0547db\n"
    },
    {
      "commit": "5bed8036644f552210a7cfcbed2d6d20cf2981b0",
      "tree": "37f784e181086e99b17e00d46b6da30529751539",
      "parents": [
        "bf0f25905b12581f05b65b1ebe95211c727ae483"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Apr 30 11:10:46 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jun 02 15:57:50 2014 -0700"
      },
      "message": "libutils: turn on -Werror\n\n- Deal with some -Wunused issues\n- Override PRI macros (windows)\n- Revert use of PRI macros on off64_t (linux)\n- Deal with a gnu++11 complaince issue\n\nChange-Id: Ie66751293bd84477a5a6dfd8a57e700a16e36964\n"
    },
    {
      "commit": "6443033f6d22db50f9a75fb0df750928ea70b498",
      "tree": "5c60de57cb244e6f371415313243e42457855744",
      "parents": [
        "967729b7ca675d6f2c895a1bd56216a62b217e50"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu May 29 12:45:00 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu May 29 13:14:35 2014 -0700"
      },
      "message": "String16.cpp rm unused utils/Debug.h\n\nChange-Id: Ie7e3695770f20be33738a0f0a868cc914248d91a\n"
    },
    {
      "commit": "d98e07fdf9c338589f263c47ce5c844ed43efad5",
      "tree": "d4ff9849df225df1e4c46386fdabe30407ba5513",
      "parents": [
        "be06210c508d5878dcc7d185e5613f4c7e38dfe8"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Aug 02 14:40:08 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Aug 02 14:40:08 2013 -0700"
      },
      "message": "move libs/utils to libutils\n\nChange-Id: I6cf4268599460791414882f91eeb88a992fbd29d\n"
    },
    {
      "commit": "4485d0d966d062d1b45b635e2447a2d2f96c3f38",
      "tree": "89a0c95a7a27261e626dbedfd3fcacff01e41b20",
      "parents": [
        "9eb2a3b1c0cc1ff3082a9283e24c8babc112f56b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 08 16:04:13 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:57:01 2013 -0700"
      },
      "message": "new String8, String16 ctors to initialize empty static strings with static linkage\n\nwhen libutils is statically linked, the ordering of the static\ninitializer is not guaranteed and therefore it\u0027s unsafe to use\nempty static strings: e.g.:\n\nstatic String8 sThisStaticStringIsNotSafe;\n\ninstead, this new constructor can be used:\n\nstatic String8 sThisStaticStringIsSafe(kEmptyString);\n\nChange-Id: Ia3daf1cab1c97d021c0ee9c2b394b5e27e8d6c0d\n"
    },
    {
      "commit": "9eb2a3b1c0cc1ff3082a9283e24c8babc112f56b",
      "tree": "f88a03d8dd28a8f641be1c2eac57a42f0a11e599",
      "parents": [
        "19159f90020c04ac2f4dcb39424d740f765ed9a3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 06 20:20:50 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:57:01 2013 -0700"
      },
      "message": "libutils clean-up\n\nChange-Id: I6ff4cfc736751de2912c697f954e45e275f2d386\n"
    },
    {
      "commit": "ae07445e9793724324b93bb593fe20be2a386707",
      "tree": "21b2375319af1a9810b23628351d8d6863de837c",
      "parents": [
        "1b781ab0e0e8d59a7a8d1140bf6dee96a48a160c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:58 2013 -0700"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157519\n\nBug: 5449033\nChange-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3\n"
    },
    {
      "commit": "ba0165bef09729a33ab8e0ca329342be05e0d859",
      "tree": "2f961146c3c8c625a01902207485fed0d7a2cdcd",
      "parents": [
        "3a91fca00c6b3db62b4dc0da95ba30671caf3283"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Nov 09 14:37:23 2010 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:55 2013 -0700"
      },
      "message": "Split UTF functions from String8/16\n\nSplit out all the UTF-8/16/32 handling code from String8/16 to its own\nfile to allow better reuse of code.\n\nChange-Id: If9ce63920edc75472c38da4adce0d13cda9ad2f7\n"
    },
    {
      "commit": "9a2d83e698b16ec86ad2751b6e7cf103ad645cce",
      "tree": "14c45647a106931bd544d517112a1cd7e7f67754",
      "parents": [
        "09b41cbf9fe74a831c0ad883406e03dfe0568d78"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 04 09:38:48 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:52 2013 -0700"
      },
      "message": "Optional use of UTF-8 strings in resource bundles\n\nAllows the use of UTF-8 for packing resources instead of the\ndefault of UTF-16 for Java. When strings are extracted from the\nResStringPool, they are converted to UTF-16 and the result is\ncached for subsequent calls.\n\nWhen using aapt to package, add in the \"-8\" switch to pack the\nresources using UTF-8. This will result in the value, key, and\ntype strings as well as the compiled XML string values taking\nsignificantly less space in the final application package in\nmost scenarios.\n\nChange-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a\n"
    },
    {
      "commit": "ae31e705de96c769333652d187a896460d27320b",
      "tree": "580a664ceea8a4d78fbf7e472402b1cea0e0b4f6",
      "parents": [
        "7a4c83922e551506fdc6c5fbca6d107ebdeef867"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 11 12:11:56 2009 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //branches/cupcake/...@137873\n"
    },
    {
      "commit": "7a4c83922e551506fdc6c5fbca6d107ebdeef867",
      "tree": "de87f6c1506f42d898eddaa8d90c70192e356ed2",
      "parents": [
        "cbb1011c95e0c25c29e40e203a6a31bccd029da3"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 14:34:35 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@136594\n"
    },
    {
      "commit": "cbb1011c95e0c25c29e40e203a6a31bccd029da3",
      "tree": "4697a3a86867bf33c2d9dd4e4a2743d3eb947523",
      "parents": [
        "cf59fa8dc7ddca5a172860223b06afed5d4ec0e0"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "cf59fa8dc7ddca5a172860223b06afed5d4ec0e0",
      "tree": "e780750523e4f032abf902a0e6ff8b9d52c54e54",
      "parents": [
        "7aa707a5d654b7af67b133955c454c8e23a12abc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d245d1d09731d6a19e8a25559d3907f54441ac3d",
      "tree": "b79df48666f286bd33efb4ffdbf4b3fa28f5dd91",
      "parents": [
        "13f4c9fb279f1b34a3b47a6eac80b8a09d2d3a79"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:46 2013 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
