Skip to main content

Python wrapper for CHarm, a C library to work with spherical harmonics up to almost arbitrarily high degrees

Project description

CHarm is a C library to work with spherical harmonics up to almost arbitrarily high degrees. The library is accompanied by a Python wrapper called PyHarm.

Features

  • Supports real-valued fully-normalized surface and solid spherical harmonics (the geodetic norm).

  • Performs FFT-based surface spherical harmonic analysis and solid spherical harmonic synthesis with minimized memory requirements.

  • Stable up to high degrees and orders (tens of thousands and beyond).

  • Available in single, double and quadruple precision.

  • Supports point and mean data values (both analysis and synthesis).

  • Supports synthesis at grids and at scattered points/cells. Grid-wise computations are done by FFT whenever possible. If FFT cannot be applied, the less efficient Chebyshev recurrences are used along the latitude parallels instead.

  • Computes the full first- and second-order gradients at evaluation points (e.g., the gravitational vector and the gravitational tensor).

  • Supports the Gauss–Legendre and Driscoll–Healy quadratures.

  • Implements spectral gravity forward modelling of band-limited topographic masses with an arbitrary integration radius and 3D density. [1]

  • Evaluates integrals of solid spherical harmonic expansions (e.g., of the gravitational potential) on band-limited irregular surfaces (e.g., on the Earth’s surface). [1]

  • Computes Fourier coefficients of fully-normalized associated Legendre functions of the first kind up to ultra-high harmonic degrees.

  • Supports SIMD parallelization on the level of a single CPU core (SSE4.1, AVX, AVX2, AVX-512 and NEON).

  • Supports OpenMP parallelization for shared-memory architectures.

  • Supports MPI parallelization for shared- and distributed-memory architectures.

  • Performs discrete FFT by FFTW.

  • For spectral gravity forward modelling with spatially limited integration radius, MPFR is used to enable arbitrary precision arithmetic on floating point numbers.

  • Ships with a Python wrapper to enable high-level programming while retaining the efficiency of the C language. The wrapper, called PyHarm, wraps CHarm using ctypes and is fully integrated with numpy.

Installation

  • PyHarm (Python wrapper): On Linux (x86_64), macOS (x86_64, ARM64) and Windows (x86_64), install PyHarm using pip:

    pip install pyharm

    This will install PyHarm together will all the dependencies. These include a pre-compiled CHarm library, which is internally called by PyHarm, some other C libraries (FFTW and OpenMP library) and the Python package NumPy.

  • CHarm (C library): If you are interested in the C API, you have to build CHarm from source. This step is not required if you plan to use the Python interface only.

Further installation details at https://www.charmlib.org/build/html/install.html.

Installation

  • PyHarm (Python wrapper): On Linux (x86_64), macOS (x86_64, ARM64) and Windows (x86_64), install PyHarm using pip:

    pip install pyharm

    This will install PyHarm together will all the dependencies. These include a pre-compiled CHarm library, which is internally called by PyHarm, some other C libraries (FFTW, MPFR, GMP and OpenMP libraries) and the Python package NumPy.

  • CHarm (C library): If you are interested in the C API, you have to build CHarm from source. This step is not required if you plan to use the Python interface only.

Further installation details at https://www.charmlib.org/build/html/install.html.

Source code

GitHub: https://github.com/blazej-bucha/charm

Documentation

The documentation of the latest version from the master branch is available at https://www.charmlib.org.

A pre-compiled HTML documentation is also available in docs/build/html. Alternatively, it can be built by executing make html after the configure call (requires --enable-python, --enable-mpi, --enable-mpfr, doxygen and Python modules sphinx, sphinx_book_theme and breathe). Other formats of the documentation, for instance, a PDF file, can be built with cd docs && make latexpdf, etc. To list all available formats, execute cd docs && make help.

Contact

Should you have any comments, questions, bug report or criticism, please feel free to contact the author, Blažej Bucha, at blazej.bucha@stuba.sk. Further products developed by the author can be found at https://www.blazejbucha.com.

Pronunciation

We prefer to pronounce CHarm and PyHarm like the words see harm and pie harm. But it is indeed quite charming to pronounce CHarm like the word charm, especially when the library works like a charm.

Other spherical-harmonic-based libraries

Many other libraries for working with spherical harmonics are available, each having its pros and cons. Explore! A few examples are:

  • SHTOOLS: Fortran95 library with Python API,

  • SHTns: a C library for spherical harmonic transforms,

  • ISPACK: a Fortran library for spherical harmonic transforms,

  • Libsharp: a C99 library for spherical harmonic transforms,

  • healpy: a Python package to handle pixelated data on the sphere building on the HEALPix C++ library,

  • HARMONIC_SYNTH: a Fortran code for spherical harmonic synthesis written by the EGM2008 development team.

  • SPHEREPACK: a Fortran library of spherical harmonic transforms,

  • SHAVEL: a program for the spherical harmonic analysis of a horizontal vector field sampled in an equiangular grid on a sphere

  • ICGEM: Online calculation service for working with Earth and celestial gravitational models,

  • FaVeST: Fast Vector Spherical Harmonic Transforms in MATLAB.

  • SHBundle: Spherical harmonic analysis and synthesis in MATLAB up to high degrees and orders,

  • Spherical Harmonics Manipulator: Spherical harmonic synthesis in sparse points and grids (no longer maintained),

  • GrafLab and isGrafLab: MATLAB-based software packages for spherical harmonic synthesis of gravity field functionals up to high degrees and orders (tens of thousands and well beyond).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyharm-0.4.5-pp310-pypy310_pp73-win_amd64.whl (1.5 MB view details)

Uploaded PyPyWindows x86-64

pyharm-0.4.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ x86-64

pyharm-0.4.5-pp310-pypy310_pp73-macosx_11_0_x86_64.whl (2.1 MB view details)

Uploaded PyPymacOS 11.0+ x86-64

pyharm-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

pyharm-0.4.5-cp313-cp313-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.13Windows x86-64

pyharm-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyharm-0.4.5-cp313-cp313-manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyharm-0.4.5-cp313-cp313-macosx_11_0_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

pyharm-0.4.5-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyharm-0.4.5-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

pyharm-0.4.5-cp312-cp312-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyharm-0.4.5-cp312-cp312-manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyharm-0.4.5-cp312-cp312-macosx_11_0_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

pyharm-0.4.5-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyharm-0.4.5-cp311-cp311-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.11Windows x86-64

pyharm-0.4.5-cp311-cp311-musllinux_1_2_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyharm-0.4.5-cp311-cp311-manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyharm-0.4.5-cp311-cp311-macosx_11_0_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

pyharm-0.4.5-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyharm-0.4.5-cp310-cp310-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.10Windows x86-64

pyharm-0.4.5-cp310-cp310-musllinux_1_2_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyharm-0.4.5-cp310-cp310-manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyharm-0.4.5-cp310-cp310-macosx_11_0_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

pyharm-0.4.5-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyharm-0.4.5-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 dd7581d6056536a8e04d1c65290dab82606a6d149c1d49f7cb3ff6f3798341e4
MD5 817ba279c78a0429987f3f44230b336d
BLAKE2b-256 1f4517a9be136dad0e04fa4a73859b568fecefdf2b616cadf753ace4c7dafc7b

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 63c8f16c301d7c79768391c70355614a9471db66f3dca9e2de02e41bd8e7fb01
MD5 53c272b58275c23655ba815935b07464
BLAKE2b-256 9e489979bb23bc6e70b7e68ac709f099eef82ce692a2801fbc4cf563f42d995e

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-pp310-pypy310_pp73-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-pp310-pypy310_pp73-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 68ba4a3bd183cf1861976ceec3b70801e6fea55ee2932b955bfdc4b3bc86e1cb
MD5 02f811ebae6d4e80b54e256fe1ef11d1
BLAKE2b-256 30099066406868e6ddc541b55cf2ae62c58a25dc294aab97bd2499ef6b4738ba

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11e8c7adc1e7384b683f375e81f9a67fa927f6e3440b9b809333435dd16df64c
MD5 5a213f829e50944bd89206f0048b8e69
BLAKE2b-256 646edf21efb18e20d10efe114abad6a9d2bf58d63d2f4ee281deea5cb09dac95

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyharm-0.4.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for pyharm-0.4.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 12acccf7e5c025a9efcb749f06523105e548a4bab4ce2ab5063db9d866ce9a0c
MD5 a90ca6b3e6e1e46ba363994a33aef901
BLAKE2b-256 761bf238290350bb9d9761606d2d5bc55f3e4343fe7fd7b428ff9f7d6234a863

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 951fc8cc1d2a4a6259f7c2d891e950e965e6e8a3baad6e2505d73d991803dc4b
MD5 b0aac1140a54ee2ffc017e535f98a6c4
BLAKE2b-256 547e967006af3283c7f9fb2a7fbc526756ef8838cda1b9c594de026eab57a987

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 282bc1a949c046bfd2751470d54da926caa5a1e4cd18e069af810d9e4657d294
MD5 82d51387147c7e581458f36061797c35
BLAKE2b-256 d724e00d2dc30b568a09431caee71d0eb4db58365ac28ba5ba3bbf2590747403

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 1c4f296b296435a6b730bea6ac3461b3b354ba774e95aead75714664480445f5
MD5 0ea53ad4063cb82c0ad65a0f5b139abb
BLAKE2b-256 011d560a39d120a4d492dbdc7cc1d57a3c808321bc2171b994d5b76ea175657b

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb17583dacb7ea82c8ba940852e3db7a2fdca7fd38727e3cc0cec96b16ebb04f
MD5 b3af1ca3a835eb3fc44c68a2b9dfafa3
BLAKE2b-256 5e8b3871d6286223e155146d316830ede987f1b44750333c21328eae144ba437

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyharm-0.4.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for pyharm-0.4.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 99e13a78f0409ae0f40bf6356aa07dbc4fd2bb006ec536337e7062e413ac7938
MD5 571c1f0b4517178b9e3dc77624eeb27c
BLAKE2b-256 78910ed5ccdc4110fa27b11989555a84536f15e5594968a6b748613d19a4d08b

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c7c28f960e90b1a9278238140f405f97dcd1df20b9f288262c717f3d3c986c06
MD5 d81b3e705626bb33bb034866d10ca317
BLAKE2b-256 bac559a90a9ee64fefbb5569688542b1586e98fb6923d5c81990e1be959752d1

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dfac5a0f0ffd7fd3fbaf77bb482c0da0c876a903480b55e9dd68fa5d6c19a1ac
MD5 ad27a0a000fba6184a7225fe145c261f
BLAKE2b-256 3f0fe1ddc7979458bc186ca940fad0172eb1cb8533dab4cb32bedaa0d731b9eb

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f8ad738df95d165730128eabe7e981d8edd33bcda25202a024be57f4a132d029
MD5 37566e775a7641b7620c437aca3072df
BLAKE2b-256 2c832d8fa19503486c07517cac6edc24760317dfd0fa9a3870e0fd2f8fb06438

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88de6ca32600032bfb40c4213efc69070e8fb0149c5a93d564ffc364160d0f52
MD5 853d89987c56691b75cdd61bb82470e0
BLAKE2b-256 7dfbd85f154cd7dc0fd318e45fc0ed91f4295ff2d3d01ae45b472e1cdf010268

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyharm-0.4.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for pyharm-0.4.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 901e91a385fc0dcd9ab50ae06ff0bb5696fa97a14672486f1c5aea497d16ae49
MD5 0c86353b71dd69a7187015f1a6abee6a
BLAKE2b-256 bc98283e82f70aa5c6164c39232d3f8fbbbd12ab42351c69cc10a1b386e1dc9d

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 891364e3ac3204366788c14e5a3c832a885e880f8ee0b71474ed18d89b9fec5a
MD5 49216f1ec09f08ca6e5aee83a82ab256
BLAKE2b-256 27028c9f9792102d510754b6ffe23f302f970534a73d449d7463d818a65c9e9e

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ccd0b3ae1a7abfee052d28010605c4fbfba14bd48e60d794c4686a6b96d85e86
MD5 fde17b0cff7459baac522af658461b45
BLAKE2b-256 041b9abc574acdc36bfddcf3cbd9aa4eb8da9f490fcbf3b7da8ff24ca8ba6136

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2136c9c931d54cc3179d8f1be90b3eaf9643bb8ab834ad5e1ad09d41092b6d6e
MD5 345a9638b4f3c31f67d92f534e4f04bb
BLAKE2b-256 5d235684e0882df2849c05c4633117b50cbcd1c159e5603d7e56fb562b452e9d

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c1bc2c644a9bec5be53d97dbf67d59cebf81679526a8dd495735e61c7b7d13b
MD5 a3c43ea4b4e0b33f98e8b755c499b841
BLAKE2b-256 ac063a190da0ba8bb20ad6e8dca8e9a1b59a83f068aa870497e8424064eb8c47

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyharm-0.4.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for pyharm-0.4.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9ac973818d08558406ebf2d8030b6073686c47b0dca0cf95f3e0c8d4a2c4a29f
MD5 a13eabbe593bfc2baf51b71c32db4ed2
BLAKE2b-256 9a954cedc64015465fe424dbc7fe20e935e71171f4fae46b8ea14ed57d376a7f

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3a66e226917e8dd397ccb6f69a2b06824ef90faf56dd366f14e875f802fdeec8
MD5 fe07e984d3b349fec097275318f9ed99
BLAKE2b-256 1f44082c39c8b6241ce3e650174252322406ca092083a311079e3ecc3cefcee8

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3bc7fded269699a41c428aa2b78c9e735beec22e412ba7c4fe80ff6f4d3c4575
MD5 8bd51ad21daedfe24aaff1c7a177da86
BLAKE2b-256 7f89989a0fb70cf17838a95be4117ec8c67db00c3e488778dc53f2d6bb261820

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 1efef6b7d6ccaaf10a1b7601cf5b5c635bcb167a6d9c8cdd3a57cad76cc0abd6
MD5 78ddbfa291bf6e6d24d36178f0acf499
BLAKE2b-256 04d444091736a42c4829f3a4d56967ec9f43e60b7c126694e97c437d46f902ed

See more details on using hashes here.

File details

Details for the file pyharm-0.4.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyharm-0.4.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c227a8e0c97dfc68e249e425f96cceb8068e84e277f781d08175b8769223313b
MD5 28d2a978bb94c0b4008e9b8811f7f895
BLAKE2b-256 2cd35f0e3c2537d7bfa1701864562873b00c7d322c0c8b13beb3e71d929b2648

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page