Skip to main content

passagemath: Algorithms for Rubik's cube

Project description

passagemath is open source mathematical software in Python, released under the GNU General Public Licence GPLv2+.

It is a fork of SageMath, which has been developed 2005-2025 under the motto “Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, and MATLAB”.

The passagemath fork uses the motto “Creating a Free Passage Between the Scientific Python Ecosystem and Mathematical Software Communities.” It was created in October 2024 with the following goals:

Full documentation is available online.

passagemath attempts to support and provides binary wheels suitable for all major Linux distributions and recent versions of macOS.

Binary wheels for native Windows (x86_64) are are available for a subset of the passagemath distributions. Use of the full functionality of passagemath on Windows currently requires the use of Windows Subsystem for Linux (WSL) or virtualization.

The supported Python versions in the passagemath 10.6.x series are 3.10.x-3.14.x.

About this pip-installable distribution package

This pip-installable distribution passagemath-rubiks provides an interface to several programs for working with Rubik’s cubes.

Michael Reid (GPL) http://www.cflmath.com/~reid/Rubik/optimal_solver.html

  • optimal - uses many pre-computed tables to find an optimal solution to the 3x3x3 Rubik’s cube

Dik T. Winter (MIT License)

  • cube - uses Kociemba’s algorithm to iteratively find a short solution to the 3x3x3 Rubik’s cube

  • size222 - solves a 2x2x2 Rubik’s cube

Eric Dietz (GPL) https://web.archive.org/web/20121212175710/http://www.wrongway.org/?rubiksource

  • cu2 - A fast, non-optimal 2x2x2 solver

  • cubex - A fast, non-optimal 3x3x3 solver

  • mcube - A fast, non-optimal 4x4x4 solver

What is included

  • Interface

  • Features (via passagemath-environment)

  • Binary wheels on PyPI contain prebuilt copies of rubiks executables.

Examples

Using rubiks programs on the command line:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks" sage -sh -c cubex

Finding the installation location of a rubiks program:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks[test]" ipython

In [1]: from sage.features.rubiks import cubex

In [2]: cubex().absolute_filename()

Using the Python interface:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks[test]" ipython

In [1]: from sage.interfaces.rubik import *

In [2]: C = RubiksCube("R U F L B D")

In [3]: sol = CubexSolver().solve(C.facets()); sol
Out[3]: "U' L' L' U L U' L U D L L D' L' D L' D' L D L' U' L D' L' U L' B' U' L' U B L D L D' U' L' U L B L B' L' U L U' L' F' L' F L' F L F' L' D' L' D D L D' B L B' L B' L B F' L F F B' L F' B D' D' L D B' B' L' D' B U' U' L' B' D' F' F' L D F'"

Using sage.groups.perm_gps:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks[test]" ipython

In [1]: from passagemath_rubiks import *

In [2]: rubik = CubeGroup(); state = rubik.faces("R")

In [3]: rubik.solve(state)
Out[3]: 'R'

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

passagemath_rubiks-10.6.46.tar.gz (8.6 kB view details)

Uploaded Source

Built Distributions

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

passagemath_rubiks-10.6.46-cp314-cp314t-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.46-cp314-cp314t-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.46-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.46-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.46-cp314-cp314t-macosx_13_0_x86_64.whl (214.0 kB view details)

Uploaded CPython 3.14tmacOS 13.0+ x86-64

passagemath_rubiks-10.6.46-cp314-cp314t-macosx_13_0_arm64.whl (205.8 kB view details)

Uploaded CPython 3.14tmacOS 13.0+ ARM64

passagemath_rubiks-10.6.46-cp312-abi3-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.46-cp312-abi3-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.46-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.46-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.46-cp312-abi3-macosx_13_0_x86_64.whl (213.9 kB view details)

Uploaded CPython 3.12+macOS 13.0+ x86-64

passagemath_rubiks-10.6.46-cp312-abi3-macosx_13_0_arm64.whl (205.4 kB view details)

Uploaded CPython 3.12+macOS 13.0+ ARM64

passagemath_rubiks-10.6.46-cp311-cp311-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.46-cp311-cp311-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.46-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.46-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.46-cp311-cp311-macosx_13_0_x86_64.whl (213.2 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

passagemath_rubiks-10.6.46-cp311-cp311-macosx_13_0_arm64.whl (204.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

passagemath_rubiks-10.6.46-cp310-cp310-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.46-cp310-cp310-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.46-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.46-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.46-cp310-cp310-macosx_13_0_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

passagemath_rubiks-10.6.46-cp310-cp310-macosx_13_0_arm64.whl (205.0 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

Details for the file passagemath_rubiks-10.6.46.tar.gz.

File metadata

  • Download URL: passagemath_rubiks-10.6.46.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for passagemath_rubiks-10.6.46.tar.gz
Algorithm Hash digest
SHA256 ffb4a7a93dee34aa91a7ef3f62d89aa46149afe33c49f8734c76662bab8b1922
MD5 499e0770cd0e4a631081def74706fe76
BLAKE2b-256 aaba055318821a2e3230b412764be238877b4ec40dcb94d52e451f22c34310d0

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b590ffadca9e985623c7d7959b42d2b8ecc161deede216ef61765344aad78305
MD5 0be18c35e381387a9da30b1405a9d0f7
BLAKE2b-256 2952cee78f885c75bd5791b93509ea7d8ca4a9de71454b3fa66a3c917c058542

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dee6a5ccd10c92d599ec4467ac2575915f0c6497a11fe2f29bad2b619a5e5b1c
MD5 1f5031e39ba024c0380ec7701cdab0f1
BLAKE2b-256 e114d78e9acf61575e53a49ae197eccd788885d66672d30824747a70b9689efc

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a1218db9315c2245cddda0eaa0d24dfd92bf696ad05a4f7f2998e428b937941
MD5 c73f0603151f512305d0042da3e516b1
BLAKE2b-256 3f73c541658b9c4bf2618fe91de7f24b459cb24717243cc61f4591befd1f1746

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 31c57a7e0f2e1099dc4727753a3248ab7888977db47551a4e248bc722c626759
MD5 0caedc538b7719798c9bd5a385c750d5
BLAKE2b-256 4c25945ca313382f8ae1840a15582f6e10d3d460c0777ccc2ba1aeb9cab52d57

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp314-cp314t-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp314-cp314t-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 25a46b25b1b250abe6b4dcd516bc3eec57b901e5b466814243170a506db3e44a
MD5 ab63ae5d55c12ee2e3acb807a4e05c3b
BLAKE2b-256 759ac16ce30dd107636d1c3094e85f640f4297ab397af99711c9697cb4159cbc

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp314-cp314t-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp314-cp314t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d81cc01ea194cb5edc86a8e77f7d964b0eaed25c5c03cd9146aefd3cf484269c
MD5 6220c62007ab2869d7e3e3ed4702ed4d
BLAKE2b-256 d739331d84113fa534a7cf322516f31b7781baa1f4ea2e4c59b17d4ddaa78b4d

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 285724435246f008a6664f497c41cbaf88fafb252e59b7ae1dfb3bb4a0cb3429
MD5 02d7ff7cb2dafa2c866f12f56c61a7c6
BLAKE2b-256 e5e2b35e20978d089a0eac259d0b00e2d75d53c583821b904d6f01161edfb6e4

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b1d73f47cbe49a4eccfbc46f81904b412fc978ab0dc33822a7cb78342087df45
MD5 9cd350d6611c0215ba98d7c01b98adb8
BLAKE2b-256 d00378b73cfacfecae148c38ce1e0b75d3f0e0aab335904d4f893100c3d5eb4a

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e237d8e49449993c98c26a332edda6ef13d6b13267c5fb3c7ae8f9b93f721109
MD5 8192f07a35f4bbf62ae83aaa28c1a0a7
BLAKE2b-256 de5bc357223d14bd4aaba0e5629e796177050c0bd65f5ac815f04c7ac464adfc

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 abb5b0e71c394cf7d35714046eb1f2efa00417c11775bcb8ef48faa396ac0894
MD5 021c668419c526a201ee817ac98f0cea
BLAKE2b-256 bb942eeb07a95e5d9a96e222bd6e30c998a3b85b99f25ae2ec3962a0fe43c490

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp312-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 7701a3c4e2012a3d1dd61ce1a59ba3036c55040088744ad2c543fde7a0023288
MD5 9728759cb671b2bd2b192c6cd0b72025
BLAKE2b-256 50f997e2d3ca32c86e1c530f34d158f0c188ae180bbd08026ef03e9e12bc862e

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp312-abi3-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp312-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 504786f76ee32480803599ed21e4332b52a1d606e45ef29155cd0400d1da2325
MD5 ff2e736fd098593ab77caf8f23245036
BLAKE2b-256 eb03a4797156927428d933f91aaeffd6af5d60ba0dd2983a489af26f0d83674f

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 13180efddd7132c661039428960da703b9dd4fc69ba8635babe4f845a3c03a2f
MD5 07b0636662670f2e3434d03d09ed2041
BLAKE2b-256 106b5940d6d3217c16fa9a38c288f8fc95a8d0c4827804e558de726ace5e1619

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 75385d4c20793227fe63c4a39eda503ea09fcaddf9ba961fe6293776aeef571b
MD5 be9639b0aa2ef72674af69323dc7f9a5
BLAKE2b-256 cbfdfe1f87845a875deba056ace7fcbd84adb9136aa12d4b47728deb4f561af1

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c561695856be266c4ffb5dcda6a34e407a54fe735c46f05effeab07e4f514db
MD5 6b4aa4089228a1866b2fa49a0df43c47
BLAKE2b-256 655ffdcbce7a2b43142f646a8013c26758ebdbaa4766deb68a8bb2d48832a3a6

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 46f115678e43b8394e60ac85c795d9ae5fe93747e1d841043338a552fd5c7394
MD5 509871953f7ccd9477b50e8b925a10a4
BLAKE2b-256 919cd4b879d352dc3f710ea5cd2bc8c3a540a18bf033b8f528f13c4e36658cf1

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 ed061cbeadd32c940982d4c0a0232d210881b2392bde90e4f50053e152bceefa
MD5 a383b9ff4a36bfd88e7dcc48b5e0b4dd
BLAKE2b-256 fb4c42b49184fdc5c8c35208fbfcf559b5e2e6f0c7e2e246df367b2981ea9e6b

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 f292e86a8815f1b77b5768abecaa43481441bb0d71c199188cdee0e8bea1b48e
MD5 51812dcf1c39042581765c7cf02dfed6
BLAKE2b-256 17dcc63faefcbfe1d271b1df92c2272ba18774f935816a320dfce99db90315bc

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f55c35abefbc260849de8037c494f8eec67b0ee83220abde53cbc914ae342247
MD5 58a0cc4989deaad0a35e001cdc96b7b1
BLAKE2b-256 8f3e13445892907e89b77599dc4495e3bdfd103ff5aa266c94a8f12c1029b28d

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2fd175a54f6c1c4bbea16056bf0be5e629c9afb096898c8d7e2cfc38e2fc9b27
MD5 ce93d8e5570d88648f46e10eda2cf958
BLAKE2b-256 496337999ed3812a8b0a21411acf86c2ddb07f3179ba93b05df71ea1491b7763

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 679a0bdac641944fbe2d8b1ed933938b404c6e6d2f3a2aa7614478be4c9f6064
MD5 731824f9c1e2fbf7e3167e6ef8eee939
BLAKE2b-256 f73a423e4afc0e1e7b44c28d6b716288dd43709d5628d11800a84c1c29fa5154

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b0ea3c8da2245942d4ef28d333fe51789afc6378c0c640ab80288aac506306c3
MD5 7c4b61e4ff5d900e488d30317e3f0a7d
BLAKE2b-256 71beb4a40108cf4585976476455154f3679b222e9597d1c323a426948f42b9ff

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8ce9c6b410d05703e9c7986b8159c82839e500495207165137de870638bd65b2
MD5 02e5f9d93268c05d8b223f21b399d8ab
BLAKE2b-256 2320a7f9d1fe6bdb69208bbb024505b43886d3b45e1c67ce37f7e65703282db9

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.46-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.46-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1c52a517b9d8a74d136da5ec1f5ddcc8a4de21b664acdeaa0ffac876c23c1500
MD5 2b18fc5ec52928f3f77fcdc074de8ce0
BLAKE2b-256 f1c3e2bd8b51a88932160cea5a66e8bdd841f07b73b8bc34988088baec165453

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