Compare commits

...
386 Commits
Author SHA1 Message Date
itchyny 2ec4c2cdb1 Switch Linux runners to Ubuntu 26.04 except for MIPS (#3703)
The i386 build ran on ubuntu-22.04, which is retired on April 17, 2027,
and ubuntu-24.04 lacks fmod and exp10 in the static i386 libm.

Build on ubuntu-26.04 for every architecture except MIPS, whose cross
toolchains Ubuntu 26.04 no longer ships, and move the decnum, oniguruma
and valgrind workflows too. Most release binaries are now built with
GCC 15 and glibc 2.43, and they remain statically linked.
2026-11-01 20:34:20 +09:00
itchyny 77953d8c8d Implement drem with remainder on all platforms (#3704)
The static i386 libm of glibc 2.43 does not define drem, so linking jq
with --enable-all-static on Ubuntu 26.04 failed.

Call remainder for drem wherever it is available, as jq already did on
macOS. drem is an obsolete name for remainder, so the results do not
change, and jq no longer depends on the legacy symbol.
2026-11-01 19:57:43 +09:00
itchyny 58c0d615c7 Switch macOS runner from macos-14 to macos-15 (#3702)
The macOS jobs failed during the macos-14 brownouts, and the image is
retired on November 2, 2026.

Run them on macos-15 and build with the macos14 target triple instead
of deriving it from uname -r, so the binaries still require macOS 14.0
as in jq 1.8.x rather than following the runner to 15. Recent clang
ignores the version in a darwinNN triple and uses the SDK default.
2026-11-01 19:55:38 +09:00
skrmc 70c9dc516f Keep characters after a truncated UTF-8 sequence (#3690)
A multibyte UTF-8 sequence cut short by a non-continuation byte took
every remaining byte of the string, so "a\xf0Zb" became "a\ufffd".

Replace only the lead byte and the continuation bytes that follow it,
the same as an invalid sequence that is not cut short, so "a\xf0Zb"
now becomes "a\ufffdZb". This also changes length and explode on such
strings, which now count the characters that used to be dropped.
2026-11-01 00:59:37 +09:00
Michiel van Slobbe 74c46239b9 ci: update outdated dependencies when installing NetBSD packages (#3696)
The NetBSD job failed when installing git on a fresh runner, because the
image ships pcre2-10.48 and the git package needs pcre2>=10.48nb1, and
pkg_add does not update installed dependencies by default.

Pass -uu to pkg_add so it also updates installed dependencies that are
too old. Also drop the PKG_PATH override. netbsd-vm now writes the live
package mirrors for the running release to /etc/pkg_install.conf, so the
override is no longer needed to avoid the image's 9.0 fallback.
2026-11-01 00:52:18 +09:00
Jay Hemnani ac35c7dcbb Default the day of the month to 1 in strptime/1 (#3679)
A format without %d left the day of the month at 0, which mktime and
todate read as the last day of the previous month, and the weekday was
wrong for dates in January and February of 1900 and 2100.

Start parsing from the 1st, so a format without a day now gives the
first of the month, and a time-only format no longer outputs the 8 and
367 placeholders for the weekday and day of the year. This also fixes
the weekday of dates in January and February of 1900 and 2100.
2026-10-25 14:40:52 +09:00
Michiel van Slobbe 864d769d88 Implement ascii_downcase and ascii_upcase in C (#3689)
Both were defined as explode | map(...) | implode, which took 4 seconds
on a 10 MB string, about 90 times as long as parsing it.

Change the case of A-Z or a-z a byte at a time in C, copying multibyte
UTF-8 sequences unchanged, so the output stays the same and the 10 MB
case now takes about 60 ms including parsing. On a non-string input the
error now names the function, "ascii_downcase input must be a string",
instead of "explode input must be a string".
2026-10-25 14:18:21 +09:00
Huang-404-Q bd56a74562 Fix halt_error adding a newline to non-string output (#3694)
The manual says halt_error prints its input with no decoration, not
even a newline, but non-string values such as {"a":"xyz"} were printed
with a trailing newline.

Dump non-string values to JSON and print them the same way as strings,
so {"a":"xyz"} | halt_error(1) now writes exactly {"a":"xyz"} to stderr.
2026-10-24 15:19:14 +09:00
itchyny da4da65c0c docs: rewrite the tutorial (#3631)
The tutorial is where most people meet jq, but it was missing key
filters like select and abbreviated commands in ways that are hard for
beginners to follow.

Grow the page from 7 examples to 24, newly covering -r and -c, chained
paths and slicing, map, sort_by, group_by, select, test, to_entries,
from_entries, with_entries, string interpolation and @tsv. The sample
data is pinned with the API's until parameter and the outputs avoid
GitHub account data, so running the commands gives exactly the output
shown.
2026-10-24 09:41:07 +09:00
Douglas Adolph 53bbd4a3f9 docs: add ldconfig and make clean to the README source build (#3692) 2026-10-24 09:33:07 +09:00
qodelicious 49fbca1242 docs: explain that semicolons separate function arguments (#3685)
The manual's "Defining Functions" section shows only one-argument
functions, so it never says how to pass more than one. This adds a short
paragraph: arguments are separated by `;` in both `def f(a; b):` and
`f(.x; .y)`, and `f(.x, .y)` instead calls a one-argument `f` with the
filter `.x, .y`. It also adds an example for each. `tests/man.test` and
`jq.1.prebuilt` are regenerated.

Fixes #2163
2026-10-22 20:24:55 +02:00
qodelicious e440cccc0a docs: fix arithmetic update-assignment equivalence (#3682)
The manual said `a op= b` is equivalent to `a |= . op b`. It is actually
equivalent to `(b as $b | a |= . op $b)`: the right-hand side gets `.`
as input, not the value being updated, and each value it outputs gives a
separate result.

This updates the description and adds two examples, `.a += .b` and `.a
+= (1,2)`. `tests/man.test` and `jq.1.prebuilt` are regenerated.

Fixes #2119, fixes #2407
2026-10-22 20:23:52 +02:00
mika 94b00aa807 test: check that --run-tests reports failing tests (#3650)
Nothing tested that jq --run-tests exits with status 1 when the
tests fail, so a failure could have been reported as a pass.

Add shell tests with incorrect, missing and extra output that check
both the exit status and the reported message, such as "Insufficient
results", along with a passing control. Under Valgrind, memory errors
exit with status 99 so they are not mistaken for a test failure.
2026-10-21 21:40:49 +09:00
qodelicious 4b45d6c1ba docs: print one example output per line in the man page (#3683) 2026-10-21 21:34:38 +09:00
Léane GRASSER 175b8e3c51 docs: update quoting rules for PowerShell 7.3+ (#3649)
The manual recommended backslash-escaped double quotes inside the jq
program for all PowerShell versions, but since PowerShell 7.3 native
command arguments are passed with standard quoting by default, so the
backslashes reach jq literally.

Describe the quoting rules separately for Unix shells and PowerShell
7.3+, for older PowerShell and Windows PowerShell, and for cmd.exe, and
update the examples to match.
2026-10-20 22:28:24 +09:00
qodelicious ec0e2f3f94 docs: mention conda-forge on the download page (#3684) 2026-10-20 22:25:13 +09:00
fhgffy afa23a53cd Keep the sign of zero when negating a number literal (#3662)
Since jq 1.8.0, negating a number literal computed 0 - x, so -0 and
0 | -. printed 0 while (0+0) | -. printed -0.

Flip the sign bit with decNumberCopyNegate() instead, so -0 prints -0
again as it did in jq 1.7, and -(-0) is still 0.
2026-10-20 22:16:56 +09:00
Michiel van Slobbe 852c4d6096 Improve performance of UTF-8 validation (#3675)
jvp_utf8_next() had a fast path for ASCII, but it is not inlined into
its callers, so every byte of a string cost a function call.

Move the end check and the ASCII case into a static inline function in
jv_unicode.h and keep the rest out of line. This speeds up parsing of
string-heavy input by up to 1.17x and string functions such as length,
explode and @html, with the same output for every input.
2026-10-20 22:03:29 +09:00
Dmitri Vereshchagin 633ae6058a Disable colored output on a dumb terminal (#3552)
Enable colored output by default only when the TERM environment variable
is set to a value other than dumb, as git and grep do, so that users no
longer need to pass -M or set NO_COLOR on terminals that cannot display
escape sequences. Colored output is now disabled not only for TERM=dumb
but also when TERM is unset or empty. The -C option still enables colors
in all these cases. On Windows, colored output is still decided by
ANSICON and the console mode, and TERM is not checked.
2026-10-16 21:50:47 +09:00
Doha Nam 6b53f80311 Fix strftime/1 and strflocaltime/1 to allow an empty result (#3670)
These functions failed with "unknown system failure" whenever strftime()
returned 0 for a non-empty format, but 0 also means the format expands to
an empty string, as %p does in a locale without AM/PM.

Prepend a character to the format and trim it from the result, so that 0
can only mean the result is too long. Now 0 | strflocaltime("%p") gives
"" in fr_FR.UTF-8, and a result that is still too long fails with
"result too long" error instead. The size limit is unchanged.
2026-10-13 16:47:58 +09:00
Michiel van Slobbe 80fc7a169d Skip to the next RS after a parse error in --seq mode (#3654)
In --seq mode, a parse error was reported as "need RS to resync", but
parsing continued in the middle of the broken text, so fragments of it
were reported as more errors or output as values.

Set the parser state to wait for the next RS after resetting the parser,
instead of before, so that the rest of the broken text is skipped as
RFC 7464 recommends.
2026-10-12 13:40:40 +09:00
Hugohong258 611c575a97 docs: add simple and nested update-assignment examples (#3664) 2026-10-12 00:24:32 +09:00
Michiel van Slobbe b904884b94 Improve performance of string output (#3643)
Printing a string wrote each character with a separate call, one
fwrite() per character, or one jv_string_append_buf() for tojson and
tostring, which made output of string-heavy data slow.

Scan ahead for the next byte that needs escaping and write the run of
bytes before it with a single call, without changing the output.
Printing strings is now significantly faster, most of all for long
strings with few characters to escape, and the same applies to tojson
and tostring. With --ascii-output, text that is almost all non-ASCII is
about the same speed, since nearly every byte is escaped anyway.
2026-10-10 21:50:10 +09:00
itchyny a5323a369c Fix assertion failure on too many parameters in a nested function (#3663)
A call passing more than 4095 arguments at the start of a nested
function body aborted jq after reporting the compile errors, with
"Assertion failed: (nemb > 0 && sz > 0), function jv_mem_calloc" and
exit status 134.

Stop compiling a function before its bytecode is allocated when it has
compile errors, since the bytecode is only generated and used when
compilation succeeds. jq now prints the same compile errors followed by
"jq: 2 compile errors" and exits with status 3, as it does for other
compile errors, instead of crashing.
2026-10-10 21:29:56 +09:00
qodelicious 04042494cf Exit with the given status for negative halt_error codes (#3660)
halt_error with a negative exit code did not exit with that code. The
code collided with the internal status values for null or false output
and for no output, so halt_error(-1) exited with 0, or with 1 under
--exit-status.

Keep the low 8 bits of a negative code, as exit(3) does on POSIX
systems, so halt_error(-1) now exits with 255 and halt_error(-2) with
254, the same with or without --exit-status. Under --exit-status this
replaces the previous absolute value, so halt_error(-2) used to exit
with 2 and halt_error(-255) with 255, and they now exit with 254 and 1.
2026-10-10 21:26:02 +09:00
omkar bhor a8e6d5f871 Fix undefined behavior on out-of-range array index in has() and del() (#3560)
Converting a double outside the int range to int is undefined behavior,
and has() and del() did it on array indices like infinite or 1e10, which
UBSan reports as "inf is outside the range of representable values of
type 'int'". Only NaN was guarded against.

Clamp the index to the int range in has(), as getting and setting array
elements already do, and drop out-of-range indices in del() before they
are converted. Such indices can never refer to an element, so has()
returns false and del() leaves the array unchanged, the same as for
indices past the end of the array. Valid indices deleted together with
out-of-range ones, as in del(.[0, 1e10]), are still deleted.
2026-10-09 09:22:59 +09:00
neil dbbae0dee3 Add FreeBSD and NetBSD CI (#3600)
Add a BSD workflow with FreeBSD and NetBSD jobs that run the same build
and tests as the linux job, each inside a VM booted under QEMU on an
ubuntu-latest runner. The tests/shtest $NO_COLOR pty checks are now
skipped on NetBSD, as they already are on SunOS.
2026-10-08 23:38:20 +09:00
itchyny e001deb4cf Strip UTF-8 BOM at the start of each input file (#3657)
The UTF-8 BOM was stripped only at the start of the parser stream, but jq
feeds all input files into a single parser, so a BOM at the start of the
second and later files reached the parser as content and failed with a
confusing "Invalid numeric literal" error. Strip it in the file readers
instead, at the start of each input file including stdin, and in
jv_load_file.

This also strips the BOM for raw input, so -R and --rawfile no longer
yield a leading U+FEFF, and a BOM at the start of a -f program file or an
imported module is now accepted rather than reported as a syntax error.
In exchange, "\uFEFF1" | fromjson is now a parse error, since a U+FEFF
inside a string is content rather than an encoding marker, and the
dedicated "Malformed BOM" error is gone.
2026-10-08 23:01:36 +09:00
itchyny 17b87d25c7 Drop the date from the committed man page (#3659)
The date in the .TH line of jq.1.prebuilt changed whenever the manual was
regenerated in a new month, causing merge conflicts between pull requests
that touch the manual, and it did not reflect the release date anyway.
Generate the committed man page without a date.

Stamp the date into jq.1 at build time instead, taking it from the current
commit, or from SOURCE_DATE_EPOCH where that is set, so that release
tarballs and distribution builds still carry one and the behaviour added
in #3514 is kept. Write it in UTC and in ISO 8601 rather than the previous
"%B %Y", for which mandoc reports "cannot parse date, using it verbatim".
2026-10-08 22:16:42 +09:00
itchyny fd25c3e720 Parse the full ISO 8601 grammar in fromdateiso8601 (#3617)
`fromdateiso8601` was `strptime("%Y-%m-%dT%H:%M:%SZ") | mktime`, which
accepts only one of the many representations ISO 8601 permits. strptime
cannot be extended to cover the rest portably, since it has no specifier
for fractional seconds and glibc discards `%G` and `%V`.

Replace it with a parser in src/iso8601.c that handles basic and extended
representations, ordinal and week dates, fractional seconds, offsets and
date-only input. It uses integer arithmetic instead of `time_t`, so the
results no longer depend on the platform.

This is stricter than before. Impossible dates like `2015-02-30`, which
`mktime` used to normalize into March, and unpadded components like
`2015-3-5T6:00:00Z` are now errors. So is any trailing input, including
whitespace. Leading whitespace is rejected too; before, glibc skipped it
and macOS did not. A leap second now maps to the second before it rather
than the next minute. The error message has changed, and the result can
now be non-integer.
2026-10-08 08:24:10 +09:00
A4-Tacks a19efdd45d Parse ?// as ? and // outside destructuring patterns (#3593)
The lexer returned a single ALTERNATION token for `?//`, so any `?`
followed by `//` was consumed by it, and `.name?//"unknown"` failed
to parse even though they read as the optional operator followed by
the alternative operator.

Drop the lexer rule and spell the destructuring alternative operator
as `'?' "//"` instead. So `x ?// y` now parses as `x? // y`, while
`. as [$a] ?// [$b] | ...` keeps its meaning. Note that `?` and `//`
may now be separated by whitespaces inside a pattern.
2026-10-06 16:48:28 +09:00
itchyny f13c1effbf Run man page workflow on push only for master (#3648)
The push trigger had no branch filter, so pull requests from branches
in this repository (e.g. Dependabot) ran the workflow twice, once for
push and once for pull_request.
2026-10-01 15:39:23 +09:00
dependabot[bot] 57a03d610c build(deps): bump lxml from 6.1.2 to 6.1.3 in /docs (#3647) 2026-10-01 15:25:06 +09:00
dependabot[bot] 2bea9d6df9 build(deps): bump markdown from 3.10.3 to 3.11 in /docs (#3646) 2026-10-01 15:24:38 +09:00
Artem Lytkin 9a75bb0d43 Improve performance of join/1 on large arrays (#3639)
join/1 folded each element as `(acc + $x) + elem`, with the element
branch ending in `.//""`. Both leave a second live reference to the
accumulator: the nested + feeds the same `.` to both operands, and the
`//` leaves a forkpoint below it on the stack. `jvp_string_append`
therefore cannot grow the accumulator in place, and copies the whole
string once per element.

Pipe `acc + $x` into `. + elem` and drop the `//`, since adding null to
a string is already a no-op. join/1 is now linear: joining 8000
strings of 1000 chars goes from 6.5s to 0.06s, with output and error
messages unchanged.
2026-09-27 13:52:41 +09:00
Brandon 32580f5d83 Prefer getentropy() over arc4random() to seed the string hash (#3629)
glibc's arc4random() aborts with "Fatal glibc error: cannot get entropy
for arc4random" when the kernel lacks getrandom(2), so jq died on
startup on older kernels once 0c7d133 began seeding the hash on every
run.  getentropy() merely returns -1/ENOSYS there, so prefer it, and
route its failure through the existing `/dev/urandom` path - which works
on precisely those kernels -- instead of a guessable `getpid() ^ time()`.
2026-09-25 16:39:06 +09:00
itchyny df24981307 Fix reduce to preserve its input across init backtracking (#3633)
`reduce f as $x (init; update)` evaluated `f` against a stack slot
that forkpoints created while evaluating `init` restore. Both the
`DUPN` opening the reduction loop and the `LOADVN` retrieving the
result pop that slot destructively, nulling it out, so an `init`
that backtracks (e.g. `0, 0`) made `f` see `null` and fail with
"Cannot iterate over null".

Duplicate the input before the `FORK` instead of inside the loop,
and drop the leftover copy with `POP` once the loop is exhausted.
The slot left live at the `FORK` is then a block pushed after
`init` completed, which no earlier forkpoint can reach, so nulling
it is harmless. This is the same approach `gen_foreach` has used
since c70ae1a.

`DUPN` had no other user, so remove the opcode.
2026-09-19 15:21:29 +09:00
A4-Tacks 4beed4e01a perf: avoid the intermediate array in from_entries (#3626)
Define `from_entries` as `add(.[] | f) // {}` instead of
`map(f) | add // {}`. Since `add(f)` is `reduce f as $x (null; . + $x)`,
both fold the same values in the same order from the same seed, so the
only difference is that the array of single-key objects built by `map`
is never materialized.

Measured with both the generator and the result suppressed, so that only
the `from_entries` work differs: 6-15% less user time across input shapes,
which is 10-24% of what `from_entries` itself costs. For inputs above
roughly a thousand entries, peak RSS drops by 37%, around 80% of the
memory `from_entries` adds on top of its input; a 1,000,000 entry array
goes from 1064 MiB to 672 MiB.
2026-09-18 22:38:42 +09:00
itchyny 12cdd950e9 Register imported libraries in dependency order (#3620)
block_mark_referenced walks the joined block backwards and skips the
body of any definition not yet marked referenced, so a library must
precede its importers.  f58787c41 registered a library before walking
its dependencies, to have somewhere to keep the `loading` flag, which
reversed that order and made block_drop_unreferenced free definitions
that are still referenced through bound_by.

Keep the libraries being loaded on a stack threaded through the
load_library frames instead, so registration can move back after the
dependency walk.
2026-09-18 22:27:54 +09:00
itchyny e371bfaa92 Implement range/3 in C for consistent error handling (#3267) 2026-09-18 22:20:58 +09:00
Bumsu Hyeon dd409de28d Use WriteConsoleW() in priv_fwrite() too (#3607)
jq dumps JSON to the Windows console as UTF-16 with WriteConsoleW(),
but priv_fwrite() still writes the raw UTF-8 bytes with WriteFile(),
which the console decodes with its output code page.  So `jq .k` prints
non-ASCII correctly while `jq -r .k` prints mojibake, and the same goes
for -j, --raw-output0, --seq, halt_error and the `stderr` builtin.

The tty flag is computed once, from stdout, and passed to writes aimed
at stderr too, so ask the handle instead: with stdout on a console and
stderr redirected, WriteConsoleW() failed on the file handle and the
output was dropped.

One byte-level change: with stdout on a console and stderr redirected,
halt_error and the `stderr` builtin now go through the CRT, so bare LF
becomes CRLF and an existing CRLF becomes CR CRLF.  Use -b for
byte-exact output on that stream.
2026-09-18 20:12:34 +09:00
JUSHUANGHUI LI 7422e8c914 docs: clarify ownership of jv arguments and results (#3627)
The ownership comment in `jv.h` currently says every `jv_*` function
except `jv_copy` consumes its input. Several accessors and
object-iteration functions borrow their arguments instead, which makes
that guidance misleading for callers and language bindings.

Document the borrowing exceptions beside their declarations, including
numeric helpers and `jv_show`. Clarify that returned `jv` values are
owned, while the pointers returned by `jv_string_value` and
`jv_number_get_literal` belong to their input values. This changes
comments only.
2026-09-18 18:52:18 +09:00
itchyny 6aeafff056 Fix gmtime and localtime on negative timestamps with fractional seconds (#3634)
The whole seconds were truncated toward zero while the fractional part
was measured from the floor, so any negative non-integral timestamp was
rendered one second late; gmtime was not monotonic across the epoch.
2026-09-18 18:45:36 +09:00
itchyny 57f5976edf website: fold older versions on the download page (#3635)
Only the latest release stays visible in the binary, checksum and
signature, and source tarball lists; older versions move into
collapsible `<details>` sections. Condense the repetitive per-version
checksum and signature sentences into a single list.
2026-09-18 17:07:54 +09:00
Hugohong258andHugohong258 1b4109b0d0 docs: clarify that prebuilt downloads are standalone executables (#3632)
State explicitly in the README and download page that the
platform-specific prebuilt files are standalone executables, not
archives. Include the rename and executable-permission step for macOS
and Linux in the README.

Addresses #2956. Source archives are not described as executables.

Validation: the official `docs/build_website.py` completed and the
generated download page contains the new guidance. Used a Python venv
with the site's required rendering packages; restored the Windows
checkout's manual symlink in a temporary build copy only. jq itself was
not built or tested for this documentation-only change.

Co-authored-by: Hugohong258 <282228220+Hugohong258@users.noreply.github.com>
2026-09-15 11:13:25 +02:00
dependabot[bot] 9d241e2772 build(deps): bump markdown from 3.10.2 to 3.10.3 in /docs (#3622) 2026-09-01 15:30:46 +09:00
dependabot[bot] 8bce8b6543 build(deps): bump lxml from 6.1.1 to 6.1.2 in /docs (#3621) 2026-09-01 15:24:58 +09:00
Anna Rift 41b8edfe54 Fix a handful of typos (#3605) 2026-08-24 00:06:16 +09:00
Thomas Klausner 17b411837d Fix strftime-related functions on NetBSD. (#3579) 2026-08-24 00:03:21 +09:00
august fbee8f48ba Reject raw NUL bytes in the parser instead of silently truncating tokens (#3606) 2026-08-24 00:01:54 +09:00
A4-Tacks 8cf81cb80c docs: in example use [3,4] instead of [0,1] (#3599) 2026-08-23 23:28:10 +09:00
Anna Rift 4bb50d772b Fix typo 'you may wish [to] use' (#3604)
Fix all instances of the phrase "you may wish use `fabs`" -> "you may
wish _to_ use `fabs`" (emphasis mine) in the manual.
2026-08-12 21:02:39 +02:00
dependabot[bot] 603db3f577 build(deps): bump actions/setup-python from 6 to 7 in the official-actions group (#3595) 2026-07-26 10:10:34 +09:00
ded-furby 2d410d6d86 docs: clarify join behavior on objects (#3555) 2026-07-19 21:27:45 +09:00
WinkleMad f1f39b42e3 Advance past the whole codepoint after a zero-width regex match (#3586) 2026-07-19 21:13:51 +09:00
pavel kuliaka dbcaa9d491 shtest: skip locale test if date lacks locale support (#3583) 2026-07-18 17:03:18 +09:00
Thomas Klausner 579e6f76cf Cast char to unsigned char before passing to isspace (#3574) 2026-07-02 14:45:10 +09:00
itchyny 42d4035d4f Add a download link for Windows arm64 2026-06-22 19:31:20 +09:00
itchyny 3c81b62958 Update jq documentation for jq 1.8.2 release 2026-06-20 23:17:39 +09:00
github-actions[bot]andgithub-actions[bot] f0dabad36a Update signatures of 1.8.2 (#3566)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-20 23:12:40 +09:00
dependabot[bot] 34f7186b86 build(deps): bump actions/checkout from 6 to 7 in the official-actions group (#3565) 2026-06-20 20:58:06 +09:00
itchyny 88e83408f2 Update NEWS.md and AUTHORS for 1.8.2 (#3529) 2026-06-17 22:33:44 +09:00
itchyny a5a29cccc5 Upload attestation bundle as a release artifact (#3563)
The bundle generated by actions/attest is currently only retrievable
via the GitHub attestations API, which requires authentication.
Uploading it as jq-attestation.json lets downstream consumers
(distro packagers, unauthenticated CI) verify provenance offline.
2026-06-16 14:35:02 +09:00
itchynyandDirk Müller 46d1da3094 Tighten string length bounds and propagate invalid jv in implode
The bound added in CVE-2026-32316 (e47e56d22) still allowed
`sizeof(jvp_string) + (currlen + len) * 2 + 1` to wrap `size_t` on
32-bit platforms. Tighten the threshold so the final allocation
fits in 32-bit `size_t`.

Also break out of `jv_string_implode` and `f_string_implode` once
`jv_string_append_codepoint` returns an invalid `jv`; otherwise the
next iteration triggers the assertion in `jvp_string_ptr` (or
invokes undefined behavior under `-DNDEBUG`).

Fixes CVE-2026-54679.

Co-authored-by: Dirk Müller <dirk@dmllr.de>
2026-06-16 14:33:04 +09:00
itchyny e987df0d46 Fix heap-buffer-overflow in raw file loading
When `jv_string_append_buf` overflows the string length limit,
it returns an invalid `jv`; `jv_load_file` then re-entered it
on the invalid value and overran the heap. Break out of the loop
once the value is invalid.

Fixes CVE-2026-49839.
2026-06-08 22:15:06 +09:00
dependabot[bot] 985abe534f build(deps): bump lxml from 6.1.0 to 6.1.1 in /docs (#3553) 2026-06-02 08:36:56 +09:00
theyoucheng df924eae91 Fix undefined pointer arithmetic in UTF-8 helpers
Fixes GHSA-ggc9-rpv2-xgpm and GHSA-gvwx-xj9r-3frq.
2026-05-23 10:11:11 +09:00
itchyny a829f678f3 Fix one-byte over-read in BASE64_DECODE_TABLE (#3547)
The table was declared with 255 entries but indexed by an unsigned
char, so the decoder would read one byte past the array for input
bytes equal to 0xFF. Through jq's normal input paths the over-read
is unreachable because invalid UTF-8 bytes are normalized to U+FFFD
before reaching @base64d, but the table is still wrong at the C
level and reachable by libjq callers that construct strings via
the C API without UTF-8 validation.
2026-05-23 09:36:15 +09:00
Yu-Fu Fu 7122866869 Guard deep structural equality and comparison recursion (#3539)
jv_equal and jv_cmp overflows the C stack on deeply nested
input. Cap recursion at 10000 with -1 / INT_MIN sentinels;
operators that compose user expressions surface this as
"Equality check too deep" / "Comparison too deep".

Fixes CVE-2026-47770.
2026-05-22 20:07:16 +09:00
itchyny f58787c418 Detect circular module imports to prevent stack overflow
jq used to recurse without bound on mutual or self-referential
`import` declarations, exhausting the stack. Track each library's
load state with a `loading` flag set before its dependencies are
processed; a recursive reference to an in-progress library now
reports "circular import of X".

Fixes CVE-2026-44777.
2026-05-11 20:41:38 +09:00
itchyny 9d223f153c Reject embedded NUL bytes in module import paths
jq accepts embedded NUL bytes at the language level but resolves
module import paths through NUL-terminated C strings, so the path
validated by policy or audit code could differ from the on-disk
path jq actually opens. Pass jv through gen_import so the AST
preserves the original bytes, and reject embedded NULs in
validate_relpath.

Fixes CVE-2026-43895.
2026-05-09 17:08:43 +09:00
itchyny 9761ceb7d6 Reject numeric literals longer than DEC_MAX_DIGITS (999999999)
A signed-int overflow in decNumber's D2U macro lets huge literals
write attacker-controlled bytes past a stack buffer. Cap the length
before calling decNumberFromString, and pre-slice long strings in
jv_dump_string_trunc so the resulting error message doesn't itself
allocate a multi-GiB buffer.

Fixes CVE-2026-43894.
2026-05-06 19:45:24 +09:00
itchyny 532ccea608 Limit recursive object merge depth to prevent stack overflow
This fixes CVE-2026-43896.
2026-05-05 22:44:02 +09:00
itchyny 33d7bce321 Avoid stack overflow when freeing deeply nested values 2026-05-05 20:31:29 +09:00
itchyny 7316e5ce4b Fix CI to add artifact-metadata permission for actions/attest (#3530) 2026-05-05 14:06:45 +09:00
itchyny 63751f8a9f Fix signed-int overflow in tokenadd to prevent buffer overflow 2026-04-26 22:59:17 +09:00
Rohan Santhosh Kumar 5f2a14dd1b docs: fix "happened" spelling in tutorial changelog entries (#3525) 2026-04-24 22:33:53 +09:00
itchyny 5a015deae3 Fix NUL truncation in program files loaded with -f
This fixes CVE-2026-41256.
2026-04-24 22:15:08 +09:00
itchyny 01b3cded76 Fix signed-int overflow in stack_reallocate
This fixes CVE-2026-41257.
2026-04-24 22:09:44 +09:00
itchyny d1a12569d9 Limit the containment check depth
This fixes CVE-2026-40612.
2026-04-24 22:02:24 +09:00
dependabot[bot] 870207323d build(deps): bump lxml from 6.0.2 to 6.1.0 in /docs (#3526) 2026-04-22 15:36:33 +09:00
dependabot[bot] 1eaa31acea build(deps): bump actions/upload-pages-artifact from 4 to 5 in the official-actions group (#3523) 2026-04-22 15:36:15 +09:00
itchyny fb59f14910 Limit path depth to prevent stack overflow
Deeply nested path arrays can cause unbounded recursion in
`jv_setpath`, `jv_getpath`, and `jv_delpaths`, leading to
stack overflow. Add a depth limit of 10000 to match the
existing `tojson` depth limit. This fixes CVE-2026-33947.
2026-04-13 11:23:40 +09:00
itchynyandMattias Wadman 2f09060afa Fix out-of-bounds read in jv_parse_sized()
This fixes CVE-2026-39979.

Co-authored-by: Mattias Wadman <mattias.wadman@gmail.com>
2026-04-13 11:04:52 +09:00
itchynyandAsaf Meizner 0c7d133c3c Randomize hash seed to mitigate hash collision DoS attacks
The hash function used a fixed seed, allowing attackers to craft colliding keys
and cause O(n^2) object parsing performance. Initialize the seed from a random
source at process startup to prevent the attack. This fixes CVE-2026-40164.

Co-authored-by: Asaf Meizner <asafmeizner@gmail.com>
2026-04-13 08:53:26 +09:00
itchyny 6374ae0bcd Fix NUL truncation in the JSON parser
This fixes CVE-2026-33948.
2026-04-13 08:46:11 +09:00
tlsbollei fdf8ef0f08 Add runtime type checks to f_string_indexes
This fixes CVE-2026-39956.
2026-04-08 21:43:46 +02:00
itchyny e47e56d226 Fix heap buffer overflow in jvp_string_append and jvp_string_copy_replace_bad
In `jvp_string_append`, the allocation size `(currlen + len) * 2` could
overflow `uint32_t` when `currlen + len` exceeds `INT_MAX`, causing a small
allocation followed by a large `memcpy`.

In `jvp_string_copy_replace_bad`, the output buffer size calculation
`length * 3 + 1` could overflow `uint32_t`, again resulting in a small
allocation followed by a large write.

Add overflow checks to both functions to return an error for strings
that would exceed `INT_MAX` in length. Fixes CVE-2026-32316.
2026-04-13 08:27:16 +09:00
Vladimír Marek 9f778b4cb5 Add Solaris support (#3515)
I love jq :) So while updating the version we ship in Solaris I have
tried to modify stuff to make everything work out of the box. Just

```
autoreconf -fiv
./configure
gmake
gmake check
```

I also went ahead and created Solaris test action should you be
interested in having it too. The changes are not extensive and I have
tried to comment them nicely in each commit. Hopefully that's enough.

Thanks for jq!
2026-04-08 16:02:41 +02:00
Peter KjellerstedtandPeter Kjellerstedt 27f417f481 Support building with --disable-maintainer-mode and source != build dir (#3518)
If --disable-maintainer-mode is enabled, then the rules for generating
parser.[ch] and lexer.[ch] did nothing. This worked fine if the source
and build directories are the same as the pre-generated parser.c and
lexer.c files would suffice. However, if the build directory is not the
same as the source directory, then the rest of the Make rules expect
parser.[ch] and lexer.[ch] to have been created in the build directory
if their source files (parser.y and lexer.l) are newer than the target
files, which can happen in case the source is fetched using Git.

Avoid the problem by copying the files to the build directory if needed.

Co-authored-by: Peter Kjellerstedt <pkj@axis.com>
2026-04-08 12:58:49 +09:00
itchyny 69785bf77f Use // instead of //= in from_entries definition (#3516) 2026-04-02 22:04:51 +09:00
dependabot[bot] 847b6afd2c build(deps): bump actions/deploy-pages from 4 to 5 in the official-actions group (#3513) 2026-04-02 14:15:32 +09:00
McSinyx c26756395c Respect SOURCE_DATE_EPOCH while generating man page (#3514) 2026-04-02 14:14:54 +09:00
itchyny cec6b0f346 Fix crashes and resource leaks in jq_testsuite (#3509)
- Fix segfault when --skip/--take is the last argument.
- Fix FILE handle leak: opened test files were never closed.
- Support running multiple test files in one invocation.
2026-03-15 21:45:16 +09:00
Ze Sheng b6a9e260cd fix jq_fuzz_parse_stream: use iterative parser API for streaming mode (#3499) 2026-03-11 11:49:14 +09:00
dependabot[bot] 1a394919f9 build(deps): bump the docker-actions group with 5 updates (#3506) 2026-03-09 20:50:20 +09:00
itchyny 4b145b3a58 Group Docker actions updates in dependabot config 2026-03-09 17:34:16 +09:00
dependabot[bot] 03a269b2f7 build(deps): bump crazy-max/ghaction-import-gpg from 6 to 7 (#3501) 2026-03-09 17:31:28 +09:00
Scott Seal 3985b80ce5 Fix use-after-free in args2obj() array argument path (#3498)
Copy `kk` and `vk` before passing to jv_object_get(), which consumes
its arguments. Without copies, subsequent loop iterations read freed
memory (CWE-416) and post-loop jv_free() double-frees (CWE-415).

This bug was introduced in `b279713e` when array processing was hoisted
out of
the loop into locals without accounting for jv_object_get() semantics.
Fixes GHSA-gf4g-95wj-4q4r.
2026-03-09 17:30:08 +09:00
itchyny 3cd7e0da00 Fix crash when importing a module with errors twice (#3497)
When a module fails to parse as a library, `load_library` cached the
invalid block. A second import/include of the same module would find
the cached invalid block and pass it to `block_bind_library`,
triggering the assertion failure. Skip caching the block when there
are parse errors to avoid this problem.
2026-03-06 15:32:29 +09:00
itchyny ed3c7f214b Fix tonumber and toboolean to reject strings with embedded null bytes (#3496) 2026-03-05 08:28:43 +09:00
itchyny bfcf82fde1 Refactor @uri and @urid and fix multi-byte UTF-8 corruption (#3495)
This commit improves performance by refactoring `@uri` and `@urid`
to pre-alloacte buffers and build the `jv` string at the end.
Also, this fixes `@urid` to prevent multi-byte UTF-8 corruption,
and to preserve embedded null bytes.
2026-03-05 08:28:09 +09:00
dependabot[bot] 36b6ae00b1 build(deps): bump the official-actions group with 3 updates (#3494) 2026-03-03 15:36:54 +09:00
itchyny 0df54c888a Fix infinite loop and undefined behavior in del(.[nan]) (#3490) 2026-03-02 21:58:28 +09:00
itchyny 262f0b81c1 Add missing validity check in f_strflocaltime after f_localtime (#3491) 2026-03-02 21:58:07 +09:00
itchyny c3d3e7d656 Fix buttons in tutorial to toggle labels when clicked on (#3493) 2026-03-02 17:46:58 +09:00
dependabot[bot] 2beac1aed0 build(deps): bump markdown from 3.10 to 3.10.2 in /docs (#3492) 2026-03-01 16:06:09 +09:00
dependabot[bot] 2d5239e8c1 build(deps): bump jsonschema from 4.25.1 to 4.26.0 in /docs (#3474) 2026-03-01 16:04:55 +09:00
itchyny 601a37f452 Refactor tm2jv to handle fractional seconds removing duplicated code (#3489) 2026-03-01 06:18:14 +09:00
itchyny 750dbe723b Fix memory leaks and double frees (#3487) 2026-03-01 06:15:58 +09:00
Fabian Fleischer 2ad99a6c70 Pre-allocate tokenbuf for string parser (#3485)
Fixes #3483
2026-02-28 15:45:16 +01:00
Fabian Fleischer 061fd14d74 Fix off-by-one in modulo operator (#3486) 2026-02-27 04:35:36 +09:00
itchyny 22361cfb87 Improve error message truncation with closing delimiters (#3478)
Truncated strings now show closing delimiters: `..."` for strings,
`...]` for arrays, and `...}` for objects, making error messages
clearer.
2026-02-25 08:14:23 +09:00
Ze Sheng a2741ee0a8 Limit number of function parameters and definitions to prevent SEGV (#3460) 2026-02-25 07:49:40 +09:00
itchyny b33a7634ba Fix reversed pointer subtraction in f_env bounds check (#3465) 2026-01-20 21:56:09 +09:00
itchyny d44baeb67a Support arm/v7 architecture in Docker images (#3463) 2026-01-15 14:10:07 +09:00
dependabot[bot] ea9e41f758 build(deps): bump the official-actions group with 2 updates (#3450) 2025-12-17 11:24:39 +09:00
dependabot[bot] f46dc3dd61 build(deps): bump markdown from 3.9 to 3.10 in /docs (#3442) 2025-12-17 11:24:12 +09:00
José Joaquín Atria 88b9c4920e Fix stder typo (#3446)
The manual was missing an "r" in "stderr".
2025-12-12 10:54:39 +01:00
bigmoonbit 0eb3da11ed chore: fix typo in tests/jq.test (#3441)
fix typo in  tests/jq.test

Signed-off-by: bigmoonbit <bigmoonbit@outlook.com>
2025-11-27 10:44:45 +01:00
dependabot[bot] 39572e129f build(deps): bump actions/checkout from 5 to 6 in the official-actions group (#3439) 2025-11-24 15:15:18 +09:00
Jan-Piet Mens 4829059147 Add missing word in manual for rawfile (#3434) 2025-11-18 09:49:59 +09:00
itchyny 33b3a68f9c Fix expected value assertion (fix #3430, ref #3393) (#3431) 2025-11-04 21:21:21 +09:00
Mattias Wadman cff4e00982 website: Add wiki link to navigation bar (#3424)
Related to #3423
2025-10-31 10:17:25 +01:00
itchyny 5529788292 Fix slurping raw input not to corrupt multi-byte characters (fix #3389) (#3421) 2025-10-31 15:16:29 +09:00
dependabot[bot] 8d9a3c3ab3 build(deps): bump the official-actions group with 2 updates (#3429) 2025-10-27 16:48:33 +09:00
Ish Nagy b29504b4e1 Increase the maximum printing depth from 256 to 10000 (fixes #3413) (#3414) 2025-10-14 14:12:57 +09:00
Sudhakar Verma 589a6947fa jq_fuzz_execute: limit oniguruma depth to 1024 (#3377)
Fixes #3375 - I'll also fix the oss-fuzz build for this in a PR

Signed-off-by: Sudhakar Verma <sudhakar.verma@canonical.com>
2025-10-05 12:50:42 +09:00
dependabot[bot] c9c96b3cdd build(deps): bump lxml from 6.0.1 to 6.0.2 in /docs (#3416) 2025-10-01 06:39:11 +00:00
dependabot[bot] f240512140 build(deps): bump markdown from 3.8.2 to 3.9 in /docs (#3418) 2025-10-01 06:37:39 +00:00
dependabot[bot] 2b084a6d2d build(deps): bump pyyaml from 6.0.2 to 6.0.3 in /docs (#3417) 2025-10-01 06:37:20 +00:00
A4-Tacks 169457328d Fix rtrimstr("") always output "" (#3415)
Example
---
**Before this fix**:

```sh
$ jq -n '"foo"|rtrimstr("")'
""
```

**After this fix**:

```sh
$ jq -n '"foo"|rtrimstr("")'
"foo"
```
2025-09-29 17:15:43 +02:00
itchyny c8017bf079 Fix localization test for time formatting functions (fix #3368) (#3409) 2025-09-15 07:48:02 +09:00
itchyny a4d9d54010 Fix expected value assertion for NaN value (fix #3393) (#3408) 2025-09-15 07:47:51 +09:00
itchyny 695830c453 Fix year 2038 problem on 32-bit platforms (fix #3369) (#3407) 2025-09-15 07:46:29 +09:00
Kartik Shah cd3a4c3d31 Remove extra space from die func output (#3391) 2025-09-15 07:43:10 +09:00
dependabot[bot] 63c5f4e196 build(deps): bump the official-actions group with 2 updates (#3405) 2025-09-09 11:57:01 +00:00
dependabot[bot] 755ac61755 build(deps): bump jsonschema from 4.25.0 to 4.25.1 in /docs (#3404) 2025-09-05 12:02:28 +00:00
dependabot[bot] 68f9e0a7e1 build(deps): bump lxml from 6.0.0 to 6.0.1 in /docs (#3403) 2025-09-05 12:01:56 +00:00
dependabot[bot] 21471c5e3b build(deps): bump the official-actions group across 1 directory with 3 updates (#3401) 2025-08-27 03:05:20 +00:00
dependabot[bot] a8115e5bc9 build(deps): bump jsonschema from 4.24.0 to 4.25.0 in /docs (#3382)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 21:12:16 +09:00
itchyny 0ff997f7c4 Update GPG signing key (fix #3381) 2025-07-31 23:00:24 +09:00
Dennis Ameling 4357b6154e CI: add builds for Windows arm64 (#3376) 2025-07-27 08:23:57 +09:00
Alyssa Ross 3c5ceac8e7 jq.test: drop non-portable %F test (#3365)
%F is a non-portable GNU extension, not supported by all strptime
implementations (for example musl's).
2025-07-05 01:25:28 +09:00
itchyny b9e19de76e Update jq documentation for jq 1.8.1 release 2025-07-01 20:54:28 +09:00
github-actions[bot]andgithub-actions[bot] 3db7b519bf Update signatures of 1.8.1 (#3364)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-01 20:50:42 +09:00
itchyny 4467af7068 Update NEWS.md and AUTHORS for 1.8.1 (#3353) 2025-07-01 19:36:14 +09:00
dependabot[bot] 98a1176cff build(deps): bump pyyaml from 6.0.1 to 6.0.2 in /docs (#3363)
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0.1 to 6.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/yaml/pyyaml/releases">pyyaml's
releases</a>.</em></p>
<blockquote>
<h2>6.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Support for Cython 3.x and Python 3.13.</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2">https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2</a></p>
<h2>6.0.2rc1</h2>
<ul>
<li>Support for extension build with Cython 3.x</li>
<li>Support for Python 3.13</li>
<li>Added PyPI wheels for musllinux on aarch64</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/yaml/pyyaml/blob/main/CHANGES">pyyaml's
changelog</a>.</em></p>
<blockquote>
<p>6.0.2 (2024-08-06)</p>
<ul>
<li><a
href="https://redirect.github.com/yaml/pyyaml/pull/808">yaml/pyyaml#808</a>
-- Support for Cython 3.x and Python 3.13</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785"><code>41309b0</code></a>
Release 6.0.2 (<a
href="https://redirect.github.com/yaml/pyyaml/issues/819">#819</a>)</li>
<li><a
href="https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271"><code>dd9f0e1</code></a>
6.0.2rc1 (<a
href="https://redirect.github.com/yaml/pyyaml/issues/809">#809</a>)</li>
<li><a
href="https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e"><code>f5527a2</code></a>
disable CI trigger on PR edits</li>
<li><a
href="https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c"><code>b4d80a7</code></a>
Python 3.12 + musllinux_1_1_x86_64 wheel support</li>
<li>See full diff in <a
href="https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyyaml&package-manager=pip&previous-version=6.0.1&new-version=6.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 19:29:37 +09:00
dependabot[bot] 205b3a2d75 build(deps): bump lxml from 5.4.0 to 6.0.0 in /docs (#3362)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lxml&package-manager=pip&previous-version=5.4.0&new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 17:31:54 +09:00
dependabot[bot] d21e506d52 build(deps): bump markdown from 3.8 to 3.8.2 in /docs (#3361)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=markdown&package-manager=pip&previous-version=3.8&new-version=3.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 17:19:03 +09:00
TheOdd 11f43e9d93 Fixed minor typo in docs (#3359) 2025-06-30 07:31:28 +09:00
엄태용 2e6987967e Use jv_mem_alloc to allocate dtoa_context in tsd_dtoa_context_get (#3356) 2025-06-30 07:27:24 +09:00
itchyny 0b1ef46973 Add oniguruma library path to link jq program 2025-06-24 23:49:32 +09:00
Mattias Wadman 5e159b34b1 Fix GHSA-f946-j5j2-4w5m stack-overflow by limit regex parse depth
Was detect by AFL build but it's unsure if possible to trigger in non-fuzz build.

Oniguruma has a default limit of 4096 but this is not be low enough to
protect from stack-overflows in some builds like with AFL where it seems
to use more stack space. A limit of 1024 should be enough usage-wise
and also give more margin.
2025-06-24 15:39:40 +02:00
Mattias Wadman 499c91bca9 Fixes CVE-2025-49014 which was introduced in 1.8.0 2025-06-19 00:11:01 +02:00
itchyny edbc1da809 Revert "fix: reduce/foreach state variable should not be reset each iteration" (#3349)
This reverts 96e8d893c1. The change
introduced a serious performance regression as reported in #3345.
2025-06-17 15:29:46 +09:00
itchyny a587ddc5a3 Fix syntax error assertion failure (fix #3348) (#3350) 2025-06-17 15:25:46 +09:00
itchyny 78045d8aa9 Add LICENSE notice of NetBSD's strptime() to COPYING (#3344) 2025-06-14 08:01:10 +09:00
itchyny 7cc202aa6e Fix portability of strptime especially for Windows (#3342) 2025-06-14 08:00:55 +09:00
dependabot[bot] 859a8073ee build(deps): bump jsonschema from 4.23.0 to 4.24.0 in /docs (#3332) 2025-06-03 06:24:14 +09:00
Binbin Qian 023f274ee9 Fix build on old Macs (#3336) 2025-06-03 06:22:20 +09:00
itchyny 62cafa2367 Update jq documentation for jq 1.8.0 release (#3333) 2025-06-01 16:38:16 +09:00
github-actions[bot]andgithub-actions[bot] 89d657e3fa Update signatures of 1.8.0 (#3331)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-01 15:05:24 +09:00
itchyny d23a7b9db9 Update NEWS.md and AUTHORS for 1.8.0 (#3330) 2025-06-01 14:51:21 +09:00
itchyny d3cf5caf72 Add more test cases for JQ_COLORS support (ref #3288) 2025-05-31 16:29:02 +09:00
SArpnt aa977aa716 Dynamically allocate JQ_COLORS escapes for truecolor support (#3282) 2025-05-31 15:49:17 +09:00
itchyny c6e041699d Fix heap buffer overflow when formatting an empty string
The `jv_string_empty` did not properly null-terminate the string data,
which could lead to a heap buffer overflow. The test case of
GHSA-p7rr-28xf-3m5w (`0[""*0]`) was fixed by the commit dc849e9bb7,
but another case (`0[[]|implode]`) was still vulnerable. This commit
ensures string data is properly null-terminated, and fixes CVE-2025-48060.
2025-05-31 11:46:40 +09:00
itchyny 3b00981acd Fix quotes in 1.7 manual for ease of taking diff between versions (#3329) 2025-05-31 11:31:54 +09:00
itchyny f28720f699 Increase the maximum parsing depth for parsing JSON to 10000 (#3328)
This is the same limit as encoding/json in Go and should be sufficient for most use cases.
2025-05-30 20:19:34 +09:00
Thalia Archibald 9ac6ddae22 Fix whitespace in number parsing (#3195)
* Handle input errors for --indent

Handle malformed and overflowing arguments. Also, forbid leading and
trailing spaces to match the behavior of tonumber from commit ce0e788
(improve tonumber/0 performance by parsing input as number literal,
2024-03-02).

* Do not skip leading whitespace in jvp_strtod

`jvp_strtod` skips leading whitespace, but its decnum counterpart
`decNumberFromString` (called within `jv_number_with_literal`) does not.
Those two are called interchangeably, so it leads to inconsistent
behavior depending on whether the decnum feature is enabled.
Additionally, `classify`, used in the token scanner, only considers
[ \t\n\r] to be whitespace, but `jvp_strtod` consumes the larger set
[ \t\n\v\f\r], so those extra characters are considered literals.

Changing this deviates from the behavior of `strdod` from <stdlib.h> and
is technically a breaking API change, since it is a public symbol.
2025-05-29 04:11:00 +09:00
itchyny aaace5432a Fix parser to allow binary operators for binding syntax (#3326)
Previously, the precedence of `as` binding was higher than the binary
operators. This results in unexpected behaviors, `1 + 2 as $x | -$x`
was `-1` instead of `-3`. The commit 92daac90f6 (PR #3053) changed
the behavior to emit syntax error on this case. Now, this commit allows
binary operators with `as` binding. This fixes #2446, and fixes #3284.
2025-05-23 21:25:30 +09:00
itchyny 4e3088f188 Fix behavior of --slurp --stream when input has no trailing newline character (#3279)
This commit fixes a strange behavior of the combination of `--slurp` and
`--stream` flags when the input has no trailing newline character.
2025-05-22 08:04:05 +09:00
Gabriel Marin 7d8c096e48 Add trimstr/1 function (#3319) 2025-05-21 18:46:04 +09:00
itchyny de21386681 Fix signed integer overflow in jvp_array_write and jvp_object_rehash
This commit fixes signed integer overflow and SEGV issues on growing
arrays and objects. The size of arrays and objects is now limited to
`536870912` (`0x20000000`). This fixes CVE-2024-23337 and fixes #3262.
2025-05-21 07:48:23 +09:00
itchyny 4e2ccc4c9b Fix and refactor scan-build workflow to run on the master branch (#3325) 2025-05-20 20:00:53 +09:00
itchyny b733dfaee7 Improve error messages to show problematic position in the filter (#3292)
This commit improves the parser and compiler error messages, making
it more easier to understand where in the filter the problem is.
Like modern compilers, jq will show the line in the filter where the
error occurred, will display squiggly line under the invalid token.
2025-05-18 16:36:32 +09:00
Brahm Lower c350566001 Adds "toboolean" builtin function for converting strings to booleans (#2098) 2025-05-18 16:31:10 +09:00
itchyny 92daac90f6 Fix unary operator precedence, allow some expressions as object values (#3053)
This commit improves the parser to fix some unintuitive results of the unary
operator `-` (e.g. `[-1 as $x | 1,$x]` is now `[1,-1]`, previously `[-1,-1]`).
Also, this commit now allows to use binary operator expressions, `reduce`,
`foreach`, `if`, and `try` expressions for object values.
2025-05-18 16:13:55 +09:00
itchyny b088e83a82 Refactor splits/2 using foreach syntax (remove private filter _nwise) (#3260)
This commit refactors `splits/2` implementation using `foreach` syntax
and reduces intermediate arrays. This refactoring removes an unnecessary
private (and undocumented) filter `_nwise` and closes #3148.
2025-05-18 08:27:44 +09:00
itchyny 96d19ca2ee Fix use of uninitialized value in check_literal (fix #3316) (#3324) 2025-05-18 08:06:54 +09:00
itchyny ecea2d29bd Update CI runners to Ubuntu 24.04 and macOS Sonoma (#3208) 2025-05-18 08:06:16 +09:00
itchyny eff9caf6c7 Disable shared libraries on macOS to avoid conflict with -all-static (#3261) 2025-05-17 04:57:17 +09:00
Steven Ihde 77d23e9a5f Test daylight time for strflocaltime (#3323)
This test case covers the behavior described in issue #1912, fixed by #3203.
2025-05-15 07:16:25 +09:00
Thomas Sibley 931a362f8b docs: Use a better input example in the streaming section (#3322)
The introduction says all the usage examples (e.g. of truncate_stream,
etc) in the section use [0,[1]] as input, but they actually use [1,[2]].
["a",["b"]] seems better than [1,[2]] as the string values won't be
confusable with the indexes in <path>.
2025-05-14 20:46:31 +09:00
itchyny a8f27cc4db Fix warning: a function definition without a prototype is deprecated (#3259) 2025-05-07 21:25:32 +09:00
dependabot[bot] 9f6bcdc321 build(deps): bump lxml from 5.3.1 to 5.4.0 in /docs (#3311)
Bumps [lxml](https://github.com/lxml/lxml) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.1...lxml-5.4.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-version: 5.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-07 11:01:19 +00:00
dependabot[bot] 622e2d1d7f build(deps): bump markdown from 3.7 to 3.8 in /docs (#3312)
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.7 to 3.8.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.7...3.8)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.8'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-07 11:01:11 +00:00
itchyny 43506372b5 Update builtin oniguruma to 6.9.10 to suppress clang warnings (#3258) 2025-05-07 10:50:42 +00:00
itchyny abde27d0f5 Revert "Move closer to the standard autotools idiom. (#3187)" (#3255)
This partially reverts commit d8463c2549.
Revert reason: version string should be updated more often.
2025-05-07 17:26:19 +09:00
Emanuele Torre aea8efaf0b jv_unique: don't leak non-unique elements that are not returned (#3304) 2025-03-29 07:16:46 +09:00
dependabot[bot] 947fcbbb1f build(deps): bump jsonschema from 4.18.4 to 4.23.0 in /docs (#3302)
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.18.4 to 4.23.0.
- [Release notes](https://github.com/python-jsonschema/jsonschema/releases)
- [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.18.4...v4.23.0)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-28 09:57:51 +09:00
dependabot[bot] 1e22960cf5 build(deps): bump lxml from 4.9.3 to 5.3.1 in /docs (#3301)
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.3 to 5.3.1.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.3...lxml-5.3.1)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-28 09:56:51 +09:00
dependabot[bot] 0b2bda8108 build(deps): bump markdown from 3.4.3 to 3.7 in /docs (#3300)
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.4.3 to 3.7.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.4.3...3.7)

---
updated-dependencies:
- dependency-name: markdown
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-28 09:55:39 +09:00
itchyny 5f7b1aed16 fix usage in help to use jq not the invoked command path (#3299) 2025-03-28 08:43:06 +09:00
itchyny 8819eb8fb4 Enable dependabot PR to update Pipenv dependencies (#3270) 2025-03-28 08:42:44 +09:00
dependabot[bot] 313b0e3735 build(deps): bump jinja2 from 3.1.5 to 3.1.6 in /docs (#3298)
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.5...3.1.6)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-27 21:33:55 +09:00
liviubobocu 4b84a6e2f6 Include column number in parser and compiler error messages (#3257)
Resolves #1027, resolves #2334, and resolves #3256.
2025-03-10 22:17:49 +09:00
itchyny 668871bdfa Fix warning: sign-compare in @base64d format (#3287) 2025-03-06 17:07:54 +09:00
itchyny 94fd973ebb Fix calloc error on @base64d format (ref #3280) (#3286)
This commit fixes a regression of a8ce2ff, e.g. `"=" | @base64d`.
2025-03-06 04:30:46 +09:00
Nicole Wren c70ae1ada4 fix: foreach should not break init backtracking with DUPN (#3266)
Simplifies the compilation of `foreach` to avoid the problem in #3227 by
removing unnecessary `FORK ... BACKTRACK`.

Does not address `reduce`, which is less trivial.
2025-03-05 22:01:48 +09:00
sachint f65d088b75 Enable IBM z/OS support (#3277) 2025-03-05 17:21:05 +09:00
itchyny 7e5cad359a Add autotools temporary files to .gitignore (#3285) 2025-03-05 16:57:11 +09:00
SArpnt 9d6efec198 fix: unset environment variables before shtests (#3283)
Tests no longer fail if `JQ_COLORS` and `NO_COLOR` are already set.
2025-03-05 07:59:46 +09:00
itchyny a09a4dfd55 Reject NaN with payload while parsing JSON
This commit drops support for parsing NaN with payload in JSON like
`NaN123` and fixes CVE-2024-53427. Other JSON extensions like `NaN` and
`Infinity` are still supported. Fixes #3023, fixes #3196, fixes #3246.
2025-03-05 07:43:54 +09:00
itchyny a8ce2ff09a Avoid zero-length calloc (#3280)
Using `calloc` function with a count of zero elements is implementation
defined and it may cause allocation errors on some platforms (ref #3277).
This commit fixes `jv_mem_calloc` callers to avoid undefined behavior.
2025-03-04 22:33:51 +09:00
itchyny 4003202ccf Fix segmentation fault on strftime/1 and strflocaltime/1 (#3271)
When we use a large format string to `strftime/1` and `strflocaltime/1`,
we get segmentation fault. This happens because the result buffer is
allocated on the stack using `alloca` function, and `strftime` function
writes out of the space when the size is not enough to format time.
I fixed the segmentation fault issue by allocating the result buffer on
the heap using `malloc` function, because `alloca` function does not
provide a way to detect insufficient space.
2025-03-04 22:28:09 +09:00
itchyny dc849e9bb7 Improve performance of repeating strings (#3272)
This commit improves the performance of repeating strings, by copying
the result string instead of the string being repeated. Also it adds
an error message when the result string is too long.
2025-03-04 22:13:55 +09:00
itchyny 5df471fa5b Disable Valgrind by default during testing (#3269)
Previously, the configure script automatically enables Valgrind during
testing when the valgrind command is found. However, running tests with
Valgrind is quite slow, so it is better to disable it by default, and
to enable it only when the user specifies the `--enable-valgrind` flag.
2025-03-04 22:12:25 +09:00
itchyny c4e1fb08fb Support CRLF line breaks in filters (#3274) 2025-03-04 22:11:40 +09:00
itchyny b7a1201b72 Preserve numerical precision on length/0 (#3275) 2025-03-04 22:09:33 +09:00
itchyny 17be97a8ad Define _BSD_SOURCE in builtin.c for OpenBSD support (#3278)
On OpenBSD, some prototypes are hidden behind `_BSD_SOURCE`.
Defining this variable fixes #3252, and also fixes #3276.
This can be seen as a regression of #2631.
2025-03-04 21:39:52 +09:00
itchyny 95ee663b28 improve performance of unique and unique_by (#3254)
Previously, `unique` and `unique_by` filters are implemented using
`group_by` and then `map(.[0])`. This commit re-implements in C, to
avoid unnecessary boxing of grouping, and improves the performance.
2025-03-04 19:59:41 +09:00
Owen Ou 8ba03f788f Replace jqplay.org with play.jqlang.org (#3265)
As discussed in https://github.com/jqlang/jq/discussions/3244, we are
moving jqplay to the jqlang GitHub organization. This updates all
references from jqplay.org to play.jqlang.org.
2025-02-18 08:22:05 +09:00
Marcin Serwin f3d4c1165d fix: copy the string returned by getenv (#3264) 2025-02-18 07:54:13 +09:00
itchyny 70e72abea3 Fix compiler warning type-limits in found_string (ref #2911) (#3263)
Whether `char` has a sign is implementation dependent, and `c >= 0` may
result in a compiler warning. We can use bitwise operator to check
whether the character is a control character, regardless of the sign.
2025-02-18 07:52:58 +09:00
Marcin Serwin 6d8e9f98ae fix: populate timezone data when formatting time (#3203)
The `jv2tm` function was zeroing fields of `struct tm` that were not
specified by the standard. However, depending on the libc this produced
incorrect timezone data when used together with formatting functions.
This change tries to fill the timezone data using either `mktime`,
`timegm`, or manually.

Apple's Libc implementation contains a bug which causes it to ignore
the offset data present in the `struct tm` in favor of the older heuristic
needed by legacy standards. This workaround temporarily sets the global
timezone so it gets picked up during formatting.
2025-02-17 21:41:01 +09:00
itchyny b86ff49f46 fix: jv_number_value should cache the double value of literal numbers (#3245)
The code of `jv_number_value` is intended to cache the double value of
literal numbers, but it does not work because it accepts the `jv` struct
by value. This patch fixes the behavior by checking if the double value
is `NaN`, which indicates the unconverted value. This patch improves the
performance of major use cases; e.g. `range(1000000)` runs 25% faster.
2025-02-16 22:08:36 +09:00
itchyny 64bd8ba374 fix: jv_dump_string_trunc should not break unicode characters (#3249) 2025-02-16 21:40:18 +09:00
itchyny fa6a2ff688 website: remove unused root path on building website (#3248)
We no longer use the `--root` option of `build_website.py` since we have
moved to jqlang.org (from jqlang.github.io/jq where the root was `/jq`).
We don't need the option on local development either since `http.server`
has the `-d` option to specify the directory to serve from.
2025-02-06 22:42:27 +09:00
Mattias Wadman e33578a53e Add opengraph meta tags (#3247)
Makes the site preview a bit nicer when sharing
2025-02-06 22:14:29 +09:00
itchyny 6ce3bdf382 fix: preserve numerical precision on unary negation (#3242) 2025-02-06 07:50:21 +09:00
itchyny 972772153f Move oniguruma and decNumber to vendor directory (#3234) 2025-02-06 07:49:56 +09:00
Mattias Wadman 2755664a8e Non-matched optional capture group should be null and offset -1 (#3238)
Fixes #3093
2025-02-04 19:18:58 +01:00
d0adcbfebb Fix --indent 0 implicitly enabling compact-output (#3232)
Now it will retain pretty-printing, just remove any indentation.

Co-authored-by: Andrew Marshall <andrew@johnandrewmarshall.com>
Co-authored-by: Gabriel Marin <marin.gabriel@protonmail.com>
2025-02-01 15:09:30 +09:00
orbea 07af9c11b7 build: fix insecure RUNPATH (#3212)
The -static-libtool-libs flag causes GNU libtool to add a rpath to the .libs
build directory, which is intended for internal use by the libtool
implementation and is not installed in the resulting package causing Gentoo to
print a QA notice. See Gentoo issue: https://bugs.gentoo.org/945698.
2025-02-01 15:07:54 +09:00
itchyny 0d1e371e63 website: switch to custom domain jqlang.org (#3243) 2025-02-01 11:54:32 +09:00
itchyny dea5e61cde docs: fix example links to jqplay.org (#3241) 2025-01-28 22:15:19 +09:00
itchyny ce54621904 docs: mention the behavior of scan using regex with capturing groups (#3240) 2025-01-28 11:41:17 +09:00
itchyny 39eea145b4 website: deploy website from GitHub Actions (#3237)
Deploying GitHub Pages from the gh-pages branch is a classic way.
We can use actions/deploy-pages action to deploy GitHub Pages.
2025-01-28 11:40:55 +09:00
Han Jiang da28628edd Fix redundant subexpression in Generators and iterators example in doc (#3239) 2025-01-27 19:45:27 +09:00
itchyny 31dac287cc tests: quote .[] in shtest which can break syntax highlight (#3235) 2025-01-26 08:08:31 +09:00
Eloy Coto 562ffec869 refactor: move bsearch function to C-code (#2945)
This commit fixes issue #527 and move the bsearch function to a native
C-code. This change improves the performance of this function.
2025-01-25 22:09:43 +09:00
Michael Färber 18bd8374c1 Escape some code parts in manual. (#3184) 2025-01-25 21:55:06 +09:00
Dag-Erling Smørgrav d8463c2549 Move closer to the standard autotools idiom. (#3187)
* Create `src/config.h` instead of passing everything on the compiler
  command line.

* To reduce the magnitude of this change, add `--include src/config.h`
  to CFLAGS instead of adding `#include "src/config.h"` at the top of
  each source file.  Not all compilers support this, but I don't think
  we care about anything other than gcc and clang at this point.

* Rather than generate `src/config_opts.inc`, emit `JQ_CONFIG` directly
  into `src/config.h`.

* Rather than generate `src/version.h`, define `JQ_VERSION` as an alias
  for the standard `PACKAGE_VERSION`.
2025-01-25 17:10:05 +09:00
itchyny 71ed7b3412 tests: refactor constant folding tests (#3233) 2025-01-25 13:58:47 +09:00
dependabot[bot] 588ff1874c build(deps): bump jinja2 from 3.1.4 to 3.1.5 in /docs (#3226)
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-29 21:54:10 +09:00
lectrical bcbf2b4616 Generate provenance attestations for release artifacts and docker image (#3225)
Adding https://github.com/actions/attest-build-provenance to the ci builds so
that the release assets and docker image for the next release tag generate
signed build provenance attestations for workflow artifacts.
2024-12-29 21:53:16 +09:00
Emanuele Torre 8bcdc9304a jq_next: simplify CALL_BUILTIN implementation 2024-12-01 11:49:44 +01:00
Emanuele Torre 0b82b3841b builtin.c: typecheck builtin cfunctions in function_list
In C23 (default C standard used by GCC 15),  jv (*fptr)();  has become
equivalent to  jv (*fptr)(void);  so we can no longer assign builtin
implemenations directly to the fptr member of cfunctions without
generating a compile error.

Since there does not seem to be any straight-forward way to tell
autoconf to force the compiler to use C99 short of explicitly adding
-std=c99 to CFLAGS, it is probably a cleaner solution to just make the
code C23 compatible.

A possible solution could have been to just redeclare  cfunction.fptr
as void*, but then the functions' return type would not have been type
checked (e.g. if you tried to add a {printf, "printf", 2}, where printf
is a function that does not return jv, the compiler wouldn't have
complained.)
We were already not typechecking the arguments of the functions, so e.g.
  {binop_plus, "_plus", 3},  /* instead of {f_plus, "_plus, 3},       */
  {f_setpath, "setpath", 4}, /* instead of {f_setpath, "setpath", 3}, */
compile without errors despite not having the correct prototype.

So I thought of instead improving the situation by redefining
cfunction.fptr as a union of function pointers with the prototypes that
the jq bytecode interpreter can call, and use a macro to add the builtin
functions to function_list using to the arity argument to assign the
implementation function to the appropriate union member.

Now the code won't compile if the wrong arity, or an arity not supported
by the bytecode interpreter (>5 = 1input+4arguments), or a prototype not
jallable by the bytecode interpreter (e.g. binop_plus that doesn't
expect a  jq_state*  argument).

Also, the code now compiles with gcc -std=c23.

Fixes #3206
2024-12-01 11:49:44 +01:00
itchyny 96e8d893c1 fix: reduce/foreach state variable should not be reset each iteration (#3205)
When the UPDATE query in a reduce or foreach syntax does not emit
a value, it should simply skip updating the state variable. But
currently it resets the state variable to null.
2024-11-21 08:12:18 +09:00
Mattias Wadman 8619f8a8ac Use codepoint index for indices/1, index/ 1 and rindex/1 (#3065)
Previsouly byte index was used.

Fixes #1430 #1624 #3064
2024-11-17 10:22:05 +01:00
itchyny a7b22539a4 fix: make last(empty) yield no output values (#3179) 2024-11-13 20:35:50 +09:00
Dag-Erling Smørgrav 3c5707f7fb Improve reliability of NO_COLOR tests. (#3188)
* Improve reliability of NO_COLOR tests.

Use `env` to ensure that `NO_COLOR` is set to the desired value
regardless of any initialization that may occur when `script`
forks a shell to run jq in.

Note that `env -u` is not portable, so there is no good solution
for the first test case.

* Always use /bin/sh, not the user's login shell.
2024-11-13 20:35:22 +09:00
Thalia Archibald 32a304b912 Clarify -f argument parsing (#3199) 2024-11-09 15:48:24 +01:00
Thalia Archibald eb9bdca296 Remove outdated FIXME
This comment predates the addition of $ARGS in jq 1.6, so there was no
way to access named arguments with an invalid identifier. Rather than
forbid such names, update the manual to clarify.
2024-11-08 19:07:55 +01:00
Thalia Archibald 7cac5e80ec Remove dead flag 2024-11-08 19:07:55 +01:00
Thalia Archibald 7a1fd72d2d Fix missing program from file
When jq is not supplied with a program, it usually exits with an error
and usage text, except for when jq is not connected to a TTY (i.e., not
interactive), in which case a default program of `.` is used. Combined
with `-f`, it then tries to read `.` as the filename.

    $ jq
    jq - commandline JSON processor [version 1.7.1]
    …
    $ jq -f
    jq - commandline JSON processor [version 1.7.1]
    …
    $ jq | cat
    ^C
    $ jq -f | cat
    jq: Could not open .: It's a directory
2024-11-08 19:07:55 +01:00
Thalia Archibald 0558e77e8c Add --library-path long option for -L
-L is the only option without a long form.
2024-11-08 19:07:55 +01:00
Thalia Archibald ff4acba769 Parse short options in order given
Fixes:
* Short options cannot be repeated in the same group:
  e.g., `-nn` fails, but `--null-input --null-input` works
* Short options are processed in an arbitrary fixed order, not the order
  given by the user: e.g., `-hV`, `-Vh`, `-h -V`, and `--help --version`
  are processed as `-h`, but `-V -h` and `--version --help` are
  processed as `-V`
* `-L` cannot be a part of a short option group (as the last one):
  e.g., `-nLlib` and `-nL lib` fail
2024-11-08 19:07:55 +01:00
Matt Meyers 562d5c5222 Return error for string literal beginning with single quote (#2964)
In order for a string literal to be valid in JSON, the value must be
surrounded by double quotes.
2024-10-06 08:52:56 +09:00
itchyny 1bebd23aad add skip/2 as the counterpart to limit/2 (#3181)
I also changed the behavior of limit/2 with negative count to emit an error, like nth/2 does.
Also, I redefined nth/2 using skip/2 to minimize the impact of growth of builtin filters.
2024-10-06 08:25:38 +09:00
Nathan Baulch 860af44fee Fix typos (#3173) 2024-09-13 18:30:49 +09:00
Chris LaRose 37f4cd2648 Fix docs for strptime(fmt) (#3164) 2024-08-27 10:59:43 +09:00
Kirk McKelvey 6322b99252 fix: find and source ~/.jq file on windows (fixes #3104) (#3114) 2024-08-24 08:44:08 +09:00
Emanuele Torre da2a0b970c mktime/0: remove unnecessary length>=6 input requirement (#3162)
This check was redundant and useless since jv2tm() used to require 8
elements, and errored anyway if not enough elements were provided.
After commit bc96146, this check also prevents mktime/0 from accepting
now supported inputs with less than 8 elements.

Ref: https://github.com/jqlang/jq/pull/3070#issuecomment-2299902072

Reported-by: itchyny <itchyny@cybozu.co.jp>
2024-08-22 08:17:54 +09:00
fletcher gornick 0e0cdd552e feat: uri decode function (#3161) 2024-08-22 08:07:24 +09:00
myaaaaaaaaa 0b5ae30f19 Implement add/1 (#3144) 2024-08-20 21:02:24 +09:00
Emanuele Torre 137018d2ae jv.h: define empty JV_{,V}PRINTF_LIKE macros if __GNUC__ is not defined
Fixes #3159

Reported-by: Hsiang-Ying Fu
2024-08-13 12:20:02 +02:00
Mattias Wadman c1d885b024 website: Make latest release (1.7) be default manual (#3130)
Fixes issue with confusion about features that has not been
released yet.

Move deveopment manual.yml to dev/manual.yml
Symlink manual.yml to v1.7/manual.yml
Refactor to share history header with links to other manual versions.
Change man.test and man page generation to use dev/manual.yml

Related to #3078 #3127
2024-07-12 17:43:02 +02:00
riastradh 2ee20ca604 Avoid ctype.h abuse: cast char to unsigned char first.
fix #3151
2024-07-11 23:17:06 +02:00
dependabot[bot] e2ffb5360a build(deps): bump zipp from 3.16.2 to 3.19.1 in /docs
Bumps [zipp](https://github.com/jaraco/zipp) from 3.16.2 to 3.19.1.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.16.2...v3.19.1)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-11 09:18:50 +02:00
dependabot[bot] ba741e5968 build(deps): bump docker/build-push-action from 5 to 6 (#3143)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-25 08:30:43 +09:00
Samar Sunkaria 7be6870751 Remove multiple calls to free when successively calling jq_reset. (#3134)
`jq_reset` calls `jv_free` on the `exit_code` and the `error_message` stored on the jq state.
However, it doesn't replace the actual instance of those members. This means that subsequent
calls to `jq_reset` will call `jv_free` again on those members, which in turn may call `free`
on the same pointer multiple times. Freeing the same pointer multiple times is undefined
behavior and can cause heap corruption, which is how I spotted this issue.

In practice, this issue only occurs when using a program that may `halt_error`, because that
is when the `exit_code` and `error_message` are set to values other than `jv_invalid`.
Subsequent attempts to call `jq_start` (which calls `jq_reset` internally) after hitting a
`halt_error` can cause you to run into this issue.

The changes simply reset the `exit_code` and the `error_message` to `jv_invalid` (the initial
value set in `jq_init`) after they are freed.
2024-06-05 13:19:08 +09:00
Christoph Anton Mitterer 5208a4425f fix option parsing of --binary on non-Windows platforms (#3131)
`-b`/`--binary` should be accepted on all platforms so that they can be used in
code that is meant to be portable.

Signed-off-by: Christoph Anton Mitterer <mail@christoph.anton.mitterer.name>
2024-05-30 08:21:10 +09:00
J. B. Rainsberger 7cd23f1f2f Improve formatting of the build instructions.
Line up the comments, because reasons. :)
2024-05-21 10:35:37 -05:00
J. B. Rainsberger 4842146e1b Add "make clean" to build instructions
When I tried to build a new version in the same working directory I'd used to build a previous version, I saw build errors. After a few attempts, I remembered that "make clean" might get past the problem. It seems like a nice thing to suggest to everyone who might fall into the same trap.
2024-05-21 10:35:37 -05:00
Nicolas Williams 6d02d53f51 Make tests pass when --disable-decnum 2024-05-15 12:48:00 -05:00
dependabot[bot] c1276169d6 build(deps): bump jinja2 from 3.1.3 to 3.1.4 in /docs
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 01:56:22 +02:00
sheepsterandSheepster ed8f7154f4 doc(readme): Fix docker run with mounted volume command (#3105)
Co-authored-by: Sheepster <sheepstert>
2024-05-01 17:56:48 +02:00
Emanuele Torre 9afc450930 COPYING: adding missing line from decNumber's licence
Fixes #3079

Also clarify what files the Kungliga Tekniska Högskolan copyright notice
applies to.
2024-05-01 16:41:44 +02:00
sheepsteranditchyny d875ff5c7a doc(readme): Add docker usage doc (#3103)
* doc(readme): Add docker usage doc

* fix heading size

Co-authored-by: itchyny <itchyny@cybozu.co.jp>
2024-05-01 06:07:10 +02:00
goodactive 6ce6e7c713 chore: fix some typos in comments (#3096)
Signed-off-by: goodactive <goodactive@qq.com>
2024-04-29 21:03:46 +02:00
Andy Lester e4d0b12d7d A couple of teeny tweaks (#3091)
* Don't get HOMEDRIVE unless needed

* Use put_char instead of put_str
2024-04-23 16:10:42 +09:00
Fabian Dellwing 6eff31a204 Add strptime fallback not only for Windows 2024-04-18 01:38:29 +02:00
maflcko 6408338e93 Update jq_fuzz_load_file.c: Add missing include unistd.h (#3085) 2024-03-29 10:13:25 +01:00
Emanuele Torre 5bbd02f581 jv_setpath: fix leak when indexing an array with an array
arrays[arrays] is a special case of "INDEX" that actually returns an
array containing the indices in which the array that is being indexed
contains the start of the key array.

So array keys, for array values, are a kind of key that can be "got",
but not "set". jv_setpath() was not freeing the value it "got" from
indexing that key, in case the following "set" on that key failed,
resulting in a leak.

    $ ./jq -n '[] | setpath([[1]]; 1)'
    jq: error (at <unknown>): Cannot update field at array index of array

    =================================================================
    ==953483==ERROR: LeakSanitizer: detected memory leaks

    Direct leak of 272 byte(s) in 1 object(s) allocated from:
        #0 0x725f4d4e1359 in __interceptor_malloc /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_malloc_linux.cpp:69
        #1 0x5ec17b1a7438 in jv_mem_alloc src/jv_alloc.c:141

    SUMMARY: AddressSanitizer: 272 byte(s) leaked in 1 allocation(s).

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66061
2024-03-28 18:10:38 +01:00
Mattias Wadman afe0afaf06 ci: Remove unnecessary apt-get upgrade (#3082)
Causes update to irrelevant packages and added flakeyness

Fixes #3066
2024-03-28 14:01:03 +01:00
Emanuele Torre ce2638af40 jv_aux.c: replace jv_array_foreach with regular loop in jv_dels()
The code was only conditionally using the value
2024-03-28 12:12:39 +01:00
Emanuele Torre ea78b5a030 jv_array_indexes: remove a bunch of unnecessary copies/gets 2024-03-28 12:12:39 +01:00
Emanuele Torre 22a03e9e06 @base64d: fix unhandled overflow
$ ./jq-before -n '238609295*"|||"|@base64d|"."'
    src/builtin.c:718:29: runtime error: signed integer overflow: 715827885 * 3 cannot be represented in type 'int'
    jq: error: cannot allocate memory
    Aborted (core dumped)

    $ ./jq-after -n '238609295*"|||"|@base64d|"."'
    jq: error (at <unknown>): string ("||||||||||...) is not valid base64 data

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=67640
2024-03-27 10:16:15 +01:00
Mattias Wadman be437ec049 Add trim/0, ltrim/0 and rtrim/0 that trims leading and trailing whitespace (#3056) 2024-03-20 11:04:17 +01:00
itchyny 81f4f883ac Remove non-standard pow10 filter in favor of exp10 (#3059)
The pow10 function was a glibc extension removed in 2.27. Use exp10 filter instead.
2024-03-20 18:23:08 +09:00
Emanuele Torre b6da71bf68 declare static arrays const where possible
Some static arrays that could be readonly memory were declared mutable.
2024-03-20 00:22:54 +01:00
Emanuele Torre bc96146825 builtin.c: jv2tm: fix UB and accept array inputs with not all the values
Now, time functions accept array inputs even if they don't have all the
elements, 0 will be assumed if a value is not present.

Also, jv2tm now properly clamps large number values to a signed 32-bit
integer and rejects nan.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65885
2024-03-19 02:01:53 +01:00
Colin Leroy-Mira d69733154a Fix valgrind warning on aarch64/glibc 2.31
tests/mantest were failing on Raspberry Pi OS 11:

==10205== Conditional jump or move depends on uninitialised value(s)
==10205==    at 0x48806F8: checkfail (jq_test.c:58)
==10205==    by 0x48806F8: run_jq_tests (jq_test.c:99)
==10205==    by 0x4880FCB: jq_testsuite (jq_test.c:39)
==10205==    by 0x10B37F: main (main.c:576)
==10205==
==10205== Conditional jump or move depends on uninitialised value(s)
==10205==    at 0x4880714: checkfail (jq_test.c:58)
==10205==    by 0x4880714: run_jq_tests (jq_test.c:99)
==10205==    by 0x4880FCB: jq_testsuite (jq_test.c:39)
==10205==    by 0x10B37F: main (main.c:576)
2024-03-18 19:42:22 +01:00
Emanuele Torre 10ea3c7d9f util.c: update strptime to revision 1.66 2024-03-18 19:10:21 +01:00
Emanuele Torre d777b6570c util.c: fix _WIN32 port of strptime (#3071)
In windows, time_t is a signed 32-bit integer type, so TIME_MAX needs to
be declared as INT32_MAX instead of INT64_MAX.

Also bump NetBSD's strptime to revision 1.65 from 1.63 to fix undefined
behaviour (signed integer overflow) bugs.

Related NetBSD problem report:
https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=58041

Noticed thanks to a compiler warning in the windows build CI.

I declared the d variable as  time_t  instead of as  unsigned  to ensure
that the signedness/size of  TIME_MAX-d  in the  sse > TIME_MAX-d check
is always correct, and to prevent -Wsign-compare warnings from
triggering in the windows build.
2024-03-18 17:22:59 +01:00
Emanuele Torre 1411ce63d5 strftime/1: fix validation of non-string argument with number input
There was a incorrect else, that caused jq to not ensure that the
argument to strftime/1 is a string when the input is a number; this ends
up calling jv_string_value on a non-string value, which does not work,
and causes an assert failure.

Also fix same bug in strflocaltime/1.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=67403
2024-03-15 14:30:23 +01:00
Emanuele Torre 6f67bae60b EACH: fix leak when an error is triggered by non-last element of object
Object keys are strings, so they need to be freed.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66070
2024-03-15 14:30:03 +01:00
wellweek c95b34ff82 remove repetitive words
Signed-off-by: wellweek <xiezitai@outlook.com>
2024-03-08 10:43:29 +01:00
itchyny ce0e788ce2 improve tonumber/0 performance by parsing input as number literal
Previously, the tonumber/0 filter parses the input as JSON values, but
this is less-performant on large non-number strings. Parsing the input
string as number literal fixes the performance issue. Also, this fix
changes the filter to reject numbers with white spaces.
2024-03-01 16:33:17 +01:00
Bhargava Mummadireddy 913b26469f docs: Update chocolatey install command in default.yml (#3042) 2024-02-13 16:50:58 +01:00
Emanuele Torre fc9ecd71b3 tests: run tests in C locale
Fixes #3038
2024-02-10 18:23:50 +01:00
Ulrich Eckhardt 623d7a8bd6 src/jv_dtoa.c: Fix compiler error 2024-02-08 19:27:48 +01:00
Ulrich Eckhardt 6980cc9713 src/builtin.c: Add missing semicolon 2024-02-08 19:27:48 +01:00
J. B. RainsbergerandEmanuele Torre 92d35378ff Fix typo in documentation for map_values (#3035)
* Fix typo in documentation for map_values

"map_value(f)" -> "map_values(f)"

* map_value => map_values also in the devolpment manual

---------

Co-authored-by: Emanuele Torre <torreemanuele6@gmail.com>
2024-02-08 13:52:50 +00:00
Thalia Archibald 54cc15c127 Add missing string color case
Colors have a color separate from object keys, so were not tested.
2024-02-08 00:11:54 -06:00
Thalia Archibald 48df9bce0c Clear formatting immediately after colon 2024-02-08 00:11:54 -06:00
Thalia Archibald 76853f6046 Fix tests and test indented printing 2024-02-08 00:11:54 -06:00
Thalia Archibald 3c37522aaa Consistently reset color formatting in jv_dump_term
Before, arrays would not reset colors after `[` and `,`, but objects
would; it would reset colors twice before `]` and `}`; and some cases of
indentation would have colors applied. Now, colors are reset immediately
after any token that is colored, before any indentation. This makes the
formatting consistent, for the benefit of custom `JQ_COLORS`.
2024-02-08 00:11:54 -06:00
Tomas Halman 8a9a74dc12 License: Improve license statement.
The README mentions only the MIT license but in fact part of `jq`
is under ICU license and the documentation is under CC.

Also jq.spec claimed that it is licensed under BSD.
2024-02-06 14:51:46 +01:00
Emanuele Torre 13e02ba348 docs: rename example jq utility to total
Apparently sum(1) is a BSD and GNU coreutil used to compute the
"16-bit BSD checksum" of a file.
2024-01-30 12:23:33 -06:00
Emanuele Torre bd3c828f98 libm.h+builtin.c: add and use LIBM_DA and LIBM_DA_NO macros
For functions that from one double return an array with two numbers.
2024-01-26 16:16:25 -06:00
Emanuele Torre 605836b263 builtin.c: fix build with -Woverlength-strings
C99 only allows string literals long at most 4095 characters.
jq_builtins was a lot longer than that.

I rewrote all the optional libm error stubs in C so the value of
jq_builtins is not build dependent.

I replaced the command that generates builtin.inc with a POSIX compliant
od|sed command that encodes builtin.jq as a comma delimited list of
octal numbers (that can be embedded in C using a {} literal).

I also added -Woverlength-strings to AM_CFLAGS to verify that the
problem is fixed.

Fixes #1481
2024-01-26 16:16:25 -06:00
Emanuele Torre 7bdc9a7a63 Makefile.am: fix lines indented with tabs instead of spaces 2024-01-26 16:13:35 -06:00
Jonathan Chan Kwan Yin 1daabc67ed typo contruct->construct (#3017) 2024-01-25 22:21:41 +01:00
Mattias Wadman c95f6ce700 Fix "in the a search" typo (#3015)
Fixes #3014
2024-01-24 23:34:41 +01:00
Emanuele Torre 1f1e619f4e builtins: make ltrimstr and rtrimstr error for non-string inputs
Previously, ltrimstr/rtrimstr would just let the input pass through for
non-string inputs or arguments.

That was happening because, they were leaking the errors returned by
startswith/endswith treating them as if they were jv_false().
The leak was resolved by #2977 for 1.7.1

This patch rewrites ltrimstr and rtrimstr in jq, and makes them not
ignore startswith and endswith errors anymore.
2024-01-16 16:57:37 -06:00
Emanuele Torre 71e7bcdfc1 Revert "lexer: temporarily revert #\ patch; keep CR in comment bug fix"
This reverts commit 5d95791a67.
2024-01-16 16:08:03 -06:00
George Hopkins f954e82b14 Provide strptime implementation on all systems 2024-01-16 16:01:27 -06:00
dependabot[bot] f51e841fbc Bump jinja2 from 3.1.2 to 3.1.3 in /docs (#3009)
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.2...3.1.3)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-13 11:24:16 +09:00
dependabot[bot]anditchyny 2381d15d3e Bump the official-actions group with 2 updates (#2998)
* Bump the official-actions group with 2 updates

Bumps the official-actions group with 2 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact) and [actions/download-artifact](https://github.com/actions/download-artifact).


Updates `actions/upload-artifact` from 3 to 4
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

Updates `actions/download-artifact` from 3 to 4
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: official-actions
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: official-actions
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix CI workflow for updating artifact actions to v4

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: itchyny <itchyny@cybozu.co.jp>
2024-01-09 09:33:26 +09:00
Mattias Wadman 701c880805 Add jq 1.7.1 news item (#3004) 2023-12-26 15:22:39 +09:00
wllm-rbnt 0b922725b1 Fix typo (#3002) 2023-12-24 11:22:20 +01:00
Mattias Wadman e011f003b6 Add jq 1.7.1 to webpage (#3003)
Make it the default download
2023-12-24 11:17:21 +01:00
itchyny 56828b6d04 Always build Docker image on CI, group Dependabot PRs for official actions (#2997)
* Always build docker image on CI

* Revert "Bump actions/download-artifact from 3 to 4"

This reverts commit 9e2695e117.

* Group Dependabot PRs for official actions
2023-12-19 17:54:53 +09:00
dependabot[bot] 9e2695e117 Bump actions/download-artifact from 3 to 4
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 15:18:47 +01:00
github-actions[bot]andgithub-actions[bot] 95c50a2d0d Update signatures of 1.7.1
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-12-13 20:52:03 +01:00
Emanuele Torre 71c2ab509a Merge pull request from GHSA-686w-5m7m-54vc
decNumberToString calls for a buffer that can hold a string of digits+14
characters, not a buffer of size digits+14.
We need to allocate an extra byte for the NUL byte.

-10E-1000010001, for example, will be stringified as -1.0E-1000010000
and decNumberToString will currently write an extra NUL byte after the
allocated buffer in the heap.

Originally reported by @SEU-SSL on GitHub.

Ref: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64574

Fixes GHSA-686w-5m7m-54vc
2023-12-13 20:20:22 +01:00
Emanuele Torre c9a5156521 Merge pull request from GHSA-7hmr-442f-qc8j
The unit allocated for decNumberCompare was accidentally removed by
commit 680baeffeb (PR #2804)

This caused a stack overflow when comparing a nan with a payload of 1000
or more.

This bug was found by OSS-fuzz.
Ref: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64771
Fixes GHSA-7hmr-442f-qc8j

It also fixes 1e999999999 > 1e-1147483646   triggering UBSAN errors
Fixes #2968
2023-12-13 20:17:17 +01:00
Emanuele Torre c5fd64ba97 jv_parse: let decNumberFromString/strtod parse complex nans as a NaN
Before this patch (when using decNumber), "Nan123" was parsed as a NaN,
only if the first n was uppercase.
2023-12-13 20:14:31 +01:00
Emanuele Torre dcf9a8e580 NEWS.md: fix markdown syntax; mention more bug fixs; list cves (#2987) 2023-12-13 18:39:24 +01:00
Mattias Wadman c3b14967d3 Update NEWS.md with changes since 1.7 (#2948) 2023-12-13 15:38:59 +00:00
Emanuele Torre 5d95791a67 lexer: temporarily revert #\ patch; keep CR in comment bug fix
This commit temporarily reverts the commit that allows #\ "tcl-style"
comments everywhere and documents them, for the 1.7.1 patch release
cca1f7d18f.

\r is removed from the list of characters not allowed in a comment to
preserve that bugfix.
2023-12-13 16:38:18 +01:00
Emanuele Torre 511d50b15b ltrimstr/1+rtrimstr/1: don't leak on invalid input or arguments
ltrimstr/rtrimstr was ignoring and leaking the error returned by
f_startswith()/f_endswith().

This also means that they just let the input pass through for non-string
inputs or arguments.

Only fix the leak for now; in the next release, #2969 will make them
rethrow the error returned by startswith/endswith.

Ref: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64946
2023-12-13 15:13:46 +01:00
Emanuele Torre 7298972551 Makefile.am: don't use -lshlwapi to build jq on WIN32
It does not need it, only libjq needs this.
2023-12-13 13:08:57 +01:00
Emanuele Torre 19453a60cf ci.yml: use sysctl -n hw.logicalcpu instead of nproc on macos
The "macos (arm64)" runner on github does not have nproc.

/Users/runner/work/_temp/f44f0d9f-19eb-4a23-860e-26533d7efdfa.sh: line 10: nproc: command not found
2023-12-11 22:02:42 +01:00
Emanuele Torre 527c5abab1 jv_mem_calloc(): always call with (nmemb, size)
It does not matter much since they most likely just get multiplied
together, but some compilers would complain about this if these were
calls to calloc.
2023-12-11 20:47:32 +01:00
Emanuele Torre c2db51eeb3 shtest+configure: remove uses of non-portable/non-standard commands
Replace deprecated test(1) parentheses and -a logical operator with two
tests command.

Replace deprecated  tail -1  with  tail -n1.

Replace non-standard egrep(1) command with  grep -E  ; this also
prevents obsolescence warnings on GNU systems.
2023-12-11 20:46:54 +01:00
Emanuele Torre 507eb8283c shtest: fix out-of-source tests
The locale test was using ./jq intead of $JQ.

I also removed the use of obsolete egrep instead of grep -E that
triggers warnings on GNU systems, and the use of deprecated head -1
instead of head -n1.

Also removed the unnecessary hiding of strptime/1 errors with
? // false.
2023-12-11 20:45:14 +01:00
Jesper Rønn-Jensen 2ccab044fe chore: Improve readability (for Alternative operator '//')
The description of the Alternative operator `//` was hard for me to grasp in its wording.

I suggest dividing the looong sentence into two parts. Since it is actually an alternative formulation, the sentence can be divided into the first formulation, and the alternative formulation.
2023-12-11 11:38:54 +00:00
Emanuele Torre 7e54d9646e jq.test: fix setpath PR number
It was #2970, not 2967.
2023-12-11 09:58:09 +01:00
dependabot[bot] 22f81401f8 Bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 07:54:23 +01:00
Emanuele Torre 6b69ffe769 jv_setpath()+setpath/2: don't leak the input after an invalid get
Ref: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64906
2023-12-10 19:40:29 +01:00
Emanuele Torre 80bc768c5d jq_fuzz_fixed: fix test cases that use string interpolation
"\(" is implementation-defined in C++, and both clang and gcc treat it
as equivalent to "(", not "\\(".
This patch replaces "\(" with "\\(" so that tests with string
interpolation actually use string interpolation.
2023-12-10 15:22:03 +01:00
David Korczynski 5029328d35 tests: add new fuzzer
Signed-off-by: David Korczynski <david@adalogics.com>
2023-12-07 12:57:54 +01:00
DavidKorczynski 20a403e97e jq_fuzz_execute.cpp: fix false assert
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64632 by following the suggestion here: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64632#c2 -- the issue is fixed when this attribute is set.

I did not add any of the other suggestions in the comment: we haven't run into these issues in the fuzzer so far.
2023-12-03 17:54:25 +01:00
DavidKorczynski 693a7261e5 jq_fuzz_execute: fix memory leak
Signed-off-by: David Korczynski <david@adalogics.com>
2023-12-03 03:53:49 +01:00
David Korczynski bfb7fd570f jq_fuzz_execute: cleanup un-needed extern
Signed-off-by: David Korczynski <david@adalogics.com>
2023-11-30 14:40:36 +01:00
David Korczynski 252ab244ce Add fuzzer targeting jq_next
Signed-off-by: David Korczynski <david@adalogics.com>
2023-11-30 14:40:36 +01:00
David Korczynski 13353515bd jq_fuzz_compile: dump disassembly
Signed-off-by: David Korczynski <david@adalogics.com>
2023-11-30 14:40:36 +01:00
Mattias Wadman 98a206964d Convert decnum to binary64 (double) instead of decimal64
This is what the JSON spec suggests and will also be less confusing compared to other jq implementations and langauges.

Related to #2939
2023-11-29 09:36:33 +01:00
Emanuele Torre 1617091033 website: use https URLs instead of http URLs in download page
Also add markdown formatting for decNumber URL so it gets rendered as a
link in the html page.
2023-11-29 09:35:36 +01:00
itchyny d14393f552 Keep releasing executables with legacy names 2023-11-28 22:51:20 +01:00
Tyler Rockwood 6b82dd3c47 libjq: extern C for C++
If using libjq from C++ it would be nice to not need to do this at the
import site, so just extern "C" to the public headers for libjq

Signed-off-by: Tyler Rockwood <rockwood@redpanda.com>
2023-11-28 22:50:25 +01:00
Emanuele Torre 460a5c12b4 jq_fuzz_parse_extended.c: don't jv_free() twice
jv_dump() frees its argument.

I missed this problem before merging #2952, whoops! =)

fixup from eb3b5654bb
2023-11-28 20:51:07 +01:00
David Korczynski 4570c23720 jv_parse: refactor jv_parse_sized
Signed-off-by: David Korczynski <david@adalogics.com>
2023-11-28 20:36:59 +01:00
David Korczynski eb3b5654bb test: add jv_dump to extended fuzzer
Signed-off-by: David Korczynski <david@adalogics.com>
2023-11-28 20:36:59 +01:00
David Korczynski 44300e4310 Extend fuzzing set up
Adds a parse function ins `jv_parse.c` that enables parsing using custom
flags for the parser. This is then used by two fuzzers added as well.

This is to make sure fuzzing hits various code parts currently not
fuzzed, e.g. `stream_token`:
https://storage.googleapis.com/oss-fuzz-coverage/jq/reports/20231125/linux/src/jq/src/jv_parse.c.html#L241

Signed-off-by: David Korczynski <david@adalogics.com>
2023-11-28 20:36:59 +01:00
Andreas Heiduk 88f01a741c simplify paths/0 and paths/1
`recurse/0` already handles traversing objects and arrays, so it is more
consistent to use that.
For `paths/1` it is easier to use the actual value returned by
`recurse` instead of querying that value with `getpath/1` afterwards.
2023-11-16 21:14:58 +01:00
Emanuele Torre 6c035133e8 README.md: tosed => to sed (#2944) 2023-11-06 23:59:22 +09:00
Emanuele Torre cca1f7d18f Comment bug fixes, and fully support Tcl-style multiline comments
* bugfix: comments were incorrectly being terminated by CR; for example
    jq -n $'1 #foo\r'
  fails to compile because the CR character terminates the comment, and
  CR is not a valid character in jq syntax.

* improvement: comments fully support Tcl-style line continuation.
  Previously this was only "supported" in `-f' scripts, whose first line
  starts with "#!", and second line starts with # and ends with \, only
  for the comment on the second line, only for one extra line.

* man: document comment syntax, which was previously undocumented.

* tests: add regression tests for the bugfix, and some tests for line
  continuation in comments.
2023-11-03 15:52:02 -05:00
Emanuele Torre f4929f3c19 src/builtin.c: remove unnecessary jv_copy-s in type_error/type_error2
Also fix doubled semicolon   jv ret;;   =>   jv ret;
2023-10-30 22:12:27 -05:00
Emanuele Torre d5590f90da jvp_object_contains: remove unnecessary jv_copy 2023-10-30 22:12:27 -05:00
Emanuele Torre e85e358233 Fix possible uninitialised value dereference if jq_init() fails
If jq_init() fails, goto out would try to free input_state which is
uninitialised. I initialised input_state to NULL to fix the problem.

Ref: https://github.com/jqlang/jq/pull/2934#discussion_r1367795641

Reported-By: Klemens Nanni <kn@openbsd.org>
2023-10-22 10:51:24 -05:00
Klemens Nanni 7ab117a483 Defer heap variable initialisation after pledge
Otherwise `AGRS` and `program_arguments` remain allocated/unfreed in the
early (extremely unlikely) pledge(2) failure case.

Move their allocation before jq_init(), the first case of jumping to
`out` where they are cleaned up, where it also seems to logically fit
better than above between function entry, locale setup and OpenBSD
specific pledge.
2023-10-21 23:30:36 -05:00
Klemens Nanni 77dcaf3fdc Remove unused mkstemp()
b82c231 "Remove -i option (#704)" removed its last usage in 2015.

Spotted while looking for code could potentially write/create/modify files.
2023-10-21 23:30:36 -05:00
Klemens Nanni f1bfd0c518 Restrict systems operations on OpenBSD
Use pledge(2)[0] to limit jq(1) to reading files.
It does not change files and only writes to standard output/error.
It never deals with TTY, network, process management or other subsystems.

This is to reduce jq's attack surface and potential damage.

OpenBSD is carrying a local patch[1] in its official jq port/package
since 2016.  An improved version:

- drop no longer needed "getpw" promise
  f1c4947 "Avoid getpwuid for static linking" removed getpwuid(3) usage
- pledge before jq_init() to simplify the error path
- use perror(3) to print errno(2)

No behaviour change in tests or real world usage observed on
OpenBSD/amd64 7.4.

0: https://man.openbsd.org/pledge.2
1: https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/textproc/jq/patches/patch-main_c
2023-10-21 23:30:36 -05:00
Emanuele Torre 9de0e26ce6 Generate links in man page
Some [foo](bar) links were added to manual.yml without updating
build_manpage.py to make it generate roff for "a" tags.

Fixes #2930
2023-10-12 15:32:23 -05:00
Gaelan Steele c10cbbff34 Remove undefined behavior caught by LLVM 10 UBSAN. 2023-10-08 12:32:22 -05:00
Emanuele Torre 6b6feaffbb Revert "Revert "od -c => od -tc: od -c is an XSI extension..."
This reverts commit 0e70f7a57e.

There is no reason to revert this change.

In #2922, I only disagreed with the commit message suggesting that
  LC_CTYPE=C od -t c    is   equivalent to   od -c

The only documented differences are that -tc is required to be
influenced by -N and -j, while -c is not, and that -c is required to
only support a subset of the backslash sequences that -tc should
support.
2023-10-05 15:37:44 +02:00
Nicolas Williams 0e70f7a57e Revert "od -c => od -tc: od -c is an XSI extension equivalent to LC_CTYPE=C od -tc and not universally available"
This reverts commit 0bce9fb8ed.
2023-10-04 22:28:24 -05:00
наб 0bce9fb8ed od -c => od -tc: od -c is an XSI extension equivalent to LC_CTYPE=C od -tc and not universally available 2023-10-04 17:46:13 -05:00
Emanuele Torre 4ebd21e1eb Allow passing the inline jq script before --
jq previously only allowed passing the inline script before -- (as if
they were options) even though one would expect the inline script to be
a positional argument.

Since jq previously also refused to run with a usage error if the script
was passed after -- (It was not assuming  .  as script as it does when
no arguments are passed), and positional arguments are allowed before --
and even before other options, it should not be a breaking change to
change that weird behaviour, and allow the script to appear after --.

It also simplifies the option parsing code a bunch.

Fixes #2918
2023-10-04 00:00:46 -05:00
Thomas Bozeman th026106 7f547827e4 Simplify pick example
Old pick example included input array in command line, making `input` confusing
and redundant.
2023-10-03 22:48:12 +02:00
Emanuele Torre 6b5a18f036 Actually use number correctly casted from double to int as index
The code was using (int)jv_number_value(k) instead of (int)didx.

follow-up from 0e067ef936

Useless assignments to didx detected by clang-tidy.
2023-09-27 22:54:23 -05:00
Emanuele Torre 8206bc8fd2 main.c: Remove unused EXIT_STATUS_EXACT option
In process there is a suspicious  options |= EXIT_STATUS_EXACT  that
is run when the jq script is terminated by halt, or halt_error.

That line of code acutally does nothing because options is a local
argument variable, and is not passed as a pointer. It was probably meant
to be a   *options |= EXIT_STATUS_EXACT   with the options argument
passed as a int*.

In any case, we do not want to run the code in main() that was supposed
to run if EXIT_STATUS_EXACT is set (but didn't since it is never added
to options); as far as I can tell, we only want to run that code when
the --exit-status/-e option is passed.

So I removed EXIT_STATUS_EXACT completely, and the useless assignment,
instead of fixing it since it was not used for anything else.

Useless assignment detected by clang-tidy.
2023-09-27 21:52:23 -05:00
Emanuele Torre 623ace27e8 Remove a bunch of unused variables, and useless assignments
Detected by clang-tidy.
2023-09-27 21:50:44 -05:00
Emanuele Torre 2b709727a9 Remove unused nref accumulator in block_bind_library
detected as a warning compiling jq with clang.
2023-09-27 21:50:44 -05:00
itchyny 07149397d1 Reject U+001F in string literals (fix #2909) 2023-09-26 12:53:44 -05:00
itchyny e526df15fe Correct typo in README.md: compilation (#2912) 2023-09-26 19:49:07 +02:00
taoky 8f81668014 Fix the default colors to use 39, the default foreground color (#2904) 2023-09-22 09:18:41 +09:00
dependabot[bot] de1c10ca8a Bump docker/setup-qemu-action from 2 to 3 (#2900)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-18 18:20:43 +09:00
dependabot[bot] a5afeea0a6 Bump docker/setup-buildx-action from 2 to 3 (#2901)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-18 18:20:20 +09:00
dependabot[bot] b0b7614daf Bump actions/checkout from 1 to 4 (#2902)
Bumps [actions/checkout](https://github.com/actions/checkout) from 1 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v1...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-18 18:19:51 +09:00
Kamontat Chantrachirathumrong d3a356fa1c Fix checksum file spacing for shasum command (#2899) 2023-09-17 20:55:56 +09:00
dependabot[bot] 24e6e6ea39 Bump actions/upload-artifact from 2 to 3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 13:44:46 +02:00
dependabot[bot] fb493df018 Bump crazy-max/ghaction-import-gpg from 5 to 6
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 5 to 6.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v5...v6)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 13:43:44 +02:00
dependabot[bot] f3a46a62de Bump docker/metadata-action from 4 to 5
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4 to 5.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 13:42:32 +02:00
dependabot[bot] e69398ea0f Bump docker/build-push-action from 4 to 5
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 13:41:27 +02:00
dependabot[bot] dfd930f81a Bump docker/login-action from 2 to 3
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 13:40:33 +02:00
Yeikel 4c6f6dc231 Add dependabot (#2889) 2023-09-15 20:09:07 +09:00
itchyny 5ea1a4ab3b Disable core.autocrlf on Windows to prevent submodule diffs (fix #2886) (#2888) 2023-09-15 20:08:20 +09:00
Owen Ou 7a72f58d2e Standarize arch types to AMD64 & ARM64 from index page download dropdown (#2884)
Standarize arch types to AMD64 & ARM64 from index page download
dropdown. These are missed from https://github.com/jqlang/jq/pull/2879.
2023-09-07 11:55:14 -07:00
Owen Ouanditchyny 806475da29 Update webpage with 1.7 release (#2879)
* Update webpage with 1.7 release

Update webpage with 1.7 release

* Update docs/content/download/default.yml

Co-authored-by: itchyny <itchyny@cybozu.co.jp>

* Update docs/templates/index.html.j2

Co-authored-by: itchyny <itchyny@cybozu.co.jp>

* Update docs/content/download/default.yml

Co-authored-by: itchyny <itchyny@cybozu.co.jp>

* Don't mention 1.7rc signatures

* Add link to 1.7 manual

* binaries -> binary

* AMD 32-bit to i386

* Standarize arch types to AMD64, ARM64 & i386 in download page

---------

Co-authored-by: itchyny <itchyny@cybozu.co.jp>
2023-09-07 10:54:10 -07:00
github-actions[bot] 4b579ca31f Update signatures of 1.7 2023-09-06 17:53:36 -05:00
334 changed files with 24185 additions and 9122 deletions

No files matched your search

+1 -3
View File
@@ -1,9 +1,7 @@
.gitattributes export-ignore
.gitignore export-ignore
* text=auto eol=lf
# vendored files
src/decNumber/** linguist-vendored
vendor/** linguist-vendored
# generated files
src/lexer.[ch] linguist-generated=true
+15
View File
@@ -0,0 +1,15 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "docs/"
schedule:
interval: "monthly"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
groups:
official-actions:
patterns: ["actions/*"]
docker-actions:
patterns: ["docker/*"]
+84
View File
@@ -0,0 +1,84 @@
name: BSD
on:
push:
branches:
- master
tags:
- "jq-*"
pull_request:
jobs:
freebsd:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Clone repository
uses: actions/checkout@v7
with:
submodules: true
- name: Build and test
uses: vmactions/freebsd-vm@v1
with:
usesh: true
cache-after-prepare: true
prepare: |
pkg install -y autoconf automake libtool gmake git
run: |
set -e
# The VM runs as root over a checkout owned by another uid, so git
# rejects the repository and scripts/version -- which AC_INIT calls
# through m4_esyscmd_s -- exits 128, leaving JQ_VERSION undefined.
git config --global --add safe.directory "$PWD"
git config --global --add safe.directory "$PWD/vendor/oniguruma"
autoreconf -i
./configure --disable-docs --with-oniguruma=builtin --enable-static
gmake -j"$(sysctl -n hw.ncpu)"
gmake check VERBOSE=yes
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: test-logs-freebsd
retention-days: 7
path: |
test-suite.log
tests/*.log
netbsd:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Clone repository
uses: actions/checkout@v7
with:
submodules: true
- name: Build and test
uses: vmactions/netbsd-vm@v1
with:
usesh: true
cache-after-prepare: true
prepare: |
# -uu also updates installed dependencies that are too old, such
# as the image's pcre2 when git needs a newer build.
pkg_add -uu autoconf automake libtool gmake git
run: |
set -e
# The VM runs as root over a checkout owned by another uid, so git
# rejects the repository and scripts/version -- which AC_INIT calls
# through m4_esyscmd_s -- exits 128, leaving JQ_VERSION undefined.
git config --global --add safe.directory "$PWD"
git config --global --add safe.directory "$PWD/vendor/oniguruma"
autoreconf -i
./configure --disable-docs --with-oniguruma=builtin --enable-static
gmake -j"$(sysctl -n hw.ncpu)"
gmake check VERBOSE=yes
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: test-logs-netbsd
retention-days: 7
path: |
test-suite.log
tests/*.log
+92 -52
View File
@@ -37,6 +37,8 @@ jobs:
CC: aarch64-linux-gnu
- arch: armel
CC: arm-linux-gnueabi
# Ubuntu 26.04 has no crossbuild-essential-armel
packages: gcc-arm-linux-gnueabi libc6-dev-armel-cross
- arch: armhf
CC: arm-linux-gnueabihf
- arch: i386
@@ -65,7 +67,8 @@ jobs:
CC: riscv64-linux-gnu
- arch: s390x
CC: s390x-linux-gnu
runs-on: ubuntu-22.04
# Ubuntu 26.04 no longer ships the MIPS cross toolchains.
runs-on: ${{ startsWith(matrix.arch, 'mips') && 'ubuntu-24.04' || 'ubuntu-26.04' }}
env:
AR: ${{ matrix.CC }}-ar
CHOST: ${{ matrix.CC }}
@@ -75,21 +78,20 @@ jobs:
SUFFIX: linux-${{ matrix.arch }}
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
submodules: true
- name: Install packages
run: |
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y automake autoconf libtool crossbuild-essential-${{ matrix.arch }}
sudo apt-get install -y automake autoconf libtool \
${{ matrix.packages || format('crossbuild-essential-{0}', matrix.arch) }}
- name: Build
run: |
autoreconf -i
./configure \
--host=${{ matrix.CC }} \
--disable-docs \
--disable-valgrind \
--with-oniguruma=builtin \
--enable-static \
--enable-all-static \
@@ -105,7 +107,7 @@ jobs:
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: test-logs-${{ env.SUFFIX }}
retention-days: 7
@@ -113,9 +115,9 @@ jobs:
test-suite.log
tests/*.log
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: jq-linux
name: jq-${{ env.SUFFIX }}
path: jq-${{ env.SUFFIX }}
if-no-files-found: error
retention-days: 7
@@ -129,16 +131,16 @@ jobs:
- arm64
include:
- arch: amd64
target: x86_64-apple-darwin
target: x86_64-apple-macos14
- arch: arm64
target: arm64-apple-darwin
runs-on: macos-13
target: arm64-apple-macos14
runs-on: macos-15
env:
LDFLAGS: -dead_strip
SUFFIX: macos-${{ matrix.arch }}
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
submodules: true
- name: Install packages
@@ -148,31 +150,29 @@ jobs:
brew install autoconf automake libtool
- name: Set CC
run: |
echo "CC=clang -target ${{ matrix.target }}$(uname -r)" >> "$GITHUB_ENV"
echo "CC=clang -target ${{ matrix.target }}" >> "$GITHUB_ENV"
- name: Build
run: |
autoreconf -i
./configure \
--host="${{ matrix.target }}$(uname -r)" \
--host="${{ matrix.target }}" \
--disable-docs \
--disable-valgrind \
--with-oniguruma=builtin \
--disable-shared \
--enable-static \
--enable-all-static \
CFLAGS="-O2 -pthread -fstack-protector-all"
make -j"$(nproc)"
make -j"$(sysctl -n hw.logicalcpu)"
strip ./jq
file ./jq
cp ./jq jq-${{ env.SUFFIX }}
- name: Test
# Only run tests for amd64 matching the CI machine arch
if: ${{ matrix.arch == 'amd64' }}
run: |
make check VERBOSE=yes
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: test-logs-${{ env.SUFFIX }}
retention-days: 7
@@ -180,9 +180,9 @@ jobs:
test-suite.log
tests/*.log
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: jq-macos
name: jq-${{ env.SUFFIX }}
path: jq-${{ env.SUFFIX }}
if-no-files-found: error
retention-days: 7
@@ -194,12 +194,18 @@ jobs:
arch:
- amd64
- i386
- arm64
include:
- arch: amd64
msystem: UCRT64
os: windows-2022
- arch: i386
msystem: MINGW32
runs-on: windows-2022
os: windows-2022
- arch: arm64
msystem: CLANGARM64
os: windows-11-arm
runs-on: ${{ matrix.os }}
env:
LDFLAGS: -s
SUFFIX: windows-${{ matrix.arch }}
@@ -207,8 +213,11 @@ jobs:
run:
shell: msys2 {0}
steps:
- name: Prepare git config
run: git config --system core.autocrlf false
shell: bash
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
submodules: true
- uses: msys2/setup-msys2@v2
@@ -228,22 +237,21 @@ jobs:
autoreconf -i
./configure \
--disable-docs \
--disable-valgrind \
--with-oniguruma=builtin \
--disable-shared \
--enable-static \
--enable-all-static \
CFLAGS="-O2 -pthread -fstack-protector-all"
CFLAGS="-O2 -pthread -fstack-protector-all -Wl,--stack,8388608"
make -j$(nproc)
file ./jq.exe
cp ./jq.exe jq-${{ env.SUFFIX }}.exe
- name: Test
run: |
make check VERBOSE=yes
git diff --exit-code --ignore-submodules
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: test-logs-${{ env.SUFFIX }}
retention-days: 7
@@ -251,9 +259,9 @@ jobs:
test-suite.log
tests/*.log
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: jq-windows
name: jq-${{ env.SUFFIX }}
path: jq-${{ env.SUFFIX }}.exe
if-no-files-found: error
retention-days: 7
@@ -262,7 +270,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
submodules: true
- name: Install packages
@@ -274,13 +282,12 @@ jobs:
autoreconf -i
./configure \
--disable-docs \
--disable-valgrind \
--with-oniguruma=builtin
make distcheck
make dist dist-zip
git diff --exit-code
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: jq-dist
if-no-files-found: error
@@ -292,27 +299,32 @@ jobs:
docker:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
attestations: write
artifact-metadata: write
packages: write
needs: linux
if: startsWith(github.ref, 'refs/tags/jq-')
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
- name: Download executables
uses: actions/download-artifact@v3
uses: actions/download-artifact@v8
with:
name: jq-linux
pattern: jq-linux-*
merge-multiple: true
- name: Move executables
run: |
mkdir -p linux/{386,amd64,arm64,mips64le,ppc64le,riscv64,s390x}
mkdir -p linux/{386,amd64,arm64,arm/v7,mips64le,ppc64le,riscv64,s390x}
chmod +x jq-linux-*
mv jq-linux-i386 linux/386/jq
mv jq-linux-amd64 linux/amd64/jq
mv jq-linux-arm64 linux/arm64/jq
mv jq-linux-armhf linux/arm/v7/jq
mv jq-linux-mips64el linux/mips64le/jq
mv jq-linux-ppc64el linux/ppc64le/jq
mv jq-linux-riscv64 linux/riscv64/jq
mv jq-linux-s390x linux/s390x/jq
chmod +x linux/*/jq
- name: Create Dockerfile
run: |
cat <<'EOF' >Dockerfile
@@ -323,54 +335,82 @@ jobs:
ENTRYPOINT ["/jq"]
EOF
- name: Docker metadata
uses: docker/metadata-action@v4
uses: docker/metadata-action@v6
id: metadata
with:
images: ghcr.io/${{ github.repository }}
tags: type=match,pattern=jq-(.*),group=1,value=${{ github.ref_name }}
tags: >
${{ startsWith(github.ref, 'refs/tags/jq-')
&& format('type=match,pattern=jq-(.*),group=1,value={0}', github.ref_name)
|| 'type=sha,format=long' }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and release Docker image
uses: docker/build-push-action@v4
uses: docker/build-push-action@v7
id: build-push
with:
context: .
push: true
push: ${{ startsWith(github.ref, 'refs/tags/jq-') }}
provenance: false
platforms: linux/386,linux/amd64,linux/arm64,linux/mips64le,linux/ppc64le,linux/riscv64,linux/s390x
platforms: linux/386,linux/amd64,linux/arm64,linux/arm/v7,linux/mips64le,linux/ppc64le,linux/riscv64,linux/s390x
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
- name: Generate signed attestations
if: startsWith(github.ref, 'refs/tags/jq-')
uses: actions/attest@v4
with:
subject-name: ghcr.io/${{ github.repository }}
subject-digest: ${{ steps.build-push.outputs.digest }}
push-to-registry: true
release:
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
attestations: write
artifact-metadata: write
pull-requests: write
environment: release
needs: [linux, macos, windows, dist, docker]
if: startsWith(github.ref, 'refs/tags/jq-')
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
- name: Download artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v8
with:
pattern: jq-*
merge-multiple: true
- name: Prepare release artifacts
run: |
cp jq-linux-amd64 jq-linux64
cp jq-macos-amd64 jq-osx-amd64
cp jq-windows-amd64.exe jq-win64.exe
- name: Generate signed attestations
id: attest
uses: actions/attest@v4
with:
subject-path: jq-*
- name: Upload release
env:
TAG_NAME: ${{ github.ref_name }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
sha256sum jq-*/jq-* | sed 's| .*/| |' > sha256sum.txt
mv "${{ steps.attest.outputs.bundle-path }}" jq-attestation.json
sha256sum jq-* > sha256sum.txt
gh release create "$TAG_NAME" --draft --title "jq ${TAG_NAME#jq-}" --generate-notes
gh release upload "$TAG_NAME" --clobber jq-*/jq-* sha256sum.txt
gh release upload "$TAG_NAME" --clobber jq-* sha256sum.txt
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v5
uses: crazy-max/ghaction-import-gpg@v7
with:
gpg_private_key: ${{ secrets.JQ_RELEASE_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.JQ_RELEASE_GPG_PASSPHRASE }}
@@ -382,7 +422,7 @@ jobs:
sig_dir="sig/v${TAG_NAME#jq-}"
mkdir -p "$sig_dir"
mv sha256sum.txt "$sig_dir"
for file in jq-*/jq-*; do
for file in jq-*; do
gpg --detach-sign --armor --batch --output "${sig_dir}/${file#*/}.asc" "$file"
done
git add sig
+12 -2
View File
@@ -7,10 +7,10 @@ on:
jobs:
disabled:
runs-on: ubuntu-22.04
runs-on: ubuntu-26.04
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
submodules: true
- name: Install packages
@@ -29,4 +29,14 @@ jobs:
- name: Test
run: |
diff <(echo 100000000000000000000 | ./jq) <(echo 1e+20)
make check VERBOSE=yes
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: test-logs-decnum-disabled
retention-days: 7
path: |
test-suite.log
tests/*.log
+6 -8
View File
@@ -1,6 +1,8 @@
name: Building man page, man.test, manonig.test
on:
push:
branches:
- master
paths:
- '.github/workflows/manpage.yml'
- 'docs/**'
@@ -20,9 +22,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v7
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v7
with:
python-version: '3.11'
cache: pipenv
@@ -40,12 +42,8 @@ jobs:
./configure --enable-docs
- name: Build man page, man.test, manonig.test
run: |
mv jq.1.prebuilt jq.1.old
rm -f tests/man.test manonig.test
rm -f jq.1.prebuilt tests/man.test tests/manonig.test
make jq.1.prebuilt tests/man.test tests/manonig.test
- name: Make sure that jq.1.prebuilt, man.test, manonig.test are up to date
run: |
git diff --exit-code tests/man.test tests/manonig.test
# skip build date in jq.1.prebuilt
test -s jq.1.prebuilt
diff -- <(tail -n +3 jq.1.old) <(tail -n +3 jq.1.prebuilt)
git diff --exit-code jq.1.prebuilt tests/man.test tests/manonig.test
+8 -6
View File
@@ -9,10 +9,10 @@ on:
# we test other options for --with-oniguruma here.
jobs:
installed:
runs-on: ubuntu-22.04
runs-on: ubuntu-26.04
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
- name: Install packages
run: |
sudo apt-get update
@@ -22,6 +22,7 @@ jobs:
autoreconf -i
./configure \
--disable-docs \
--enable-valgrind \
--with-oniguruma=yes
make -j"$(nproc)"
file ./jq
@@ -32,7 +33,7 @@ jobs:
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: test-logs-oniguruma-installed
retention-days: 7
@@ -41,10 +42,10 @@ jobs:
tests/*.log
disabled:
runs-on: ubuntu-22.04
runs-on: ubuntu-26.04
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
- name: Install packages
run: |
sudo apt-get update
@@ -54,6 +55,7 @@ jobs:
autoreconf -i
./configure \
--disable-docs \
--enable-valgrind \
--with-oniguruma=no
make -j"$(nproc)"
file ./jq
@@ -64,7 +66,7 @@ jobs:
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: test-logs-oniguruma-disabled
retention-days: 7
+43 -71
View File
@@ -1,75 +1,47 @@
name: Linux Clang scan-build Static Analyzer Build
name: Clang scan-build Static Analyzer Build
on:
# Don't do this for PRs. It eats up minutes.
push:
branches:
- 'master'
- 'scan-build'
paths:
- '.github/workflows/scanbuild.yml'
push:
branches:
- master
jobs:
unix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
name: [linux-clang]
include:
- name: linux-clang
os: ubuntu-latest
compiler: clang
cflags: ''
steps:
- name: Clone repository
uses: actions/checkout@v1
- name: Open Submodule(s)
run: |
git submodule update --init --recursive
- name: Install packages
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update -qq
sudo apt-get install -y automake autoconf bison flex gdb python3 valgrind clang-tools
- name: Prep
run: |
#pyenv global 3.6.7
#pip3 install pipenv
#(cd docs && pipenv sync)
#if [ -n "$COVERAGE" ]; then pip install --user cpp-coveralls; fi
echo SHELL=$SHELL
echo PATH=$PATH
which bison
bison --version
- name: Build
env:
CC: ${{ matrix.compiler }}
MAKEVARS: ${{ matrix.makevars }}
run: |
autoreconf -i
./configure --with-oniguruma=builtin $COVERAGE
scan-build --keep-going make -j4
- name: Test
env:
CC: ${{ matrix.compiler }}
MAKEVARS: ${{ matrix.makevars }}
run: |
ulimit -c unlimited
scan-build --keep-going make -j4 check
- name: Core dump stacks
run: |
echo "thread apply all bt" > /tmp/x
find . -name core -print | while read core; do gdb -batch -x x `file "$core"|sed -e "s/^[^']*'//" -e "s/[ '].*$//"` "$core"; done
if [ "$(find . -name core -print | wc -l)" -gt 0 ]; then false; fi
- name: Test logs
if: ${{ failure() }}
run: |
cat test-suite.log
cat tests/*.log
- name: Upload Logs
uses: actions/upload-artifact@v2
with:
name: Scan-Build Reports
path: '/tmp/scan-build*/'
scan-build:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v7
with:
submodules: true
- name: Install packages
run: |
sudo apt-get update -qq
sudo apt-get install -y automake autoconf gdb valgrind clang clang-tools
echo "CC=clang" >> "$GITHUB_ENV"
- name: Build
run: |
autoreconf -i
./configure --enable-valgrind CFLAGS="-g -O0"
scan-build --keep-going --exclude vendor/ make -j"$(nproc)"
- name: Test
run: |
ulimit -c unlimited
scan-build --keep-going --exclude vendor/ make -j"$(nproc)" check
- name: Core dump stacks
run: |
if [[ -f core ]]; then
gdb -batch -ex "thread apply all bt" \
"$(file core | sed "s/^[^']*'//; s/[ '].*$//")" core
exit 1
fi
- name: Test logs
if: ${{ failure() }}
run: |
cat test-suite.log tests/*.log
- name: Upload Logs
uses: actions/upload-artifact@v7
with:
name: Scan-Build Reports
path: /tmp/scan-build*
if-no-files-found: ignore
retention-days: 7
+4 -4
View File
@@ -7,22 +7,22 @@ on:
jobs:
linux:
runs-on: ubuntu-22.04
runs-on: ubuntu-26.04
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v7
with:
submodules: true
- name: Install packages
run: |
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y automake autoconf libtool valgrind
- name: Build
run: |
autoreconf -i
./configure \
--disable-docs \
--enable-valgrind \
--with-oniguruma=builtin
make -j"$(nproc)"
file ./jq
@@ -32,7 +32,7 @@ jobs:
git diff --exit-code
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: test-logs-valgrind-linux
retention-days: 7
+26 -19
View File
@@ -6,19 +6,18 @@ on:
paths:
- 'docs/**'
concurrency: website
permissions:
contents: write
jobs:
website:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
uses: actions/checkout@v7
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v7
with:
python-version: '3.11'
cache: pipenv
@@ -26,15 +25,23 @@ jobs:
run: pip install pipenv
- name: Install dependencies
run: pipenv sync
working-directory: docs
- name: Update website
run: scripts/update-website
- name: Commit changes
run: |
if ! git diff --quiet; then
git add --all
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
git commit -m 'Update website'
git push origin gh-pages
fi
- name: Build website
run: pipenv run python3 build_website.py
- name: Upload pages artifact
uses: actions/upload-pages-artifact@v5
with:
path: docs/output/
deploy:
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
uses: actions/deploy-pages@v5
id: deployment
+2
View File
@@ -31,6 +31,8 @@ stamp-h1
config.log
config.status
autom4te.cache
confdefs.h
conftest*
INSTALL
Makefile
jq-*.tar.gz
+2 -2
View File
@@ -1,3 +1,3 @@
[submodule "modules/oniguruma"]
path = modules/oniguruma
[submodule "vendor/oniguruma"]
path = vendor/oniguruma
url = https://github.com/kkos/oniguruma.git
+74 -1
View File
@@ -15,6 +15,7 @@ pkoppstein <pkoppstein@gmail.com>
Contributions by:
13ren <melbourne.research@gmail.com>
A4-Tacks <wdsjxhno1001@163.com>
AJ Jordan <alex@strugee.net>
Aaron Peschel <apeschel@zendesk.com>
Adam Lindberg <hello@alind.io>
@@ -26,9 +27,12 @@ Alex Ozdemir <aozdemir@hmc.edu>
Alex Wilson <gpg@probablyfine.co.uk>
Alexandre Jasmin <ajasmin@transtex-llc.com>
Allan Clark <allanc@chickenandporn.com>
Alyssa Ross <hi@alyssa.is>
Andreas Heiduk <asheiduk@users.noreply.github.com>
Andrew O'Brien <obrien.andrew@gmail.com>
Andrew Rodland <andrew@cleverdomain.org>
Andrew Speed <andrew.cspeed@gmail.com>
Andy Lester <andy@petdance.com>
Ankur <ankz.kothari@gmail.com>
Anthony Shortland <anthony@dtosolutions.com>
Anthony Sottile <asottile@umich.edu>
@@ -37,16 +41,23 @@ Attila Fülöp <attila@fueloep.org>
Benjamin Wuethrich <benjamin@koho.ca>
Benoit de Chezelles <bew@users.noreply.github.com>
Bernard Niset <bernard.niset@gmail.com>
Bhargava Mummadireddy <kishoreinvits@gmail.com>
Binbin Qian <qianbinbin@hotmail.com>
Bradley Skaggs <bskaggs@acm.org>
Brahm Lower <bplower@gmail.com>
Brendan Macmillan <melbourne.research@gmail.com>
Cameron Sparr <cameronsparr@gmail.com>
Chance Zibolski <czibolsk@redhat.com>
Charles Merriam <charles.merriam@gmail.com>
Chris LaRose <cjlarose@gmail.com>
Chris Moore <dooglus@gmail.com>
Christoph Anton Mitterer <calestyo@scientia.org>
Christopher Degawa <ccom@randomderp.com>
Ciaran McNamara <1372986+ciaranmcnamara@users.noreply.github.com>
Clément MATHIEU <clement@unportant.info>
Colin Leroy-Mira <colin@colino.net>
Colin von Heuring <colin@janrain.com>
Dag-Erling Smørgrav <des@des.no>
Damian Gryski <damian@gryski.com>
Dan Church <h3xx@users.noreply.github.com>
Daniel Lange <DLange@git.local>
@@ -55,24 +66,33 @@ David Fetter <david@fetter.org>
David Haguenauer <ml@kurokatta.org>
David Korczynski <david@adalogics.com>
David R. MacIver <david@drmaciver.com>
DavidKorczynski <david@adalogics.com>
Dawid Ferenczy Rogožan <ferenczy@users.noreply.github.com>
Dennis Ameling <dennis@dennisameling.com>
Derrick Pallas <derrick@pallas.us>
Doug Luce <doug@github.con.com>
Eiichi Sato <sato.eiichi@gmail.com>
Eli Schwartz <eschwartz@archlinux.org>
Eloy Coto <eloy.coto@gmail.com>
Eric Bréchemier <eric@egull.co>
Erik Brinkman <erik.brinkman@gmail.com>
Eugen <EugenGez@gmail.com>
Evan Zacks <zackse@gmail.com>
Fabian Dellwing <fabian.dellwing@mbconnectline.de>
Fabian Fleischer <50590395+fab1ano@users.noreply.github.com>
Felix Wolfsteller <felix.wolfsteller@gmail.com>
Filippo Giunchedi <fgiunchedi@gmail.com>
Filippo Valsorda <filippo.valsorda@gmail.com>
Florian Weimer <fweimer@redhat.com>
Frederic Cambus <fcambus@users.sourceforge.net>
Gabriel Marin <gbrlmarn@gmail.com>
Gaelan Steele <gbs@canishe.com>
George Hopkins <george-hopkins@null.net>
Gert Van Gool <gertvangool@gmail.com>
Gijs Kunze <gwkunze@gmail.com>
Gustav <gustav@invoke.se>
HE, Tao <sighingnow@gmail.com>
Han Jiang <jhcarl0814@gmail.com>
Hanfei Shen <qqshfox@gmail.com>
Hanson Char <hanson.char@gmail.com>
Haochen Xie <haochenx@acm.org>
@@ -80,26 +100,36 @@ Helmut K. C. Tessarek <tessarek@evermeet.cx>
Henré Botha <henrebotha@gmail.com>
Ian Miell <ian.miell@gmail.com>
Ikko Ashimine <eltociear@gmail.com>
Ish Nagy <50555716+ishnagy@users.noreply.github.com>
J Phani Mahesh <github@phanimahesh.me>
J. B. Rainsberger <me@jbrains.ca>
Jack Pearkes <jackpearkes@gmail.com>
Jakub Jirutka <jakub@jirutka.cz>
Jakub Wilk <jwilk@jwilk.net>
James Andariese <james.andariese@locationlabs.com>
James Pearson Hughes <xiong.chiamiov@gmail.com>
Jan Schulz <jasc@gmx.net>
Jan-Piet Mens <jp@mens.de>
Janne Cederberg <janne.cederberg@gmail.com>
Jason Hood <jadoxa@yahoo.com.au>
Jay Satiro <raysatiro@yahoo.com>
Jesper Rønn-Jensen <jesperrr@gmail.com>
Jingwen Owen Ou <jingweno@gmail.com>
Joe Littlejohn <joe.littlejohn@nokia.com>
Joel Nothman <joel.nothman@gmail.com>
Joel Purra <code+github@joelpurra.com>
Jonathan Chan Kwan Yin <sofe2038@gmail.com>
Jonathan Word <argoday@argoday.com>
Josh Soref <2119212+jsoref@users.noreply.github.com>
José Joaquín Atria <jjatria@gmail.com>
Juan Guerrero <juan.guerrero.lozano@gmail.com>
Kamontat Chantrachirathumrong <14089557+kamontat@users.noreply.github.com>
Kartik Shah <krtk.6160@gmail.com>
Kenny Shen <kenny.shen@zalora.com>
Kim De Mey <kim.demey@gmail.com>
Kim Toms <kim.toms@bplglobal.net>
Kirk McKelvey <kirkoman@gmail.com>
Klemens Nanni <kn@openbsd.org>
LCD 47 <lcd047@gmail.com>
Larry Aasen <larryaasen@gmail.com>
Lee Thompson <stagr.lee@gmail.com>
@@ -110,36 +140,47 @@ MCApollo <34170230+MCApollo@users.noreply.github.com>
Marc Abramowitz <marc@marc-abramowitz.com>
Marc Bruggmann <marcbr@spotify.com>
Marcin Kłopotek <marcin.klopotek@gmail.com>
Marcin Serwin <marcin@serwin.dev>
Mark Feit <mfeit@internet2.edu>
Mark McKinstry <mmckinst@umich.edu>
Markus Lanthaler <mark_lanthaler@gmx.net>
Matt Clegg <m@cle.gg>
Matt Meyers <matt@mattmeyers.dev>
Matti Åstrand <mattiastr@gmail.com>
Mattias Hansson <hansson.mattias@gmail.com>
Maxime Biais <maxime.biais@gmail.com>
Maximilian Roos <5635139+max-sixty@users.noreply.github.com>
McSinyx <cnx@loang.net>
Michael Daines <michael@mdaines.com>
Michael Färber <01mf02@gmail.com>
Mike Daines <mdaines@users.noreply.github.com>
Mike Fletcher <john.m.fletcher@bankofamerica.com>
Mike McCabe <mccabe@archive.org>
Nathan Baulch <nathan.baulch@gmail.com>
Naïm Favier <n@monade.li>
Nicolas Pouillard <nicolas.pouillard@gmail.com>
Nicole Wren <nicole@wren.systems>
Paul Chvostek <paul+gitkraken@it.ca>
Paul Wise <pabs3@bonedaddy.net>
Peter Kjellerstedt <peter.kjellerstedt@gmail.com>
Peter van Dijk <peter@7bits.nl>
Philipp Hagemeister <phihag@phihag.de>
Rémy Léone <remy.leone@gmail.com>
Ricardo Constantino <wiiaboo@gmail.com>
Richard Groves <richard@noodlfroot.com>
Richard H Lee <richard@webdezign.co.uk>
Riley Avron <riley.avron@gmail.com>
Rob Wills <rob.wills@gmail.com>
Robert Aboukhalil <robert.aboukhalil@gmail.com>
Rohan Santhosh Kumar <181558744+Rohan5commit@users.noreply.github.com>
Roland C. Dowdeswell <roland.dowdeswell@twosigma.com>
Roman Inflianskas <rominf@users.noreply.github.com>
Romero Malaquias <romero.malaquias@gmail.com>
Ryoichi KATO <ryo1kato@gmail.com>
Rémy Léone <remy.leone@gmail.com>
SArpnt <sarpnt@ficial.net>
Samar Sunkaria <sameesunkaria@me.com>
Santiago Lapresta <santiago.lapresta@gmail.com>
Scott Seal <seal.scottm@gmail.com>
Sean Wei <me@sean.taipei>
Sebastian Freundt <freundt@ga-group.nl>
Shaun Guth <sguth@practicefusion.com>
@@ -149,32 +190,64 @@ Stefan <stefan.haubenthal@gmail.com>
Stefan Seemayer <stefan@seemayer.de>
Stephen Roantree <stroantree@gmail.com>
Stephen Shaw <stesh@netsoc.tcd.ie>
Steven Ihde <sihde@hamachi.us>
Steven Maude <StevenMaude@users.noreply.github.com>
Steven Penny <svnpenn@gmail.com>
Sudhakar Verma <10460978+sudhackar@users.noreply.github.com>
Thalia Archibald <thalia@archibald.dev>
TheOdd <owenhines@protonmail.com>
Thomas Bozeman th026106 <thomas.bozeman@digitalglobe.com>
Thomas R. Hall <trhall@trhall.org>
Thomas Sibley <tom@zulutango.org>
Tim McCormack <cortex@brainonfire.net>
Timothy John Perisho Eccleston <combinatorist@users.noreply.github.com>
Tom Wolf <github@incognitox.org>
Tomas Halman <thalman@redhat.com>
Travis Gockel <travis@gockelhut.com>
Tyler Rockwood <rockwotj@users.noreply.github.com>
Ulrich Eckhardt <ulrich.eckhardt@base-42.de>
Vladimír Marek <vlmarek13@gmail.com>
W-Mark Kubacki <wmark@hurrikane.de>
William Chargin <wchargin@gmail.com>
Yasuhiro Matsumoto <mattn.jp@gmail.com>
Yeikel <email@yeikel.com>
Yoichi Nakayama <yoichi.nakayama@gmail.com>
Yu-Fu Fu <yufu@yfu.tw>
Ze Sheng <108382772+OwenSanzas@users.noreply.github.com>
Zhaohui Mei <mzh.whut@gmail.com>
Zhiming Wang <zmwangx@gmail.com>
bigmoonbit <bigmoonbit@outlook.com>
calpeconsulting <61429736+calpeconsulting@users.noreply.github.com>
cdnbacon <mike@busbud.com>
dak180 <dak180@users.sf.net>
davkor <david@adalogics.com>
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
eitsupi <50911393+eitsupi@users.noreply.github.com>
fletcher gornick <fletcher@gornick.dev>
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
goodactive <167312449+goodactive@users.noreply.github.com>
i <isomorphisms@sdf.org>
jkleint <jkleint@gmail.com>
lectrical <14344693+lectrical@users.noreply.github.com>
liviubobocu <liviu.bobocu@uipath.com>
maflcko <6399679+maflcko@users.noreply.github.com>
mail6543210 <mail6543210@yahoo.com.tw>
mjarosie <mjarosie@users.noreply.github.com>
myaaaaaaaaa <103326468+myaaaaaaaaa@users.noreply.github.com>
nmulcahey <nmulcahey@gmail.com>
orbea <orbea@riseup.net>
polyester <paul@cleanclothes.org>
rain1 <rain1@airmail.cc>
riastradh <campbell+github@mumble.net>
sachint <32639496+sachintu47@users.noreply.github.com>
sheepster <omer531998@gmail.com>
tal@whatexit.org <tal@whatexit.org>
taoky <taoky99@outlook.com>
theyoucheng <daniel1988xyz@gmail.com>
tlsbollei <170938166+tlsbollei@users.noreply.github.com>
trantor <trantorvega@gmail.com>
wellweek <148746285+wellweek@users.noreply.github.com>
wllm-rbnt <william.robinet@conostix.com>
zstadler <zeev.stadler@gmail.com>
наб <nabijaczleweli@nabijaczleweli.xyz>
엄태용 <lg65438805@gmail.com>
+40
View File
@@ -106,6 +106,15 @@ shall not be used in advertising or otherwise to promote the sale, use
or other dealings in this Software without prior written authorization
of the copyright holder.
--------------------------------------------------------------------------------
All trademarks and registered trademarks mentioned herein are the property of their respective owners.
jv_thread.h is copied from Heimdal's lib/base/heimbase.h and some code
in jv.c is copied from Heimdal's lib/base/dll.c:
Portions Copyright (c) 2016 Kungliga Tekniska Högskolan
(Royal Institute of Technology, Stockholm, Sweden).
All rights reserved.
@@ -134,3 +143,34 @@ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
jq uses a modified version of NetBSD implementation strptime(),
which is distributed under the following license:
Copyright (c) 1997, 1998, 2005, 2008 The NetBSD Foundation, Inc.
All rights reserved.
This code was contributed to The NetBSD Foundation by Klaus Klein.
Heavily optimised by David Laight
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-1
View File
@@ -19,7 +19,6 @@ COPY . /app
RUN autoreconf -i \
&& ./configure \
--disable-docs \
--disable-valgrind \
--with-oniguruma=builtin \
--enable-static \
--enable-all-static \
+65 -45
View File
@@ -5,21 +5,23 @@ LIBJQ_INCS = src/builtin.h src/bytecode.h src/compile.h \
src/exec_stack.h src/jq_parser.h src/jv_alloc.h src/jv_dtoa.h \
src/jv_unicode.h src/jv_utf8_tables.h src/lexer.l src/libm.h \
src/linker.h src/locfile.h src/opcode_list.h src/parser.y \
src/util.h src/decNumber/decContext.h src/decNumber/decNumber.h \
src/decNumber/decNumberLocal.h src/jv_dtoa_tsd.h src/jv_thread.h \
src/jv_private.h
src/util.h src/iso8601.h \
src/jv_dtoa_tsd.h src/jv_thread.h src/jv_private.h \
vendor/decNumber/decContext.h vendor/decNumber/decNumber.h \
vendor/decNumber/decNumberLocal.h
LIBJQ_SRC = src/builtin.c src/bytecode.c src/compile.c src/execute.c \
src/jq_test.c src/jv.c src/jv_alloc.c src/jv_aux.c \
src/jv_dtoa.c src/jv_file.c src/jv_parse.c src/jv_print.c \
src/jv_unicode.c src/linker.c src/locfile.c src/util.c \
src/decNumber/decContext.c src/decNumber/decNumber.c \
src/jv_dtoa_tsd.c \
src/iso8601.c src/jv_dtoa_tsd.c \
vendor/decNumber/decContext.c vendor/decNumber/decNumber.c \
${LIBJQ_INCS}
### C build options
AM_CFLAGS = -Wextra -Wall -Wno-unused-parameter -Wno-unused-function
AM_CFLAGS = -Wextra -Wall -Wno-unused-parameter -Wno-unused-function \
-Woverlength-strings -Wstrict-prototypes
if WIN32
AM_CFLAGS += -municode
@@ -32,17 +34,22 @@ ACLOCAL_AMFLAGS = -I config/m4
# While there is some autoconf macro support for lex/flex, it doesn't support
# header file creation so we'll use good old make
if MAINTAINER_MODE
BUILT_SOURCES = src/lexer.h src/lexer.c src/parser.h src/parser.c \
src/builtin.inc src/config_opts.inc src/version.h
BUILT_SOURCES = src/lexer.h src/lexer.c src/parser.h src/parser.c \
src/builtin.inc src/config_opts.inc src/version.h
src/lexer.c: src/lexer.l
$(AM_V_LEX) flex -o src/lexer.c --header-file=src/lexer.h $<
src/lexer.h: src/lexer.c
else
BUILT_SOURCES = src/builtin.inc src/config_opts.inc src/version.h
.y.c:
$(AM_V_YACC) echo "NOT building parser.c!"
$(AM_V_YACC) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(@F) $@
$(AM_V_YACC) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(*F).h $*.h
$(AM_V_YACC) touch $@ $*.h
.l.c:
$(AM_V_LEX) echo "NOT building lexer.c!"
$(AM_V_LEX) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(@F) $@
$(AM_V_LEX) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(*F).h $*.h
$(AM_V_LEX) touch $@ $*.h
endif
# Tell YACC (Bison) autoconf macros that you want a header file created.
@@ -64,23 +71,18 @@ endif
include_HEADERS = src/jv.h src/jq.h
if ENABLE_UBSAN
AM_CFLAGS += -fsanitize=undefined
endif
AM_CPPFLAGS = -I$(srcdir)/src -I$(srcdir)/vendor
AM_CPPFLAGS = -I$(srcdir)/src
### Running tests under Valgrind
### Address sanitizer (ASan)
if ENABLE_ASAN
AM_CFLAGS += -fsanitize=address
NO_VALGRIND = 1
else
if ENABLE_VALGRIND
NO_VALGRIND =
else
NO_VALGRIND = 1
endif
### Undefined Behavior Sanitizer
if ENABLE_UBSAN
AM_CFLAGS += -fsanitize=undefined
endif
### Code coverage with gcov
@@ -103,7 +105,7 @@ endif
# Remake the version.h header file if, and only if, the git ID has changed
.PHONY: .FORCE
.FORCE:
generate_ver = ver="`{ $(srcdir)/scripts/version || echo '$(VERSION)' ; } | sed 's/.*/\#define JQ_VERSION \"&\"/'`"
generate_ver = ver="`{ $(srcdir)/scripts/version || echo '$(VERSION)' ; } | xargs printf '\043define JQ_VERSION \"%s\"\n'`"
.remake-version-h: .FORCE
@ $(generate_ver); test "x`cat src/version.h 2>/dev/null`" = "x$$ver" || touch .remake-version-h
src/version.h: .remake-version-h
@@ -119,31 +121,35 @@ src/main.c: src/version.h src/config_opts.inc
src/builtin.inc: $(srcdir)/src/builtin.jq
mkdir -p src
$(AM_V_GEN) sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/\\n"/' $(srcdir)/src/builtin.jq > $@
$(AM_V_GEN) od -v -A n -t o1 -- $< | \
sed -e 's/$$/ /' \
-e 's/\([0123456789]\) /\1, /g' \
-e 's/ $$//' \
-e 's/ 0/ 0/g' \
-e 's/ \([123456789]\)/ 0\1/g' > $@
src/builtin.o: src/builtin.inc
CLEANFILES = src/version.h .remake-version-h src/builtin.inc src/config_opts.inc
bin_PROGRAMS = jq
jq_SOURCES = src/main.c src/version.h
jq_LDFLAGS = -static-libtool-libs
jq_SOURCES = src/main.c
jq_LDADD = libjq.la -lm
if WIN32
jq_LDADD += -lshlwapi
endif
if ENABLE_ALL_STATIC
jq_LDFLAGS += -all-static
jq_LDFLAGS = -all-static
endif
### Tests (make check)
TESTS = tests/mantest tests/jqtest tests/shtest tests/utf8test tests/base64test
TESTS = tests/mantest tests/jqtest tests/shtest tests/utf8test tests/base64test tests/uritest
if !WIN32
TESTS += tests/optionaltest
endif
AM_TESTS_ENVIRONMENT = JQ=$(abs_builddir)/jq NO_VALGRIND=$(NO_VALGRIND)
AM_TESTS_ENVIRONMENT = JQ=$(abs_builddir)/jq
if ENABLE_VALGRIND
AM_TESTS_ENVIRONMENT += ENABLE_VALGRIND=1
endif
# This is a magic make variable that causes it to treat tests/man.test as a
# DATA-type dependency for the check target. As a result, it will attempt to
@@ -158,11 +164,11 @@ check_DATA = tests/man.test
# Making changes to the manpage without having the python deps means your
# tests won't run. If you aren't making changes to the examples, you probably
# don't care. But if you are, then you need to run the tests anyway.
tests/man.test tests/manonig.test: $(srcdir)/docs/content/manual/manual.yml
tests/man.test tests/manonig.test: $(srcdir)/docs/content/manual/dev/manual.yml
if ENABLE_DOCS
$(AM_V_GEN) ( cd ${abs_srcdir}/docs && \
$(PIPENV) run python validate_manual_schema.py content/manual/manual.yml && \
$(PIPENV) run python build_mantests.py )
$(PIPENV) run python validate_manual_schema.py content/manual/dev/manual.yml && \
$(PIPENV) run python build_mantests.py )
else
@echo Changes to the manual.yml require docs to be enabled to update the manual test.
@echo As a result, the manual test is out of date.
@@ -174,26 +180,37 @@ endif
# manpage, then we'll end up using the cached version. Otherwise, we need to
# rebuild it.
man_MANS = jq.1
jq.1.prebuilt: $(srcdir)/docs/content/manual/manual.yml
jq.1.prebuilt: $(srcdir)/docs/content/manual/dev/manual.yml
if ENABLE_DOCS
$(AM_V_GEN) ( cd ${abs_srcdir}/docs && \
$(PIPENV) run python validate_manual_schema.py content/manual/manual.yml && \
$(PIPENV) run python build_manpage.py ) > $@
$(PIPENV) run python validate_manual_schema.py content/manual/dev/manual.yml && \
$(PIPENV) run python build_manpage.py ) > $@
else
@echo Changes to the manual.yml require docs to be enabled to update the manpage.
@echo As a result, the manpage is out of date.
endif
# The committed manpage has no date to avoid merge conflicts. Stamp the date
# of the last commit when building in a git repository, including on make
# dist, so that release tarballs ship a dated jq.1. Respect SOURCE_DATE_EPOCH
# so that distribution builds can pin the date.
jq.1: jq.1.prebuilt
$(AM_V_GEN) cp $(srcdir)/jq.1.prebuilt $@
$(AM_V_GEN) date=`if test -n "$$SOURCE_DATE_EPOCH"; then \
date -u -d "@$$SOURCE_DATE_EPOCH" +%F 2>/dev/null || \
date -u -r "$$SOURCE_DATE_EPOCH" +%F 2>/dev/null; \
elif test -e $(srcdir)/.git; then \
cd $(srcdir) && git log -1 --format=%cd --date=short 2>/dev/null; \
fi`; \
sed 's/^\.TH "JQ" "1" ""/.TH "JQ" "1" "'"$$date"'"/' $(srcdir)/jq.1.prebuilt > $@
CLEANFILES += jq.1
### Build oniguruma
if BUILD_ONIGURUMA
libjq_la_LIBADD += modules/oniguruma/src/.libs/libonig.la
SUBDIRS = modules/oniguruma
libjq_la_LIBADD += vendor/oniguruma/src/.libs/libonig.la
jq_LDADD += vendor/oniguruma/src/.libs/libonig.la
SUBDIRS = vendor/oniguruma
endif
AM_CFLAGS += $(onig_CFLAGS)
@@ -216,9 +233,10 @@ EXTRA_DIST = $(DOC_FILES) $(man_MANS) $(TESTS) $(TEST_LOG_COMPILER) \
jq.1.prebuilt jq.spec src/lexer.c src/lexer.h src/parser.c \
src/parser.h src/version.h src/builtin.jq scripts/version \
libjq.pc \
tests/base64.test tests/jq-f-test.sh tests/jq.test \
tests/modules/a.jq tests/modules/b/b.jq tests/modules/c/c.jq \
tests/modules/c/d.jq tests/modules/data.json \
tests/modules/deep1.jq tests/modules/deep2a.jq \
tests/modules/deep2b.jq tests/modules/deep3.jq \
tests/modules/home1/.jq tests/modules/home2/.jq/g.jq \
tests/modules/lib/jq/e/e.jq tests/modules/lib/jq/f.jq \
tests/modules/shadow1.jq tests/modules/shadow2.jq \
@@ -227,11 +245,13 @@ EXTRA_DIST = $(DOC_FILES) $(man_MANS) $(TESTS) $(TEST_LOG_COMPILER) \
tests/modules/test_bind_order0.jq \
tests/modules/test_bind_order1.jq \
tests/modules/test_bind_order2.jq \
tests/modules/cycle_a.jq tests/modules/cycle_b.jq \
tests/modules/cycle_self.jq \
tests/onig.supp tests/local.supp \
tests/setup tests/torture/input0.json \
tests/optional.test tests/man.test tests/manonig.test \
tests/jq.test tests/onig.test tests/base64.test \
tests/utf8-truncate.jq tests/jq-f-test.sh \
tests/jq.test tests/onig.test tests/base64.test tests/uri.test \
tests/jq-f-test.sh \
tests/no-main-program.jq tests/yes-main-program.jq
AM_DISTCHECK_CONFIGURE_FLAGS=--with-oniguruma=builtin
+426 -1
View File
@@ -1,3 +1,428 @@
# 1.8.2
This is a patch release with security fixes and bug fixes since 1.8.1, along with new builds for Windows arm64 and Docker arm/v7.
Full commit log can be found at <https://github.com/jqlang/jq/compare/jq-1.8.1...jq-1.8.2>.
## Security fixes
- CVE-2026-32316: Fix heap buffer overflow in `jvp_string_append` and `jvp_string_copy_replace_bad`.
@itchyny e47e56d226519635768e6aab2f38f0ab037c09e5
- CVE-2026-33947: Limit path depth to prevent stack overflow in `jv_setpath`, `jv_getpath`, `jv_delpaths`.
@itchyny fb59f1491058d58bdc3e8dd28f1773d1ac690a1f
- CVE-2026-33948: Fix NUL truncation in the JSON parser.
@itchyny 6374ae0bcdfe33a18eb0ae6db28493b1f34a0a5b
- CVE-2026-39956: Fix `_strindices` missing runtime type checks.
@tlsbollei fdf8ef0f0810e3d365cdd5160de43db46f57ed03
- CVE-2026-39979: Fix out-of-bounds read in `jv_parse_sized()`.
@wader 2f09060afab23fe9390cce7cb860b10416e1bf5f
- CVE-2026-40164: Randomize hash seed to mitigate hash collision DoS attacks.
@AsafMeizner @itchyny 0c7d133c3c7e37c00b6d46b658a02244fdd3c784
- CVE-2026-40612: Limit containment check depth to prevent stack overflow in `contains`.
@itchyny d1a12569d91641135976a8536776a4a329c02cc2
- CVE-2026-41256: Fix NUL truncation in program files loaded with `-f`.
@itchyny 5a015deae35d19e3ebbc65db6c157a80e76df738
- CVE-2026-41257: Fix signed-int overflow in `stack_reallocate`.
@itchyny 01b3cded76daacbfddb7f8763700b0803bcb5c6f
- CVE-2026-43894: Reject numeric literals longer than `DEC_MAX_DIGITS` (999999999).
@itchyny 9761ceb7d6cc48c16b25f0ab1baaef0e701927e4
- CVE-2026-43895: Reject embedded NUL bytes in module import paths.
@itchyny 9d223f153c3632a207fa071caaa6292da33ae361
- CVE-2026-43896: Limit recursive object merge depth to prevent stack overflow.
@itchyny 532ccea6080ed6758f39fe9f6208a44b665023d2
- CVE-2026-44777: Detect circular module imports to prevent stack overflow.
@itchyny f58787c41835d9b17795730cb04925fdba25c71c
- CVE-2026-47770: Guard deep structural equality and comparison recursion.
@fuyu0425 7122866869960b55cea3646bc91334ef55787831
- CVE-2026-49839: Fix heap-buffer-overflow in raw file loading.
@itchyny e987df0d463d85fd70825e042a082427e8275b86
- CVE-2026-54679: Tighten string length bounds and propagate invalid jv in implode.
@itchyny 46d1da30944ce93dd671ac72b6513fc0eb747837
- GHSA-gf4g-95wj-4q4r: Fix use-after-free in `args2obj()` array argument path. @sseal #3498
- GHSA-hj52-j2c9-r8r4: Fix signed-int overflow in `tokenadd` to prevent buffer overflow.
@itchyny 63751f8a9f94dc6d3370084ad0d60826c58b955d
- Limit the number of function parameters and definitions to prevent SEGV. @OwenSanzas #3460
- Pre-allocate `tokenbuf` for string parser to avoid undefined behavior. @fab1ano #3485
- Avoid stack overflow when freeing deeply nested values.
@itchyny 33d7bce3218ec718139342e5b48b475c4dea715f
- Fix memory leaks and double frees. @itchyny #3487
## Releasing
- Add builds for Windows arm64. @dennisameling #3376
- Support arm/v7 architecture in Docker images. @itchyny #3463
- Update GPG signing key. @itchyny 0ff997f7c4c07660ffc6ad2506d5f56b8136208b
- Add `artifact-metadata` permission for actions/attest. @itchyny #3530
- Upload attestation bundle as a release artifact, allowing unauthenticated
verification via `gh attestation verify --bundle jq-attestation.json`.
@itchyny #3563
## CLI changes
- Improve error message truncation with closing delimiters. @itchyny #3478
- Remove extra space from `die` function output. @krtk6160 #3391
- Fix raw input flag not to corrupt multi-byte characters. @itchyny #3421
- Fix crash when importing a module with errors twice. @itchyny #3497
- Increase the maximum printing depth from 256 to 10000. @ishnagy #3414
## Changes to existing functions
- Fix `rtrimstr("")` always outputting `""`. @A4-Tacks #3415
- Fix infinite loop and undefined behavior in `del(.[nan])`. @itchyny #3490
- Refactor `@uri` and `@urid` to fix multi-byte UTF-8 corruption. @itchyny #3495
- Fix `tonumber` and `toboolean` to reject strings with embedded null bytes. @itchyny #3496
- Fix undefined behavior in modulo operator. @fab1ano #3486
- Fix reversed pointer subtraction in `f_env` bounds check. @itchyny #3465
- Fix missing validity check in `f_strflocaltime` after `f_localtime`. @itchyny #3491
- Fix year 2038 problem on 32-bit platforms. @itchyny #3407
- Use `//` instead of `//=` in `from_entries` definition. @itchyny #3516
## Build and test changes
- Drop `strptime` test using non-portable `%F`. @alyssais #3365
- Limit oniguruma depth to 1024 in `jq_fuzz_execute`. @sudhackar #3377
- Fix localization test for time formatting functions. @itchyny #3409
- Fix expected value assertion. @itchyny #3431 #3408
- Fix typo in tests/jq.test. @bigmoonbit #3441
- Refactor `tm2jv` to handle fractional seconds. @itchyny #3489
- Fix `jq_fuzz_parse_stream`: use iterative parser API for streaming mode. @OwenSanzas #3499
- Fix crashes and resource leaks in `jq_testsuite`. @itchyny #3509
- Support building with `--disable-maintainer-mode` and source != build dir. @Saur2000 #3518
- Add Solaris support. @vlmarek #3515
- Respect `SOURCE_DATE_EPOCH` while generating man page. @McSinyx #3514
- Fix undefined pointer arithmetic in UTF-8 helpers. @theyoucheng df924eae91af10cc236a907cdadd97813827aa1f
- Fix one-byte over-read in `BASE64_DECODE_TABLE`. @itchyny #3547
## Documentation changes
- Add wiki link to navigation bar. @wader #3424
- Add missing word in manual for rawfile. @jpmens #3434
- Fix typo "stder" to "stderr". @jjatria #3446
- Fix buttons in tutorial to toggle labels when clicked on. @itchyny #3493
- Fix "happened" spelling in tutorial changelog entries. @Rohan5commit #3525
# 1.8.1
This is a patch release to fix security, performance, and build issues found in 1.8.0.
Full commit log can be found at <https://github.com/jqlang/jq/compare/jq-1.8.0...jq-1.8.1>.
## Security fixes
- CVE-2025-49014: Fix heap use after free in `f_strftime`, `f_strflocaltime`.
@wader 499c91bca9d4d027833bc62787d1bb075c03680e
- GHSA-f946-j5j2-4w5m: Fix stack overflow in `node_min_byte_len` of oniguruma.
@wader 5e159b34b179417e3e0404108190a2ac7d65611c
## CLI changes
- Fix assertion failure when syntax error happens at the end of the query. @itchyny #3350
## Changes to existing functions
- Fix portability of `strptime/1` especially for Windows. @itchyny #3342
## Language changes
- Revert the change of `reduce`/`foreach` state variable in 1.8.0 (#3205).
This change was reverted due to serious performance regression. @itchyny #3349
## Documentation changes
- Add LICENSE notice of NetBSD's `strptime()` to COPYING. @itchyny #3344
## Build improvements
- Fix build on old Mac with old sed. @qianbinbin #3336
# 1.8.0
We are pleased to announce the release of version 1.8.0.
This release includes a number of improvements since the last version.
Note that some changes may introduce breaking changes to existing scripts,
so be sure to read the following information carefully.
Full commit log can be found at <https://github.com/jqlang/jq/compare/jq-1.7.1...jq-1.8.0>.
## Releasing
- Change the version number pattern to `1.X.Y` (`1.8.0` instead of `1.8`). @itchyny #2999
- Generate provenance attestations for release artifacts and docker image. @lectrical #3225
```sh
gh attestation verify --repo jqlang/jq jq-linux-amd64
gh attestation verify --repo jqlang/jq oci://ghcr.io/jqlang/jq:1.8.0
```
## Security fixes
- CVE-2024-23337: Fix signed integer overflow in `jvp_array_write` and `jvp_object_rehash`.
@itchyny de21386681c0df0104a99d9d09db23a9b2a78b1e
- The fix for this issue now limits the maximum size of arrays and objects to 536870912 (`2^29`) elements.
- CVE-2024-53427: Reject NaN with payload while parsing JSON.
@itchyny a09a4dfd55e6c24d04b35062ccfe4509748b1dd3
- The fix for this issue now drops support for NaN with payload in JSON (like `NaN123`).
Other JSON extensions like `NaN` and `Infinity` are still supported.
- CVE-2025-48060: Fix heap buffer overflow in `jv_string_vfmt`.
@itchyny c6e041699d8cd31b97375a2596217aff2cfca85b
- Fix use of uninitialized value in `check_literal`. @itchyny #3324
- Fix segmentation fault on `strftime/1`, `strflocaltime/1`. @itchyny #3271
- Fix unhandled overflow in `@base64d`. @emanuele6 #3080
## CLI changes
- Fix `--indent 0` implicitly enabling `--compact-output`. @amarshall @gbrlmarn @itchyny #3232
```sh
$ jq --indent 0 . <<< '{ "foo": ["hello", "world"] }'
{
"foo": [
"hello",
"world"
]
}
# Previously, this implied --compact-output, but now outputs with new lines.
```
- Improve error messages to show problematic position in the filter. @itchyny #3292
```sh
$ jq -n '1 + $foo + 2'
jq: error: $foo is not defined at <top-level>, line 1, column 5:
1 + $foo + 2
^^^^
jq: 1 compile error
```
- Include column number in parser and compiler error messages. @liviubobocu #3257
- Fix error message for string literal beginning with single quote. @mattmeyers #2964
```sh
$ jq .foo <<< "{'foo':'bar'}"
jq: parse error: Invalid string literal; expected ", but got ' at line 1, column 7
# Previously, the error message was Invalid numeric literal at line 1, column 7.
```
- Improve `JQ_COLORS` environment variable to support larger escapes like truecolor. @SArpnt #3282
```sh
JQ_COLORS="38;2;255;173;173:38;2;255;214;165:38;2;253;255;182:38;2;202;255;191:38;2;155;246;255:38;2;160;196;255:38;2;189;178;255:38;2;255;198;255" jq -nc '[null,false,true,42,{"a":"bc"}]'
```
- Add `--library-path` long option for `-L`. @thaliaarchi #3194
- Fix `--slurp --stream` when input has no trailing newline character. @itchyny #3279
- Fix `--indent` option to error for malformed values. @thaliaarchi #3195
- Fix option parsing of `--binary` on non-Windows platforms. @calestyo #3131
- Fix issue with `~/.jq` on Windows where `$HOME` is not set. @kirkoman #3114
- Fix broken non-Latin output in the command help on Windows. @itchyny #3299
- Increase the maximum parsing depth for JSON to 10000. @itchyny #3328
- Parse short options in order given. @thaliaarchi #3194
- Consistently reset color formatting. @thaliaarchi #3034
## New functions
- Add `trim/0`, `ltrim/0` and `rtrim/0` to trim leading and trailing white spaces. @wader #3056
```sh
$ jq -n '" hello " | trim, ltrim, rtrim'
"hello"
"hello "
" hello"
```
- Add `trimstr/1` to trim string from both ends. @gbrlmarn #3319
```sh
$ jq -n '"foobarfoo" | trimstr("foo")'
"bar"
```
- Add `add/1`. Generator variant of `add/0`. @myaaaaaaaaa #3144
```sh
$ jq -c '.sum = add(.xs[])' <<< '{"xs":[1,2,3]}'
{"xs":[1,2,3],"sum":6}
```
- Add `skip/2` as the counterpart to `limit/2`. @itchyny #3181
```sh
$ jq -nc '[1,2,3,4,5] | [skip(2; .[])]'
[3,4,5]
```
- Add `toboolean/0` to convert strings to booleans. @brahmlower @itchyny #2098
```sh
$ jq -n '"true", "false" | toboolean'
true
false
```
- Add `@urid` format. Reverse of `@uri`. @fmgornick #3161
```sh
$ jq -Rr '@urid' <<< '%6a%71'
jq
```
## Changes to existing functions
- Use code point index for `indices/1`, `index/1` and `rindex/1`. @wader #3065
- This is a breaking change. Use `utf8bytelength/0` to get byte index.
- Improve `tonumber/0` performance and rejects numbers with leading or trailing
white spaces. @itchyny @thaliaarchi #3055 #3195
- This is a breaking change. Use `trim/0` to remove leading and trailing white spaces.
- Populate timezone data when formatting time. This fixes timezone name in
`strftime/1`, `strflocaltime/1` for DST. @marcin-serwin @sihde #3203 #3264 #3323
- Preserve numerical precision on unary negation, `abs/0`, `length/0`. @itchyny #3242 #3275
- Make `last(empty)` yield no output values like `first(empty)`. @itchyny #3179
- Make `ltrimstr/1` and `rtrimstr/1` error for non-string inputs. @emanuele6 #2969
- Make `limit/2` error for negative count. @itchyny #3181
- Fix `mktime/0` overflow and allow fewer elements in date-time representation array. @emanuele6 #3070 #3162
- Fix non-matched optional capture group. @wader #3238
- Provide `strptime/1` on all systems. @george-hopkins @fdellwing #3008 #3094
- Fix `_WIN32` port of `strptime`. @emanuele6 #3071
- Improve `bsearch/1` performance by implementing in C. @eloycoto #2945
- Improve `unique/0` and `unique_by/1` performance. @itchyny @emanuele6 #3254 #3304
- Fix error messages including long string literal not to break Unicode characters. @itchyny #3249
- Remove `pow10/0` as it has been deprecated in glibc 2.27. Use `exp10/0` instead. @itchyny #3059
- Remove private (and undocumented) `_nwise` filter. @itchyny #3260
## Language changes
- Fix precedence of binding syntax against unary and binary operators.
Also, allow some expressions as object values. @itchyny #3053 #3326
- This is a breaking change that may change the output of filters with binding syntax as follows.
```sh
$ jq -nc '[-1 as $x | 1,$x]'
[1,-1] # previously, [-1,-1]
$ jq -nc '1 | . + 2 as $x | -$x'
-3 # previously, -1
$ jq -nc '{x: 1 + 2, y: false or true, z: null // 3}'
{"x":3,"y":true,"z":3} # previously, syntax error
```
- Support Tcl-style multiline comments. @emanuele6 #2989
```sh
#!/bin/sh --
# Can be use to do shebang scripts.
# Next line will be seen as a comment be of the trailing backslash. \
exec jq ...
# this jq expression will result in [1]
[
1,
# \
2
]
```
- Fix `foreach` not to break init backtracking with `DUPN`. @kanwren #3266
```sh
$ jq -n '[1, 2] | foreach .[] as $x (0, 1; . + $x)'
1
3
2
4
```
- Fix `reduce`/`foreach` state variable should not be reset each iteration. @itchyny #3205
```sh
$ jq -n 'reduce range(5) as $x (0; .+$x | select($x!=2))'
8
$ jq -nc '[foreach range(5) as $x (0; .+$x | select($x!=2); [$x,.])]'
[[0,0],[1,1],[3,4],[4,8]]
```
- Support CRLF line breaks in filters. @itchyny #3274
- Improve performance of repeating strings. @itchyny #3272
## Documentation changes
- Switch the homepage to custom domain [jqlang.org](https://jqlang.org). @itchyny @owenthereal #3243
- Make latest release instead of development version the default manual. @wader #3130
- Add opengraph meta tags. @wader #3247
- Replace jqplay.org with play.jqlang.org @owenthereal #3265
- Add missing line from decNumber's licence to `COPYING`. @emanuele6 #3106
- Various document improvements. @tsibley #3322, @itchyny #3240, @jhcarl0814 #3239,
@01mf02 #3184, @thaliaarchi #3199, @NathanBaulch #3173, @cjlarose #3164,
@sheepster1 #3105, #3103, @kishoreinvits #3042, @jbrains #3035, @thalman #3033,
@SOF3 #3017, @wader #3015, @wllm-rbnt #3002
## Build improvements
- Fix build with GCC 15 (C23). @emanuele6 #3209
- Fix build with `-Woverlength-strings` @emanuele6 #3019
- Fix compiler warning `type-limits` in `found_string`. @itchyny #3263
- Fix compiler error in `jv_dtoa.c` and `builtin.c`. @UlrichEckhardt #3036
- Fix warning: a function definition without a prototype is deprecated. @itchyny #3259
- Define `_BSD_SOURCE` in `builtin.c` for OpenBSD support. @itchyny #3278
- Define empty `JV_{,V}PRINTF_LIKE` macros if `__GNUC__` is not defined. @emanuele6 #3160
- Avoid `ctype.h` abuse: cast `char` to `unsigned char` first. @riastradh #3152
- Remove multiple calls to free when successively calling `jq_reset`. @Sameesunkaria #3134
- Enable IBM z/OS support. @sachintu47 #3277
- Fix insecure `RUNPATH`. @orbea #3212
- Avoid zero-length `calloc`. @itchyny #3280
- Move oniguruma and decNumber to vendor directory. @itchyny #3234
## Test improvements
- Run tests in C locale. @emanuele6 #3039
- Improve reliability of `NO_COLOR` tests. @dag-erling #3188
- Improve `shtest` not to fail if `JQ_COLORS` and `NO_COLOR` are already set. @SArpnt #3283
- Refactor constant folding tests. @itchyny #3233
- Make tests pass when `--disable-decnum`. @nicowilliams 6d02d53f515bf1314d644eee93ba30b0d11c7d2b
- Disable Valgrind by default during testing. @itchyny #3269
# 1.7.1
## Security
- CVE-2023-50246: Fix heap buffer overflow in jvp\_literal\_number\_literal
- CVE-2023-50268: fix stack-buffer-overflow if comparing nan with payload
## CLI changes
- Make the default background color more suitable for bright backgrounds. @mjarosie @taoky @nicowilliams @itchyny #2904
- Allow passing the inline jq script after `--`. @emanuele6 #2919
- Restrict systems operations on OpenBSD and remove unused `mkstemp`. @klemensn #2934
- Fix possible uninitialised value dereference if `jq_init()` fails. @emanuele6 @nicowilliams #2935
## Language changes
- Simplify `paths/0` and `paths/1`. @asheiduk @emanuele6 #2946
- Reject `U+001F` in string literals. @torsten-schenk @itchyny @wader #2911
- Remove unused nref accumulator in `block_bind_library`. @emanuele6 #2914
- Remove a bunch of unused variables, and useless assignments. @emanuele6 #2914
- main.c: Remove unused EXIT\_STATUS\_EXACT option. @emanuele6 #2915
- Actually use the number correctly casted from double to int as index. @emanuele6 #2916
- src/builtin.c: remove unnecessary jv\_copy-s in type\_error/type\_error2. @emanuele6 #2937
- Remove undefined behavior caught by LLVM 10 UBSAN. @Gaelan @emanuele6 #2926
- Convert decnum to binary64 (double) instead of decimal64. This makes jq behave like the JSON specification suggests and more similar to other languages. @wader @leonid-s-usov #2949
- Fix memory leaks on invalid input for `ltrimstr/1` and `rtrimstr/1`. @emanuele6 #2977
- Fix memory leak on failed get for `setpath/2`. @emanuele6 #2970
- Fix nan from json parsing also for nans with payload that start with 'n'. @emanuele6 #2985
- Allow carriage return characters in comments. @emanuele6 #2942 #2984
## Documentation changes
- Generate links in the man page. @emanuele6 #2931
- Standardize arch types to AMD64 & ARM64 from index page download dropdown. @owenthereal #2884
## libjq
- Add extern C for C++. @rockwotj #2953
## Build and test changes
- Fix incorrect syntax for checksum file. @kamontat @wader #2899
- Remove `-dirty` version suffix for windows release build. @itchyny #2888
- Make use of `od` in tests more compatible. @nabijaczleweli @emanuele6 @nicowilliams #2922
- Add dependabot. @yeikel #2889
- Extend fuzzing setup to fuzz parser and JSON serializer. @DavidKorczynski @emanuele6 #2952
- Keep releasing executables with legacy names. @itchyny #2951
# 1.7
After a five year hiatus we're back with a GitHub organization, with new admins and new maintainers who have brought a great deal of energy to make a long-awaited and long-needed new release. We're very grateful for all the new owners, admins, and maintainers. Special thanks go to Owen Ou (@owenthereal) for pushing to set up a new GitHub organization for jq, Stephen Dolan (@stedolan) for transferring the jq repository to the new organization, @itchyny for doing a great deal of work to get the release done, Mattias Wadman (@wader) and Emanuele Torre (@emanuele6) for many PRs and code reviews. Many others also contributed PRs, issues, and code reviews as well, and you can find their contributions in the Git log and on the [closed issues and PRs page](https://github.com/jqlang/jq/issues?q=is%3Aclosed+sort%3Aupdated-desc).
@@ -214,7 +639,7 @@ Full commit log can be found at <https://github.com/jqlang/jq/compare/jq-1.6...j
- Fix `contains/1` to handle strings with NUL. @nicowilliams 61cd6db
- Fix `stderr/0` to output raw text without any decoration. @itchyny #2751
- Fix `nth/2` to emit empty on index out of range. @itchyny #2674
- Fix `implode` to not assert and instead replace invalid unicode codepoints. @wader #2646
- Fix `implode` to not assert and instead replace invalid Unicode codepoints. @wader #2646
- Fix `indices/1` and `rindex/1` in case of overlapping matches in strings. @emanuele6 #2718
- Fix `sub/3` to resolve issues involving global search-and-replace (gsub) operations. @pkoppstein #2641
- Fix `significand/0`, `gamma/0` and `drem/2` to be available on macOS. @itchyny #2756 #2775
+29 -7
View File
@@ -1,22 +1,38 @@
# jq
`jq` is a lightweight and flexible command-line JSON processor akin to`sed`,`awk`,`grep`, and friends for JSON data. It's written in portable C and has zero runtime dependencies, allowing you to easily slice, filter, map, and transform structured data.
`jq` is a lightweight and flexible command-line JSON processor akin to `sed`,`awk`,`grep`, and friends for JSON data. It's written in portable C and has zero runtime dependencies, allowing you to easily slice, filter, map, and transform structured data.
## Documentation
- **Official Documentation**: [jqlang.github.io/jq](https://jqlang.github.io/jq)
- **Try jq Online**: [jqplay.org](https://jqplay.org)
- **Official Documentation**: [jqlang.org](https://jqlang.org)
- **Try jq Online**: [play.jqlang.org](https://play.jqlang.org)
## Installation
### Prebuilt Binaries
Download the latest releases from the [GitHub release page](https://github.com/jqlang/jq/releases).
The platform-specific assets are standalone executables, not archives. On macOS and Linux,
rename the downloaded file to `jq` and make it executable with `chmod +x jq`.
### Docker Image
Pull the [jq image](https://github.com/jqlang/jq/pkgs/container/jq) to start quickly with Docker.
#### Run with Docker
##### Example: Extracting the version from a `package.json` file
```bash
docker run --rm -i ghcr.io/jqlang/jq:latest < package.json '.version'
```
##### Example: Extracting the version from a `package.json` file with a mounted volume
```bash
docker run --rm -i -v "$PWD:$PWD" -w "$PWD" ghcr.io/jqlang/jq:latest '.version' package.json
```
### Building from source
#### Dependencies
@@ -29,17 +45,20 @@ Pull the [jq image](https://github.com/jqlang/jq/pkgs/container/jq) to start qui
#### Instructions
```console
git submodule update --init # if building from git to get oniguruma
autoreconf -i # if building from git
git submodule update --init # if building from git to get oniguruma
autoreconf -i # if building from git
./configure --with-oniguruma=builtin
make clean # if upgrading from a version previously built from source
make -j8
make check
sudo make install
sudo ldconfig # on Linux, if jq cannot find libjq.so
```
Build a statically linked version:
```console
make clean
make LDFLAGS=-all-static
```
@@ -47,7 +66,7 @@ If you're not using the latest git version but instead building a released tarba
##### Cross-Compilation
For details on cross-compliation, check out the [GitHub Actions file](.github/workflows/ci.yml) and the [cross-compliation wiki page](https://github.com/jqlang/jq/wiki/Cross-compilation).
For details on cross-compilation, check out the [GitHub Actions file](.github/workflows/ci.yml) and the [cross-compilation wiki page](https://github.com/jqlang/jq/wiki/Cross-compilation).
## Community & Support
@@ -57,4 +76,7 @@ For details on cross-compliation, check out the [GitHub Actions file](.github/wo
## License
`jq` is released under the [MIT License](COPYING).
`jq` is released under the [MIT License](COPYING). `jq`'s documentation is
licensed under the [Creative Commons CC BY 3.0](COPYING).
`jq` uses parts of the open source C library "decNumber", which is distributed
under [ICU License](COPYING)
+1 -1
View File
@@ -3,7 +3,7 @@
# Defaults
set -e
oniguruma='6.9.3'
oniguruma='6.9.10'
unset CFLAGS
unset CXXFLAGS
+2 -2
View File
@@ -2,8 +2,8 @@ dnl AC_CHECK_MATH_FUNC(func)
AC_DEFUN([AC_CHECK_MATH_FUNC], [
AC_LANG(C)
AC_CHECK_LIB([m],[$1],[
eval "ac_tr_func=HAVE_[]upcase($1)"
AC_DEFINE_UNQUOTED($ac_tr_func)
m4_define([ac_tr_func], [HAVE_]m4_toupper($1))
AC_DEFINE(ac_tr_func, 1, [Define if you have the $1 math function.])
],[
])
])
+3 -3
View File
@@ -42,7 +42,7 @@ case "$ac_res" in
yes)
eval "ac_cv_func_$1=yes"
eval "LIB_$1="
AC_DEFINE_UNQUOTED($ac_tr_func)
AC_DEFINE_UNQUOTED($ac_tr_func, 1, [Define if the $1 function is available.])
AC_MSG_RESULT([yes])
;;
no)
@@ -53,8 +53,8 @@ case "$ac_res" in
*)
eval "ac_cv_func_$1=yes"
eval "ac_cv_lib_`echo "$ac_res" | sed 's/-l//'`=yes"
AC_DEFINE_UNQUOTED($ac_tr_func)
AC_DEFINE_UNQUOTED($ac_tr_lib)
AC_DEFINE_UNQUOTED($ac_tr_func, 1, [Define if you have the $1 function.])
AC_DEFINE_UNQUOTED($ac_tr_lib, 1, [Define if you have the $2 library.])
AC_MSG_RESULT([yes, in $ac_res])
;;
esac
+27 -20
View File
@@ -1,11 +1,17 @@
m4_define([jq_version], m4_esyscmd_s([scripts/version])))
AC_INIT([jq],[jq_version],[https://github.com/jqlang/jq/issues],[jq],[https://jqlang.github.io/jq])
AC_INIT([jq],[jq_version],[https://github.com/jqlang/jq/issues],[jq],[https://jqlang.org])
dnl Created autoconf implementation thompson@dtosolutions, 26NOV12
AC_PREREQ([2.65])
AC_CONFIG_AUX_DIR([config])
AC_USE_SYSTEM_EXTENSIONS
dnl Prefer GNU make on Solaris where /usr/bin/make is not suitable
AS_IF([test -z "$MAKE"], [
AS_CASE(["`uname -s`"], [SunOS], [MAKE=/usr/gnu/bin/make])
])
AM_INIT_AUTOMAKE([1.11.2 subdir-objects parallel-tests foreign -Wall])
AM_SILENT_RULES([yes])
AM_PROG_AR
@@ -39,26 +45,19 @@ if test "$USE_MAINTAINER_MODE" = yes; then
AC_CHECK_PROGS(LEX, flex lex)
fi
dnl Check for valgrind
AC_CHECK_PROGS(valgrind_cmd, valgrind)
if test "x$valgrind_cmd" = "x" ; then
AC_MSG_WARN([valgrind is required to test jq.])
fi
AC_CHECK_FUNCS(memmem)
AC_CHECK_FUNCS(mkstemp)
AC_CHECK_HEADER("sys/cygwin.h", [have_cygwin=1;])
AC_CHECK_HEADER("shlwapi.h",[have_shlwapi=1;])
AM_CONDITIONAL([WIN32], [test \( "x$have_shlwapi" = x1 \) -a ! \( "x$have_cygwin" = x1 \)])
AM_CONDITIONAL([WIN32], [test "x$have_shlwapi" = x1 && test ! "x$have_cygwin" = x1])
dnl Running tests with Valgrind is slow. It is faster to iterate on
dnl code without Valgrind until tests pass, then enable Valgrind and
dnl fix leaks.
AC_ARG_ENABLE([valgrind],
AS_HELP_STRING([--disable-valgrind],[do not run tests under Valgrind]))
AS_HELP_STRING([--enable-valgrind],[enable Valgrind during testing]))
dnl Running tests with Valgrind is slow; address sanitizer (ASAN) is
dnl faster.
dnl Address sanitizer (ASan)
AC_ARG_ENABLE([asan],
AS_HELP_STRING([--enable-asan],[enable address sanitizer]))
@@ -112,10 +111,10 @@ AC_ARG_ENABLE([decnum],
AS_HELP_STRING([--disable-decnum],[disable decnum support]))
AS_IF([test "x$enable_decnum" != "xno"],[
AC_DEFINE([USE_DECNUM],1)
AC_DEFINE([USE_DECNUM], 1, [Define to enable decnum support.])
])
AM_CONDITIONAL([ENABLE_VALGRIND], [test "x$enable_valgrind" != xno])
AM_CONDITIONAL([ENABLE_VALGRIND], [test "x$enable_valgrind" = xyes])
AM_CONDITIONAL([ENABLE_ASAN], [test "x$enable_asan" = xyes])
AM_CONDITIONAL([ENABLE_UBSAN], [test "x$enable_ubsan" = xyes])
AM_CONDITIONAL([ENABLE_GCOV], [test "x$enable_gcov" = xyes])
@@ -126,7 +125,7 @@ AM_CONDITIONAL([ENABLE_ALL_STATIC], [test "x$enable_all_static" = xyes])
dnl Find pthread, if we have it. We do this first because we may set -pthread on CFLAGS
dnl which can cause various macros to be defined (__REENTRANT on Darwin, for example)
AX_PTHREAD([
AC_DEFINE([HAVE_PTHREAD], [1])
AC_DEFINE([HAVE_PTHREAD], [1], [Define to enable POSIX threads support.])
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
CC="$PTHREAD_CC"
@@ -150,6 +149,8 @@ AC_CHECK_MEMBER([struct tm.tm_gmtoff], [AC_DEFINE([HAVE_TM_TM_GMT_OFF],1,[Define
AC_CHECK_MEMBER([struct tm.__tm_gmtoff], [AC_DEFINE([HAVE_TM___TM_GMT_OFF],1,[Define to 1 if the system has the __tm_gmt_off field in struct tm])],
[], [[#include <time.h>]])
AC_FIND_FUNC([setlocale], [c], [#include <locale.h>], [0,0])
AC_FIND_FUNC([arc4random], [c], [#include <stdlib.h>], [])
AC_FIND_FUNC([getentropy], [c], [#include <unistd.h>], [0, 0])
dnl Figure out if we have the pthread functions we actually need
AC_FIND_FUNC_NO_LIBS([pthread_key_create], [], [#include <pthread.h>], [NULL, NULL])
@@ -202,7 +203,6 @@ AC_CHECK_MATH_FUNC(lgamma_r)
AC_CHECK_MATH_FUNC(nearbyint)
AC_CHECK_MATH_FUNC(nextafter)
AC_CHECK_MATH_FUNC(nexttoward)
AC_CHECK_MATH_FUNC(pow10) # Not available with glibc version >= 2.27
AC_CHECK_MATH_FUNC(pow)
AC_CHECK_MATH_FUNC(remainder)
AC_CHECK_MATH_FUNC(rint)
@@ -276,10 +276,10 @@ AS_IF([test "x$with_oniguruma" != xno], [
AC_MSG_NOTICE([Oniguruma was not found. Will use the packaged oniguruma.])
])
])
AS_IF([test "x$build_oniguruma" = xyes -a -f "${srcdir}/modules/oniguruma/configure.ac" ], [
onig_CFLAGS="-I${srcdir}/modules/oniguruma/src"
onig_LDFLAGS="-L${srcdir}/modules/oniguruma/src -Wl,-rpath,${libdir}"
AC_CONFIG_SUBDIRS([modules/oniguruma])
AS_IF([test "x$build_oniguruma" = xyes && test -f "${srcdir}/vendor/oniguruma/configure.ac" ], [
onig_CFLAGS="-I${srcdir}/vendor/oniguruma/src"
onig_LDFLAGS="-L${srcdir}/vendor/oniguruma/src -Wl,-rpath,${libdir}"
AC_CONFIG_SUBDIRS([vendor/oniguruma])
AC_DEFINE([HAVE_LIBONIG],1,[Define to 1 if the system includes libonig])
])
CFLAGS="$save_CFLAGS"
@@ -290,7 +290,14 @@ AC_SUBST(onig_LDFLAGS)
AM_CONDITIONAL([BUILD_ONIGURUMA], [test "x$build_oniguruma" = xyes])
AM_CONDITIONAL([WITH_ONIGURUMA], [test "x$with_oniguruma" != xno])
AC_SUBST([BUNDLER], ["$bundle_cmd"])
dnl On Solaris, strptime clears the tm structure before parsing. This breaks the
dnl sentinel logic in builtin.c, which then incorrectly assumes that strptime set
dnl tm_wday and tm_yday. Defining _STRPTIME_DONTZERO disables that behavior.
AS_IF([test "x`uname -s 2>/dev/null`" = "xSunOS"], [
CPPFLAGS="$CPPFLAGS -D_STRPTIME_DONTZERO"
])
AC_CONFIG_MACRO_DIRS([config/m4 m4])
AC_CONFIG_FILES([Makefile libjq.pc])
+473 -314
View File
@@ -16,19 +16,19 @@
"default": {
"attrs": {
"hashes": [
"sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04",
"sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"
"sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11",
"sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373"
],
"markers": "python_version >= '3.7'",
"version": "==23.1.0"
"markers": "python_version >= '3.9'",
"version": "==25.4.0"
},
"importlib-metadata": {
"hashes": [
"sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb",
"sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"
"sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000",
"sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"
],
"markers": "python_version < '3.10'",
"version": "==6.8.0"
"markers": "python_version >= '3.9'",
"version": "==8.7.0"
},
"importlib-resources": {
"hashes": [
@@ -40,189 +40,288 @@
},
"jinja2": {
"hashes": [
"sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852",
"sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"
"sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d",
"sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"
],
"index": "pypi",
"version": "==3.1.2"
"markers": "python_version >= '3.7'",
"version": "==3.1.6"
},
"jsonschema": {
"hashes": [
"sha256:971be834317c22daaa9132340a51c01b50910724082c2c1a2ac87eeec153a3fe",
"sha256:fb3642735399fa958c0d2aad7057901554596c63349f4f6b283c493cf692a25d"
"sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326",
"sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"
],
"index": "pypi",
"version": "==4.18.4"
"markers": "python_version >= '3.10'",
"version": "==4.26.0"
},
"jsonschema-specifications": {
"hashes": [
"sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1",
"sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"
"sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe",
"sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"
],
"markers": "python_version >= '3.8'",
"version": "==2023.7.1"
"markers": "python_version >= '3.9'",
"version": "==2025.9.1"
},
"lxml": {
"hashes": [
"sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3",
"sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d",
"sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a",
"sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120",
"sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305",
"sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287",
"sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23",
"sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52",
"sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f",
"sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4",
"sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584",
"sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f",
"sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693",
"sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef",
"sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5",
"sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02",
"sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc",
"sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7",
"sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da",
"sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a",
"sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40",
"sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8",
"sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd",
"sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601",
"sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c",
"sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be",
"sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2",
"sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c",
"sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129",
"sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc",
"sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2",
"sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1",
"sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7",
"sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d",
"sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477",
"sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d",
"sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e",
"sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7",
"sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2",
"sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574",
"sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf",
"sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b",
"sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98",
"sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12",
"sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42",
"sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35",
"sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d",
"sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce",
"sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d",
"sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f",
"sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db",
"sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4",
"sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694",
"sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac",
"sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2",
"sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7",
"sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96",
"sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d",
"sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b",
"sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a",
"sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13",
"sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340",
"sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6",
"sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458",
"sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c",
"sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c",
"sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9",
"sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432",
"sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991",
"sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69",
"sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf",
"sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb",
"sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b",
"sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833",
"sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76",
"sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85",
"sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e",
"sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50",
"sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8",
"sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4",
"sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b",
"sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5",
"sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190",
"sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7",
"sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa",
"sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0",
"sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9",
"sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0",
"sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b",
"sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5",
"sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7",
"sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"
"sha256:032a0a97eed428bd143c75a11118238546424ceb2fa311cca5f073aa44658dc4",
"sha256:05f5bce9af14fd1506997594bd81cee6d9c6b58ea80a39c058327aa6371ed9e9",
"sha256:0794e04ba343852c6d78e996c58ef4b8e579b4ecc72f8df0d4058bf843b4c96e",
"sha256:0ab2467e405e748d93495fb5568e74044802b8d3ff2b2a1607c3f78c6e982de5",
"sha256:0bf5a3e397df2ec4258eb5eea4c1ac6cf013ca1abd04a176903bff20a70021fe",
"sha256:0c0710ac085a157b593c38fbcacd950f15c4afa8e2057527185875ab302752bc",
"sha256:0dee106e9aa97fb00541b1ed7827070564d0549c3d3fba8920e6b20fd980f748",
"sha256:0f17d83c48ee9dfd96abae3ac3e2108c76d2fc86ce96355e37b8da9f7f4ecc08",
"sha256:0feebef8d0521188d0157f758356072e840173aa61ca45b8b3f87959ac283dd5",
"sha256:13a620a3fcc20023f9e6ed5c383e00e826f1c2d5db554df2f67240760f9118e8",
"sha256:13d22c0d57355366b393936acf6b98a5e0edeadddd3fccbc6a846c50a76b8741",
"sha256:160fcf381f76c3aeac28a756bec44f48942a8f7245a87aa28e3a523b4d90cd87",
"sha256:16148acd77ed1d8836a56db883af2f5eed720f9723088110b16a0d08582130a6",
"sha256:170773d8a3cdc76259065523ddd978c44f9806e28605f08812e8f86783e44ac6",
"sha256:18293f8a8d8b6a8e71ef37706b659e3846a4261232158167b1ddf35f6994f633",
"sha256:18a4db52b5a7b53a3540b0b0f4123319334621ee8083d496de314d0bf06ff59a",
"sha256:1a635e837b50a1819bebfedaac5916498ea024120969da8790500148fb0a894d",
"sha256:1aeca87830c4fe649dcf93fe2b059525b71c72587f21be4ae4af7103082a79fa",
"sha256:1b7c37339d7e75cab9a123a04248e243cefefb302ad6db566ea0c77cbcde421e",
"sha256:1beb0f9909b26cee938df9ba56b15252a84429b1fc30ce6fca161390b9789a70",
"sha256:20384c2bbcbf87180c8c61eb60869699c1ec0cd09b62cfd13804022d860b0867",
"sha256:20428910dae17a1a93152a3ff2c0441d2f4932992c0797d65651dd0561f1792f",
"sha256:207dfc3d47cf0e575e643bbc140dacc8863b39abaa1e5307cd64c7f2365b8a12",
"sha256:209c3ccbfe35a04ac6d24f0611f9d1cbf8025d49991b14acd935236234d6c156",
"sha256:2123e5aa075ac20d23c7af489255efd129cbfe190dbe88fd42598cc9df3199b6",
"sha256:21402998e4b78e7cce237d2788841aaa21ac9a4d1574d04dc2d12ee41ae807b5",
"sha256:2221e88679d1351e9a40aaee54bc65679b9795bbd0160bc3d5e36b163344eb75",
"sha256:22eec57e26c418cde02c051ce9914a365e52a7f135a565c6f0480242aeebab48",
"sha256:23c366231259cd75ad06495174701afb3fcb36a92917fa47de2d1f1bd9d95739",
"sha256:25f4118c438f96bb466e83108506d03d5c31b1bd2387e83e5b070bda6ded9c37",
"sha256:28a23fefdb345b2d4d0ff2860571b5ff9a89a28b6a120f720e8fb0324d346626",
"sha256:290f66b97ede0e552e1cb44a0fd8a74f9753ee635b50830a0b122fb72788d015",
"sha256:2b9b1325ca1c2a9a2dbb6eb913ae563313f2082ae60b03210f7e83ee80712274",
"sha256:2bec13085dc8ef48a3fe62f7dfcacfeda2c785cdf19cc8eeda2bb9ed081da165",
"sha256:2cae5d5c90a62d9139c512a0cb1aad1d182b022b5740daea2617eb5bf7fc658e",
"sha256:2e01125896585139453cab8cb235893644d8815d7509520da95ae3ee8d1c1f79",
"sha256:2e62c569ec7531b679b184cbfe335c501c1d13c4b363560013019962eb630e6d",
"sha256:2f5b2a2b9811b853b39bfa41367c6d78747b8e3e80e07fc5a24aae295c1a4d7d",
"sha256:302f72413251c03f671e063c9414bed5dc8c927069e5abb69245521e51a4e81b",
"sha256:32a409be3190b088f960ac92bfedfbef2f86c49ff940765e1548177592d20026",
"sha256:33cadd956b667997e4de1635fce9541f2e8ede2038fcde8cf55aa14d571d1bad",
"sha256:379f8a75cf6eb7eef0af074b55f49ab73b868388a98de14646abcdfa4564bb11",
"sha256:3847e71a78cbbc1aff955dbbbaf2fff12153f611d3162c5beaa3395636cbc2f9",
"sha256:38fc4e4e4e084e0bd491949482527d406788045c546d4f8789e93fc527b91385",
"sha256:3a27ac6c780c8b8a1cd231b58407634cafc1c4cc28cd6c7141362df0f36351e7",
"sha256:3a48093cdb058a93af842ede9703520e810b05dcd0fc6d7190a06376c3bfb6bd",
"sha256:3e42265103fb385d8642a78672edf376c6f7e1d3598a7a4f9cb1278f2f6b5f6f",
"sha256:3e9a00d1c2c30936f7add097c41afc5da6556c580909104aafd382cac92a855c",
"sha256:40983eabefd13da003e68170928c7acc011f0d095eefce5871a3c71c9385fb9a",
"sha256:40bcbd9f94166ffe925811e730607385cec959f42fb1bb7dad83748680465221",
"sha256:41096ec0740a58dad03d3ae0c7486d306d20becefb13ceb1649835ab3eb64167",
"sha256:415e3a115c0d510e329020012834d1c0aa1c581ee53a218603e38abbc1dea70a",
"sha256:41e2d428110b408e963b6fb18f9bbf1f5c027b56bd4b498d54556476c0aeb1c3",
"sha256:424aa5657141d306ba9ad1baab4b2c0a0719040075ee6c66aee9bb2dea2b5054",
"sha256:42632b4024ab24a6b488f559ac851312509888b6b80ae2aa11cf29a646a0d245",
"sha256:45222d94ddd511536f3b2f7d9deae3b2339b4ce0f075f1ca25703b07cad9dd21",
"sha256:4736e6c87e603146d8949d8501da621ad20c31015060d3fcf95ace2859f3e3e6",
"sha256:48542c9acba9ff9450bd18d871d2c2c8787fdb283572b623d206f1b927cd7d9e",
"sha256:49fbc2682a9306135b7ec49e93f97f9c26689b9b7f96ed2742d8d6497e994d13",
"sha256:4a579dfb9c835f8ab47f4b8ed33440cbc75b806b73297208e6ec2a33e903740b",
"sha256:4b061064b4a2fe8598a466d723d43dbcd5a610a5d5cfe02fb6226f5c17349f75",
"sha256:4e11e885e0704be185867fcf71b904d8f65d7d6877bc121f69870b0d0479ba7b",
"sha256:4f4db7c7e954d289d71878938348b3d91b904a3e8210a11939359fb758a58e7d",
"sha256:527195c188d7d0af748cd48d220ab8cdc5cb99be3d49ac4d9be7324d8abf9bc0",
"sha256:53258656846f5c48996b882fb4b135885e088a3ad3d96b4bc0530f95124d1f69",
"sha256:545ccc14fb05485f48b4439ec35beb16d5b5280eb6c81c658bd4707a2a119414",
"sha256:5609efdb0d3c95499c00046bc53648b3482ec2175b5503d6e611b3f0555dc71d",
"sha256:5929d9df5e7e3379183be0e21f7d559618a5b61cb63280df6164019242e337ed",
"sha256:5a143e6207579de8baeded4eaac9134413200359f1969d636f0bfb98ee8c3c8f",
"sha256:5a721a98c649855963811b59b55755b30566e7f7fc40bdc9803d66dee9f811cf",
"sha256:5cffe18571ccc51d742cd08cbb3f8b756de9311d18c7ea98f5d92f37b8fb60c2",
"sha256:5d12669a2c419b0e8dc423d23dea24bb82f6f9cb829f32e04674b0ba40322a7c",
"sha256:5d582042c69857c364e8153de6e18e0da9b7b515a6a8113caf69a6ec8e0520f2",
"sha256:61116cec57ed69aebc70f37a545eec095339bb829efbdabcfb97c51e9536e158",
"sha256:611a51e61c92f62345a50b0035df6fc0d678f9299f33728826d831598862f59d",
"sha256:623c8799c17128753c65699f1c3aa32402657393a9ad6db09ed8b98ddf76611d",
"sha256:6374e9e382e5a98c9c5e66d41b357b470da1c54bce30f17f9dc4bcc58436cc1c",
"sha256:66299564c046bc7e0cc5de5106601eae907e9fa5904cd68a323380a8502f7861",
"sha256:69cafd61aea04ebb3502c93c2aaa568b12931ca0802231e0b5de76bf8b6e74bd",
"sha256:6a406d0b3cb207b0fa460ed4dc93e866f44f105da0169361cb18ff998a44c7f0",
"sha256:6ba4fe5bfbef6811a8e49b3719cde373ad399006c0c1ac184b7297116ecbba5d",
"sha256:6cd11e7550d89e551a87dcec30f04b1fca32e86b68708aa01a4daa455d8605e5",
"sha256:6e1eb8a4cbffd5553680ad96be6680e364710656eced73d1dc90ec489df599a3",
"sha256:6ea2f13dce778ca072ccee598bca46a092ce192e8fd907b6c1f0e52c800529a0",
"sha256:71532ebf30be0048a45559b4fab15333fbaaf9042f658e878d918ecd0cf09805",
"sha256:73fc05988ed20809450474ba760a87c8ad4e455fc09783c02195e56ec634b41a",
"sha256:75cc6569e86be5785b6188ef1642670c6adbc984e81ec35e224842ecd9eefcc8",
"sha256:773062aec2f2e56b2b22d37054123f0de8a22a4688a0c3376c3fe42685f975cf",
"sha256:7ae4949f212a53b007dbc355884fda122545c5764a54256c9217e419a62a6559",
"sha256:7b2bb7d703bed7ac893bf7f40d97b5d9279d35d2ce460624ca28929eab0d5a3d",
"sha256:7d0f5976aa2701996f759b30172925829867547bb073af0ae67d1307a0f0262c",
"sha256:7d5a748d12dd9b535e0a130f60dae9ddf0adafbabe61e7864f55c7436c84547a",
"sha256:7dd624c1eaa629ad44b59a1a0145fdf2d67895592dce94c9358b938b3d075e65",
"sha256:7f75b9b9fec2a9c6b18095c81865580e795b1441c429e42d22fcc82a77f40039",
"sha256:83e3a51e7933db700a0da0db31849db3a24022d9970da9bb73001e1d0326fd92",
"sha256:8499d464de86fab0f102313cce32a9bed9ab1f06ec813cf025cb790964fbb765",
"sha256:869dfcd4d381cb0ea87085cc4f011b9171b494ef21e76ad8665f6d5e2d1dc8a1",
"sha256:8753b8d51dbc86fd335ee31fcf7f3658e9f5c016d4edfb23f76ad295f4b8c9d0",
"sha256:887c021d9a977cff89cb273047c1352997b772a8908a25c21836861f69b92be1",
"sha256:88e719b9437f148f7e1465df845c758dd1598618cbea3a2fd1e61a715542f2b2",
"sha256:8a330c0ee5fa318c7b5cbbaad882baeca3f570357e7eb25ab34bf31008150758",
"sha256:8db38ff3fb7aee7d6a82ae4da2eef1178656fe1216841fbd24870062a9d60473",
"sha256:8e49a646acfab83c68974f4aa1d0a2acca9e88d7d627ae0fc13201b14b76d310",
"sha256:909f4e927bb051f7740d6367285fc60cdcfdaf0258c2dba4ff5ba7eadadc250c",
"sha256:90f709b9accab6b2e4d14f5c8718203877a0486bcb3afd74d8b539ecd1e961d4",
"sha256:92d96586376fb79a33474797186bf993250152ee5c32650b67db78d54b92e6f3",
"sha256:93476b6514b373fc6ca67d26c442784f7807c86f00635bfe79f935c3eab2af17",
"sha256:97acecb11cbc411473f15b8d780df06d7a9f3a2aad9aca78364f56640c8fb70e",
"sha256:97ce49699d87ebf8aad631b55d65b33219a4f1bfefbbf5bff19dc9af160aeaf9",
"sha256:9bde9ae026a55b9a192078dfa6e27dd0ca4a050171ab6272e92f97b757dfdf48",
"sha256:9e67324961ac9bbe616cce5100514d2e34d88665aeb07071e8b16eac55d06d94",
"sha256:9efe56a68179f3adc4de41861c9358931db03837c48dd5e1c78077b84dd07f3a",
"sha256:a1932d7ce78a561367512c594fe66eac2b2ec9b9264cfd9b5f950622f4a116e2",
"sha256:a1cec0f99b9b914d39176347a93b7610dc09324491aee1cbc57cd291a41a1d55",
"sha256:a2e3f70673a1d5b82f38255f777d26cd855bf2092b1436c4867464a7892f9238",
"sha256:a43b3bdf11e477dc7770609d3477316f974354dfc8425d596f64f471cc8daf6e",
"sha256:a5c18810318303ce9afb3f95e2ddb54834f96fa699a8600433fd5a93dcf44c56",
"sha256:a7eb78ba28b187e1e9203a55c60fcf70df2d22cb205fe6d51b9383d6097419f0",
"sha256:aa633613ff907ea91b9b0489a1f0da1b8725d8c6ccec6b77e8a1c9c235044bb0",
"sha256:aa9fd1ee2a5dacfc41039ed49ffeeacfa75bafbd255b69f3b578e11897a0e623",
"sha256:ace1d2c83b2bd24db5940600541140e87a325e119cb32d5fa9ad720d7e76648e",
"sha256:b1cc980905221a5d8b3c476330730b3adb40ff80add71ffbdb6215ba055656f1",
"sha256:b37772102d44bb6628186accca3a121b1fa3a6b3d97518a8c29a5229ca4c0d0a",
"sha256:b3ff39654f0ce6ebd4db154211136dbe7e8157bcc3bed2344c87f32c7c6ecb6c",
"sha256:b477912f42c5c33405a10c759d22f80cf5af043ae02d95b9d8e5e5bc555739ed",
"sha256:b49638355ea3bebba70da783ccbc630fd72afa16bc46c54474bfa1f9a915bbc6",
"sha256:b4fc6b03b9d9d90557274f571ab30e7fbbfc527955536935d96f98b6817a86e4",
"sha256:b50343241eb69fd85f7791cf8bcc7b1c4729826b7d59ba2f6b27db29638fa745",
"sha256:bc8dd3d9c93e70c3df974a201ac2958b6d77b465d813c51d1f15fa8e645763ae",
"sha256:be5346653c0b0e34be96869ff9dbeba23860156f89a2896a64c64fb419260cb6",
"sha256:c00e26288784460885fe76e4d4b293573e0f791f52e6d60e27b42edf005922eb",
"sha256:c1b50797ac246bb2942a04b6c0f69af0667aba7cf7535f39bbb1b3208fd5d128",
"sha256:c34ca1dc41bd86d9ff830d5bdf4e4a752bba6c54f7d2707027ce0eabd36084c9",
"sha256:c55e71a9b1db1f107efb60da49c093689b74c5c31a708e5379e2fd9439d4fbb5",
"sha256:c581b1d68b3845fb86c6b2983e755b29bf001461c59fa411d2c26a911b6559a9",
"sha256:c59e4265608da6a041f54646ecc0c9ecdbb19aaf14c4c684bb6c2114998cc415",
"sha256:c5e7ce578aa8a80910a72a8ca0bbea3baae10100827249001999726a788456d8",
"sha256:c66f858b82497173f73366795fc6ee8171620e75a338506d6b2e7bc16f5fca11",
"sha256:c6c0c13128a32eb04a51357e56a094e13aa8e6d3d1884de2e9ae923f6915e1a8",
"sha256:c9389b3784b56c58d933b5e0aecdf28f901b073ff385358d8a7d40907f6e14b2",
"sha256:ca0ec532ad2f5ba1e5ec120ac157769c57f01855b3d8bf37213f5d88abd9ba0a",
"sha256:cad7617727a96d189bd6f979d0fadf765198c7934e85f4edaba9bf3ad919a300",
"sha256:cae82b5ca24b0c2beedb269f6e2a96f466acd926879ab00ae19f1a65cbf9ffb0",
"sha256:cc669256d28736f7f3a149df5c380c50ace2692ba3e62203d10656fade4a2145",
"sha256:ce1f220114959941170e22b8ad44279f6dee2dcef7591814d01ae805dc058889",
"sha256:cfb398886a7eb4c719161c3efcff2a1248febc53a4d8e5072d2d8a87fed84ac9",
"sha256:d077f21f4b16f0471353883748f126f62038760397c107bb9fad2ca94dc0dfb7",
"sha256:d0c5c362bc94f1929dc7e96e715bbe7bd17037f802e6d8f0d1545df9133c0559",
"sha256:d2765c18ce303149ee804b1f3dad11232726dd0a702d73a15cf19179ac8cc962",
"sha256:d44442effeb8781f392340c5dc8c6716fba41dbeacb82fd4c0f09026fb5ff682",
"sha256:d85dfab42dd672f87a7f76e9de7172962aee69fa12044f0d6e1a23cbd53fb80e",
"sha256:d97c5227621af74b111882a290b10f371780a38eef9d9e730408fba2259b52fb",
"sha256:d9a0d12846d6ce434fb3857918eef4315ec9b4769deb020c75828798614bfcfd",
"sha256:d9b3e7d71bf6acff341233417abbdface29c647e3113892d9aaedc02eb4aa2bc",
"sha256:da707f14ea3c35ee463d50acd596d6488e4b2b4ae7cf77a5bf93f55c023d63e8",
"sha256:da85db328e507da922d586c3c7416ec360ec22e9cd9e0700691afacde0c81f53",
"sha256:dc205732d593118cf701d986f40e9de7801bb2e371cb189ddbda9b7348f4d97e",
"sha256:dc3a44689eea43eab836e5c98a8ab015dc2419987d1ea6eafc7c590cdff86bed",
"sha256:dd5e90f34cffcfed97f36cf066325773d2b6021c60c29942e53a18b028501b1d",
"sha256:ddcf547bea2aee967d6a77779376a45e77e610e8465147a1f3d7e20d539d6e32",
"sha256:e477aca0bc0d19f3b4ae9e4f2a1cfd687c31bf772d78734910658186b40b2477",
"sha256:e8b17e23df3e827a69d25af70990ca2420e92668aaffaeeb3cd2351d7916a023",
"sha256:e99e09ab7741f1281e2677f4c0058c7f5267d182530b09c87e4f6aa26adf3887",
"sha256:ea2c01cdb16dc12156e455007c406dfaaece0c89aa4ba0e3b47586779f951d41",
"sha256:ea6b1e9105b4b24a34c722432d9fb578f9ed83af21fa1abda639011e0f22bbb6",
"sha256:ebd054ad1737a68fb7c5c073d405cef2b88bb824e294de3b4a4e995b47f0e376",
"sha256:ec295280f4b37769256da025acf5890370355ac589c27e89caae0b5e9eedc702",
"sha256:f6449672f9c93316deb5e2839e18931f468670e44d5bd9b1301a5a9655d45c07",
"sha256:f683dc6300317700025e41d89a43e0276692ded16113a3c43eab704d605c58e5",
"sha256:f6b9d2aad499c769ee8287609ab0e6de99d8bcea99c6e6c2e64945259fd52fb2",
"sha256:f8b9c8ceebae6387d0dc77f7f4dbbfbfc962dba2efbfe6877486075a480726b4",
"sha256:fad67b12ffe0f71e02b4932b04883cbc76a9072bbd30731409d3523cf058b011",
"sha256:fbfb70ba01355251faf6b293171df49f73a88a1b6494db109ffea85442574458",
"sha256:fe91993149523aa59941b9e3c90e2eb45f57ad014697aef6c8b13339a59c019e",
"sha256:febd35ef45f603c2d74b74655efdbf45e14f55fc0aef4ac82b663ca829b283e0",
"sha256:ff88a92cafde90888511242d1c54afcc1a8adbb6dc0a88fa7f87e29e92400d4a"
],
"index": "pypi",
"version": "==4.9.3"
"markers": "python_version >= '3.8'",
"version": "==6.1.3"
},
"markdown": {
"hashes": [
"sha256:065fd4df22da73a625f14890dd77eb8040edcbd68794bcd35943be14490608b2",
"sha256:8bf101198e004dc93e84a12a7395e31aac6a9c9942848ae1d99b9d72cf9b3520"
"sha256:180224db6aed87ba9ce1f2781ebcd5826253de8ff637112090e24b84502bbf9f",
"sha256:cd6c89e7eb308c8b332ed673215a52d208a43f8bacc030b1419376129408719e"
],
"index": "pypi",
"version": "==3.4.3"
"markers": "python_version >= '3.11'",
"version": "==3.11"
},
"markupsafe": {
"hashes": [
"sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e",
"sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e",
"sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431",
"sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686",
"sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559",
"sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc",
"sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c",
"sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0",
"sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4",
"sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9",
"sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575",
"sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba",
"sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d",
"sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3",
"sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00",
"sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155",
"sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac",
"sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52",
"sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f",
"sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8",
"sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b",
"sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24",
"sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea",
"sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198",
"sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0",
"sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee",
"sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be",
"sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2",
"sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707",
"sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6",
"sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58",
"sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779",
"sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636",
"sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c",
"sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad",
"sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee",
"sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc",
"sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2",
"sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48",
"sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7",
"sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e",
"sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b",
"sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa",
"sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5",
"sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e",
"sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb",
"sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9",
"sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57",
"sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc",
"sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"
"sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4",
"sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30",
"sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0",
"sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9",
"sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396",
"sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13",
"sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028",
"sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca",
"sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557",
"sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832",
"sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0",
"sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b",
"sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579",
"sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a",
"sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c",
"sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff",
"sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c",
"sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22",
"sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094",
"sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb",
"sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e",
"sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5",
"sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a",
"sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d",
"sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a",
"sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b",
"sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8",
"sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225",
"sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c",
"sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144",
"sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f",
"sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87",
"sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d",
"sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93",
"sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf",
"sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158",
"sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84",
"sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb",
"sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48",
"sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171",
"sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c",
"sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6",
"sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd",
"sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d",
"sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1",
"sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d",
"sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca",
"sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a",
"sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29",
"sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe",
"sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798",
"sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c",
"sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8",
"sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f",
"sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f",
"sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a",
"sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178",
"sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0",
"sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79",
"sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430",
"sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"
],
"markers": "python_version >= '3.7'",
"version": "==2.1.3"
"markers": "python_version >= '3.9'",
"version": "==3.0.2"
},
"pkgutil-resolve-name": {
"hashes": [
@@ -234,168 +333,228 @@
},
"pyyaml": {
"hashes": [
"sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc",
"sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741",
"sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206",
"sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27",
"sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595",
"sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62",
"sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98",
"sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696",
"sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d",
"sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867",
"sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47",
"sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486",
"sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6",
"sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3",
"sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007",
"sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938",
"sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c",
"sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735",
"sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d",
"sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba",
"sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8",
"sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5",
"sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd",
"sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3",
"sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0",
"sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515",
"sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c",
"sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c",
"sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924",
"sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34",
"sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43",
"sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859",
"sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673",
"sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a",
"sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab",
"sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa",
"sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c",
"sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585",
"sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d",
"sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"
"sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c",
"sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a",
"sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3",
"sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956",
"sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6",
"sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c",
"sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65",
"sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a",
"sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0",
"sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b",
"sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1",
"sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6",
"sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7",
"sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e",
"sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007",
"sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310",
"sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4",
"sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9",
"sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295",
"sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea",
"sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0",
"sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e",
"sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac",
"sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9",
"sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7",
"sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35",
"sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb",
"sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b",
"sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69",
"sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5",
"sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b",
"sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c",
"sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369",
"sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd",
"sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824",
"sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198",
"sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065",
"sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c",
"sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c",
"sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764",
"sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196",
"sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b",
"sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00",
"sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac",
"sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8",
"sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e",
"sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28",
"sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3",
"sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5",
"sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4",
"sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b",
"sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf",
"sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5",
"sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702",
"sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8",
"sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788",
"sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da",
"sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d",
"sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc",
"sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c",
"sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba",
"sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f",
"sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917",
"sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5",
"sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26",
"sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f",
"sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b",
"sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be",
"sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c",
"sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3",
"sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6",
"sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926",
"sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"
],
"index": "pypi",
"version": "==6.0.1"
"markers": "python_version >= '3.8'",
"version": "==6.0.3"
},
"referencing": {
"hashes": [
"sha256:47237742e990457f7512c7d27486394a9aadaf876cbfaa4be65b27b4f4d47c6b",
"sha256:c257b08a399b6c2f5a3510a50d28ab5dbc7bbde049bcaf954d43c446f83ab548"
"sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231",
"sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"
],
"markers": "python_version >= '3.8'",
"version": "==0.30.0"
"markers": "python_version >= '3.10'",
"version": "==0.37.0"
},
"rpds-py": {
"hashes": [
"sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f",
"sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238",
"sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f",
"sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f",
"sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c",
"sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298",
"sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260",
"sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1",
"sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d",
"sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7",
"sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f",
"sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876",
"sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe",
"sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be",
"sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32",
"sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3",
"sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18",
"sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d",
"sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620",
"sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b",
"sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae",
"sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496",
"sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1",
"sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67",
"sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f",
"sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764",
"sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196",
"sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e",
"sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846",
"sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b",
"sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d",
"sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26",
"sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e",
"sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044",
"sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c",
"sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d",
"sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad",
"sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d",
"sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab",
"sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920",
"sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e",
"sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872",
"sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3",
"sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611",
"sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4",
"sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c",
"sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193",
"sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af",
"sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10",
"sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd",
"sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f",
"sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b",
"sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945",
"sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752",
"sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c",
"sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387",
"sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8",
"sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d",
"sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931",
"sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03",
"sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502",
"sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f",
"sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55",
"sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82",
"sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798",
"sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a",
"sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b",
"sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa",
"sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f",
"sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192",
"sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020",
"sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7",
"sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1",
"sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386",
"sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90",
"sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f",
"sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe",
"sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596",
"sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f",
"sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387",
"sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16",
"sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e",
"sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b",
"sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6",
"sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1",
"sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de",
"sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0",
"sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3",
"sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468",
"sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e",
"sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd",
"sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324",
"sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c",
"sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535",
"sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55",
"sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6",
"sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"
"sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f",
"sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136",
"sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3",
"sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7",
"sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65",
"sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4",
"sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169",
"sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf",
"sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4",
"sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2",
"sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c",
"sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4",
"sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3",
"sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6",
"sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7",
"sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89",
"sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85",
"sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6",
"sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa",
"sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb",
"sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6",
"sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87",
"sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856",
"sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4",
"sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f",
"sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53",
"sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229",
"sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad",
"sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23",
"sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db",
"sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038",
"sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27",
"sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00",
"sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18",
"sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083",
"sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c",
"sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738",
"sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898",
"sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e",
"sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7",
"sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08",
"sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6",
"sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551",
"sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e",
"sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288",
"sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df",
"sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0",
"sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2",
"sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05",
"sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0",
"sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464",
"sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5",
"sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404",
"sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7",
"sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139",
"sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394",
"sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb",
"sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15",
"sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff",
"sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed",
"sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6",
"sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e",
"sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95",
"sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d",
"sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950",
"sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3",
"sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5",
"sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97",
"sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e",
"sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e",
"sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b",
"sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd",
"sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad",
"sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8",
"sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425",
"sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221",
"sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d",
"sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825",
"sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51",
"sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e",
"sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f",
"sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8",
"sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f",
"sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d",
"sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07",
"sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877",
"sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31",
"sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58",
"sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94",
"sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28",
"sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000",
"sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1",
"sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1",
"sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7",
"sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7",
"sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40",
"sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d",
"sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0",
"sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84",
"sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f",
"sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a",
"sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7",
"sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419",
"sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8",
"sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a",
"sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9",
"sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be",
"sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed",
"sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a",
"sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d",
"sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324",
"sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f",
"sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2",
"sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f",
"sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5"
],
"markers": "python_version >= '3.8'",
"version": "==0.9.2"
"markers": "python_version >= '3.10'",
"version": "==0.30.0"
},
"typing-extensions": {
"hashes": [
"sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466",
"sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"
],
"markers": "python_version >= '3.9'",
"version": "==4.15.0"
},
"zipp": {
"hashes": [
"sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0",
"sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"
"sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e",
"sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"
],
"markers": "python_version < '3.10'",
"version": "==3.16.2"
"markers": "python_version >= '3.9'",
"version": "==3.23.0"
}
},
"develop": {}
+3 -4
View File
@@ -16,11 +16,10 @@ you have `pipenv` installed, you can install the dependencies by running
Also, you may need to run `virtualenv -p /usr/bin/python3 venv/` and
then `source venv/bin/activate`, and only then `pipenv sync`.
Once this is done, rerun `./configure` in the jq root directory and then
Once this is done, rerun `./configure --enable-docs` in the jq root directory and then
the `Makefile` will be able to generate the jq manpage. You can just run
`make jq.1` to build the manpage manually, and `make tests/man.test` to
update the manual tests.
To build the website, run `pipenv run python3 build_website.py --root /output`
in the `docs/` directory. To serve them locally, you can run
`python3 -m http.server`.
To build the website, run `pipenv run python3 build_website.py` in the `docs/` directory.
To serve them locally, you can run `python3 -m http.server -d output`.
+6 -5
View File
@@ -1,5 +1,4 @@
#!/usr/bin/env python3
from datetime import date
from io import StringIO
from lxml import etree
import markdown
@@ -66,8 +65,7 @@ class RoffWalker(object):
last_tag = None
while root is not None:
if root.tag == 'h1':
self.__write_cmd('.TH "JQ" "1" "{}" "" ""'.format(
date.today().strftime('%B %Y')))
self.__write_cmd('.TH "JQ" "1" "" "" ""')
self.__write_cmd('.SH "NAME"')
# TODO: properly parse this
self.__write_raw(r'\fBjq\fR \- Command\-line JSON processor' +
@@ -86,6 +84,9 @@ class RoffWalker(object):
self.__write_cmd('.P')
self._write_element(root, ensure_newline=(parent_tag != 'li'))
elif root.tag == 'a':
self._write_element(root, ensure_newline=(parent_tag != 'li'))
elif root.tag == 'ul':
if self._ul_is_special(root):
li = root[0]
@@ -206,7 +207,7 @@ def dedent_body(body):
def convert_manual_to_markdown():
f = StringIO()
manual = load_yml_file("content/manual/manual.yml")
manual = load_yml_file("content/manual/dev/manual.yml")
f.write(manual.get('manpage_intro', '\n'))
f.write(dedent_body(manual.get('body', '\n')))
for section in manual.get('sections', []):
@@ -226,7 +227,7 @@ def convert_manual_to_markdown():
f.write("jq '{}'\n".format(example.get('program', '')))
f.write(" {}\n".format(example.get('input', '')))
output = [str(x) for x in example.get('output', [])]
f.write("=> {}\n".format(', '.join(output)))
f.write("=> {}\n".format('\n '.join(output)))
first = False
f.write("~~~~\n")
f.write('\n')
+1 -1
View File
@@ -5,7 +5,7 @@ import re
regex_program_pattern = re.compile(
r'\b(?:test|match|capture|scan|split|splits|sub|gsub)\s*\(')
with open('content/manual/manual.yml') as source, \
with open('content/manual/dev/manual.yml') as source, \
open('../tests/man.test', 'w') as man, \
open('../tests/manonig.test', 'w') as manonig:
manual = yaml.safe_load(source)
+3 -9
View File
@@ -1,5 +1,4 @@
#!/usr/bin/env python3
import argparse
import glob
import itertools
from jinja2 import Environment, FileSystemLoader, select_autoescape, pass_context
@@ -11,10 +10,6 @@ import re
import shutil
import yaml
parser = argparse.ArgumentParser()
parser.add_argument('--root', default='/jq')
args = parser.parse_args()
env = Environment(
loader=FileSystemLoader('templates'),
autoescape=select_autoescape(['html.j2']),
@@ -26,9 +21,7 @@ def load_yml_file(fn):
return yaml.safe_load(f)
env.globals['url'] = 'https://jqlang.github.io/jq'
env.globals['root'] = args.root
env.globals['url'] = 'https://jqlang.org'
env.filters['search_id'] = lambda input: input.replace(r'`', '')
env.filters['section_id'] = lambda input: re.sub(
r'[^-a-zA-Z0-9_]', '', input.replace(' ', '-')).lower()
@@ -40,7 +33,8 @@ env.filters['entry_id'] = lambda input: re.sub(
r'\1', # e.g. range-range-range -> range
re.sub(r' ?/ ?|,? ', '-',
re.sub(r'[`;]|: .*|\(.*?\)| \[.+\]', '', input)))).lower()
env.filters['markdownify'] = lambda input: Markup(markdown(input))
env.filters['markdownify'] = lambda input: Markup(
markdown(input, extensions=['md_in_html']))
env.filters['no_paragraph'] = lambda input: Markup(re.sub(r'</?p>', '', input))
env.globals['unique_id'] = pass_context(
+200 -52
View File
@@ -3,8 +3,9 @@ body:
- text: |
jq is written in C and has no runtime dependencies, so it should be
possible to build it for nearly any platform. Prebuilt binaries are
available for Linux, macOS and Windows.
possible to build it for nearly any platform. The prebuilt files linked
below are standalone executables, not archives, and are available for
Linux, macOS and Windows.
The binaries should just run, but on macOS and Linux you may need
to make them executable first using `chmod +x jq`.
@@ -13,14 +14,14 @@ body:
details, read the file `COPYING` in the source distribution.
jq uses a C library for decimal number support. This is an ICU 1.8.1
licensed code obtained from the ICU downloads archive
http://download.icu-project.org/files/decNumber/decNumber-icu-368.zip.
licensed code obtained from the ICU downloads archive.
<https://download.icu-project.org/files/decNumber/decNumber-icu-368.zip>
### Linux
* jq is in the official [Debian](https://packages.debian.org/jq) and
[Ubuntu](http://packages.ubuntu.com/jq) repositories. Install using
[Ubuntu](https://packages.ubuntu.com/jq) repositories. Install using
`sudo apt-get install jq`.
* jq is in the official [Fedora](https://src.fedoraproject.org/rpms/jq) repository.
@@ -32,49 +33,125 @@ body:
* jq is in the official [Arch](https://archlinux.org/packages/?q=jq) repository.
Install using `sudo pacman -S jq`.
* jq 1.6 binaries for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64)
* jq is in [conda-forge](https://anaconda.org/conda-forge/jq).
Install using `conda install -c conda-forge jq`.
* jq 1.8.2 binaries for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-amd64)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux32).
[ARM64](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-arm64)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-i386).
<details markdown="1">
<summary>Older versions</summary>
* jq 1.8.1 binaries for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-amd64)
or
[ARM64](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-arm64)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-i386).
* jq 1.8.0 binaries for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-linux-amd64)
or
[ARM64](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-linux-arm64)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-linux-i386).
* jq 1.7.1 binaries for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64)
or
[ARM64](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-arm64)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-i386).
* jq 1.7 binaries for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-linux-amd64)
or
[ARM64](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-linux-arm64)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-linux-i386).
* jq 1.6 binaries for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux32).
* jq 1.5 binaries for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-linux64)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-linux64)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-linux32).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-linux32).
* jq 1.4 binaries for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-linux-x86_64)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-linux-x86_64)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-linux-x86).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-linux-x86).
* jq 1.3 binaries for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-linux-x86_64)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-linux-x86_64)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-linux-x86).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-linux-x86).
</details>
### macOS
* Use [Homebrew](http://brew.sh/) to install jq with `brew install jq`.
* Use [Homebrew](https://brew.sh/) to install jq with `brew install jq`.
* Use [MacPorts](https://www.macports.org) to install jq with `port install jq`.
* Use [Fink](https://finkproject.org) to install jq with `fink install jq`.
* Use [conda-forge](https://anaconda.org/conda-forge/jq) to install jq with
`conda install -c conda-forge jq`.
* jq 1.8.2 binaries for
[Apple Silicon](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-macos-arm64)
or
[Intel Mac](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-macos-amd64).
<details markdown="1">
<summary>Older versions</summary>
* jq 1.8.1 binaries for
[Apple Silicon](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-macos-arm64)
or
[Intel Mac](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-macos-amd64).
* jq 1.8.0 binaries for
[Apple Silicon](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-macos-arm64)
or
[Intel Mac](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-macos-amd64).
* jq 1.7.1 binaries for
[Apple Silicon](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-macos-arm64)
or
[Intel Mac](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-macos-amd64).
* jq 1.7 binaries for
[Apple Silicon](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-macos-arm64)
or
[Intel Mac](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-macos-amd64).
* jq 1.6 binary for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-osx-amd64).
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-osx-amd64).
* jq 1.5 binary for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-osx-amd64).
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-osx-amd64).
* jq 1.4 binaries for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-osx-x86_64)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-osx-x86_64)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-osx-x86).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-osx-x86).
* jq 1.3 binaries for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-osx-x86_64)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-osx-x86_64)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-osx-x86).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-osx-x86).
</details>
### FreeBSD
@@ -92,9 +169,9 @@ body:
10+, Sparc and x86.
* jq 1.4 binaries for Solaris 11
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-solaris11-64)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-solaris11-64)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-solaris11-32).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-solaris11-32).
### Windows
@@ -104,55 +181,126 @@ body:
* Use [scoop](https://scoop.sh/) to install jq with `scoop install jq`.
* Use [Chocolatey NuGet](https://chocolatey.org/) to install jq with
`chocolatey install jq`.
`choco install jq`.
* jq 1.8.2 executables for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-windows-amd64.exe)
or
[ARM64](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-windows-arm64.exe)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-windows-i386.exe).
<details markdown="1">
<summary>Older versions</summary>
* jq 1.8.1 executables for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-windows-amd64.exe)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-windows-i386.exe).
* jq 1.8.0 executables for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-windows-amd64.exe)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-windows-i386.exe).
* jq 1.7.1 executables for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-windows-amd64.exe)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-windows-i386.exe).
* jq 1.7 executables for
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe)
or
[i386](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-i386.exe).
* jq 1.6 executables for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-win64.exe)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-win64.exe)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-win32.exe).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-win32.exe).
* jq 1.5 executables for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-win64.exe)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-win64.exe)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-win32.exe).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-win32.exe).
* jq 1.4 executables for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-win64.exe)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-win64.exe)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-win32.exe).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.4/jq-win32.exe).
* jq 1.3 executables for
[64-bit](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-win64.exe)
[AMD64](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-win64.exe)
or
[32-bit](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-win32.exe).
[i386](https://github.com/jqlang/jq/releases/download/jq-1.3/jq-win32.exe).
</details>
### Checksums and signatures
SHA-256 checksums are provided for all release and pre-release binaries.
They can be found under
[sig/v1.x/sha256sum.txt](https://github.com/jqlang/jq/tree/master/sig).
The checksums for jq 1.6 are in
[sig/v1.6/sha256sum.txt](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.6/sha256sum.txt).
The checksums for jq 1.5 are in
[sig/v1.5/sha256sum.txt](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.5/sha256sum.txt).
Additionally, all release artifacts are signed by a jq release key. We have two release keys, [one for 1.6 and older releases](https://raw.githubusercontent.com/jqlang/jq/master/sig/jq-release-old.key), and [one for 1.7 and newer releases](https://raw.githubusercontent.com/jqlang/jq/master/sig/jq-release-new.key).
Signatures can be found under
[sig/v1.x/\*.asc](https://github.com/jqlang/jq/tree/master/sig).
The signatures for jq 1.7rc are in
[sig/v1.7rc1/\*.asc](https://github.com/jqlang/jq/tree/master/sig/v1.7rc1).
The signatures for jq 1.6 are in
[sig/v1.6/\*.asc](https://github.com/jqlang/jq/tree/master/sig/v1.6).
The signatures for jq 1.5 are in
[sig/v1.5/\*.asc](https://github.com/jqlang/jq/tree/master/sig/v1.5).
SHA-256 checksums are provided for all release and pre-release binaries,
and all release artifacts are signed by a jq release key. We have two release keys,
[one for 1.6 and older releases](https://raw.githubusercontent.com/jqlang/jq/master/sig/jq-release-old.key),
and
[one for 1.7 and newer releases](https://raw.githubusercontent.com/jqlang/jq/master/sig/jq-release-new.key).
You can use [GnuPG](https://gnupg.org/) to verify a signature by downloading
the signature and running `gpg --verify signature.asc`.
* jq 1.8.2
[checksums](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.8.2/sha256sum.txt)
and
[signatures](https://github.com/jqlang/jq/tree/master/sig/v1.8.2).
<details markdown="1">
<summary>Older versions</summary>
* jq 1.8.1
[checksums](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.8.1/sha256sum.txt)
and
[signatures](https://github.com/jqlang/jq/tree/master/sig/v1.8.1).
* jq 1.8.0
[checksums](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.8.0/sha256sum.txt)
and
[signatures](https://github.com/jqlang/jq/tree/master/sig/v1.8.0).
* jq 1.7.1
[checksums](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.7.1/sha256sum.txt)
and
[signatures](https://github.com/jqlang/jq/tree/master/sig/v1.7.1).
* jq 1.7
[checksums](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.7/sha256sum.txt)
and
[signatures](https://github.com/jqlang/jq/tree/master/sig/v1.7).
* jq 1.6
[checksums](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.6/sha256sum.txt)
and
[signatures](https://github.com/jqlang/jq/tree/master/sig/v1.6).
* jq 1.5
[checksums](https://raw.githubusercontent.com/jqlang/jq/master/sig/v1.5/sha256sum.txt)
and
[signatures](https://github.com/jqlang/jq/tree/master/sig/v1.5).
</details>
### From source on Linux, macOS, Cygwin, and other POSIX-like operating systems
* [Source tarball for jq 1.8.2](https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-1.8.2.tar.gz)
<details markdown="1">
<summary>Older versions</summary>
* [Source tarball for jq 1.8.1](https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-1.8.1.tar.gz)
* [Source tarball for jq 1.8.0](https://github.com/jqlang/jq/releases/download/jq-1.8.0/jq-1.8.0.tar.gz)
* [Source tarball for jq 1.7.1](https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-1.7.1.tar.gz)
* [Source tarball for jq 1.7](https://github.com/jqlang/jq/releases/download/jq-1.7/jq-1.7.tar.gz)
* [Source tarball for jq 1.6](https://github.com/jqlang/jq/releases/download/jq-1.6/jq-1.6.tar.gz)
* [Source tarball for jq 1.5](https://github.com/jqlang/jq/releases/download/jq-1.5/jq-1.5.tar.gz)
</details>
You can build it using the usual `./configure && make && sudo
make install` rigmarole.
@@ -179,7 +327,7 @@ body:
On macOS, these are all included in Apple's command line tools, which can
be installed from [Xcode](https://developer.apple.com/xcode/). However,
you may find that you need a newer version of Bison than the one provided
by Apple. This can be found in [Homebrew](http://brew.sh) or
by Apple. This can be found in [Homebrew](https://brew.sh/) or
[MacPorts](https://macports.org/).
If you want to generate the lexer and parser from source you can use the
@@ -197,9 +345,9 @@ body:
#### Building the documentation
jq's documentation is compiled into static HTML using Python.
To build the docs, run `pipenv run python3 build_website.py --root /output`
To build the docs, run `pipenv run python3 build_website.py`
in the `docs/` directory. To serve them locally, you can run
`python3 -m http.server`. You'll need a few Python dependencies,
`python3 -m http.server -d output`. You'll need a few Python dependencies,
which can be installed by following the instructions in `docs/README.md`.
The man page is built by `make jq.1`, or just `make`, also from
+24
View File
@@ -32,6 +32,30 @@ tail: |
on [Libera.Chat](https://libera.chat/). For more interactive discussions, feel free to join our [Discord server](https://discord.gg/yg6yjNmgAC).
news:
- date: 20 June 2026
body: |
jq 1.8.2 released. See [release notes](https://github.com/jqlang/jq/releases/tag/jq-1.8.2) for details.
- date: 1 July 2025
body: |
jq 1.8.1 released. See [release notes](https://github.com/jqlang/jq/releases/tag/jq-1.8.1) for details.
- date: 1 June 2025
body: |
jq 1.8.0 released. See [release notes](https://github.com/jqlang/jq/releases/tag/jq-1.8.0) for details.
- date: 13 December 2023
body: |
jq 1.7.1 released. Security (CVE-2023-50246, CVE-2023-50268) and bug fixes.
See [release notes](https://github.com/jqlang/jq/releases/tag/jq-1.7.1) for details.
- date: 7 September 2023
body: |
After a five-year hiatus, we've returned with a revitalized [GitHub organization](https://github.com/jqlang)
and a much-anticipated 1.7 release, thanks to our new admins and maintainers.
Check out the [download](./download/) page for installation options and see the
[release notes](https://github.com/jqlang/jq/releases/tag/jq-1.7) for details.
- date: 1 November 2018
body: |
jq 1.6 released. See installation options on the [download](./download/)
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
v1.8/manual.yml
+1 -6
View File
@@ -1,11 +1,6 @@
---
headline: jq 1.3 Manual
history: |
*The manual for the development version of jq can be found
[here](../).*
body: |
A jq program is a "filter": it takes an input, and produces an
@@ -1013,7 +1008,7 @@ sections:
which to place the data.
It is also possible to define functions in jq, although this is
is a feature whose biggest use is defining jq's standard library
a feature whose biggest use is defining jq's standard library
(many jq functions such as `map` and `select` are in fact written
in jq).
+1 -6
View File
@@ -1,11 +1,6 @@
---
headline: jq 1.4 Manual
history: |
*The manual for the development version of jq can be found
[here](../).*
body: |
A jq program is a "filter": it takes an input, and produces an
@@ -1419,7 +1414,7 @@ sections:
which to place the data.
It is also possible to define functions in jq, although this is
is a feature whose biggest use is defining jq's standard library
a feature whose biggest use is defining jq's standard library
(many jq functions such as `map` and `select` are in fact written
in jq).
+5 -10
View File
@@ -1,11 +1,6 @@
---
headline: jq 1.5 Manual
history: |
*The manual for the development version of jq can be found
[here](../).*
body: |
A jq program is a "filter": it takes an input, and produces an
@@ -1768,7 +1763,7 @@ sections:
The `strptime(fmt)` builtin parses input strings matching the
`fmt` argument. The output is in the "broken down time"
representation consumed by `gmtime` and output by `mktime`.
representation consumed by `mktime` and output by `gmtime`.
The `strftime(fmt)` builtin formats a time with the given
format.
@@ -1958,7 +1953,7 @@ sections:
label $out | ... break $out ...
The `break $label_name` expression will cause the program to
to act as though the nearest (to the left) `label $label_name`
act as though the nearest (to the left) `label $label_name`
produced `empty`.
The relationship between the `break` and corresponding `label`
@@ -2176,7 +2171,7 @@ sections:
which to place the data.
It is also possible to define functions in jq, although this is
is a feature whose biggest use is defining jq's standard library
a feature whose biggest use is defining jq's standard library
(many jq functions such as `map` and `select` are in fact written
in jq).
@@ -2258,7 +2253,7 @@ sections:
. as {realnames: $names, posts: [$first, $second]} | ...
The variable declarations in array patterns (e.g., `. as
[$first, $second]`) bind to the elements of the array in from
[$first, $second]`) bind to the elements of the array from
the element at index zero on up, in order. When there is no
value at the index for an array pattern element, `null` is
bound to that variable.
@@ -2821,7 +2816,7 @@ sections:
path (see below). The `import` and `include` directives allow the
importer to alter this path.
Paths in the a search path are subject to various substitutions.
Paths in the search path are subject to various substitutions.
For paths starting with "~/", the user's home directory is
substituted for "~".
+9 -14
View File
@@ -1,11 +1,6 @@
---
headline: jq 1.6 Manual
history: |
*The manual for the development version of jq can be found
[here](../).*
body: |
A jq program is a "filter": it takes an input, and produces an
@@ -234,9 +229,9 @@ sections:
* `--rawfile variable-name filename`:
This option reads in the named file and binds its contents to the given
This option reads in the named file and binds its content to the given
global variable. If you run jq with `--rawfile foo bar`, then `$foo` is
available in the program and has a string whose contents are to the texts
available in the program and has a string whose content is set to the text
in the file named `bar`.
* `--argfile variable-name filename`:
@@ -1978,7 +1973,7 @@ sections:
The `strptime(fmt)` builtin parses input strings matching the
`fmt` argument. The output is in the "broken down time"
representation consumed by `gmtime` and output by `mktime`.
representation consumed by `mktime` and output by `gmtime`.
The `strftime(fmt)` builtin formats a time (GMT) with the
given format. The `strflocaltime` does the same, but using
@@ -2217,7 +2212,7 @@ sections:
label $out | ... break $out ...
The `break $label_name` expression will cause the program to
to act as though the nearest (to the left) `label $label_name`
act as though the nearest (to the left) `label $label_name`
produced `empty`.
The relationship between the `break` and corresponding `label`
@@ -2437,7 +2432,7 @@ sections:
which to place the data.
It is also possible to define functions in jq, although this is
is a feature whose biggest use is defining jq's standard library
a feature whose biggest use is defining jq's standard library
(many jq functions such as `map` and `select` are in fact written
in jq).
@@ -2519,7 +2514,7 @@ sections:
. as {realnames: $names, posts: [$first, $second]} | ...
The variable declarations in array patterns (e.g., `. as
[$first, $second]`) bind to the elements of the array in from
[$first, $second]`) bind to the elements of the array from
the element at index zero on up, in order. When there is no
value at the index for an array pattern element, `null` is
bound to that variable.
@@ -2931,7 +2926,7 @@ sections:
output as JSON texts on `stdout`.) The `debug` builtin can have
application-specific behavior, such as for executables that use
the libjq C API but aren't the jq executable itself. The `stderr`
builtin outputs its input in raw mode to stder with no additional
builtin outputs its input in raw mode to stderr with no additional
decoration, not even a newline.
Most jq builtins are referentially transparent, and yield constant
@@ -3216,7 +3211,7 @@ sections:
path (see below). The `import` and `include` directives allow the
importer to alter this path.
Paths in the a search path are subject to various substitutions.
Paths in the search path are subject to various substitutions.
For paths starting with "~/", the user's home directory is
substituted for "~".
@@ -3343,7 +3338,7 @@ sections:
- color for objects
The default color scheme is the same as setting
`"JQ_COLORS=1;30:0;37:0;37:0;37:0;32:1;37:1;37"`.
`"JQ_COLORS=1;30:0;39:0;39:0;39:0;32:1;39:1;39"`.
This is not a manual for VT100/ANSI escapes. However, each of
these color specifications should consist of two numbers separated
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
-3
View File
@@ -1,7 +1,6 @@
type: object
required:
- headline
- history
- body
- manpage_intro
- manpage_epilogue
@@ -10,8 +9,6 @@ additionalProperties: false
properties:
headline:
type: string
history:
type: string
body:
type: string
manpage_intro:
+1
View File
@@ -0,0 +1 @@
jqlang.org
+22 -5
View File
@@ -45,6 +45,19 @@ ul {
padding-left: 1rem;
}
details {
margin-bottom: 1rem;
padding-left: 1rem;
& summary {
cursor: pointer;
}
& ul {
padding-left: 0;
}
}
pre {
margin: 0 .5rem 1rem;
padding: .5rem 1rem;
@@ -52,13 +65,17 @@ pre {
border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
}
button{
&[aria-expanded=false] .bi-chevron-down {
display: none;
button {
&[aria-expanded=false] {
.bi-chevron-down, .hide-result-text {
display: none;
}
}
&[aria-expanded=true] .bi-chevron-right {
display: none;
&[aria-expanded=true] {
.bi-chevron-right, .show-result-text {
display: none;
}
}
}
+1 -1
View File
@@ -18,7 +18,7 @@
<div class="d-flex accordion-heading me-2">
<pre class="flex-grow-1 me-0 mb-0" tabindex="0">{{ item.command }}</pre>
<button type="button" class="btn btn-sm btn-secondary text-body-secondary bg-secondary-subtle link-body-emphasis flex-shrink-0 d-flex align-items-center border border-start-0 d-print-none"
data-bs-toggle="collapse" data-bs-target="#result{{ resultID }}" aria-expanded="false" aria-controls="result{{ resultID }}">Show result</button>
data-bs-toggle="collapse" data-bs-target="#result{{ resultID }}" aria-expanded="false" aria-controls="result{{ resultID }}"><span class="show-result-text">Show result</span><span class="hide-result-text">Hide result</span></button>
</div>
<pre id="result{{ resultID }}" class="accordion-body collapse p-3 border-top-0 d-print-block" tabindex="0">{{ item.result }}</pre>
</div>
+10 -8
View File
@@ -8,23 +8,25 @@
<main id="main" class="container-lg">
<div class="row">
<div class="col-md-6 text-center p-3">
<h1><img src="{{ root }}/jq.svg" class="img-fluid" alt="jq" width="400" height="220"></h1>
<h1><img src="/jq.svg" class="img-fluid" alt="jq" width="400" height="220"></h1>
</div>
<div class="col-md-6 d-flex flex-column justify-content-center text-center align-items-center">
<h2 class="px-1" style="width:16em">{{ blurb }}</h2>
<div class="btn-group d-print-none" role="group">
<button type="button" class="btn btn-primary dropdown-toggle text-nowrap" data-bs-toggle="dropdown" aria-expanded="false">
Download jq 1.6
Download jq 1.8.2
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64" aria-label="Link to download executable: Linux (64-bit)"><span class="bi bi-download me-2" aria-hidden="true"></span>Linux (64-bit)</a></li>
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.6/jq-osx-amd64" aria-label="Link to download executable: macOS (64-bit)"><span class="bi bi-download me-2" aria-hidden="true"></span>macOS (64-bit)</a></li>
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.6/jq-win64.exe" aria-label="Link to download executable: Windows (64-bit)"><span class="bi bi-download me-2" aria-hidden="true"></span>Windows (64-bit)</a></li>
<li><a class="dropdown-item" href="{{ root }}/download/">Other platforms, older versions, and source</a></li>
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-amd64" aria-label="Link to download executable: Linux (AMD64)"><span class="bi bi-download me-2" aria-hidden="true"></span>Linux (AMD64)</a></li>
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-arm64" aria-label="Link to download executable: Linux (ARM64)"><span class="bi bi-download me-2" aria-hidden="true"></span>Linux (ARM64)</a></li>
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-macos-arm64" aria-label="Link to download executable: macOS (Apple Silicon)"><span class="bi bi-download me-2" aria-hidden="true"></span>macOS (Apple Silicon)</a></li>
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-macos-amd64" aria-label="Link to download executable: macOS (Intel Mac)"><span class="bi bi-download me-2" aria-hidden="true"></span>macOS (Intel Mac)</a></li>
<li><a class="dropdown-item" href="https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-windows-amd64.exe" aria-label="Link to download executable: Windows (AMD64)"><span class="bi bi-download me-2" aria-hidden="true"></span>Windows (AMD64)</a></li>
<li><a class="dropdown-item" href="/download/">Other platforms, older versions, and source</a></li>
</ul>
<a class="btn btn-primary text-nowrap" href="https://jqplay.org" target="_blank" rel="noopener">
Try online at jqplay.org!<span class="bi bi-box-arrow-up-right ms-1" aria-hidden="true"></span>
<a class="btn btn-primary text-nowrap" href="https://play.jqlang.org" rel="noopener">
Try online!
</a>
</div>
</div>
+14 -3
View File
@@ -33,7 +33,18 @@
{%- endmacro %}
<main id="main" class="col-md-9" data-bs-spy="scroll" data-bs-target="#contents" data-bs-threshold="0,1" data-bs-root-margin="-30% 0% -70%">
<h1>{{ headline }}</h1>
{{ history | markdownify }}
<p>
<em>
For other versions, see
<a href="/manual/v1.8/">1.8</a>,
<a href="/manual/v1.7/">1.7</a>,
<a href="/manual/v1.6/">1.6</a>,
<a href="/manual/v1.5/">1.5</a>,
<a href="/manual/v1.4/">1.4</a>,
<a href="/manual/v1.3/">1.3</a> or
<a href="/manual/dev/">development version</a>.
</em>
</p>
{{ body | markdownify }}
{%- for section in sections %}
<section id="{{ section.title | section_id }}">{{ check_section_id(section.title | section_id) }}
@@ -76,7 +87,7 @@
</tr>
{%- endfor %}
<tr class="d-print-none">
<th><a href="https://jqplay.org/jq?q={{ example.program | urlencode }}&j={{ example.input | urlencode }}" class="btn btn-outline-primary btn-sm" target="_blank" rel="noopener">Run<span class="bi bi-box-arrow-up-right ms-2" aria-hidden="true"></span></a></th>
<th><a href="https://play.jqlang.org/?q={{ example.program | urlencode }}&j={{ example.input | urlencode }}" class="btn btn-outline-primary btn-sm" target="_blank" rel="noopener">Run<span class="bi bi-box-arrow-up-right ms-2" aria-hidden="true"></span></a></th>
<td></td>
</tr>
</table>
@@ -105,6 +116,6 @@
{%- endfor %}
}
</script>
<script src="{{ root }}/js/manual-search.js"></script>
<script src="/js/manual-search.js"></script>
</body>
</html>
+8 -3
View File
@@ -2,14 +2,19 @@
<meta charset="utf-8">
<title>{{ headline }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="{{ root }}/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="{{ root }}/icon.png" type="image/png">
<meta property="og:title" content="{{ headline }}">
<meta property="og:description" content="jq is a lightweight and flexible command-line JSON processor">
<meta property="og:type" content="website">
<meta property="og:image" content="{{ url }}/icon.png">
<meta property="og:url" content="{{ url }}/{{ permalink }}">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/icon.png" type="image/png">
<link rel="canonical" href="{{ url }}/{{ permalink }}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.1/dist/cosmo/bootstrap.min.css"
integrity="sha384-dulfW0vmzZ638jigSgZXvDxMmd70GCnIv6oa+riKq6Kk4E0MKf7qmBfwP02wltv5" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css"
integrity="sha384-Ay26V7L8bsJTsX9Sxclnvsn+hkdiwRnrjZJXqKmkIDobPgIIWBOVguEcQQLDuhfN" crossorigin="anonymous">
<link rel="stylesheet" href="{{ root }}/css/style.css" type="text/css">
<link rel="stylesheet" href="/css/style.css" type="text/css">
<script>
(function() {
function setTheme(mediaQuery) {
+5 -4
View File
@@ -10,21 +10,22 @@
aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle page navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="{{ root }}/" aria-label="Top page"><img src="{{ root }}/jq.svg" alt="jq logo" style="height:1.5rem"></a>
<a class="navbar-brand" href="/" aria-label="Top page"><img src="/jq.svg" alt="jq logo" style="height:1.5rem"></a>
<div id="navbar-collapse" class="offcanvas offcanvas-start navbar-collapse w-auto" aria-labelledby="navbar-title">
<div class="offcanvas-header">
<h3 id="navbar-title" class="me-3">jq</h3>
<button type="button" class="d-md-none btn-close" data-bs-dismiss="offcanvas" aria-label="Close page navigation"></button>
</div>
<ul class="offcanvas-body navbar-nav me-auto text-nowrap">
<li class="nav-item d-md-none"><a class="nav-link{% if not navitem %} active{% endif %}"{% if not navitem %} aria-current="page"{% endif %} href="{{ root }}/">Top page</a></li>
<li class="nav-item d-md-none"><a class="nav-link{% if not navitem %} active{% endif %}"{% if not navitem %} aria-current="page"{% endif %} href="/">Top page</a></li>
{%- for item in ['tutorial', 'download', 'manual'] %}
<li class="nav-item"><a class="nav-link{% if item == navitem %} active{% endif %}"{% if item == navitem %} aria-current="page"{% endif %} href="{{ root }}/{{ item }}/">{{ item | capitalize }}</a></li>
<li class="nav-item"><a class="nav-link{% if item == navitem %} active{% endif %}"{% if item == navitem %} aria-current="page"{% endif %} href="/{{ item }}/">{{ item | capitalize }}</a></li>
{%- endfor %}
<li class="nav-item"><a class="nav-link" href="https://github.com/jqlang/jq" target="_blank" rel="noopener">GitHub</a></li>
<li class="nav-item"><a class="nav-link" href="https://github.com/jqlang/jq/issues" target="_blank" rel="noopener">Issues</a></li>
<li class="nav-item"><a class="nav-link" href="https://jqplay.org" target="_blank" rel="noopener">Try online!</a></li>
<li class="nav-item"><a class="nav-link" href="https://play.jqlang.org" rel="noopener">Try online!</a></li>
<li class="nav-item"><a class="nav-link" href="https://raw.githubusercontent.com/jqlang/jq/master/NEWS.md" target="_blank" rel="noopener">News</a></li>
<li class="nav-item"><a class="nav-link" href="https://github.com/jqlang/jq/wiki" target="_blank" rel="noopener">Wiki</a></li>
</ul>
</div>
{%- if navitem.startswith('manual') %}
Generated
+442 -106
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -5,8 +5,8 @@ Name: jq
Version: %{myver}
Release: %{myrel}%{?dist}
Source0: jq-%{myver}.tar.gz
URL: https://jqlang.github.io/jq
License: BSD
URL: https://jqlang.org
License: MIT AND ICU AND CC-BY-3.0
AutoReqProv: no
#BuildPrereq: autoconf, libtool, automake, flex, bison, python
+1 -1
View File
@@ -4,7 +4,7 @@ libdir=@libdir@
includedir=@includedir@
Name: libjq
URL: https://jqlang.github.io/jq/
URL: https://jqlang.org/
Description: Library to process JSON using a query language
Version: @VERSION@
Libs: -L${libdir} -ljq
-30
View File
@@ -1,30 +0,0 @@
#!/bin/bash
# This script builds the website from the docs directory of
# the current branch and copies it over to the gh-pages
# branch.
set -eux
shopt -s dotglob
# build website
scriptdir=$(dirname "$0")
cd "$scriptdir"/../docs
rm -rf output
mkdir output
pipenv run python3 build_website.py
cd ..
# copy to /tmp
tmpdir=$(mktemp -d -t jq.website.XXXXXXXXXX)
cp -r docs/output/* "$tmpdir"
cp .gitignore "$tmpdir"
# copy to gh-pages
git checkout gh-pages
cp -r "$tmpdir"/* .
cp "$tmpdir"/.gitignore .
# clean up
rm -rf "$tmpdir"
echo SUCCESS
+1 -1
View File
@@ -2,7 +2,7 @@
set -eu
cd "$(dirname "$0")/../"
test -d .git || exit 1
test -e .git || exit 1
if git describe --tags --match 'jq-*' >/dev/null 2>&1; then
git describe --tags --match 'jq-*' --dirty | sed 's/^jq-//'
+48 -25
View File
@@ -1,29 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGTC/RUBEADN02309KT3tmV3Wo8fZwVo2G/0z4XSuuzhnpGo5lJfTQ+rAzth
V4F9lrvakCUYhTrKe/d4Zv0uNWEV9Iz3G+raMLKY99X23OHoTBe4JLCCuV3nSEBF
+SNAoUW9VTBuR5UHNZ9fLsGpqbJSYFx5oU0xfMHWKirriIWkq/u4iTbgzX5keJRG
cCP9d3j5Hki7FSzHofzG5m/OBNIpTu2oYh+PuqlORmoaJ/bL/8ANa5CeFQHnkeHD
62zW1/lhuELUzFd0K+H/m4HmEv1u8XVMfnZM0cxSIAfJoV+vjlmmos6A18AHWqal
C6yS0OYWXxB/JbAVMGRtdKfoFSjMmQWTEUEFmMmHOxdriH/QN6O5X0kq6ZVCJPEK
0unzJRQn27hHH3zsHXZyIjF/W+pXCp0jtaQqF4AQW8GDL5wP5glS3yfvtbQQfL/R
qVSiU4SkM/5w6gwHPHR5jxibbHmuIqyIe0JjTNJJl9YvNcjM4rbIi6TZx8rh2BrP
xY+j6gBr0/clnFxB3O2LsfxhWTnZ1lmJb0M6n+ih8+371JSvEupqe9px18FsuxnM
8oQ5jF6LVSTxfydSPtBpofLz3/oGGmDkMGzVN1gsTxHJ2dG2u7G/VUpMSU7OPoRJ
a1rtNW4/Hgl9le09dQfus7grp70Lm6yaut60sbo0zPlAZdB57SDLwDSreQARAQAB
mQINBGiLapUBEADQOs2nBPkTE+kvvYlBwLo87W1sfMmj6Vf/HCzdCiQs3oye26d2
3rLHvgpr3Tyst3bp1VpZGATV97PxjZMOkxHfIkW+T1VubiWN6c1veBP6T0BycfLN
l2PbY+7FWY6pJPcKSrxMGyHqJYLs196JrGWyVJt2xHg6V8V8bEeVTXVyJsz175+a
zGPbXMeM6F6v3vwMBHD0EzgS2hE4NFbiqprgo11vOV1+/WOQ3GkyonEDyWchocNY
TZ9pIxUPnuBJKvf2vmOyYh6nr6PbN2aNA4JPCWGa3CwpWcsW0tTjLW5fIfWj5idH
jzDEdrG4tDUxxUVAElFun85T6p1JNzSwuMRkKbnkfvH6maNAhlp+XCXko7mo5jsh
ms9eysg9jnarvwwilh84q6ZHyf3qn/U9eEstiSCGuJ4OvqlYxY81rLEmNpL+FZ9r
IzwMVY1O2WOnRuqpVjZiI4dy4TUcAdaVKCsI3GrDBH/hJJUjg/JybM6nEURy4w95
O7g2LEn2DL4XjYhOXTbjaEdJaxCSYBX8CfZTlkzmPG1ea4IeXjXBmlMavMQGix5b
a3XAPUYB+IQALneQ00ME1KphJn0uCkH5a2GzPyW0uyliJye4F+g2KIo1gQgIIItt
nptxby/AwrAd955DkAYXYWza5WwsRZ/bmHNmAgIFJfIclo89glQ/Za/z2QARAQAB
tDdqcSBSZWxlYXNlIFNpZ25pbmcgS2V5IDxuby1zZW5kLWVtYWlsQGpxbGFuZy5n
aXRodWIuaW8+iQJUBBMBCgA+FiEEuNEmQbLVV2S3XP+l4aewjAfp7oYFAmTC/RUC
GwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ4aewjAfp7oYiTw/+
InD6e3o6Z8Cx1RNS37xZTgI2i+eA8N2m2drK8EybA5LOPjXEaSPeXDpOR0LkhiT2
uashRsHonNgrH3MfGxGa7C5rSbMiN0Lqp+IML4Z3x6PLLENGWYtZGk0Z3xfmm/HH
WV565xPJ3JtFRDtx11XaRRRPNrNojEKAcc9C06YPVfnVmIPVhi3ah/x4K+qMalGt
u1i+2OjC4+bdNkNhImnhOuQ+3EvxE7ocpEkI+z+8PnLFzjMXAnVslLf+oM1TmS2P
rv2xIXGGet41f0ube0d2pLIZEwv3NLAdlRvTysBLoE3VwbWV91GEH5U5gkf+rkLJ
cOBuZ4/mw+N3aVjMDD4sBiuNAY3WlwJf1otdzf/WB5JOsscgU2efs13Crjl4UQuz
fPHzzGpTJiSrBmFFURshYnwJsKzftil62zKoBA982jpmWIrOdDPcTe8ypT59MTvx
U/LelumomNfGHbNIbzZ2KBOS6hV38C7HrSqRRwV+lBenq6TTuiYT0BJaxPB1rPdT
39WS5JzllC5G5HmShzePrc9y+17+BIGyA+Cf1eOV0Jz8qtvgDvP2K7I0my0/+NJ0
U+fEFKul1TWgM5Jwqd0g6FBmjn2ZUuENyIk1nLcry6aRf3I4RLFopYzkbFf1u1PZ
FP7L7aCLmof0hsMiOEd9yAgiq20kdU8jx+NwkFBpDnA=
=ZgkJ
aXRodWIuaW8+iQJRBBMBCAA7FiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLapUC
GwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQsNpg+0VLrxjPjRAAgvHv
AR4FPiOOSIFOEIvrbq++5Q9IeCuS/gVBb54l28nqXYtXwYs9wZEenA2A3dg5Q7eK
2x0pD6QACNeQSIoDk3Ve0qgi1mNKJd+bzgfY4028aLF4ayG5Bsmcf0mNkBl3visU
pNcc20icPdzfnSRa6Fqz4CQDs7LX1nhjtBnSa0oT4gy8l924/TsPDU7tr31+DlNx
VeKS/6Guwz209bcDKhLrVv7p+XaCjHUAq0obUVPPrIr2zaI7b3M7zAypHGByLA/g
VfTeZiiY5j/o7L731owfDv5lZKRpnjsd8KmMu4SNvKOxu8CU2OetFvjiP/PxT7gP
SgZyEakrn9titv77xhbHumZ5xTTphLYPfPDmzS94pJxU7aXBUMUI2wgdWrA3HYNf
rTq9q70Jr2UCKZeCsNiIhtL3i2jBJBDfilxk82NU+/yAUDfLf6qKsMk8eoXIlcEO
BbSiyXpJSApfA4paKd3O6wSjJy+F+tChWf5hjVKu+jvUhWgQTnUGCcnx500CfE47
byaoN6287g+i4eeiSCPdpUR2H8kIT0wIOhKzylc92QfgIzGJ3lMzvkQszuSDEnt8
hp/rJnBVLR34KHki82pFcn7cpyLux5t7Bcg7oatwC1sUn4eYSRJMLdJabI7HJ0Qn
g9GbGqeoBEcnT/0K+CONrveDt0JbgAeQbNZOHOa5Ag0EaItqlQEQALruvRDFVmEz
jBmSOJbVqEQTeuQCB6f60zIkA8IcCt87+X45AqqWQUweHAkIxynZksp0uOySCrYb
3GxI2CpjEqMN87hCI0VhUExD6ZJrtlV0+ZdpZHZUqKxBUjRj3R92IQgcUlhrTjsd
aI+loBxpWk2upUNQeVBhHvJexV/Ccvgl1e1hmzmmEBXJwXAk3Dy7YRceTk4c7dbi
fIIqCvxCS/4QAyTKVJK1Ilz/DgqTFN9mSq9FT5qwtgYKz2U5/Lq8lEqNEAfvrra3
94JOvfN9b5PQiKsDQyfUNgAnrKKLnaxB5QSBMHZrTomAntsiH+3tWytYav43OEn9
Ti7jkx7cKn61DxxINSb/5a127xF8zVYy9w8Mxpp+KxiR5QfAh1DkJI89gJE8C7G4
vzIogrcksFjPRH+4Iz5FI8+CjTnqw3T+qjFGxDhSpb2RBTxZxGHRO8gW3y6s4CUb
7Ir+7s5+lyjJpcQa6x22rFuf35lBuWMvifG63TmeCw42oL5XtU3oiqHjwIZkQgxY
B58iN66eYIVlAOv7AVH5a5OHEUDbMem+M5jQJOqGBl/0cXkevtFENSX72eUideHO
XX7+TBmXz8eqt7NkDz50fKArRL9eQIuobBglSLiE8Edmgh4hzzagPD0rbNEQHiPS
TYnmUuGVJkHQrz1JRfCyB8KtVeHAygNvABEBAAGJAjYEGAEIACAWIQSTB5qVEe/A
t9bNv7Ww2mD7RUuvGAUCaItqlQIbDAAKCRCw2mD7RUuvGEI6D/9S5o3qZ+hAJUWM
8CymSYzv/ysAqnyBHZuYyDMV/xonpTdxX2NVm07dOc8dcWkF07WmML7sCUfHBNwS
uXl3rBoextcX7gGRtURnsRNqaW7M0q6ZckQiyanVs4+uAAfOYSWJ7uZvRQbEY0oN
JQJjrgRqcuNwQKkZGT0D7Bd5cnzCBuTYWRrO5oa4BQP5bKJO4BhFOmdVpMSQAiRx
9U/7sb/C2DKkrWapxRBSAiJ3myfDs0WIvqw8zfqUoqfLKqzpg81ix302Q2UAzFAI
Nq0JrStKDxzyBKsOd0YCp1MfL3Vy9VXZc1drkr6y1Pa6ieqoxFiDlbzkjkct65fW
HckG+/zms6qqIcEg1KkrYQlI20/S475iv4Q4uHCt8Jm3LkNIcSRyr2EvHBmjp39/
+L2cEa87g1GNku9ItB1AeUBmyYGYbS+Xpz9+q2Jgaw8iFudWuC57XBK1xwxO2XWa
3gDIQW+4Jwx4JwX+l0NLO9VxiNrORHWXwwF/DXjQ3mw0+rL9hxu7rozpvNZq2S+a
r9t7tM3jVErxQ6jlWADj0nkn1mQnxvWyL+TId4Ivj+7ThtGpbZDznMyittx7WZlS
iARYZRdTNrMaxmklbxQ1jCHyU6cds6JE2Ktsvylf6GJd9PID+ANXhVhy84yxiQmj
r+DHc9qnr7PlZcfurBj94kxeWHLxiA==
=22V4
-----END PGP PUBLIC KEY BLOCK-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd4ACgkQsNpg+0VL
rxhEhQ//Y2Eeo5cOdVdpd1TXFAKNuihry0Y6l9OcZy41yysHfAj6iEhzjuIMeCBO
KtoZU354/5FH0Ndevk+gpPoU96T4qREsrZlDyjieXgkCucYG+oNpW4k497DPX+g+
GjEUtOVtMh7sCHx6CBDdTKKzhTZA/Bk2IexKGr66wKo+8eF+GQF2ZwZ+sgd78DYm
CBqlh9FJhAQVzCCrK1CnmAFct+N5k1oasFKjUPxdzS5wj4XetWWfj1rFHaexxC+n
r5TCvq9YepiK2IgTQO+zo6bzbiIliRME3Jj9+C7fLR8wqpsWsGpfx+HY8Ie6OAiQ
161FyzQIk9U2MuN7rGTgyRkNLO/Zd9mBZZkhMgVEC8sFOUQJhey/Pk7ClwsJYppU
tSVKrt4oO/URozk1xhGhaZAGw0vKCLLCDqjpKXrPEUTR5zqQjVnqjT4oBESI5Lvr
/zG8Mw0ontK48D3cKNxuKzzUII1SStV+vd3vBXAglvB9/JTLgJlmiLoMGrnq9L4V
KOMD852i8QFabFo/CsRdA2oh3yp3q7Fac+qu7D9fJMJtsCY7ge+q49mc4Tc+BBAd
7kkZ3OBZtTaUzE8hdAzrJTiXm9DprqtSA75UJ9Yl5uDYux4V7LVkBTslo6sbrYfR
yEFIv6yULElJPwkGunooAwCMhJ9tb4r1JUvfJYSYAa+jt9i20Vs=
=BKS6
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd4ACgkQsNpg+0VL
rxjSxxAAxez+Ag1zwobaMD0QyplI8GgXNmX0JaSOfHJjp6zC9qxEpjNIDslrINsY
JZqSyOIc9Wt/gyVGQNlSuI2Xnd859Z6PhftQ96KFKxkUbWmIUJErIomL91nq1mPV
prI5yVcs18xVI1WVZSlibx5G8HUwR2ZgNb6VDLvhtqJMjD2HPjjMcKUOdUbgF4U1
v+XMKaztiBV30/nDrLjJRq6Mwq+qVIn+FAyPP8hUvTDnNwhFmRIEofgKTMSUToMN
eAgmNLwlBXiVO5iVJJVmQaGG6VKA73iCk5DTxSDaFj2o4yik5jVsuMincu+eVpqw
GEqR+sUkJ1iSJuGRXGzJtakp5uOS7g9bdRQa8EbXFDm1AX6bgE/kfvWs8auv3+Cy
N/YIedUna8UfZdltjJDdFDOPYd89HYkAUmL1OoQguOsM5gYL5wFGnNwxnIj50guH
+8mjT0gphhuBKygf8qZxOyK3NFr6y6/rhFkrtHTIvAgWzmjSqFTWcq+8m99RRDbq
V5OB2MSJeT1cp0LBtVTzP1zrXY6gQ0hNOorrxirzAEERd3wXBgqlgCQZ+tH1Es8D
VGsbQGjal5sIFxtA00D4l50uPbfWnXBW4lbC4/yBLvA6+A2MC9WSkb0tL2Grkvks
4nIyW40kSaV8a0WvQk07567XDnJwZLJTATcMqtYu7RWiefCq/UE=
=3DP0
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd4ACgkQsNpg+0VL
rxiHhw//TBEUiVj7hRN2sgAoot98X+iLpFY/mbChem01klE7FE/5GQ3rCuAuIxJB
MjzfTb36yrQeeqH8xrHQtsjyyMcZ0GLJjkQxusrLtQ+xzfyRESFfVCXHialsmrqI
0OtI/L3y7ERKu09Iqo3ijeCa3RNAjZx2fQh/WOKB+mboX0bG8ZG8G+rwrqGazhix
cdimaTcuONJ+87jUsxRDgP68LBKZL4w1h4iHl0GhGrc7rHAvDglmKeLfO/66qnMu
FkZeyTmL4pVgsgQ2t2aEgTvLFKDqJUtUiEqUUmqwE+dn02/+nLLN3aCo7sw7zLjH
2k/7P7VDV7oZsrr2JQdshWSlpMjx3mxeLKuED5WM8fXwKUvktBlGPvlP0VmcG5CB
4eeAycj/iv+eSxt5HBYU5FtzbOtNWwrtt14AbN4RqFVaVGH2y/avjlPUKbA8Toz5
bnZ0rrC5IVD19tP3m4DETepCGJKis611myN2hJ+qCgm61UsBTttjx6zafNOpo2jb
xl7TPpEfmIIGA7hu8y12rdOc/30RaTtTFxwa2k8oy0ma1IrP9A9k2Hy1AuOjLRal
kRHE3H6PuYU+n6TcP8XgoCJtL913/M9iH5T6EVm8gGFJxJA3E8s7Ybv+Qc6UGk8r
2fF+WoKVyc6hdsasHS+VByPiuYdNWhts6jIiGGBybfb4GFhwFbE=
=r9zR
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIyBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd4ACgkQsNpg+0VL
rxi9PQ/3UjtaLAq4pQUQt1NeripPHXHyIvmy0US03V9jh23l4zjJlnysfjm1GjmR
8HzSlpdofXdsIdomoUGx/QeheJMA/jUf4Re53qM89Uae5L0t9FoXP1XuvdFc6xKH
+F06AyT5qQHrM9RFkTk/XUQquWR2ILfY0hPE6F+uYpRjoXqDLIIfTXLWGZIAxxO9
jvT0YS0z6K2pM0ourhD5K+Co+PE9eajhPa7AyZm7NAciLNA5q4OzUqOva4VK1r01
wUzy68w8s5mOTUt4iATpgfn9aMcRloG6COJZd/CVeZRGQzNTjsstbXKlFzcx2G79
IHNgDnXFF+Kh4lG645TuboPFRp1xZlG7upKU09bM2rHDRZTO0nzHsOo0sGJY98ot
KW3HtrHzwTftlsg9m4F9qVVqPIdjcu/ap3okEo9ADe4QJmc1VIq8XxVlXvhw6PnZ
uvbkJbTGiHAn/Mrh2+A586j4/YTZSSej0TRnx5vreMg8YswEy+rw5oUsHaYpswKG
oBYm2FPRhPFE+L3OyoR19h05N2RcBkuKRU80hLi7a73e/jX9N/5NfkOOiNV0p6pz
GjJi/pWV9t1Tmr4l3kcn7SkViLr+P+bNY7XAhaOQNgHlKGjPjeT4xbvOQitCheyq
vqp7sIDn1XrcEG5CsliMmC2sjYIB6e03QmPYSj5dyJ1eql+lXQ==
=388h
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd4ACgkQsNpg+0VL
rxh9bA//feLBpnr8Qi62Jy4q2DHyzys9x7etjLF/eMG1ZoQoWXhQxYu7eRwabWhs
zdDOzLlpM7Xtv7yvYeigIP+cUlkhxeaak1D3Xwyj1/2Yf/iufhbDOnKekHglGnuo
NCAuUhjGsCFcpL75Gbb+IcSUuPaB36mB/S6C/EeVbGmArvA4lpo7KCYTg+05FyQC
8/lcnmNHVu32rJ22ojk+z9nZORRUFpIHIK2Pk77Vui+JM0M3nv2EDu3oXDZLRMia
L7bUyP4GgTGlXHSIws+RVRiXlk/UMAJBptBi+vxhAWTrVmfcLjzYqAjFBf5AB4uu
7IVr3VcW/07UJ1Mmn6W03MgZtnvwCqgLRrmTiZDxu++WLDyQrpL3kuffg81cvD8f
sGhv+AROwOo1V5gUoYVRA/kP16ph5Zhh+6HMJt7049yKpkAkZQes4Q7fVpGVapVm
+mA3FCrIIrzumJCdb6J6arYnZHib+VG/vDnjRafR6HNn9R/Xl6aWuYcSVUlPmJp1
SJbzeFJEUFbv+TsutQLmkClGR91nOnFiUsyJZtASKjdyBRzNbWZeBiwQCRv7ckPU
5OoQFtEFXuMOY5HzPI/dI5CIXCXAMKJON0aDupNmNQ4EPDtEkRjnWIdy+M5OaJoE
WySfSwHalmNuABjGhgdUZVROqs0qbSGte1XzoNkVp36oLvksP/8=
=7S87
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxgZDBAAioN1WXgi3onDx6SdbVaUnNp6C1BifwXXI2tQFFR5fAYfsjVxcZmM/kGV
U85ITOs9tduggML2ZXWeNBiJcyuXHFA+BadvjDUgQWK/ZYInpaGMzdBs/tO/nnRR
uMLuXbcPMiUmUIplxFelAUsjXkZrhomyRnCrIHB1IKcE0xYY/W/bWKzbUnx92jp7
w6qq7amivKtONyvoiN17NlWXhKkRr+ylwAm88mwKK6xkPVgN2no0fXJUVrhtA4lW
yrC3Ff8Xw3XeBHvKy2WFoLVsZlOg8l8dYdR+vMct43D9p9v7rKPqGmbjKvdOC4jt
Jf5tQ35lX2Up+/z06anIa0yoW9ywEiUNrmxNU9c11/VdoBRVX4MYz9UygAQDozje
1exr6hUv9H16+A7gsbmptRxzrJsvAGDaJEG45is3eSFtBoX63FkuDRw87DpEZwDT
/ojNrbu4KsYIHMXqZLNyfDPCSGIARSMxkyey8M28sw/AWAZnTEfusKcRpn1zYxjX
TUSWwPS+NLJFGQ43Re0FmxZsX1aNXfT5gia2WUm3IyxLgyyj79O6pTa3y/GbBXN8
2C4hiVPnrByvhLEq5WcgHDIYVYdwxTNR4YG6bYwkh1oCLedtkKwniKNGH/7yASuX
cJvJQnwp/2oCNqeYV8heOhZlwIRCC7rZQbUkgC5uAZ/Xx2FTYGo=
=KM7S
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxiUfg//RIvFDrv+ie8dzd3P8DEBxQA1A3Z49czZcK+LwXmy2PJUivJgvnOXv/8k
LnYXnURMtu9NwtpYXf1QD4Jz4q7I6X0LInaODYvGAV47boscSO287+xXVhulm6dN
u0xLsuc6Mt/TikdWx3Q9WSOkB+1ZsbHFQ289S4Xp0zSQ1F4mpfWqBfEPqVaJPL1M
PGr7j8IlWJ2GvVSf01t1aeHc+ijYZHdDm2YcHJ6vxbeHrqwFGXiTpllvauRkCj2o
JgNVK2ilwKg3wUUBJXeAUxhaqoMmhX/6OhnolFBxkF25ir4jI0rzLAfr65Sfciyq
Yz6dI7c1po04D9HA6j3QcyLI32QRUKa+nUMuNMf+XrP/jC0rsnOM+l04YneNGnIK
RaBQqQN9J1NhTFClka+o6PcSaAMxypGbWNDQ4KTyKiXId5iG4Csq2RXEn+mLMDOH
u5mlZp4ERp1xzSZAL6E0QxVatNCnB7wIZWHAh7bpNnt3tgvF7KCjLKcl6E3PLY7j
iRKEDdrDhiV6hiniHPQk4dqYNxN4/E60vy4zdDNG/tHyyKHIjZsBUosqIAXRALia
3WsXu6Qka0X9t1OO8kznFo2UUhFS7x0NGaNTcOBCleP81JIfdpF50UD2AEEWwhMV
89yyN51bz2v9pumebu2NrhE94jLmOgEOQaUe5BzbwYLQfzE7jJ4=
=y+Wi
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxgcGRAAwEp2asToQT7ejK/dxWJ9RnWVT6i9O4HHA+77WU/8bp4qNbXKYOkmAVKl
PyiFQxkJPq/fezEmRo4nURinHJiOnWRnznFeqhk5iIT3D4lubVwpQmVmJQvgamsD
hS0YmSKgfG/4Ub43qug57uqw7F89foDGq6UastyDT2/z3emZxvT6gpMz1CuZji12
uZFHnK0JJMpK9a4yrs8quJe9K+lyQg8BLT2Ee/UX9TeqhdR5arYKNEWGtzSD0pDE
FCDY+QgWxSIlfyGTM5dwOL/Xo4t93z9cDADb+d2q+4bIfUK+JoUT+hACDJYm5i9w
M+FP9lKk5d7w3wkOoWKMnKdRVnCm/BMpeRHUhXct9QHGtAQlM8X1S2wgMeh3RSL4
uJxhb9n/jpVrCafValXCYKHISa00GfJFf35arZ50zrfrj+NSVa92fyvC/SNR7RXQ
KK/e/MAUa82nU2DVJb5VO+GUMtWXK9zQZgJ64O4p+LTcV6hm55e/h11BkLeVGI5u
C7PySgMttXbUVny8zXOCVtKw/yx4Kd9PKZUNhBkTocxPe3eQklFcdQLsrEEF+IIS
pEXFpXDMzG0opctSMpp03rIQDYj3INScaQ2HxsetBwDqI2CkJH87s4V8dCVcpWU8
UQzp/emVyg8b1nkPyc91vn7rAiN19BRkYX3/VihPk2StcQbUZ84=
=/4sS
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxgCFw//Rsxw9x76y+iOqgoDYsBmDCH4v40OjljBtDyC66zOwU9vR95CWhM6iTr3
dHsIqScDeAtMrY3aN1aOoPjC7JwYc3HljFNIB6m1uBAuRtaEFXfV+/z9rYK4vTFg
kw/M7m+gKJY3AF3fz/W6i8oug211e2S3eeZeOUW2ISllrCc3LHCkLuGoqIlWty2v
BQvvoEtYJRZ02KKTIZwWIh5ku+IFrTkc5+hxB9PGcEHS4qUnfhW0cRMP9/RwoBa7
7HxjXVHG6LNlUXASP+d+CtOrRtxlDwaGKZzYq2pzmBzm73wP7RBUrmxuKL3U+U3l
p4cnKHBIvDdE/a+1QOLhL6zHZAE4WFfpKFu8cyyDhGOI5mxXPs7xDCPnF5GATETv
WJ3BCPoWrfDGZpyTzonzx2XWDnIlc9weQ4aKKJ7Gbwb8Y3hHfSNgQlcIG9txgdFt
ds5X/ouwcRzzB3zrGTk6Jvwpf+rhdmHnRiuzkpp4SefIQAvigiQ5VRhjxGKjah+b
43M+2wyc6539uV1oUbKGMQo11tWhyTSMYfUoJ9F5iH1za30xGQsz+TmrPZvwJdOI
eOMifiamfYAyQnB/zmSkgiK8F7uOjJt23EB/F9ydJ1zgPC+fzzgwsIWKL5Nymgsu
vobkSfQNdA131IUwDyCMLBgJgLi5nZ2YwhdFoPGf7NtISzk8FRU=
=qIDo
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxh5cA//c4nMQ2cFJWWbiZ8EWLZAtpzoXYEfjsHwKjT58xXs5WO2n/DNgr2jCuWw
fZaqv1rav/aRXX9FPLaW+uYExY98axq9XxyCAGVmqaJyorXExJKOFzxeIH5ypZkt
aWFeR3SPv4wTxW99bXy5Ut537l01quKPo2xUx+agdxPYGCl02HtOdFOyshNsbjxD
4LNDusboIY48shNRjeOIoX2174M1o07Bg3Kpvp4B8a3y/I9wZfLHGYYAcbXJR0uN
0Ey9ucslel7m70ibaHaTlr8Epzn7YFl5/XI4vJF8Dl68z1M9WkHRbiO8pSor5ckv
uhXPdrbs16pyn/Qo/8/PFnA/jdTadaMzI4NuvVcvOp8YLFbe3UGAqlRjTpEs0cDg
F/nfKF+PFfL1sb9zYkhjgCiRerhpGzdO96IuP7nzF78zEzfFT4/c2C/SBaLpwdN8
ax8YwsU9FRmu9Dp/aMy3y9H2QWmCz/vmBfwUGqD4qzNJesmk9J7HHgZqJ5e8SjdD
nA+UlL9eVbXBJU2aD3x3+fX6L06irCR6JDeP/FiL+/25FZ8X4PZnL4LBTS3Ggh0S
4CPT7IUp7dsNvdQoKH8HlpUuBskzIfnZpwP7dumz76s3hxPHZEdvAWQGcEtSe/BW
QvWSEqok9wTePG4P2n0AYKOmvUDpQPzhWPigiPIU9PRXpXBng1o=
=wQpv
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxhB7g//UwWwAWCzjIIHrjCCzw0odLyEFWklrXhIvfwclCw5c9MQemR/qfuwzAQE
+oRMN+DEs33SFRNokkGbhJc16BMqEX6l1msHFlqHc/HBX86HLwLmeEIwzVZEhWjp
Lsa4HeBaXEZmLkxnT8P9sNvPmVbFUb/kdIFd8qXPEmMYfIZ04tUjGIL2iVLBhjgU
rzjaIdadmi3VRMs1HF4lbu6BqB6XNX4F8E1mA0NJ8cRo+5La5sA8hUVIxXPv30E0
ndEOnZYx1LN5bXAv6dwZrjD1LIskWzY19ep898jM/2/8KpS7oYP+w7E6QKWq6aL+
E2pgjEAXSfQ/0HFCh89+b5m6TL2H2rmKhflHbZRgVuLi1k9CP85dIV4rpgpIw52I
jSPws7QkdVZhtWS/wDdknFZkyloWwLpxoCBW87EfjAfjDGJqQmNAhriDFJhsJGih
TwhwASvmCpaJksizoWxJriTwcLCbofyN6qtjmU4+TD2/PJ6UeO6IsL+Z0vdcxttn
QujEKBnTD1jCU+PrTOdc99knflr8Hn88O7wD9Bem8gMWGz97U8uwmb/NuOFylvp+
4jAWrokM+s56naBkgtFyGaRlLv1Gh/s7NhmiYALnZr6SRNSieRacLyPvu6NBkx+6
mvB4261OqZal0D66dGZf6l8OFOrghr8kXu9+45BQZK7UxPfAwxA=
=sQMd
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxi3fQ/+OFDEzY2396qJS9gK7Grxs6Ul0/wM7KZIFftzcc6cVShooMJTYWwiYlEh
AwZsi4pqI/47zhQZKhjRebkw4okLmKX8tOrjyBC33tKRu/MfxxHQW73I96JvOfxF
knO5OMB/XBHSH0H3g0IRHqFzv/y6P2spUZhY8/VR/Bzz5SfSID20IYYDACbSAUCA
onsJcq7fqNK+ygfthB50nKj99WOWFar5SED6bn/uPgvxBD0JnF9eTC9IT7EVjNZI
VtivR3nFQHuSUgFDJyWhKYFlpzRRij9KcPdsRSlRxFNZpVqOopI3lNJ2y/AHAeHh
FHNQ6LVKBm5uJCyXttAgXTglTm97qKZaRkuHjRyAuiCDlGaKfZJYwMff6/e/YaXO
0rMu0k1ArXUNPOGnOnGequAltDbu4vqJcKbhF/EPVA36t65B3Piyh4P8tQMWWMg/
RFD41ZSARphbRct+BAXCQijwDt2M/jFhwjCPcD+UKYR4k0RkRfkDMQ+XCqmP/+5G
b14+6OKk9yULXBrWlVPbT+rRoVas/a88P/R/l96FRc9KtSq8SbVJhuiwiSf/Q8P/
Oqqu9qY5pOWPdfndpAmaqD+wR1LCVT8AZvLA/cIX2Vr8urMJIgnf+tSq25UX6wYH
ZMwiUoZAFUyZVGh4AB6R9M+wiz2HByHbX87OFZxuoPRK+etpX4M=
=RPjm
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcd8ACgkQsNpg+0VL
rxjp/hAAgwlPF0DYTZPquduWvTeUDBT5lz3uQvibB7lGQ74GlHEspyC63Sd1nXi9
pfCSwIEkUgpRbdkDhNPZbDa7cInO1VFKCZnjgWdeJAIaTRYuFcPg5Uik8lhg9Uu+
AGFrR1atjX3tePhcA3NjbZUKNOneQgibBoqJX199UxF6Q0o1O1EuZG5KVZbGb1up
alQ2+iB78qLKGUmqwE4q01S0XxlSTMqtTKFjvRWNKJb90ZwQ3hdwIHpduEMgQ2nU
Vjz/6w0nGRXpw4+zVKQt7wJfbUKWsoKlElmrBw5otXoAmhff0ZltGR1d+50xZ7Yg
NQecoVl84BhkChEIuUrYeH4XlRle01SZvtJJvroinrGEyeNuouVITq1+zftTmRbE
FLAqabLWc+ChK9uQHo7DVg6GELKZbVcT+h0MrI4PBo0upjON/P1SqRxLEm44H7ME
huG1a88rCLa0b6qz8U331JuJhIch3Le2KA3HYDQycYoF+J+juPfyAsRGPdi1IASh
ImO0i1rotRlZP24UG8rAIKIqfBjUMKsltg8mVJ+QYikrFn9oQzGNxwMAH8M17hXY
SNSev+mRr8u7zNvfHnCWRbjOiI664gMpllLhDspTM6PDzEuafKrlLpBZF4Q/ymht
Ua8olKOn1/K4E8ZcRl5ZrSJIP3E5p63reyVE21WOaBMHd/cyV3w=
=yLDy
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxiWKg//TpJChosdrGdCiEFohHTNoHMIBvF1C25ohMTLRbBsgBPYS4dP/YaDWeT3
gjc1lMn/JYFj7lqxAukS4aA8H4lSkwltXG25oE4mZxDfwCl1cYZ4A1480Ee1Ubc1
t/6ypGc7VotiAxRCywRDd2h6Cb80RUczy1IyWXhS9OMbzBACUwYJhBKXdfWtxKGU
1SwR3oxLUMrKkKSyXwy/5+bjSX+E1ZmJFcUI5VN8kwERv/3v/1go0oqxeLDagM/z
vtmcyvMdMEuzdIROtfCSr+CcBSh4Vy8bNrJiPD1needlE+5pgNL238P+zPuqRl0H
EsYFrUod052zoHWwaHOUN3tknaFKzTjN+1UmRRwV8go+bJd4XxIwB/g+MsB95Ewe
jbVyOWuOcMm2zWYSFSMeL3m78D3uHmHsFfnaeV3y6bjUnM5dQLQbt+N0kUiW7tzJ
1tNc964lUeGJcHMBUSNbOlZDHlxPmfWsNufFxCxAr/D1Pm8zk/DPNWeC6HGGWdB0
4rFeZFmvSAPQPdN0ChXYH50vzS4mQgP6jgrXsNo3JuHOK6bl3nUO1QllwOsgiCKl
ZMBB/iuZWwcMFAJSundeuEvPyE0Q78GmlxbOB6UWMAH9Q1Q5fMTGW5YAy4WvHhoa
bTeZOZ9CSzb3hgxxO+mujrSe0ucaUChPeghaLUJVly43Jc1xLh8=
=yC09
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxgpxQ//R+95Bn2kKcghpgJnrsT2DXFwg6pq8+fB5ikhjfRPps79QLtPdsS62I1o
f8chDHA82IBPh21VDHo2l4Y5WeGmvRvidH+IQQ+SE9zoIG51quEWUX+slYWvTcV/
lhcxQz0Z9pFSGy/+FAGUJX8BGLiyB6yKyHco/44F9vBNCL3WLRqEZsXI9E1yswcV
wmERlOdQA6uNhTqdOKGfYtK9BZqODYosBWgE+FDZbqyYM58aBjTWcMBvtsuXDfAm
nI5bG5umdtOjSeLclhEoQInD3971XI9sbWQRTh7gMwsZ1CKpXvR5b/+p78nhPbha
Yxk6x8smJ6WBSQ6X5yc/ZH4dHuYObBtbpiIHSCoVNbwzI7rQUng9fmAcrwcLDmlH
+MEJzxXQ1bB2rqPSlf5TE/cwcthWNAPggwPMjdC3++OswzQ5DjtG9au+MgesX7nu
rDYxnDS61ZPn34lDqgLjmYXNhZ6LNRHNu1QxBwd6e6adBfkygOB/FOnvVxcTMgTd
Gg8Y27UUe3iSizpCIiKTAkquM/gbFVVTze1vDswkFii6CkTkIztm9D3v4gWR61PH
IQd+4E8yeY5OL2xggME0yg/0j4lzz++wze4XaQo1E3fNQcpYE/WaQuJmykDpsCnh
hfkOmEd+Q8Ver3woit7RpXQO8uGrU1OW2dRDhQpYj/XZ2wF0sgg=
=NopQ
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxiXVw/9F2CgcLQKF74V3KEOrg0cn6YjAIszrgTRGULbTye9jiKHoieS+Yo19ucB
tp3iDjttP0a6jPr7jfPBc/I6ae+sjdQ6rDflJbzY+8ezFjtpCZhyeNz3cByzCsMS
aqojhS2IL1BB/ux+DpjUVecr5z1XXPJV/R+VYnKyN0CTrp8mh3MR6CjEmHGwuoJV
VGFJe/oMMC+C2eS+Qn9yxuPAyotnVuhmlRsvKO5+5ec5yFnIJY2rF/s9Bss5cwyK
tSB6EoRMND0uJSGtDfsHbgiJQTiHXTeFluvwyJQvFUAaThE4BPdgbfwN+XAVI+nm
XAPVvg1vwgmzr2GHTJu+N8liRSVdzgHTYQj5RiAJEOjZEPjNRdHSU+Dd9PNTp4T2
lcuavOOja+4bXWz9EL7vgeFcD+giUIW7QG3CYlL+TAWrxOLa5ZVwEgDc4zW6qZPR
Z+O5ppOLdusDXt0U7uNiSeLrw+UiuFtMBes80uZqvmBI4AvuUjRzERISKlrT9b2n
6/bD+IcwdigdRdnLQHXXRbnjFo35TajDptgdPMnG+l3LDIP8NYYtRWgHavYoBR0X
tRcTSZF3QdKPSVzYwQ7uK1P+TFdsHqXtWKaHzUyhaOlRLmSjl3yCPVbRIwnLYIgs
hSTJhsFhDo35w+/zoCm7IDgCf/ZHnRp/zgc3HpSHjWgWGPKD1ps=
=FQz0
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxjAaw/9HtCptIOmxpfbz29e1eqt1MW5yt2kRNZ+Pl/Xw1SILvhMtwHKCwrJKSrI
yqOY7wQkfptemmReTN1xV+lNwjfc5l6GHQQpX5kzHjSFk87Cqo76ji2k7riQJ1FS
RTy2i0cXkOW0IgHLIV/mdm7Yc/6Cay0xOzx2zr7C/azxNpVn2/3PXxkySWhfNUAo
6T7K6tmRmUT6Gp9Q28LZIVJcsr4sw9TXlCvfe99G4jFgLPuqP4J0p6EzuZkgZOzD
8brmWEo/fszjnD6Xdagb0UCZDW4FumcRwptS2uV9fu39BOIIzTlGJj5cQ08zsQlO
2xRvwuOQzAyv1CzGBIIh1c36T0zkL+I8ATvBS6FFjMSLBBp8bDXtDKad2qrZHASi
fML1pbscqenGkHEuLUer0kwcJ3ndi3WVNgErqPTmLB2g8TMCS4pbkaHy1StTnxsn
NQO9fMBgF9Df6PyaPi7xfmGlBEJiW9/CYckltsoTEaWnpChkZGPiVgKcvh6W2amf
Y/evImn7NRrV/NE6NXzMnxCJABs9ozmoEgQWrqKEKQJ0nXGUakeDk0FTTFiQxVa9
5NV7s4ISJOI4qDevYnS/8jDtjEe41l3yyL50BVmwnX+63rWXwU9R+VBeWgUKXMWy
pRYsZ9tNneL3GXoy4ERYZ8C8XFTE25P+qH8MyT5M4yaA0AJFZjM=
=H6MW
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxhxCw//TRcytUiUuQ4yjdCPzGP8DkXR8hFpwCVaZliH4dRd5ZF0Td1QS48cSM0E
3kbzAXd8L2KmJdzNmZCY8F0p1k6q0/HYdf9bj/qaXncS/6/JhwR0MSewIUgeUG2d
nT45eUkKoDXERibK/HAxG517umnzXAeoowLqMhYjc2PaZn9rqFluSDs6CuZ2Uq7m
DsZF2cjYHBXLDKxkjOEqY1uo4E28VlRAkm2N/xQ8HJnvJSZ021M0tvy2PrSTF52+
H2KC5JlpCGLTce9JD5EFmQ8KYLCkJ0fBY0M0CKvBK7aKXGPc8e6iCHP7yMtYPXJZ
KyzE5jThiCo87A+GiWao3VNy2HMTBxs1RMJJ+raJF5VDSycMTkg5+QG2qaf1h0ER
rxN3Rh2CTCkXQ+7GTECYGjcsmbR7XIHKk8oxmh46VEfVpsXBJSQ9eUzZeoWwdTT0
2JnudjVs5EUk3tzzNGDjoo/EVESXSoJHoZFLPFsrm0BfvWkEF2933Hl/hQGTxcg1
JZPlbbk+csraGiixdZCTWvRFNHCQjixGUEODR1Fo9j2vtnpVFjqQMNXpLTCfsejb
UrIOXsYqh8+RjzSuYzhGbp6NmUKZMBRyPrBr9i747O5fqrv0lunIDiP9eXh4DKI2
HV+v/hMiUv5anCMihmTTKP99VOpAfBdmG0jFjfEd8xlUcNLDzpU=
=6jT7
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxiDcA//ecc7FbMqqVhrICDLCVu1h3/sNy6hsuOFz9n1A1IWB1/vlGXkYaxsONf5
AkDcBRHkt9Gt3PXxbLyhLo0zb0NWbIkIt62IfHX/NU4bEpk+95DugWMKiZ7Jnyo/
2bsiUz51IxGlsMubTn+VOOjfdFrob93NupQI7Uob6FMI2M7347vA3qBwFgmt3CU/
WrCRR4o8sZCmjIKWo8oIZJ/7kw9fhoi2mvN3lxs0uodd4/V/t9dQgpx6vXQ13CF+
B4UwtfYKCMURDkpxM+6OAQsQWHdFCrpv8wnxx8M5uNmqxkfKAu9S8nYP5/jM/9gF
nQ4A4viwc69HGPxh0hOLWXXdP4kLGYA88zDzBrPjyQhWOaGXJwUadmojAahXLfrI
Yd7mUQ4wZKZsAYK4hT0NJAsp/Da5N4bXYoyvDPT3e5grYab66WBxGpvsaCZhxy/z
k9Ur58eSmD2ClHiUdmELfiwK/jehh+3uHDg4uAUhxcybz9bSgxATwGUkbYND8HCC
scRRmeyY8QtlXdtQVd0zhJB4uV8RJJx1D0LzeGqOyrn8HX+iHmbnRBVRrNlWirKE
Q8LeFFCD449rDn86Ss03S5uwilDmtkyZ1w2DWV960ApULsi8UMTLGLEVlBU3IbUU
OOB6RlPfv8pZZG40R4xrldjiQdwUD88hg6OkvUYHcrkII5xYdU0=
=v+tG
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxhBkxAAj9b99EVI4eIbHthB5LehqOXsmRCqcxh0ygfquG7KzqApMaYuqcuVULLq
cyVh0NzmMLalzf2Wb30BRshSJgUHBFIbilw8vHshQ5Wr/wLOr7ZJNP6IvS+iKsR0
lkk6qM106ZmYxN/Y0AHUBjh449gjFjIvDD8ROWlC/2BA9Hq7d6fJQj6S6SmM0P9n
OKF/GxjmBuIKSPgOP++If8WfbjqBf29I/irXOVFX/8f6KsCuPRBFNUW3GwcvgEEu
WCUdnAnbBDjgKFhcXZK2fL0B1PS/9JZlKX9qNfmuiR+oCDp/MJoa7D4ilyUPZdzx
LqzeMC//aWbJx99GtOUJGbE2ZYRzYc1/5s7fwE/i953F+Qg7U3xIdMpabLkHFn3V
W5PNZvKnzKg5LGWZbHXjnadP51Sgi2mosMfq3noSLOd3tNoYh9sCR1hFMAUY9wwz
ssqDrpd9kycDasJ6Q/eVs/ZGnByG74K1J+z8ES96d9MG0oiezUx2pqBWWrjANJZw
6fKI2rYyfztknT4/2oyDmzEYkrfX0liJSYA4mVDl6UxC/qq2aexjKEepFJf7zO0J
pUxRTvamjU5dNVTy4DpBgZesgVx8SiaktyH60WnphyUL9CWlttgmwDXjxwiVqVZ+
XEUprAlN9SLMVgD78Hl8RZ8xMb0ZeiL7cb66H04IkEnf5XWZZ4U=
=yRmS
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxg3xQ//Z2VE6wRM6rIHWnT9OzadzGcmJjEqCzCN7krdkvUMpO7OjTfl05rARnqw
in98seJez4GydIpBOTlwm0MU7zM6lQ5AFsTLcR29XqKxJZF9cYZZqe0wPbDWxZuh
/4sEP9cQ+Os85q1USbxOrnO0rcGDPfuBc28IZv8NOHj76DUg867d+ApTxzqkkicy
Zd3oBN9Ohrs1TFN3VlEmBOlUKWxhGJTVZOzF4YzGrxh/toEfYTTlDNppNt2EEDbN
HCvn5z5pxJtzc3338a1tAEoTxhdFn9fr7uAdZyxm+SZGTB9V+wfFUcKXicx04Bf7
Hn1zmS8yGEGeXa4pA33fR1MsSnO67T4OyMx18ZmlbkknJiV4GvaCmco6wlyj+AtH
C5pHm4Fhf9p9IQXO+I6xcJa/allChEjv67/bZGl1QlRWrzD/Ut6SetqMHEOFyU2T
eD1oImg+zlpFNeV1pEWBALqLhDLFkd0XXjSy77RxcBsN+w2VwHEb0PHbWPZ1+Etm
8i/7NPuty5eAUG4vH+hskqEFLFi0L11j6L9eLcAutjNCbR2BAOACxHkfT15bVwj4
rUFCH0Xy/jL5qr/8ondT52MthOQjUF/bw6nB9Pd2JJWa4oDihbYKC/6fzvFhLtOC
tDuM4E1YBQnfQA+vPP+qEItOa5sFO/Fx2NiNAYXp54li5BSSkkw=
=jB0s
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceAACgkQsNpg+0VL
rxgxvg//X+TyO3SdT94jlBn0JHBmztCtiKur1nm1XlbvA4cibfwN0hK03SPzL4d6
f6lX49JP76CtN4sGPYhOCim1CUTYRQHsCzTM/5oA9RSC5ssgg4rcoO4GK0PmaDt+
PEgiP9Qzi1aTubjcgmfkuK1+oiERYtRTDdt4LnuBBFL/mLsU6zrR9WcDTQSDo1CQ
gqyn+Pvpr00UeVGS0l2JHyE+4ZgNOODqlz9tE/7Ab4iHKYF9ahPuCUoMySRA4WOk
cYphD2CWWd+mJ2Oi3ryvnRo7mlJLzxusWmrkFv4ei+skttrQXFcxCOJxvqruBN2d
IrR71/Ydy+ozIGwWsLAFQ/yS4KcrPJiHcmfybwx6XgXp/qyNeel+B1Sb8aO1uSjj
Q0j2MBltS4DOLvAEvhFVrHzKf5zmAJETwpK4vcYqYALnLMW9O0kfV/PDpN1r0eJP
cyFtu+kjuLsg1M8Hpz5y/uVoXnNBSFtCBEkoE9Dh58r7vyVp3/2BHbXvAxWQuE17
F+TwEFHX5AbRRNQEmG0uhuAaSDU6wcInepgR1Nn4F5+wtT4s+iSMe5MKK8OEV26Q
q88sbJ8AJI97C1dEzD7bPYoqBxwOklhNISBI6K5rnC1Y4YnBHVNY1M9bgT02TzHz
q5wrEHlo0dAzUSoCZCJvWWKjKD30yGXqybBL8mogU/dAhcJbZPQ=
=3Kro
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceEACgkQsNpg+0VL
rxjqlxAAsKcs/5wnGUfL3DBueHA7giwZXd7Od5sXGPSahQpezsYF8S46t5OEN3y4
fyj1JvXfdMFSBi8Pcw+LQ5iXv+AtmRksF0UmewibVrq4ETVVF926n/tcm9eouVOF
I3VKZVKm+UULhRy8XVjkMMCbqb/AZW8HZGuOnpWg4UlQgPX3FpiAYBZJdT8TLv4O
UHqp8hMCp/qwCRSshTcKBqCEbdITm5OI35hqfotpoA9F0SUVTBIbu+xgvksrW5X/
6Yy+OVvS01RFgF1F6KeJmxrfxo4K4/eNSuCbYJTHfTNB3vK5RBwki9ufqY7GOhqe
RcHC9q1PSK/FUlp52MhwIwLGp+fdKcJjOpXcgZec1kHlPGENcAi8zE5WrCGaEtQa
XK9DtNedbu873UuJJKA3uoeWFQLsG0GKIK+ESgG5lZWQvP57XyG2rQx2opTLVasd
EA1ctJFi5IIeP8vpyF4/WI6tgy3sgULucxFlpsdxNHEm80tpa61p0A3YVRuVxAre
4GetVrb21dkgg0kfEmhHKrntaRDMI7DYwHr9YNCfxUPapgkcaYfzLM+VouFbYUiK
JDnPwRYV0ti5V30nfnbQzCcVCk2za5XFhbH4kXMwbYB9XCT21hk/xlCCPG4FxFQN
Gm1iNL8USJjQXtdTDq8W1aO1kah8FJO6lfZsEcJEuUpvQbbhXe0=
=rNMh
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceEACgkQsNpg+0VL
rxiYtw/9FETxa8Nx91lb6WKS5GknbWaaiaCIXpN4GqZORUnrMnoPqF35PyqEYPZX
XXn+jvZ5fvsvyWsyWrE7+AMLZ+bS/0WQnryVg7pxfo/4RBW4eqcagBQgaORbShKd
JO3F4I9nuR17QPKk86KtjvJlntxnJK0wxJvIWiFZge8gvymaLL0ot1tyak3HhD4K
BPeRRl31Jgnuw/pIjgUuNPYU6DaEzPw613e8Se1SrpgA6fA4CYzO4nRl1ah0Mxws
wRSVDakGKz/yRtVj9uGFSpGWfgezkU8py+5fr8PcmcLt2tVj6rFzW7siCBCMHQDu
UnSuVaXtfXxc0YZV2Ih8iMP/Ehy9RDQ8CPwvo9GHPz0FZuy8lc25DB+IeRYK+qhZ
z0upYYeRJyp8d4t66ReiF3JxADF1uEfN34ZSHznS6BpVHDtaAi0kDjy3c2VEDTLV
Qa3zx248cT+qHMVOa+6i7AhWAWuAsSzM5xwiuOmb2RDBzoYy3maqBME5VL3u/qWt
QyPHkJKpXg6OifbsyerOTPSvWUIH08lv7UKjHQJYRrlpHjwyCq8W8VlR9ceX6ee4
4IRlbZwZpv3f8T5RzCIhx28t3K5i2rPcsblFit0t8xIa+F/ZiW/0uQXyebcyFllq
Gq/KMxdGAbPh4P06Dh979MMhmgr5e+FjY2W4bkeAG6N0stZ/bdg=
=/bLq
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceEACgkQsNpg+0VL
rxiYtw/9FETxa8Nx91lb6WKS5GknbWaaiaCIXpN4GqZORUnrMnoPqF35PyqEYPZX
XXn+jvZ5fvsvyWsyWrE7+AMLZ+bS/0WQnryVg7pxfo/4RBW4eqcagBQgaORbShKd
JO3F4I9nuR17QPKk86KtjvJlntxnJK0wxJvIWiFZge8gvymaLL0ot1tyak3HhD4K
BPeRRl31Jgnuw/pIjgUuNPYU6DaEzPw613e8Se1SrpgA6fA4CYzO4nRl1ah0Mxws
wRSVDakGKz/yRtVj9uGFSpGWfgezkU8py+5fr8PcmcLt2tVj6rFzW7siCBCMHQDu
UnSuVaXtfXxc0YZV2Ih8iMP/Ehy9RDQ8CPwvo9GHPz0FZuy8lc25DB+IeRYK+qhZ
z0upYYeRJyp8d4t66ReiF3JxADF1uEfN34ZSHznS6BpVHDtaAi0kDjy3c2VEDTLV
Qa3zx248cT+qHMVOa+6i7AhWAWuAsSzM5xwiuOmb2RDBzoYy3maqBME5VL3u/qWt
QyPHkJKpXg6OifbsyerOTPSvWUIH08lv7UKjHQJYRrlpHjwyCq8W8VlR9ceX6ee4
4IRlbZwZpv3f8T5RzCIhx28t3K5i2rPcsblFit0t8xIa+F/ZiW/0uQXyebcyFllq
Gq/KMxdGAbPh4P06Dh979MMhmgr5e+FjY2W4bkeAG6N0stZ/bdg=
=/bLq
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLceEACgkQsNpg+0VL
rxi3Aw/+KIV4xZdceYNHNsSQw0Dmca4ftP2rPy3tzxHb/RdAtcG83p2bjrj76fNp
fdZdQ8LclGQYwAQ4w4ZevZaXOdlAj1a0CwuRxMDlTWJ8rsiUqa47bBeAd6R6HyHi
PkSZXgcwhrsF3cUsXe/sb9Iw5/LSRYz0gcyRrWLKGZV49ip4XQaHV7zDnQ+YpgQo
ppM5CJ+A9qsFhzfmEpW2R8qD372NjzCoUfExJlgWZGM0IAxNWX04sr/spnp7dLnE
HBYl7rVGT1LMwIqi5YbzD/1O8DzFd61nJBMKjoJp4kRmer1gxzexXlWWM2e0AXT5
rGxjSCHU5CrHQ98RsnRvvJcwNC2bV4YyV9VJm1rVlDGzyKkbRgRn/WtN3Yd1BKKo
AZ8O9jzWbb0b9NKh8SM3x/+BZwqZ5/WvokG/N+jLwYSyflHgbJkGbvwWBnq/8Fl2
oBJVEH9HznOanyc7fasJp29lGxzCrgaoNKjdCWYkmqvbXZddq0pZUk09gQu/QsHt
NykYjkXII6+z1vzFUVugZH9ce5eZmVdZRm1X7VNNTlfbdAFwdV8+5m/nfB9XYdT/
LTVPk72Hfu66OHcgpht1mYBnQfOzKgEQ1ppwa0LQSDpOUF4zTXsbzm1xe+F8bkhh
lMpfW/YI9Trtjumyfl23fg7Smcc2RfIZLr7yPCJAQ82X0HcT5Co=
=Y/mq
-----END PGP SIGNATURE-----
+26
View File
@@ -0,0 +1,26 @@
478c9ca129fd2e3443fe27314b455e211e0d8c60bc8ff7df703873deeee580c2 jq-1.7.1.tar.gz
c9fab0ed0ce278dabc0606462ab9c4c3385bc801e958993dc0ed3ebedc15cddb jq-1.7.1.zip
5942c9b0934e510ee61eb3e30273f1b3fe2590df93933a93d7c58b81d19c8ff5 jq-linux-amd64
4dd2d8a0661df0b22f1bb9a1f9830f06b6f3b8f7d91211a1ef5d7c4f06a8b4a5 jq-linux-arm64
d6b86023e0848c93a618a74b6fd741ce62f5d557fd3c2c1d7870663713b2c174 jq-linux-armel
46d18f115cca638efed22b90342d52a84a25ab1bef570551d3a16f7eb065c298 jq-linux-armhf
bc473fd4b385789e9ce3d02a4c8df74dc988a34b20fe4e1a80da997eb360b599 jq-linux-i386
5b7c362a354dda4f91bbfd26f7ed92c7cf7ceac28c022b1579c7c228149b55d2 jq-linux-mips
3d4b43d0ab571431fdfc786f951a0547a05f75aed5c076409ed2cb58b7244de1 jq-linux-mips64
604f5a87da0e17a1e8c12422eeacb47e93e3eca60c8fe17a35fbc629d425bdca jq-linux-mips64el
21de7590f4bfa078514a6d3186bd68746fe331eca4807d6ca0299fbba2d2212e jq-linux-mips64r6
30ce843d9910925f6ff3417ff13db469b5a73a2d727700cb4c3c12de8665c1be jq-linux-mips64r6el
5174f769b2a8a111743e316778aeb88ae4f8cada0caacb5c93ce6baf9287dcc5 jq-linux-mipsel
f6d4a65deb9002cb59c00e80af6314846d2229ecafee53449228197f7b8d28ea jq-linux-mipsr6
e88b5bda2d0df0257033477fe53eb8544fb44c8275c814d4279ab7dab84b2e51 jq-linux-mipsr6el
761a9b3ad168e4ed0413c795f5546725be3ef1e1a11951f755524dc3f4a6442d jq-linux-powerpc
758841de8a905dd82cb036c9ff6fd6e598549c6f6106fe61795797ac87551af5 jq-linux-ppc64el
04426a00def567398f6190e830b35e026fbda2ea75157fac98e41b622832ff2b jq-linux-riscv64
868b7c3ca74224a02ddb613261ddfc2e43b12daaedd5eb58373dbdc7f2c5f924 jq-linux-s390x
5942c9b0934e510ee61eb3e30273f1b3fe2590df93933a93d7c58b81d19c8ff5 jq-linux64
4155822bbf5ea90f5c79cf254665975eb4274d426d0709770c21774de5407443 jq-macos-amd64
0bbe619e663e0de2c550be2fe0d240d076799d6f8a652b70fa04aea8a8362e8a jq-macos-arm64
4155822bbf5ea90f5c79cf254665975eb4274d426d0709770c21774de5407443 jq-osx-amd64
7451fbbf37feffb9bf262bd97c54f0da558c63f0748e64152dd87b0a07b6d6ab jq-win64.exe
7451fbbf37feffb9bf262bd97c54f0da558c63f0748e64152dd87b0a07b6d6ab jq-windows-amd64.exe
e4efdd6a2c463ae714ed98fd5e874fe834a3a2380e17885bd4cda1c49e5166df jq-windows-i386.exe
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr0ACgkQsNpg+0VL
rxi2/BAAqwq1ZsOqkHK5MtgaL+fV/KtR79fuKFo2IpTC0kd2Bif8DEZedgTg2DNL
ma7UU71kwEbFwOqroKoMNmLAJGrPPteTC8LCdTDYNTcMXMSWDMXmnm+WUtQvV3Vs
rK5VavN3jxMLzafErfUH8ZWnrzMjZS5ZKPSOV+vgbjCtM+LsiG5ZneZ4D5BdI0o2
eoe/FA/VRoiEXCC5HOlYenMWP/zdGYVpLUQ4Xwr6ckgDw3LWKIjfWIGt8v9uLy1N
4oPVmvW9fUBXlONV+4wJV8yoomBXzD7RwYhRkdVK4B1SZcfbeqzvfeRXOlc7+n/S
yteRmxcJbxo9P1JvFuIWXZ9+/2evsAEhoha7yp08M2go9Eum5SFvhuBAEB0kxsA8
7WY/wwpZxfDwU7o2H8rjPe/ciY+FTAz/K1Th5SuUocEhYdHXqJayOixDCmRVIhHt
OQq82EHj4UcU4tkHf7bc1graF5XgN75Ld6/uhZeMdFv5VsfxKmMjyaRdQrstQ0Ng
/wWtLGyTSYRznbruFpvGNvy655g1CMKTGvItfQg5B8rAFFCVny/KnwjeEvSjiKgF
qaPYGL/TcVPVvw34agXFAx/gNEV/QDUwroYTvxzUz4qvAQ6MnpbD/hiuo6HbRCPv
oCXy5RPrr2lDFoUi6n6YdCmzfP8KJhfbXC6z4DFJlYdeuKsu6MM=
=9fDS
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr0ACgkQsNpg+0VL
rxhU5RAAiHPJPvbbkt4cAwDupO8ma+PTbjSiJ1/rToZAybSrLrfRVRvSy6yDmVEV
zvf1ie1sutfyMP9dWM1PANeXUg5RaQmMVWUWBl8MiXBiCd3g5D6lfFgzo7+GFUU4
9Foy5kmGWhx70xypuGqUdYkxYDEdGiMvYqb5xEdibT4REbPzjiqo2cOJBhNsG7ZM
ntFzgfvqS2l0jHmtBjratI7La7Du41q0RLkNA1+rWNEE4RnxOY9+be5fBks5VzLa
cNeIYjzp2Rl8LkLgThrjQlqKp2w67HWUsmeaFuIl6/cJQqPgi/3MbJ3WkxKFqE43
3dilzy2mmLEoKB1jpkPpewK45pI6OKJfyhAF4L5ebgqyV5M3WQzXLPUTxNcTeFJE
7NVUtROR21lhHs2QrW6hTbu2XY+UBgxhpW4fbjLUGaTyx+Ll976vPhdOckktT1un
7atnKOxkc/CcrqXvNSDn2bEJ0GzqsJjcIXiNVr64zx4LIvRASJ8HCK4VfjpF4ijy
kIxYMb6OZwf8v2L1QAbA2j3Mn8jBvW5qs6HlKcFxQD1PwZGTA37WDtsMDawTonsN
PV0Na855fKin4lSjn0nStu31Sg71F4K+OnBWUcs1ldAOPFlbwtVHQ4XZeXW+fKHO
mXOqEIDK3JrhdJen9IHdk8+Srb8t+JJb4aqoTqQRgnAfxmdUyZE=
=WaNc
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr0ACgkQsNpg+0VL
rxjhhA/+JzlKXLwKeyLTweYO3SyXSXOhyYmgUSgUfnkKHZNgZ+jqrTR+YsYMlTT6
itXheljI016OwzdI1JqFDi7Au5OD35ErQxEAWX/zXty04XkyLyuh/QGE5A+6s36p
4ufKhCQyGBfGYXgHlsxfctFug4KmoQqqV7wNTsj9rZmBlSsFgZ9u1bkhTFIN6TAp
VwF1U7sgndfFTy1FD00/xnB1OCEVxVo36N5gmRl8qyIPvxN3u1Q+k2gyyvg+Yj7p
5UoaihwGM46zWriMEFsGYoDiNoSD6bcuprZtK/y2gYXLAhv3MGCJw2ONmCmpQbcW
ju4W1b3clYNzMVd7D1l8CS4+PoKJTgfkWvIEjle30vdICgMQ2wIa0GfSPABXfFYG
SJJTVEeD5P6AnUfx/d2zzL8POIY25jjzRCx1sTSYkpPdv2zWk/7s2ul5aX2rXALg
yP7DZAirYGyaEvye+WUFPtF0rT4b4Km/cZ8bdwv4Yn7ANVyik0y6pgjPnHVatS8P
ktQ4hWLlith21vTZ2qPJNiDGHq1EnCQS5XCNMgJvazkBbZVcyBvCGdMyHWJ7SBuV
SE5PcP4tUIdgM6mMKToDchFFA523K6NUc5AnWhoG0PellqlqrQzw+V9Sx0UWo9BS
APPy3P+yamDZjKjkrtLuh+Bkwg/BYrCFrTn7yJpjZFmCPCN2wAM=
=9OTr
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxhmQg/9GD7+72ljIgOti8muVAK3Wt5ZKWV/I8fmEKQD9d92kYqMGT1e2Zni+tFz
pfiWFQrmF/O88mwM9KCkQQEI9Uk5jQ57lx2gWZiiZgk844QDgKePd+lf9nU9Tikh
MlY5SnwiM3h8U+4CCJMDQWXp62p98q79+8IXANDIJJdczp8m/QuUuvPL2v044nSQ
EAmZlMCFW6OV02AgukspwippS1wSCUkg2zf5o4gg5gcKG/xtGIhyB27zRBEBmFFV
pNSPo0W26ONKgladM7V9S1w3iMbPZ1Flng78DR0ZeQOrX4SdoNuAmytKSt+FIFm5
V7WPkDP31mUpL7v6Q9INW8KSEhhwfQeYXVPWuclsbZ1hfH3AZgk2UtY6tyOi1l9f
ZswkQmILfgZa3CJPiH5ryYhQQJAd/iDY1KwFD165C8DGpLNPeWVWx/8KIvVtJ7uQ
iwOva68bZIhKFjEFb6gbbV1huuY9QIyXyklrwgtkrUGBDhQWSQ+uSs0Zkhmy1+GS
idk5kGFNCxyaWIOzB7vlepUd4ATXbHdalzT8c4N2yLiOhQYi79kTnzLZUaL3tEEW
ynIcr1Wf3M2xUUVcd43Q1GBlVlD/uilmoRl0e17jYOdq13xX4/M8797wdoOWgxO/
tDVFjI0Noj2jI7TR2qptvT4Hcz36uKOnnF3H2s1SXdyNGSTKGYk=
=kcoB
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxg1jxAAjxjU8b1TImyQZOag4hX/DguRuNGpIHUUsBMDgYzQ6JecoIaomanOkKqn
1K4qbqkXT2a/QxeyMVPDuOfSqfe9em3h206G6jXIUx4FRkAyUJNGvvYrjKLet7HS
hZOAyp1GzFIs7syKYcCYx+w0I1WXJTp9CJTkTHYODDCuijl7z1YY/k+YUlysd3rq
XkLJq6/1miZMTBP1aw4TYO9QcThu0x7HkRb35JmxZFp2C6lTakdIRWvtBjs1ybG5
0lR3ti15K00B4Y7P6lUabuXyFIE+d5keN4oDYnDe4naLyoZMh2gBZZeU+U3iFqcP
+BF0N48g9l//voWfUieLEgl5khayvTWVrqPc1Urm5cCGwRYrXMaVFfOkt+0GA4ww
dwoxljrkS4efEYpgPH7GjcGWe64rhIrGnUGaoKUESjDjGFN5/NC7Srra6LOz9qaL
bUInJPSTRIzxImpNKYfLRKtFHrIiIxsF29iZrAABtYw9aMdkVWrT/LIFAFm4OrfM
JU3vYoYtrsufc/dgEYZK8vscZvFvMzwtL9Yikea0rI25GEtjtUvDO8doxLYwlBu9
4cWDtv2t1lLsdKk+XDaS59/rWKDm6P68c/i0UAPWEESFEBnvJskLP+Jvu52omnmN
2HOZNJBp6/4ltG8hUCYORjaYpVZfbgc9bEGnnkO0OK504h5dpE0=
=39s4
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxiIWw/9EZ5FUJTf6B50+ewtwIrrSxUK15DetFVgG7uT1XFoM8IlUJ15cY1Td0KT
dG9SGW4GFK5L/8rqCHO8iLCOo7+kiVQtiNgs0cthKPn6/UA5S3ihWOZGr8AJksVR
odbuG2CRcUbJUK5S21RSlNP5DS2RtOZaEeZrea7FAvbMSiPUpHmj6PShY8O2lbV7
EDkwItVdf21sNTU86NvFVwgAzoRCnMgQKveDZan4V+SiyCtGlEr7l9tJ/8FkYHgA
K/SJKmIgnGtEUJHdy2Es7OCVWmenKfQ9iNFf8ixD4M3/esXfMbNZX//kLzfe5+xU
VkcGQvF+L/oJyvUbw1ATovyhoijcE2+DtmRkxKdHMP/7IpxhH/+ENRC7zdIXnFd8
8OYTn2GEwwmXTLnTZ6DuGeWiB5xZMyoHC5RilPu3QPG8WoPHdNVnA0Wg+YLBuliK
XgfxJVOPMSOc+9s8BVPw3oaMcsP2lEmUeIOTkdAIcBN3wX997oLvGaApfTzOvDKy
xDOB/JxvCbnuqZRvsr4rBzzKTpSczKa4lE9r4la4rM483T4fLqci7r362knIdQ6s
Vv4CTsQ8/YTSXW7+I7khwDKPLDwyKuvPGi1BFlOQFFsF+ZanZtQOp5HmwKCZ7REj
vpJhl9XCZuMG9E9bbXnrlbAEtMurDz9yryoEoZPqGyM/iN8Bpkk=
=oAR5
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxiuzhAAgpI963y51Oi4DGDHv9nu7v575CG0G/QjNowGbu/zGdB7k/ygIsbE6vtI
JA4lAgXWUjBxBgU0TubXc0JVnjPjIUlIvpgR0UImq4B01WXYitfF897SJChuzPx2
egD3jybvVe9B6JnZ841QXYkqvp2hZwgXKVGedjsen+qHK2mlbAoeHRKA0L5C35eX
tNlycBvWyUvSjATNsy44G1LLu+ZUMKRXff425RPI/By/8Zn9diipzXCusFl0b5I5
hOdL3BFcqp4JXtJSyR7Rv1BKnCsutZMwSXXPrTIufXUVbmBv5ziH9Qb2u+pTL1Zz
23JbG99Eyw3BRGKYbdr+t01OUVMm4IVP5wrE2gzl/elr/YqwdDBcBaA9J2p6AlB+
iWkn1hlWQzgTyJLJkD3BFDzG6EgSBbGamXPJRneZZNQ5Cogdg+wkgNdZRxcn5N05
63K9CXM6mARMWWUsff2TEfjO6xQnXltU3Py99Uc8xfPVitccL7xQPSO+L6stzi7X
3wNT6imcAnpJHMj/7GqfRFAjHTmmp21IpevZhOImu7WknZvmKtBMQq+3SlECzyTB
XuzNGcHp9JHtc8L7Af9lo44v9FupWY5rC3zQnPGPnQgL44xDQjimqAm38G3awPdk
YYQI9EsV7Ug8pGiPXERVmsy4o8lpdiw9VBzdd3h5YElWdnrzRjw=
=uTvJ
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxgmwRAAkSckwt0TU79XugwnwT6Gr1ctvLvyZGplF2p5VyqJGtvOAutuPHAbm7m/
NUyKa0G/DjrVecERDJcxMon0Y+lo3E/3Z+7eQWQjHcaxJv9dI6LRhqeIAnAzTrBs
IAbDoOrIKq0O7B3B97B0WomjgQ7NhXbfru14gKZxNDcIFIsc9SGEi+fm+CI0ZZcL
GTo18cVZxn12iuXBt9SlIRjoOUTiNEZFC5nbEPbitMfbcAcSOoC1wVumreMo/9IM
UrEKN3lCNhe2yjDUXlVGzHxWMD0iTw6TJU0XmUYneQhbvn/qHgyqp61TivQEoeUf
ylh69Vt3liZu9nh8xehGUaJRjPr949QeKa/WChE5paMjI8RsC9SpQR8Lcq8lP7H/
qseMU5rwCVNQYhINkrYmL6P2pmPY1qZOFObte0HBdmJ4YaTqgm0qvAXrw9RnPqNX
QJDJroQzsoL3z4cGx5DuaL/BMn+iDWDJPjhEPWiRaZycuHkuwlz341VZkJVWxlFS
CDYbX028T+4dLOKvKzcm8kVTX+IEo/DGgaalhU7ialla3/+1ITJrJqFCtExOtLEg
kt+x4uARUZm7mkCLDXy5hvyGY3Ai2YcSQ2E0F5mwTVXtwj4L8x4joCcPYlrW+LGz
sZh0Ohb3HGB4PczyAIyEBy7QhJcEp2+uv9cQXdbylN42zddKeTE=
=eK6O
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxht/xAAjF4ylq0qxdS/A/fV2raQOpVjE5/MxlQewhgqYajLdcyZh9z+wB2yA48k
NnKY/wvif56WlWITjJLQ22eIb7CyXXLRZSJWBCBywHhmOdAaQURBr5aEO22N1CcC
PSy5P60bGey2yiua1id7U3k63jBee5Ai6fo57Rtlt+NgHsax1CGefRkZjxp3w26A
i7AzmxAND8Rmlh36HG8J3lTleAq/XD3p8TsVnllz3+RXzDOpLO6kyuWeXpnRCWJW
zIqV/xMaHPEA5VhpQs6M7uvo9MhLkBuR8oo+LKeadSzm0AEGsJha0XzD10YkoJP6
a3Z7xhMTT8YZrepiYZpSti2UnmKUJHTkSCPvMqtiRJLuYaO3hITW/hsLVpoK/p8F
oJbE9ki2L+jdc773a942xT28P8lQiEGcG3kKTWsfQhY9ddSjggO2ayaCPuf3f2N5
4a+awpiaTfZrynywX61ooaWiWeCks1XExH21HvMTNB1LX1dD6L0ueayIVyokglyx
7yiUGxKau1Z9zDO6cxjifZUv83umOc7x/gikGnLKb+Vhnr5HycIyllcA+cn3g2D2
caf+UXMv1mqZf5xZHU75kPnhtiY6VnJFFe6y8VI8p/HYz26hZkLslP7rz9x0llXg
VZUWB0n2ONB6zPANXO1Eoc/SkuiUB3FIOctA+N+MytV1mcrg2KE=
=lsxE
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxipcRAArhIRURauqvYE2BT0dcmpeF1up0VytyQsmsEMsnRufAtCs00G4ZrtvvbT
LBhxWgGwMw0trpRwML4IN4gVKsCEINE0Z0t1m6WdywqnjpPEjZs9FfL9HpGZZbT7
WV54jE7Yd6BbyfzXLfWvRQ4veooEPjKNESq09+4lKz/l+eUU5nryRlKrMOzZneIp
4t7wYukvQPyWgJbLwvL+jgPePqZwBm/fxWDuUwVWlxSVFwfw2VdAdllRWiNNdGyK
mqVGMNHBxTBmsXZHqF/JRlhlMjoabB20KDPpqECWIhrRpMlA5K8+M9vc4K7cY/Xb
Cw0mPtQlDyyXk15f+xbiYpFvSotUX1tg5Od7yAozNioPxpLnPeKuJFIAzNbDwzxe
XkrTd2aC4GhdHavtWZbeNW7MTJi12qbMyyVCL8sme4UvgmpC0rXVQk0y4EskPdKO
gBwFmFASvSbeFlMO3FJsIQEbE3crndxTLdka8IxJo6Hb1QKUUszxjovUkpUoYT5+
1OHoDybHD2NHzziutEfvS6mUujkRf2WVQCz1MzPDxi9A2WVvBBb8V+OWbpGYcBBQ
6l8/ZMjIdBzFDKBjKcM7AH3CO9lvH041Aaxjv/Htnih5toAV6Jc7eE+hNVT54is5
nek76gPDK/RpBnAxNL/l7Fal57bi9r/kKmgByltsZKITBSJCTLs=
=NM0L
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr4ACgkQsNpg+0VL
rxjCahAArur1py1oRs+EwF1dkfn+fTehMK1tMwun/H2l9b38FgHiR0Vh8K/GfGCZ
z39WOTM1Wa+T+2UzWGGx/HJZRsKR5EtizryUNF8ZgwMjcyFspGCjNGk7+4Nw3bki
HccXa73b1BbO2ttCIvvzDGSWiRfaToe6Ohs9ObgJXsHjBQ9ub+4y0UKr3leya2O1
+yJYZe7FERCCE5dcXSW1X0DXvhf40IHzi2WFKYqiA/ymWht/kyv4cEQsmpv+7ZEW
WNJXvqmSHIaL4EA9/AZ/a0L/F7uHwBnY6oiJmTOzLoxxzHWC3HMoRF2IkmPek/lF
2dUiqHEloA1BOADQW9yvSeUW7jR+SrJsKspnp932rHguP59cB2SOV2j3ROeTfwhK
+Hpy3edLI6He9F+6EjEvuVwYJTDpY9t14j2S4vDgcQIGr++u+dQoMasHvvfdoA0I
2I1ooVlwmkRQqO+mfHc8N3hMBwjRUpU070504eNcO1JUhlh/VNKTkcCvyXqVyQoR
tJJsFbRQQCPih8dYSdDbywNqSCCbR3bSyYLmJD97GEYlq3A23NAFI0RK9VLHYIAE
B5lUEtOqhKOwk635lX/0n4qUY6Jbi0Oh652hq8FXcSUa+ayUHwHslt2f3cR5Y2Bi
O0QtpKhxB/Lxmnbs5XOLrMQKDdtmQRz0TzBhuu5rK6WvdeDbyNE=
=MEOn
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxjOOQ/+MqpkUSs5vAVOziON0kVQC1Ki056+Z/h1TwlIXqLczHSJxKg3BWDxKada
g96LCGipmAA3CPiHpMGCjBNgfnazYVRYDwCOViF7TQ1/QXM8ye//DK74NYEU8nxR
gt9DZ3myLWvcjMJ/xZqie6RgBXprBZW2KE5WC1lZ8sbRF7sRQfmIYoWbuNxtIkLb
PFBbaHXt1uYHORXnws7Df0tO4BUnl30j+nf73ZDEiczINyA9NjwCYuw1HY1xnM8j
WsmjM1JuXluMGB6fm89bqzEBkSzo+96fxxv4GE0dlu3epwLKcf56E6d5vp8Pa0Zf
y73nFZX3CgjrJnatmX9cgqQo7DLvd0mxOZLdycVG+qgeHmURpqW6iHfOTw3qi1r1
kpA+w78ho4LuG470q9lhosCfuyqI/meFeWjnHBIgs4FPdvyJF8fTc/ll/cn3DZFK
MLKXbiN34KusZ0Mlw8ylXRELSMuC3sBKHskEfBFYevl49AAHjF41mvuzNlDouVID
HlFN0OizrhDbwfRxJgUFSig8G+5CE7shbYlMjFi5SBLNU+x10XxRA/42j0Bh13e9
au9MR2u8zXCFEAwgF/nEJBwexqSZwDHjDpTR4DORhsszrt8K7t/BYyMtKz9+HQtC
rV5aoSfUkyPQE12rAZn/9adyMmDkVE7dFZJb5KY5x2LBx7wuP/Q=
=A+Z4
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxilxw//XVx7z8DBeI31/3ygqtEpme6v6SfWKWxt65nUPxYVbYm9zLnUrZlwufMH
1cRqRGTdGQU5q4TWeDwYYIO2dX+qSowTP5PQEKy33IzY1ASB191wOdPdgVT/t4oC
31Wq54fQAnZB8yDQcPCFEr7YptZRKzBxpU08BPKrYm02sm1OvqVhknzY6fPsh6Ji
lfwrdae+78b0gIGTHrtYiVo6t1xccBDOZH3FMkZsUKPJlyr4NOM/GEI+3VA54Otv
giDtH0/vngNXGhR/gve4JBpY/pR+s+2DVoC9qRuGd7ncuNr9IKbtjpxFZWvAT68d
KywwU7rxH/az+s/IK0E1un9e+eCREcTtsJc6tZa7usl23TC1P7a2v5t5/iT0ud5O
CUrPTj1oIazZNCPORC0jVGJ+F++xhCepCYSoOuuPllpUOyd3wdmtknuGrQTvq7uJ
KR93Eqk2N9G4Tnu0ylSERBDBKEJviIoZSDaXL3z2tk2tCqJbUj/g5+x3oPKN+1kI
1xSbtV/5uK6JlU8zIJpbcu7AQFIyjkz7NSCGnAa/yT9cZ+xaBx/DeANRJjbkDMC1
F8vejc4O5f6/FG52GHFohhUJ3mgG8TnJPLPdm7C+yk2nUnUoegvFyVexFPUU0HOU
yIdjXm4iige048m/Et8VqnH+pbO2wdMYmpQiWMn8pliNXfWNouY=
=LCnN
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxgTHQ/9F+fhyRkb35aIPmZcfR+9ULr2GYlOe7fEL+kgrJVJaPeBwDayCxgUiQFt
WQHWRT1JaPWVzUsgmJc5TQG6X1KtcHHmk+jcrVjAFkikqub+Sl/XVHBjAfpCK9+K
xuqokXeo9WQfaBUfmncPp4BZpDc8/riArHfKBbwqEK2/u/mAQiN35m6ftpjKZbuk
wuUvBHScUgVivBSmgFFA081iN8S7QgtaTznkCZAmZC/BXoS+W7dY2qxeNaOGYjf+
1oDjEld7sotWwgZUKfUMbyWYOkAehtJHGMr+lahXopvjirWiMxE/kqlESzASzUbO
cxZ/LLXSuY7KoiUd2Rw+KmmvxeBz5XJmSRdHLRF8Zpq34UtFkKqv8aq8iiwHwCk9
Fi5gr9ICI8Ufc54qHh8Z/wCgwv4+51d5Mgi2P43dZ5xNGNAv3nl6iPe43irHjzIz
3oB7p+5c6CsLRQmrRLTT1J7fWV5SSuLNpm6MpwK1jVezpfmR0uL1NtZzJ5/CzdxK
4U0YXJ8ModJgQZKRgIhSAJZSeqx0qWNlFywjcSDFkgkzmf8TlWNQge1hhlY8/duB
wP935QjkWAH+7plY4XpLVm7S7+yRANGK7/Yw4Mc15ZffdBPFJQU0iOkExsvUKUbT
gYXmNDZ/jfUjCul8h4nx65iSX+m12uybtLTFhIQfIaTXpPctWWY=
=a4tI
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxiwWhAAzBVIQxjaiQwEVOZrsgM1aH/nOa76bjAg1yIlGHV/N04wDHGqil/XToct
Bkk9vpO6oKphTQa0PP+5tEyZKKGr/Lac64JJ4V72emJOaYjKYjzMySx77YenkH/U
8YrqE/VAkU1TXY/2k+yexGYtp72aLKtR/Zzb6LXo2Ry+UqRCjvvJ0ybrozB7F8Ap
XbyQg8DGptAiQkTi/zCMvDJIkCmEJwN9Wgv+MGkhmSRxQnVxB8Zr0/OEDG8R8HsY
PssC4T2u7GNEjQz8OUyMcjsCl2VT66aMR0YHcNsLUkqMJkqGUgITLnsBaN0wzeRG
WABtxBw4yUM1Eq3BIE6dlb/CHZGIu9KCh6I1J6I2GNEjImoRbD+lfwXF2YEGzj+a
N80ooo84EqRsLuslMuhMb46O/bZIKGxC8CbqucTjuF4tgRUBX9SxH5HI60z+9jUi
dlV5c+WkftM7/Su9mtdpT6/NHDbz+uy9Rddrlk2BbftWGey88v86+NBcxSHE+wl8
/6d1RAb6MRppogRtZiuQVceFi7O9h3sdtRkBs03dUtqBi6IAl5JrdrTIq1p1gybo
7K6g1nXDvnm3FigsX0279/Lzfgg0ZzLD9zBxBDTg+DXo9qiW7fuMiYdFfy9ITANV
7Cxjd+LPhMw64U1q9vh1MzuG9fv4UvdYWKuk2Fp+4WoHug9rXV4=
=Ggdn
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxhpiw//WVObFLj1blZODLF2aq9TF5NE6TtB3ZEQqRJm+E9dnAxM7fwmu2WPEUK9
yfTsH80bFKK8iaX0VbTbssaD6zQl21p3ZoWCDSXnMbh3LyanbCBDrrw7lCJYUTN2
ZqoRncGIIDz3LAQytgZA2sb1BHTBXD7xWo9xXXkVB3gogCAJ2rn6Ekru+88WD1Lc
Mm8RY9EYjkIiE2v22NQJToTvoQM3h7qK6w9LY4Inc7jgfXEjJomhUGWllvhHdt8V
FBvSC/GRbP7wWeAT999F8tbSfXfcKfRwxt/7h1pC3lOmj+tERmg3H5MlVsPiT5Bz
BEbiZooBpUt0cFhKl+SknAOdUMggdktKUp5YvEOxXiNqtifTP3pY5ZpJfeKwbpNP
g13nBnYXXe0B+R9cGOoA1MDESAmG51KQgxz3VqJhCtvQZZ6Up6aHBKNBciMO3udS
nWae+/DPNPRWqxMo2yoeMz5b891z7tlRUtcrrkMYAGDiM26BzXtV8NcS6ZBmiOEG
+PVzKoPma2SZr+yIHrRxvsNC0rTX+dOzxDx+uogT5+1ZziCimwq/2CjoV9nYl59t
fARgekwf38eD2XJjXRBlpTjIBoRInEukKvgssY0KlMtE+5Eok1PvsvdWvV670t3E
5zemeLlhciRqDwb+zR/aCCx4moNmYjY4/TZC6yFPmbOPGP6uc5A=
=toBj
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxik7RAAxSJA91SLUMARACedULw2joxfNb52hpzTVCnhvh/EZ8/kI7eoZKk7MGle
xrn1usrp6SPyuKOqSFypXARLXesUEYN6S857DHsJpUZV6lvDcSuuJ2J0zXnMNCu+
cd1vs3VKQ+TaL7ygl8+P+B/5K9bvCDt2GQhwwHWz5eEk2Iqvsm8vnWrPmjc/pJJ5
ckl/ojVXppkrIhDrQ1uJ5Hyc5ZN3uxjS3y+0d9S0xILeUs5funMAUSYnBnKKEvhg
eRncIuOReJnRg1lOUZ5XJw5a5iz8htOkZ33wpW8UIGD70gUqDtu+RS7Rc7mdX6J4
F1juT4OB7LRK/gjhMPzdHMJcFBp1qUekLLMk6XLEi4ty/qNXiKhSsaIk8VVFCCWx
Imrzt4JtxlbJ9ETJb9M6iIUsaUEkMYFlDGZlSNyj0/2ugmvbe/CZWFyI9OQkDck3
FxYMmjnmt1HkTsIOjRqEDHf0HDIdzr7B6p+wqNQKMKt/wKjGSKN4yjpwrS5ruPlb
YkK9M43pbTuTvgEcXL7D7W3rqrz0KMSDcrgh7H6YUHYSkX+juIax8WhmhR5rkUUC
AS3hO5I8ZqmMdnvYagNBq3dHOxZu113THo8oQ8M34zJ5R3/RB1pVGDdWW6E4kzTQ
lJLZ3B7Dp3lm/kRGVIL+7sFZ62J9qMfhN6dYUHvyLaP4BHkfPPE=
=2in3
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxgHFBAAx63JRicBn12SzDlV8Uwx4acJMivTl/79QCfvJauZpCewOs7szIsc8rvS
9lb0AYzIGis75FdfnSkoEVn9oLrS658j/kdF51fzsIn2F2gKG6JenFBWdX8pre8O
/TM98uaW0JQQ9TLAaCA/zULkz9JA8W4NnmCUYdi/ULYthXw10I0CDIXOSr3fypDg
uUa2pS1puIS4m8pkWkPlqG5PFJScBd8G/WQ5BTTA5EnQLS6V2WFu2Pc9IJgbPiQt
cgZAx9YtFjWngfJgXagk30xp7AKJP+BKrTk/i0RtQPIG2Z0I1wHgOuysPySYBxG8
lD/2oDDltMDq9b5O8spMa+Y/Qgjkiar4f3WSk8bW0ox1OdQefXPFCQ9LuobEyJ6s
1SIe0LUfMJ/WwT3FS72g6rfRkd03ItvIExF6I33IR7H6v4LAR3X3F/tAYEsCL/qC
r6H0L/EZs6Fi1s1xXJMLDtv2PCpEti7dpprYWNZhwmtfY7xtgHnLqNl9A10io88t
CTsl94WYp8YqpYGNL74XM88jblNUHPDVzVk6Bdz6RzwdYhQgNWD42PlzPUiSuq6y
JtEulefe5Pxg2LSpUWY+9nG8CkctfF2x/ZKgvP6rwFyLrVNnFkHhMPXgJEOnCEXo
CiRdeh5B7JfUqwCS8LTkBjgU8Apx+79N6FaN7ef0K31IstFxW2c=
=XkfG
-----END PGP SIGNATURE-----
+16
View File
@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEkwealRHvwLfWzb+1sNpg+0VLrxgFAmiLcr8ACgkQsNpg+0VL
rxg2xBAAnGkQwRwRkf5c9yRtiHuhVPLePuzB3nnGWhewqPkGCAnCY/PH7oswBmvp
xD29/jZZ/F0cXT5Y7gA4iG1YDIAT5IHK21rJTzt2yL/Hu3rytHmUZKRlt6JawKpG
a1EoEy9bxl3/1cv6zXZpOIzRpI58wctgOIcDPe/Y2J3EkJZCBF9Pk+no0zS3MhyG
pScK+NPIEzqIAGWdJ3TKFMKSxGo0A1tN5H37mFL4B3t7jixNRsI7wR65S6gKVp7v
oYTrBO07RqYEbdbREb/t3sh5CK5t4F/9itY0P2WT/AEzpvJnGmCtdLgSQmntggYM
/UM6KIOMWs+RpCgN605z/jm09xVITaUzKXiZ1nvOPj0rUca+i372mwrMuTonQZA/
kZCjukyk9d3B3uLgXjq6GwepBwIPdHOl6Aj8cDpD0mOauYvUIkf7fi8BeuF37+Yx
B093FsjZSASwlVLESXAlLW6O71S17QQvo/WePJP/wrlKPyoAivQnYzUmzypFpny7
NYTbuG/9CBcfyExksBLqElNHHkB4JcPhxhHL8uJrESSRA9YnaaXTlnGKes66tRky
yzI9ymgueFwR4LOge4YCDoxwWU+dw34R+F1lz2jmlW5Wqa+pMTgVhC0w5FL++auG
syiKTsWUObZv3NjN1xz2viEh4bR1ZnqT63R2vcHLjVYdl18DRI0=
=m5zz
-----END PGP SIGNATURE-----
Loaded 100 of 334 files, more files were not shown because too many files have changed in this diff. Show more