)]}'
{
  "log": [
    {
      "commit": "0e8564870d206fac24ea9df1b0c607cf6570c7b9",
      "tree": "a163eadaf03f750f337c05226cdf086c4fd572a8",
      "parents": [
        "bbcb88433ebf69310774c07f26bbb8b2762795f1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Oct 23 08:35:19 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Oct 23 08:35:19 2026 -0400"
      },
      "message": "Clarify Base64 decoding policies and compatibility changes\n\nDocument the 1.23.0 STRICT decoding behavior change and distinguish\nexact encoder-layout validation from protocol-specific Base64 rules.\nAdd linked specifications and examples for strict and lenient decoding,\nXML whitespace normalization, identifier comparison, and streaming.\n\nAdd CODEC-348 release notes for the behavior change in 1.23.0 and the\nJavadoc improvements in 1.23.1.\n"
    },
    {
      "commit": "bbcb88433ebf69310774c07f26bbb8b2762795f1",
      "tree": "124f2a0a5e5e7733a1133d29a081a06c58a8167d",
      "parents": [
        "a83af3a0060f7f285d4691d52dc69917612f0e2c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Oct 21 15:23:04 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Oct 21 15:23:04 2026 -0400"
      },
      "message": "Bump ossf/scorecard-action from 2.4.4 to 2.5.0\n"
    },
    {
      "commit": "a83af3a0060f7f285d4691d52dc69917612f0e2c",
      "tree": "de94781ab71b463895f51a55be47e1f39a480037",
      "parents": [
        "f13dd50f566c318283c4138820b15d75c26a0217"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Oct 20 20:11:57 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Oct 20 20:11:57 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.38.3 to 4.39.0\n"
    },
    {
      "commit": "f13dd50f566c318283c4138820b15d75c26a0217",
      "tree": "f782b032258222c224fc005a114e846e216cef12",
      "parents": [
        "38087c0fc5233120a60c23de5318a4fb12ba648a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 18 09:35:46 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 18 09:35:46 2026 -0400"
      },
      "message": "[CODEC-347] Handle names emptied during Match Rating Approach cleaning\n(#448)\n\nClarify Match Rating Approach comparison contract and tests.\n\nPR #448 correctly fixed CODEC-347, but left the existing Javadoc\nclaiming\nthat matching requires identical encodings. The method uses an MRA\nsimilarity threshold and also accepts inputs equal ignoring case after\nits initial input checks.\n\nDocument these rules, including false results for cleaned-empty names\nand the existing shortcut for identical punctuation or whitespace\ninputs.\nAdd tests preserving that shortcut and parameterize the six regression\ncases so each failure is reported independently.\n"
    },
    {
      "commit": "38087c0fc5233120a60c23de5318a4fb12ba648a",
      "tree": "4a311eca8dfd86376aa3372336687228e5472a77",
      "parents": [
        "98eead1dcb3c469210f04832cfd309be46f680be"
      ],
      "author": {
        "name": "Aryan R. Ganjoo",
        "email": "51299383+AryanRG@users.noreply.github.com",
        "time": "Sun Oct 18 19:00:12 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 09:30:12 2026 -0400"
      },
      "message": "[CODEC-347] Handle names emptied during Match Rating Approach cleaning (#448)\n\n* CODEC-347 Handle names emptied during MRA cleaning\n\nReturn false from isEncodeEquals when cleaning removes all characters, add public-API regression coverage, and record the issue in the changes log.\n\n* Remove fix action for CODEC-347 from changes.xml\n\nRemoved a fix action related to CODEC-347 from the release notes.\n\n---------\n\nCo-authored-by: Gary Gregory \u003cgarydgregory@users.noreply.github.com\u003e"
    },
    {
      "commit": "98eead1dcb3c469210f04832cfd309be46f680be",
      "tree": "05df875288a866910c925558c6fcbaada0f5802c",
      "parents": [
        "0c0ad19b7824dbab10140950775d9499a4b8b278"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 17 15:53:27 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 17 15:53:27 2026 -0400"
      },
      "message": "Bump actions/setup-java from 6.0.1 to 6.1.0\n"
    },
    {
      "commit": "0c0ad19b7824dbab10140950775d9499a4b8b278",
      "tree": "07be10a2a2617023fb05cb191561d10f69242d76",
      "parents": [
        "a0ee0674cd4b8e54aff412d8087eb0b0cc1022a1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 17 12:47:08 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 17 12:47:08 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 105 to 106\n"
    },
    {
      "commit": "a0ee0674cd4b8e54aff412d8087eb0b0cc1022a1",
      "tree": "4ae049594f9888b46344d830279fa61c8cbf78da",
      "parents": [
        "a3d9418f2d9cd2b8b012af4280ec0bb87ec33303"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Sat Oct 17 12:46:33 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 12:46:33 2026 -0400"
      },
      "message": "Bump Apache Commons Parent from 105 to 106 (#447)"
    },
    {
      "commit": "a3d9418f2d9cd2b8b012af4280ec0bb87ec33303",
      "tree": "73b2ec59d0c72458dae097576a31b51b8a3c675b",
      "parents": [
        "25524a52056920f43a70ad6f68b9b6e3c72c2a37"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 09:19:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 09:19:44 2026 -0400"
      },
      "message": "Bump github/codeql-action/analyze from 4.37.5 to 4.38.3\n"
    },
    {
      "commit": "25524a52056920f43a70ad6f68b9b6e3c72c2a37",
      "tree": "f481eb39c3c09e25907f5e6596da4ec792bff5ed",
      "parents": [
        "6d32b191fd962aceb86520c8a863618cf3dab5ce"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 08:29:04 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 08:29:04 2026 -0400"
      },
      "message": "Revert \"Bump github/codeql-action/analyze from 4.37.5 to 4.38.3\"\n\nThis reverts commit 6d32b191fd962aceb86520c8a863618cf3dab5ce.\n"
    },
    {
      "commit": "6d32b191fd962aceb86520c8a863618cf3dab5ce",
      "tree": "c4a300a305d8d1a7c668f0a5b294e2c190701204",
      "parents": [
        "5f46b02f8c92b539b2fdc3cb1183aeb75a0ecc77"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 06:32:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 06:32:44 2026 -0400"
      },
      "message": "Bump github/codeql-action/analyze from 4.37.5 to 4.38.3\n"
    },
    {
      "commit": "5f46b02f8c92b539b2fdc3cb1183aeb75a0ecc77",
      "tree": "f481eb39c3c09e25907f5e6596da4ec792bff5ed",
      "parents": [
        "e1abc478b1eb10955f0b71fa963532c163bf3604"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 06:24:21 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Oct 15 06:24:21 2026 -0400"
      },
      "message": "Bump actions/upload-artifact from 7.0.1 to 7.0.2\n"
    },
    {
      "commit": "e1abc478b1eb10955f0b71fa963532c163bf3604",
      "tree": "feffcd256f194ab98ce56e29bf126ed0c638adf3",
      "parents": [
        "3e8430375ff7c770bfdfc13e3887fcfbfe43da57"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 11 16:15:36 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 11 16:15:36 2026 +0000"
      },
      "message": "Updates for the next release\n"
    },
    {
      "commit": "3e8430375ff7c770bfdfc13e3887fcfbfe43da57",
      "tree": "fa9785b68bff08f0a8c36474764dff2063c5a3f5",
      "parents": [
        "586c6872228b54e52571eda29e495e6778fe1e7a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 11 15:38:35 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 11 15:38:35 2026 +0000"
      },
      "message": "Updates for the next release\n"
    },
    {
      "commit": "586c6872228b54e52571eda29e495e6778fe1e7a",
      "tree": "819fe1d89c03556bdedb20743a937b9d192d6e17",
      "parents": [
        "1147e788058ee67509616903cbe2ddd149e02a04"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 11 15:37:31 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 11 15:37:31 2026 +0000"
      },
      "message": "Bump to next development version\n"
    },
    {
      "commit": "1147e788058ee67509616903cbe2ddd149e02a04",
      "tree": "2f9d3c78c6a2e677e847e20ee1a10f34a012f75e",
      "parents": [
        "129a2899eecdba9238a9f660a3a534c6d9d6a523"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 10 08:00:51 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 10 08:00:51 2026 -0400"
      },
      "message": "Add github.autolink_jira\n"
    },
    {
      "commit": "129a2899eecdba9238a9f660a3a534c6d9d6a523",
      "tree": "7b42331d4ad2e1730c46511ff5db96c8ec662d75",
      "parents": [
        "d7bff678de1efdf767f713c5a178ba9dd9e1562d"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 04 13:02:43 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 04 13:02:43 2026 +0000"
      },
      "message": "Prepare for the release candidate 1.23.0 RC1\n"
    },
    {
      "commit": "d7bff678de1efdf767f713c5a178ba9dd9e1562d",
      "tree": "e8fa609e6020142c80953e9766ccad1f77c8526a",
      "parents": [
        "89d6498d60ac9b8d4fe4550d7577b2242aa94756"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 04 12:59:30 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Oct 04 12:59:30 2026 +0000"
      },
      "message": "Prepare for the release candidate\n"
    },
    {
      "commit": "89d6498d60ac9b8d4fe4550d7577b2242aa94756",
      "tree": "3c07dfc18fb22663bc3d0fa0f115b7ede6e1ad1d",
      "parents": [
        "5444a15a34dada7b6d92f6f96c58bef74cee2817"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 03 09:23:04 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Oct 03 09:23:04 2026 -0400"
      },
      "message": "Update GH CI from Java 26 to 27\n\nUpdate Java 27-ea to 28-ea.\n"
    },
    {
      "commit": "5444a15a34dada7b6d92f6f96c58bef74cee2817",
      "tree": "39a91f21347dc212895da941e1f5271b2ba8112f",
      "parents": [
        "668582627d8effe1f0a0575d4a1031bc871ebf9e"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Sep 29 19:44:24 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Sep 29 19:44:24 2026 +0000"
      },
      "message": "[test] Bump org.apache.commons:commons-lang3 from 3.20.0 to 3.21.0\n"
    },
    {
      "commit": "668582627d8effe1f0a0575d4a1031bc871ebf9e",
      "tree": "0200b20edd0b9296c59de0dcbdc3c83285504831",
      "parents": [
        "72210738423ebdd766e433d7839d401436793639"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Tue Sep 29 15:35:48 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 15:35:48 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-lang3 from 3.20.0 to 3.21.0 (#446)"
    },
    {
      "commit": "72210738423ebdd766e433d7839d401436793639",
      "tree": "1f44c0b70d94cc76a75bc9b9c86fa3303d392fb5",
      "parents": [
        "cb9c04d964f4b28b6e5f03d603959d071f863aed"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 22:19:40 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 22:19:40 2026 +0000"
      },
      "message": "Parameterize some unit tests\n"
    },
    {
      "commit": "cb9c04d964f4b28b6e5f03d603959d071f863aed",
      "tree": "956e5b6d7b98be6d942455f0ee43fbfdb6f4e7a6",
      "parents": [
        "6837802c8f23cb970513035c0fede41a1e30bb23"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 21:44:42 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 21:44:42 2026 +0000"
      },
      "message": "Parameterize some unit tests\n"
    },
    {
      "commit": "6837802c8f23cb970513035c0fede41a1e30bb23",
      "tree": "c1d51d39c860112fe5c27cdc52765187fee42b07",
      "parents": [
        "3e05f66920c3ec1d5a2f22f1795a76fdbbfd4e34"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 20:33:39 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 20:33:39 2026 +0000"
      },
      "message": "[CODEC-245] Reject malformed Sha2Crypt salt syntax\n\nRefactor tests.\n"
    },
    {
      "commit": "3e05f66920c3ec1d5a2f22f1795a76fdbbfd4e34",
      "tree": "0d33c82b37923d24b9a84ec266237572a18e8f69",
      "parents": [
        "a5c007691dceff744dffca94fc6ce714a5b68622"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 20:26:43 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 26 20:26:43 2026 +0000"
      },
      "message": "[CODEC-245] Reject malformed Sha2Crypt salt syntax (#445)"
    },
    {
      "commit": "a5c007691dceff744dffca94fc6ce714a5b68622",
      "tree": "7b3bf128e824cea709df648bc90fd6e9b449d2eb",
      "parents": [
        "68289e5ec4ae36affc62f377c783e5fd9f336a76"
      ],
      "author": {
        "name": "Efe",
        "email": "gokdemirefe1903@gmail.com",
        "time": "Sat Sep 26 23:25:19 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 26 16:25:19 2026 -0400"
      },
      "message": "[CODEC-245] Reject malformed Sha2Crypt salt syntax (#445)\n\n* [CODEC-245] Reject malformed Sha2Crypt salt syntax\n\nRequire the optional rounds clause and salt suffix to use the documented separators and character set. Add regression coverage for malformed rounds text and non-ASCII salt input.\n\n* Fix SALT_PATTERN regex to match end of string\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Update test for sha512Crypt with valid input\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Gary Gregory \u003cgarydgregory@users.noreply.github.com\u003e\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "68289e5ec4ae36affc62f377c783e5fd9f336a76",
      "tree": "b54a18100ed5dba88d6d7a18a3e4fe4c65d1f9dc",
      "parents": [
        "97418f0f0f3afcd38663e02e819bd1b9566b11c7"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 24 12:56:58 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 24 12:56:58 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.38.1 to 4.38.2\n"
    },
    {
      "commit": "97418f0f0f3afcd38663e02e819bd1b9566b11c7",
      "tree": "0da5db997fe959b01f02666cc021beef74479f6c",
      "parents": [
        "b3b6220424ea5b72594a1fc18eda5870bd782de1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 24 09:15:39 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 24 09:15:39 2026 +0000"
      },
      "message": "Remove useless comment\n"
    },
    {
      "commit": "b3b6220424ea5b72594a1fc18eda5870bd782de1",
      "tree": "65904f00bbecaefc3b9da4ec1fcdf7bfde5cdcdc",
      "parents": [
        "683e6c501a207aaad0ac3446e3304d6673e0f96c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 24 09:10:12 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 24 09:10:12 2026 +0000"
      },
      "message": "Refactor RFC1522CodecTest as a @ParameterizedTest\n"
    },
    {
      "commit": "683e6c501a207aaad0ac3446e3304d6673e0f96c",
      "tree": "a93424985e77602a4a6ab93f91f7de189ea31781",
      "parents": [
        "14aebf4b6eadfcac9c5c677931a9a5e190c28e7e"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Sep 22 12:54:00 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Sep 22 12:54:00 2026 +0000"
      },
      "message": "Add @Deprecated to BeiderMorseEncoder.BeiderMorseEncoder()\n"
    },
    {
      "commit": "14aebf4b6eadfcac9c5c677931a9a5e190c28e7e",
      "tree": "fe01e3b28fca553b65a1fc8b276c85dc0f44777b",
      "parents": [
        "c11a6597405dba4c23319beff1c1a01dd30c6fd4"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Sep 22 07:26:17 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Sep 22 07:26:17 2026 -0400"
      },
      "message": "Protect main branches\n"
    },
    {
      "commit": "c11a6597405dba4c23319beff1c1a01dd30c6fd4",
      "tree": "e19168590e02fb811447f35fb5daec7bf78560cd",
      "parents": [
        "559d8c2c33c45e17232d03da6c75353518040aa2"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Sep 20 18:01:19 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Sep 20 18:01:19 2026 -0400"
      },
      "message": "Add URLCodec.decodeUrl(BitSet, byte[]) for custom safe sets\n\nDocument decoding rules and ambiguous safe sets. Add tests for round\ntrips, malformed escapes, null and empty inputs, and CODEC-345 examples.\n"
    },
    {
      "commit": "559d8c2c33c45e17232d03da6c75353518040aa2",
      "tree": "2cea2345daa64da3d606b8283bee8e1018232b9f",
      "parents": [
        "ab67d62f090393309e596773a2ab71b4d58762d3"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Sep 20 17:57:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Sep 20 17:57:44 2026 -0400"
      },
      "message": "Sort members.\n"
    },
    {
      "commit": "ab67d62f090393309e596773a2ab71b4d58762d3",
      "tree": "0dd061ff79caf611a18e903d33c838568ce625ce",
      "parents": [
        "e0b84481c1ff9e97592c15cf4ee9da48a679a8b6"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Sep 20 16:33:20 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Sep 20 16:33:20 2026 -0400"
      },
      "message": "[CODEC-345] URLCodec.encodeUrl(BitSet, byte[]) ignores the\ncaller-supplied BitSet for % and +\n"
    },
    {
      "commit": "e0b84481c1ff9e97592c15cf4ee9da48a679a8b6",
      "tree": "de82453db64c3428dc944e1558a34eed2f52c2c0",
      "parents": [
        "368f00f934a5b528b067a778bf21dc94b9105f97"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:15:34 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:15:34 2026 -0400"
      },
      "message": "Bump github/codeql-action/* from 4.37.9 to 4.38.1\n"
    },
    {
      "commit": "368f00f934a5b528b067a778bf21dc94b9105f97",
      "tree": "f294006cc0672d720a57ba7f13bfa7d1bc28d9c6",
      "parents": [
        "4bfc8954fbe712f808a4e41f9a42ddaf6abca4c1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:07:00 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 11:07:00 2026 -0400"
      },
      "message": "Bump actions/setup-java from 6.0.0 to 6.0.1\n"
    },
    {
      "commit": "4bfc8954fbe712f808a4e41f9a42ddaf6abca4c1",
      "tree": "fcb7fa52adf2eff07c51270f29270f27602da5a3",
      "parents": [
        "7bc16aa49e12f12f3ffe8e91b513e42904e04276"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 07:13:48 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 07:13:48 2026 -0700"
      },
      "message": "Make the @param names in BaseNCodec match the parameters they document\n(#444)."
    },
    {
      "commit": "7bc16aa49e12f12f3ffe8e91b513e42904e04276",
      "tree": "01a0977690adca2d88f312fdb7e32a812df6dda6",
      "parents": [
        "41565917d065cd52b103b4978560e8c3e2c6ac49"
      ],
      "author": {
        "name": "geonseok",
        "email": "hxperl@gmail.com",
        "time": "Sat Sep 19 23:12:27 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 19 10:12:27 2026 -0400"
      },
      "message": "Make the @param names in BaseNCodec match the parameters they document (#444)\n\njavadoc discards a @param tag whose name matches no parameter of the method,\nso all three of these removed an argument\u0027s documentation from the generated\ndocs instead of adding it. javadoc -Xdoclint reports each as an error:\n\n  BaseNCodec.java:483: error: @param name not found\n  BaseNCodec.java:693: error: @param name not found\n  BaseNCodec.java:774: error: @param name not found\n\ntoUnsignedBytes takes `value`, but the tag said `bigInt`. That one is fixed in\nthe comment.\n\nThe abstract decode and encode declare `int i` while their own tag, their\nJavadoc text (\"initial offset of the subarray\"), the caller in encode(byte[],\nint, int), and the Base16 and Base58 overrides all call it `offset`. Here the\nparameter name is the typo rather than the tag, so `i` is renamed to `offset`.\nParameter names of an abstract, package-private method carry no binary\nsignature, so this changes no behaviour; japicmp confirms it.\n\nGenerated-by: Claude Opus 5 (Claude Code)\n\n\nClaude-Session: https://claude.ai/code/session_01GuW8Eie2iuc8mqnqZaCLWR\n\nCo-authored-by: hxperl \u003cinfra@enaible.biz\u003e\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "41565917d065cd52b103b4978560e8c3e2c6ac49",
      "tree": "fa49138b4b848289a694767c1ebe52b62ac05c20",
      "parents": [
        "54b7ad9d0406800cd54b213ea67a24311a32d2bf"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 06:37:23 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 10:04:15 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "54b7ad9d0406800cd54b213ea67a24311a32d2bf",
      "tree": "cabd6ab1f0385f75b9846e2f5c79001850a7d739",
      "parents": [
        "4f4a8a74fec32246d5e50559dc744bc19fc71b37"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 06:09:25 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 06:09:25 2026 -0700"
      },
      "message": "Internal refactoring.\n"
    },
    {
      "commit": "4f4a8a74fec32246d5e50559dc744bc19fc71b37",
      "tree": "bb5c79a2a0e7a79abb811a1af5899a81ad112b9e",
      "parents": [
        "ba2d19ba1ae90166c124dfc023bb09f9106b85c6"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 06:01:10 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 06:01:10 2026 -0700"
      },
      "message": "Bound Sha2Crypt password length to prevent quadratic CPU DoS\n\nReject SHA-256/SHA-512 plaintexts over 4096 bytes by default to bound\nthe quadratic SHA-crypt step, with a trusted JVM system-property\noverride\nfor compatibility. Document the limit in Sha2Crypt and Crypt, and add\nregression coverage for direct and Crypt entry points, boundary lengths,\nand override restoration.\n"
    },
    {
      "commit": "ba2d19ba1ae90166c124dfc023bb09f9106b85c6",
      "tree": "066e741a328a8a39406dbde639567843b79fbb7e",
      "parents": [
        "1d62be3ed1139336da8c71538b9911e218f53c29"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 05:54:09 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 05:54:09 2026 -0700"
      },
      "message": "Checkstyle"
    },
    {
      "commit": "1d62be3ed1139336da8c71538b9911e218f53c29",
      "tree": "48bb29a283d2fe288a098db26527d5bb287af8cf",
      "parents": [
        "089f90450fd1f8acafad3fe626b9e9425aff5a3c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 05:42:33 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 05:42:33 2026 -0700"
      },
      "message": "Bound Sha2Crypt rounds from caller-supplied salts\n\nLimit input-derived SHA-256/SHA-512 crypt rounds to 1,000,000 by\ndefault to prevent attacker-controlled CPU exhaustion. Support an\nexplicit system-property override for compatibility, safely reject\noversized values, preserve leading-zero parsing, and document the\nuntrusted work factor in Crypt verification.\n"
    },
    {
      "commit": "089f90450fd1f8acafad3fe626b9e9425aff5a3c",
      "tree": "d7561fb4c91fd982f5507f554e3ab86023ad40d0",
      "parents": [
        "223af98b927137a5381a087a72e04ed11af51e48"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 04:53:18 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 19 04:53:18 2026 -0700"
      },
      "message": "Fix quoted-printable line break decoding\n\nPreserve hard CRLF line breaks and unpaired CR/LF bytes. Require the\ncomplete \u003dCRLF sequence for soft breaks and reject incomplete \u003dCR\nescapes.\n\nClarify decoding limitations and compatibility changes, including\nQCodec.\n\nAdd regression tests covering both encoding modes,\nline-break boundaries, and shared QCodec decoding paths.\n"
    },
    {
      "commit": "223af98b927137a5381a087a72e04ed11af51e48",
      "tree": "822880af9de5d889785140acc273a63146c85135",
      "parents": [
        "948d6ed60345e5a07d9d7a0b36c4e32e50ed9818"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 19:06:02 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 19:06:02 2026 -0700"
      },
      "message": "Simplify API usage\n"
    },
    {
      "commit": "948d6ed60345e5a07d9d7a0b36c4e32e50ed9818",
      "tree": "91935db4da20be7f82e2dc426a5e2406ce4d07c8",
      "parents": [
        "7bc15f1cb49ec55919fba5b6a687a7290d330846"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 18:17:18 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 18:17:18 2026 -0700"
      },
      "message": "Validate stream lengths when computing Git blob identifiers\n\nReject streams whose actual length differs from the declared size with\nIOException. Route Path hashing through the same validation and document\nsize mismatch failures.\n\nAdd regression tests for empty streams, buffer boundaries, incorrect\nsizes, and preservation of existing tree entries after rejected input."
    },
    {
      "commit": "7bc15f1cb49ec55919fba5b6a687a7290d330846",
      "tree": "09278a8b9003b4eb7bfcddac928f4a673dd1f2b0",
      "parents": [
        "a3348063804da7997a34ebe91af436d195bb1fae"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 14:31:03 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 14:31:03 2026 -0700"
      },
      "message": "Reject oversized Beider-Morse input before language guessing\n\nCheck maxInputLength before language guessing in\nPhoneticEngine.encode(String), avoiding unnecessary processing of inputs\nthat will be rejected.\n\nAdd regression tests for default, custom, and zero limits through the\nengine and encoder wrapper. Update the null-input test documentation.\n"
    },
    {
      "commit": "a3348063804da7997a34ebe91af436d195bb1fae",
      "tree": "6ef45477f733ff3352e611f9f9586d0d6725b104",
      "parents": [
        "14ae67df41a9bf2419da5454b94b57129d93d4b9"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 14:20:23 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 14:20:23 2026 -0700"
      },
      "message": "Validate BinaryCodec input while preserving leading-bit truncation\n\nReject non-ASCII binary values with IllegalArgumentException, including\nvalues in discarded prefixes. Preserve existing method signatures and\ndecoding behavior for valid nonaligned input. Document validation and\ntruncation, and add regression tests for all decoding entry points.\n"
    },
    {
      "commit": "14ae67df41a9bf2419da5454b94b57129d93d4b9",
      "tree": "734b9cb16a69d7fa63eda7dcc28d348e06c949c6",
      "parents": [
        "3c0f43025a029923cf0b34893459c6944e7e21b9"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 13:02:32 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 13:02:32 2026 -0700"
      },
      "message": "Reject embedded question marks in RFC 1522 encoded content\n\nRequire the payload separator to be the final \"?\u003d\" delimiter, preventing\nBCodec and QCodec from silently discarding trailing content. Preserve\nBCodec\u0027s lenient default decoding policy.\n\nAdd regression tests for malformed payloads under both BCodec policies\nand for correctly encoded question marks.\n"
    },
    {
      "commit": "3c0f43025a029923cf0b34893459c6944e7e21b9",
      "tree": "7d7b02f09a162b3df6e214fd1f60217cb7f70fdb",
      "parents": [
        "43a9aa663c1b10b32a7cc6bbc1eccc10bba5f9be"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 13:01:45 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 13:01:45 2026 -0700"
      },
      "message": "Reject embedded question marks in RFC 1522 encoded content\n\nRequire the payload separator to be the final \"?\u003d\" delimiter, preventing\nBCodec and QCodec from silently discarding trailing content. Preserve\nBCodec\u0027s lenient default decoding policy.\n\nAdd regression tests for malformed payloads under both BCodec policies\nand for correctly encoded question marks.\n"
    },
    {
      "commit": "43a9aa663c1b10b32a7cc6bbc1eccc10bba5f9be",
      "tree": "40e3a50c2490d97d4a3e6465ba847bed32797fcf",
      "parents": [
        "87f6aa2818836998528ff4b0d1ea35545a800ee5"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 06:23:45 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 06:23:45 2026 -0700"
      },
      "message": "Restrict Hex decoding to ASCII hexadecimal characters\n\nReject non-ASCII Unicode digits and fullwidth letters. Add regression\ncoverage for character, UTF-8 byte array, and ByteBuffer inputs, clarify\nthe security implications, and document the compatibility change.\n"
    },
    {
      "commit": "87f6aa2818836998528ff4b0d1ea35545a800ee5",
      "tree": "be3e1607a48614e2382003c51081adbb4bd8ad9f",
      "parents": [
        "0130064aa803637090adff8beea3c33d2c44708d"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 06:09:35 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 06:09:35 2026 -0700"
      },
      "message": "Reject ambiguous GitIdentifiers tree entry names\n\nReject empty, dot, NUL-containing, and malformed Unicode entry names.\nReject file/directory name conflicts when computing tree identifiers.\nAdd regression tests for serialization collisions and valid names,\nand document the fix in the release notes.\n"
    },
    {
      "commit": "0130064aa803637090adff8beea3c33d2c44708d",
      "tree": "23945da0434298d46674e4f3154651391139599b",
      "parents": [
        "8c0303cece155da873ee15a4133dca00ddd1dd52"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:52:32 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:52:32 2026 -0700"
      },
      "message": "Ensure BaseNCodecOutputStream closes underlying resources on failure\n\nClose the underlying stream even when final conversion or flushing\nfails.\nPreserve the original exception and suppress any additional close\nfailure.\nAdd regression tests for cleanup and exception handling.\n"
    },
    {
      "commit": "8c0303cece155da873ee15a4133dca00ddd1dd52",
      "tree": "ed372a9e315acd8e38d5a56e09bc5060e5c58f96",
      "parents": [
        "7d5d64814621ae23501cd16631d057dd57b475bc"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:48:16 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:48:16 2026 -0700"
      },
      "message": "Fix Base58 encoded-length calculation and line-length validation\n\nCalculate the exact encoded length within the configured encode limit.\nReject unsupported positive line lengths with IllegalArgumentException.\nAdd regression tests and update documentation."
    },
    {
      "commit": "7d5d64814621ae23501cd16631d057dd57b475bc",
      "tree": "574cd42675d1bfe2d31d8371b072357c6b81481a",
      "parents": [
        "d106a40cae3db465cbfb3d22f05dbb96cdd90153"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:35:31 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:35:31 2026 -0700"
      },
      "message": "Grow Base58 accumulation buffers geometrically within the configured\ninput limits and validate actual accumulated length.\n"
    },
    {
      "commit": "d106a40cae3db465cbfb3d22f05dbb96cdd90153",
      "tree": "663aa8b478847703bd5be9ac5b102ba6492adbcc",
      "parents": [
        "e6ee5c8024d67ca89fb8d71d3c254353761ba2f0"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:09:57 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 05:09:57 2026 -0700"
      },
      "message": "Limit Base58 decoding input length\n\nAdd a configurable 8192-byte default limit and reject oversized input\nbefore\nbuffering or conversion. Cover stream boundaries and overflow checks,\nupdate\nlarge-input tests, and document the limit and configuration options.\n"
    },
    {
      "commit": "e6ee5c8024d67ca89fb8d71d3c254353761ba2f0",
      "tree": "18fdd4362955ef3e19184b46634a7650f9469cff",
      "parents": [
        "d5a593d4dec19d076854fc50f0d7b28634989f1c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 04:48:07 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 04:48:07 2026 -0700"
      },
      "message": "Sort memebers\n"
    },
    {
      "commit": "d5a593d4dec19d076854fc50f0d7b28634989f1c",
      "tree": "06d704e3cdabd296e5cd601ff88dd64d37abf0a2",
      "parents": [
        "8b506a1ce5f6fc4bc238657838081b514874d459"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 04:29:39 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Sep 18 04:29:39 2026 -0700"
      },
      "message": "Javadoc: Clarify lenient decoding and canonical validation in Javadoc.\n\nDocument lenient Base64 convenience methods and the limits of alphabet\nmembership checks. Add strict decoding examples and guidance on encoded\nvalue comparisons. Clarify that BCodec validates canonical Base64\npayloads,\nnot complete email headers.\n"
    },
    {
      "commit": "8b506a1ce5f6fc4bc238657838081b514874d459",
      "tree": "a8781eca1afe48d2c387cc647616ad6ba76bfe93",
      "parents": [
        "eec585d1e8215c36b48951b901772837adac4183"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 17 19:25:35 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 17 19:25:35 2026 -0700"
      },
      "message": "Base32 and Base64 STRICT decoding now require the encoder\u0027s canonical\nalphabet, padding, and line separators, and validate streams through\nEOF. Use LENIENT to retain permissive decoding.\n"
    },
    {
      "commit": "eec585d1e8215c36b48951b901772837adac4183",
      "tree": "dbb589a407ba5c43ef0789883bfba490eba27be5",
      "parents": [
        "f49b96388c2d97d093d8669cf74f57a5a92e7dff"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 17 15:50:00 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Sep 17 15:50:00 2026 -0700"
      },
      "message": "Fix Blake3 KDF example and clarify finalization semantics\n\nDerive directional keys by splitting a single output. Document that\nfinalization is idempotent and subsequent updates append input.\nAdd regression tests for finalization, reset, and key derivation.\n"
    },
    {
      "commit": "f49b96388c2d97d093d8669cf74f57a5a92e7dff",
      "tree": "83efa81c5a9119f5bf23504b5f3f0c2772f9af1a",
      "parents": [
        "506b762f724fbca2fa2dc198b81598dbb214fd28"
      ],
      "author": {
        "name": "Jeff Lenamon",
        "email": "85593689+lenamonj@users.noreply.github.com",
        "time": "Mon Sep 14 13:55:50 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 19:55:50 2026 +0200"
      },
      "message": "GitIdentifiers: order tree entries by UTF-8 bytes as Git does (#443)\n\n* GitIdentifiers: order tree entries by UTF-8 bytes as Git does\n\nDirectoryEntry.compareTo used String.compareTo, which orders UTF-16\ncode units; Git orders the raw UTF-8 bytes, and the two disagree for\nnames outside the Basic Multilingual Plane, so treeId returned an id\ngit write-tree does not. The sort key is now the name\u0027s UTF-8 bytes,\ncompared unsigned. A test pins the id git write-tree produces for a\ntwo-entry tree and fails on the old comparator.\n\n* Keep tree entries whose names share UTF-8 bytes\n\nString.getBytes replaces a lone surrogate with \u0027?\u0027, so a name holding one\nhad the same sort key as a name holding \u0027?\u0027, and the TreeSet in\nTreeIdBuilder.get kept only one of them. compareTo now falls back to the\nString order when the bytes tie, which keeps both, as the String\ncomparator did. The class and test descriptions of the ordering are\nreworded.\n\n* Document the UTF-8 encoding of names and link targets\n\nGit and SWHID treat file names and symbolic link targets as bytes with\nno defined encoding, and this class encodes both as UTF-8, so its\nidentifiers match theirs only when the originals were UTF-8. The\nparagraph is the one proposed in the review, with link targets added."
    },
    {
      "commit": "506b762f724fbca2fa2dc198b81598dbb214fd28",
      "tree": "5a01077016e5c96defa3029f5ba20ff8f8de6dcf",
      "parents": [
        "f288a1ce41c19570ca79362abdc2bfa1c446263e"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 12 18:14:59 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 12 18:14:59 2026 -0700"
      },
      "message": "Add Base45 support.\n"
    },
    {
      "commit": "f288a1ce41c19570ca79362abdc2bfa1c446263e",
      "tree": "36ef64fcd06c95e9be9d7025baf9fd3352947450",
      "parents": [
        "322f464c9484e60be91134b1850072b61eab4ab4"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Sat Sep 12 20:10:06 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 12 21:10:06 2026 -0400"
      },
      "message": "Add Base45 support (#442)\n\n* Add Base45 support.\n\n* Fix whitespace.\n\n* Update note on closing the Base45OutputStream\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Fix spelling\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "322f464c9484e60be91134b1850072b61eab4ab4",
      "tree": "227fb8f3b6172beae45b91598fc03b0faadea7fa",
      "parents": [
        "0b9616d5ed4f0b222290ead166e5783cb54eb8b7"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 12 11:20:42 2026 -0700"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Sep 12 11:20:42 2026 -0700"
      },
      "message": "Fix spelling."
    },
    {
      "commit": "0b9616d5ed4f0b222290ead166e5783cb54eb8b7",
      "tree": "552b3ba7bac91d0381930a232154bb8f0b5f734b",
      "parents": [
        "20a5d22bc05933e2ff7a8f2cb3bce5cee8db64c1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Sep 07 09:17:42 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Sep 07 09:17:42 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 104 to 105.\n\nFix entry for same dependency for previous relase.\n"
    },
    {
      "commit": "20a5d22bc05933e2ff7a8f2cb3bce5cee8db64c1",
      "tree": "9754d7eb6b775cc80f30a5e59ea6820bcdb28ed2",
      "parents": [
        "2cbf109f57feb1efdcfc81ae233fb393906542bc"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Aug 31 11:18:13 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Mon Aug 31 11:18:13 2026 +0000"
      },
      "message": "Bump github/codeql-action/analyze from 4.37.8 to 4.37.9.\n"
    },
    {
      "commit": "2cbf109f57feb1efdcfc81ae233fb393906542bc",
      "tree": "6da158f1dafb4453db86c554a1262b805fc528c8",
      "parents": [
        "7c475b3f6f586ae4d54def4d65f785df3e2d4df1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 27 13:40:56 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 27 13:40:56 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.7.0 to 6.0.0.\n"
    },
    {
      "commit": "7c475b3f6f586ae4d54def4d65f785df3e2d4df1",
      "tree": "6310c1f07bfe7e4195df8efe6d3f407cc8115bde",
      "parents": [
        "8dcd16b7d13ef1a78e325d458830ead890fe82ac"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 25 14:13:25 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 25 14:13:25 2026 -0400"
      },
      "message": "Bump github/codeql-action/init from 4.37.7 to 4.37.8\n"
    },
    {
      "commit": "8dcd16b7d13ef1a78e325d458830ead890fe82ac",
      "tree": "c2e419bb6cf2c47e266061b85f28973a300c973b",
      "parents": [
        "55407f6a059d855c40ee4e1bca4d44502034ad5a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 22 08:27:33 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 22 08:27:33 2026 -0400"
      },
      "message": "Bump org.apache.commons:commons-parent from 103 to 104.\n"
    },
    {
      "commit": "55407f6a059d855c40ee4e1bca4d44502034ad5a",
      "tree": "4f9f8aa6ddc5b5b4de03ab31fe8fabf03b4b253b",
      "parents": [
        "5cc69188a20ac46d6f596b636e4ba22b3a7edef0"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 18 16:00:40 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 18 16:00:40 2026 -0400"
      },
      "message": "Bump codeql-action from 4.37.6 to 4.37.7\n"
    },
    {
      "commit": "5cc69188a20ac46d6f596b636e4ba22b3a7edef0",
      "tree": "a2c80e9863267343d341f2df445ed2ad19be2a89",
      "parents": [
        "27d0664e7ce073748cb28b8bf08011d9f8566cea"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 16 20:01:29 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 16 20:01:29 2026 -0400"
      },
      "message": "Sort members.\n"
    },
    {
      "commit": "27d0664e7ce073748cb28b8bf08011d9f8566cea",
      "tree": "22d705acc95cc336f8496e2a6ce70d64c94c1a49",
      "parents": [
        "6ff959dfcb12a53663eab4936d1d280218af8d74"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 17:28:38 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 17:28:38 2026 -0400"
      },
      "message": "Fix action type.\n"
    },
    {
      "commit": "6ff959dfcb12a53663eab4936d1d280218af8d74",
      "tree": "045a3875c43b81ee19d405e779ee61d255736447",
      "parents": [
        "5369282d2d254477c71f9c2aba98a7724a4fdcae"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 17:15:34 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 17:15:34 2026 -0400"
      },
      "message": "Throw DecoderException instead of IllegalArgumentException in\nRFC1522Codec.decodeText(String).\n"
    },
    {
      "commit": "5369282d2d254477c71f9c2aba98a7724a4fdcae",
      "tree": "9a8a1a631042f83ebcf00a533d455976e30cc6ee",
      "parents": [
        "964036594041fa0a6c8d21f3ea6cb954f2e05b6c"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 16:57:52 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 16:57:52 2026 -0400"
      },
      "message": "Throw IOException instead of IllegalArgumentException in\nBaseNCodecOutputStream and BaseNCodecOutputStream IO methods\n"
    },
    {
      "commit": "964036594041fa0a6c8d21f3ea6cb954f2e05b6c",
      "tree": "9a273cb8981a14856cc180f891c2462f499fba7f",
      "parents": [
        "226631607f20b9ab314e5cf7f2bcb3346296e7fa"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 16:32:13 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sat Aug 08 16:32:13 2026 -0400"
      },
      "message": "Javadoc Add missing @throws in BaseNCodec and subclasses\n"
    },
    {
      "commit": "226631607f20b9ab314e5cf7f2bcb3346296e7fa",
      "tree": "8f23e1d6001ec854646d16ffcf50646f0c2badb8",
      "parents": [
        "6ceaebcd87ba415953620d31f2c35eed38271e42"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Aug 07 17:53:05 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Aug 07 17:53:05 2026 -0400"
      },
      "message": "Add missing Java @throws tags\n"
    },
    {
      "commit": "6ceaebcd87ba415953620d31f2c35eed38271e42",
      "tree": "a8ac5994ab4605cd505442ad02017aea0702f34c",
      "parents": [
        "897df72adef639bbf965ae4271be757e8b794195"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Aug 07 17:45:12 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Aug 07 17:45:12 2026 -0400"
      },
      "message": "Add PhoneticEngine.Builder.setMaxInputLength(int).\n"
    },
    {
      "commit": "897df72adef639bbf965ae4271be757e8b794195",
      "tree": "9e0f159b07d5692400fc70b96d8e1a5d155e67f2",
      "parents": [
        "5a0b429ad1f6346bee5d49788ff82e19140cb6ee"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Aug 07 13:29:57 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Fri Aug 07 13:29:57 2026 -0400"
      },
      "message": "Add BeiderMorseEncoder.Builder."
    },
    {
      "commit": "5a0b429ad1f6346bee5d49788ff82e19140cb6ee",
      "tree": "4ed9f32f2ee702d75ff8544a39af64b94c3cfce5",
      "parents": [
        "c27646bd066760a0a2d0a402a99c39f6583e512d"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 16:39:44 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 16:39:44 2026 -0400"
      },
      "message": "Assign result of requireNonNull."
    },
    {
      "commit": "c27646bd066760a0a2d0a402a99c39f6583e512d",
      "tree": "d4904eac93227057d4e2518a5ae0dd6bec12361e",
      "parents": [
        "4f3b1d9bc6b48b9c390b432a93212fadc1fc2bde"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 16:39:01 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 16:39:01 2026 -0400"
      },
      "message": "Javadoc\n\nPrivate class doesn\u0027t need @since tag.\n"
    },
    {
      "commit": "4f3b1d9bc6b48b9c390b432a93212fadc1fc2bde",
      "tree": "945d6bb3168f7a8a0723dba1c0c273c74f2abfe3",
      "parents": [
        "4611565fe5cc748520025f015733a32867e3c645"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 16:36:25 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 16:36:25 2026 -0400"
      },
      "message": "Extract local variable.\n"
    },
    {
      "commit": "4611565fe5cc748520025f015733a32867e3c645",
      "tree": "4819760c758d993ec38684c21f3b266c3035430f",
      "parents": [
        "1e46d8a1a21850218b98e4b58f6af16a86aaee31"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 12:49:01 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 12:49:01 2026 -0400"
      },
      "message": "Allocate a single MessageDigest and use it in\nSha2Crypt.sha2Crypt(byte[], String, String, int, String).\n"
    },
    {
      "commit": "1e46d8a1a21850218b98e4b58f6af16a86aaee31",
      "tree": "8f39856cfd9541e480f2bc10f3c5b087b9409bb5",
      "parents": [
        "43ba06b3243a59e821ed887a82694022c55c4af2"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 12:30:21 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 12:30:21 2026 -0400"
      },
      "message": "Add Base58 tests\n"
    },
    {
      "commit": "43ba06b3243a59e821ed887a82694022c55c4af2",
      "tree": "b5d0af54f9e2fba576470dd0c10f4b542d84c98e",
      "parents": [
        "901b24ed75867c5508a7baa6832451751719bf47"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 11:54:51 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 11:54:51 2026 -0400"
      },
      "message": "Optimize Base58.convertFromBase58(byte[], Context) for speed and temp\nobject allocation.\n"
    },
    {
      "commit": "901b24ed75867c5508a7baa6832451751719bf47",
      "tree": "29f70c41a43c19e58cd9d6fed4bc5706cd8d245d",
      "parents": [
        "afdf3ad6e5c83c0ca1cbd47fa5d18d31b66cb1db"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 11:28:45 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 11:28:45 2026 -0400"
      },
      "message": "RFC1522Codec.decodeText(String) now throws a DecoderException instead of\na StringIndexOutOfBoundsException when a separator is missing\n"
    },
    {
      "commit": "afdf3ad6e5c83c0ca1cbd47fa5d18d31b66cb1db",
      "tree": "23fb53ff46111686229df5fe0397055ee3492768",
      "parents": [
        "51bd487f1dd385892780dcf3d6c92abd703682ee"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 11:16:23 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 11:16:23 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "51bd487f1dd385892780dcf3d6c92abd703682ee",
      "tree": "734ce92d4016e3b05acc55b63cc778d43d600b0b",
      "parents": [
        "077ba3d9e115dfa93b794c445dc2aba5f51b9650"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 10:58:04 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 10:58:04 2026 -0400"
      },
      "message": "Bump next release version from 1.22.2 to 1.23.0.\n"
    },
    {
      "commit": "077ba3d9e115dfa93b794c445dc2aba5f51b9650",
      "tree": "efc5abf363456ca735d943e5bba547d8fd1dd34c",
      "parents": [
        "76195b3546ad9a6411b25b15c6ee0c143c4dc0c0"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 10:56:39 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 10:56:39 2026 -0400"
      },
      "message": "Add and use PhoneticEngine.Builder and deprecate old constructors.\n\n- Javadoc\n- Ternary return\n- Formatting\n"
    },
    {
      "commit": "76195b3546ad9a6411b25b15c6ee0c143c4dc0c0",
      "tree": "0bac48085985e30849a0b2267f958b24488d506b",
      "parents": [
        "54ce30b44ecdab4a8fcc393c0ca5f26c9c2a4f16"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 10:11:09 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 10:11:09 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "54ce30b44ecdab4a8fcc393c0ca5f26c9c2a4f16",
      "tree": "c705343f1f820782d7feedf434ac1f9108a80859",
      "parents": [
        "b53d130748a37b39d3dc1bccca47346e13b06b74"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:50:51 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:50:51 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "b53d130748a37b39d3dc1bccca47346e13b06b74",
      "tree": "86609d864253d0b4065bc90e5a2dc376f0d8d9c7",
      "parents": [
        "72e2540a4b302fa0434e605b75d5a764fc226fba"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:42:29 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:42:29 2026 -0400"
      },
      "message": "Optimize PhoneticEngine.encode(String, LanguageSet) for speed.\n"
    },
    {
      "commit": "72e2540a4b302fa0434e605b75d5a764fc226fba",
      "tree": "669483727492fb8b2e7b1055a82b457eb6c4d71b",
      "parents": [
        "a959e31a29b32b60250e646e3c2dbe419cc68635"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:40:05 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:40:05 2026 -0400"
      },
      "message": "Optimize honeticEngine.encode(String, LanguageSet) for speed.\n"
    },
    {
      "commit": "a959e31a29b32b60250e646e3c2dbe419cc68635",
      "tree": "d5b5819830af28407a4eb6f08104b1feda868e5e",
      "parents": [
        "4f84d6bfba96ac2ee69c0c3a8dfe40870ba0367b"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:07:58 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Aug 06 07:07:58 2026 -0400"
      },
      "message": "Inline single use local variable.\n"
    },
    {
      "commit": "4f84d6bfba96ac2ee69c0c3a8dfe40870ba0367b",
      "tree": "85b6fa88e71ee131ec133e6b610cfda5e3131e1e",
      "parents": [
        "f1eb961803e5508e7cee62e66d3aa68a48753568"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Aug 05 14:13:34 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Wed Aug 05 14:13:34 2026 -0400"
      },
      "message": "Bump actions/setup-java from 5.6.0 to 5.7.0\n"
    },
    {
      "commit": "f1eb961803e5508e7cee62e66d3aa68a48753568",
      "tree": "a22768e6388d6456e700e1e3be947004e8d028eb",
      "parents": [
        "f3ebcc46a8e6a50e1e145ef9ac92e50eade5d97a"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 04 15:58:09 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Tue Aug 04 15:58:09 2026 -0400"
      },
      "message": "Bump github/codeql-action from 4.37.3 to 4.37.6.\n"
    },
    {
      "commit": "f3ebcc46a8e6a50e1e145ef9ac92e50eade5d97a",
      "tree": "4f64bfbcdc3f8eafc84887d8104100926049e601",
      "parents": [
        "24e1a6c631fba3b83ace7192748af058aa6bc450"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 02 15:30:27 2026 -0400"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Sun Aug 02 15:30:27 2026 -0400"
      },
      "message": "Javadoc\n"
    },
    {
      "commit": "24e1a6c631fba3b83ace7192748af058aa6bc450",
      "tree": "a513408ba1a8dbb3ad899efd9031e64f4ade4ba8",
      "parents": [
        "39ebacbf891641ec8c31016fbb9b71cfb9c43cae"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 10:07:31 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 10:07:31 2026 +0000"
      },
      "message": "Updates for the next release\n"
    },
    {
      "commit": "39ebacbf891641ec8c31016fbb9b71cfb9c43cae",
      "tree": "facaa3def35ddf2f26da2275fe783a833b4dc360",
      "parents": [
        "eaddfa7b663ae6542bb8b4c6dfb2daa6f4fa5f09"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 09:36:14 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 09:36:14 2026 +0000"
      },
      "message": "Updates for the next release\n"
    },
    {
      "commit": "eaddfa7b663ae6542bb8b4c6dfb2daa6f4fa5f09",
      "tree": "8d2a716e5d028c1b2430125defe8e96f4c8265a5",
      "parents": [
        "35869bbff94c6695a498cb7757b79bf31ee7c28e",
        "a6ebbfeddbef69de7a622920f3d70c7d3d97c54e"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 09:34:58 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 09:34:58 2026 +0000"
      },
      "message": "Merge branch \u0027release\u0027\n"
    },
    {
      "commit": "a6ebbfeddbef69de7a622920f3d70c7d3d97c54e",
      "tree": "295c81cb73b4c13cb231397a9064bdb0d3f820cc",
      "parents": [
        "dc8f6c832a30f524bf12a5ae7ab013e4ad7c088f"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 09:34:58 2026 +0000"
      },
      "committer": {
        "name": "Gary Gregory",
        "email": "garydgregory@gmail.com",
        "time": "Thu Jul 30 09:34:58 2026 +0000"
      },
      "message": "Bump to next development version\n"
    }
  ],
  "next": "35869bbff94c6695a498cb7757b79bf31ee7c28e"
}
