(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     53621,       1445]
NotebookOptionsPosition[     43806,       1303]
NotebookOutlinePosition[     46714,       1361]
CellTagsIndexPosition[     46671,       1358]
WindowTitle->Encodings
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES GUIDE", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "4d64779d-f024-4a0c-a08b-a53f303d2041"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "b57384bd-1b8c-4e48-a813-cc637122add9"],
        Background->LightDarkSwitched[
          RGBColor[0.85098, 0.396078, 0]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[Cell[BoxData[
     TagBox[
      ActionMenuBox[
       FrameBox[Cell[TextData[{
         "URL",
         " ",
         Cell[BoxData[
          GraphicsBox[
           {GrayLevel[0.66667], Thickness[0.13], 
            LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
           AspectRatio->1,
           ImageSize->20,
           PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
          "cc7a4e35-3051-4fab-abbe-615fc1f2dc38"]
        }],ExpressionUUID->"c6672cd5-3c3f-4f16-956b-c46420927afb"],
        StripOnInput->False],{
       "\"WolframInstitute/Puzzles/guide/Encodings\"" :> None, 
        "\"Copy Wolfram Documentation Center URL\"" :> 
        CopyToClipboard["WolframInstitute/Puzzles/guide/Encodings"], 
        Delimiter, "\"Copy web URL\"" :> 
        Module[{DocumentationSearch`Private`nb$}, 
          DocumentationSearch`Private`nb$ = 
           NotebookPut[
            Notebook[{
              Cell[BoxData[
                MakeBoxes[
                 Hyperlink[
                  "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/guide/Encodings.html"], StandardForm]], "Input", TextClipboardType -> 
                "PlainText"]}, Visible -> False]]; 
          SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
          FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
          NotebookClose[DocumentationSearch`Private`nb$]; Null], 
        "\"Go to web URL\"" :> 
        FrontEndExecute[{
          NotebookLocate[{
            URL[If[TrueQ[False], 
                "http://reference.wolfram.com/system-modeler/", 
                "http://reference.wolfram.com/language/"] <> 
              "WolframInstitute/Puzzles/guide/Encodings" <> ".html"], 
             None}]}]},
       Appearance->None,
       MenuAppearance->Automatic,
       MenuStyle->"URLMenu"],
      MouseAppearanceTag["LinkHand"]]],
     LineSpacing->{1.4, 0},ExpressionUUID->
     "1d71cebc-ddcc-43e4-93ac-2561bc3f9c86"]], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "f2e40861-5561-49ef-b1b8-8be64a6da845"]}
  }]], "AnchorBarGrid",
 GridBoxOptions->{GridBoxItemSize->{"Columns" -> {
     Scaled[0.65], {
      Scaled[0.34]}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, 
   "RowsIndexed" -> {}}},
 CellID->1,ExpressionUUID->"66652a18-6a0c-425e-9970-2e73003d492b"],

Cell[CellGroupData[{

Cell["Encodings", "GuideTitle",
 CellID->942062912,ExpressionUUID->"8da07de9-b44b-4b73-8f5a-5185434a2ce9"],

Cell[TextData[{
 "A wallet artifact is a byte string wearing a costume. The same 32 bytes are \
a Wallet Import Format key beginning with ",
 Cell["L", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "26217c89-d44b-4611-8f3e-fd6c5a0b94ef"],
 ", a hexadecimal line in a text file, a run of low-order bits hidden in an \
image, or nothing recognizable at all, and recovering the bytes means knowing \
which costume is on and whether it has been transcribed intact. The codecs \
here are the ones Bitcoin uses: Base58 with its four-byte double-SHA256 \
envelope, Bech32 and its BIP350 successor Bech32m with the witness-version \
rule that separates them, Wallet Import Format, and the compact-size length \
prefix that fronts every vector in a serialized transaction, all speaking a \
common byte list that converts to hexadecimal and to bits. The Wolfram \
Language already provides base64 through ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BaseEncode"]], "paclet:ref/BaseEncode"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "a64411a3-78df-49c5-973a-18f300061706"],
 ", hashing through ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Hash"]], "paclet:ref/Hash"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "28447c24-960e-427c-8d13-193d9824b008"],
 ", and big-endian base conversion through ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["IntegerDigits"]], "paclet:ref/IntegerDigits"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "50bef551-c7f4-4896-9b8b-e5c8a6f90b81"],
 "; what is added here is the Bitcoin-specific alphabets, checksums and \
framing that sit on top of them, each pinned against the published test \
vectors of the specification it implements, invalid cases included."
}], "GuideAbstract",
 CellID->2001916300,ExpressionUUID->"3eeb9465-3f84-490c-a206-9f957fd5cf02"],

Cell["\t", "GuideDelimiterSubsection",ExpressionUUID->"f593d211-42fc-4a7b-b8df-5cfce77fc37c"],

Cell[CellGroupData[{

Cell["Byte strings and their spellings", "GuideFunctionsSubsection",ExpressionUUID->"a783e0e1-83d6-4bef-824d-a113649f2742"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HexStringToByteList"]], 
    "paclet:WolframInstitute/Puzzles/ref/HexStringToByteList", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4d59c452-96ff-44d6-bc08-6528e3d5a9b0"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "byte list a hexadecimal string encodes"
}], "GuideText",ExpressionUUID->"08bc3e8a-f0a0-4be4-9394-1db3a9f3db6e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteListToHexString"]], 
    "paclet:WolframInstitute/Puzzles/ref/ByteListToHexString", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1cab3aee-bca8-4de1-a92a-da185deb18bb"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "lowercase hexadecimal spelling of a byte list or a ByteArray"
}], "GuideText",ExpressionUUID->"937d11d9-ca59-4e17-a701-8288a2bb0020"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BaseEncode", FontSlant -> "Italic"]]], 
    "paclet:ref/BaseEncode"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "afbb9c74-30b3-4b89-b6dd-0ffa7c3088cc"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "base64 string for a ByteArray"
}], "GuideText",ExpressionUUID->"db5a040f-25c7-4f86-af89-17bb8b4a8a67"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BaseDecode", FontSlant -> "Italic"]]], 
    "paclet:ref/BaseDecode"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "35aa6918-b24b-40b4-93ed-27572fd90a09"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "ByteArray for a base64 string"
}], "GuideText",ExpressionUUID->"5049a111-e1df-47b9-af94-35c83aad79e5"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ByteArray", FontSlant -> "Italic"]]], "paclet:ref/ByteArray"},
   
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "ce002b7d-fe5f-4e6c-bb10-fc1aa5087473"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "packed byte array, the form Hash reads"
}], "GuideText",ExpressionUUID->"6000d91d-9ca9-420d-a3d9-f99fd85684fd"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["IntegerDigits", FontSlant -> "Italic"]]], 
    "paclet:ref/IntegerDigits"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1d4a25ef-8c88-4910-8122-5bc50591dabe"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "big-endian digits of an integer in a given base"
}], "GuideText",ExpressionUUID->"dd570b47-a142-4ecc-9830-bfd057497b23"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["FromDigits", FontSlant -> "Italic"]]], 
    "paclet:ref/FromDigits"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "c9fdf494-d949-444d-8d11-0560c417643f"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "integer with given digits in a given base"
}], "GuideText",ExpressionUUID->"40d4dd54-2617-4387-8237-90ac3d457a8d"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteListQ"]], "paclet:WolframInstitute/Puzzles/ref/ByteListQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a856b394-fa50-46c4-bf95-cbe02d62a2c9"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HexStringQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/HexStringQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "e97e5570-a24e-48b3-b943-8445c7cd0cd6"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Normal", FontSlant -> "Italic"]]], "paclet:ref/Normal"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "f883f70b-6ffe-4bb5-900c-4b2c48b75cf7"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["IntegerString", FontSlant -> "Italic"]]], 
    "paclet:ref/IntegerString"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "70fa0ab2-57ee-40a6-9944-1045b915b9a2"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["StringToByteArray", FontSlant -> "Italic"]]], 
    "paclet:ref/StringToByteArray"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "04830497-a67a-4793-8bd0-300658e26fe2"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ByteArrayToString", FontSlant -> "Italic"]]], 
    "paclet:ref/ByteArrayToString"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "d95713de-6d14-46f9-96fe-52932436e3de"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["StringPartition", FontSlant -> "Italic"]]], 
    "paclet:ref/StringPartition"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "8634eaf7-1f5e-43bf-80eb-807f2c54a17e"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"854ef8b3-4e19-4c12-9e6a-ef413e843005"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Bits and bit regrouping", "GuideFunctionsSubsection",ExpressionUUID->"395698d4-383b-4aa8-bf1c-8b99ada326e8"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BitRegroup"]], 
    "paclet:WolframInstitute/Puzzles/ref/BitRegroup", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4ea2a88c-507d-4cb4-a11d-6256d7162d82"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the convertbits primitive of BIP173, regrouping a bit stream between fixed \
widths"
}], "GuideText",ExpressionUUID->"b05b29b8-ef62-4f53-8e63-f0ef0b17e8d8"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteListToBitList"]], 
    "paclet:WolframInstitute/Puzzles/ref/ByteListToBitList", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "22a0feeb-7198-4220-9e3d-958ad787f3e2"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "bits of a byte list, most significant bit first"
}], "GuideText",ExpressionUUID->"ec690b4a-c80e-46c1-a314-3f346f250d60"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BitListToByteList"]], 
    "paclet:WolframInstitute/Puzzles/ref/BitListToByteList", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1091ea41-abbb-4730-8abc-85d88f19ec2f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "byte list packed from a bit list whose length is a multiple of 8"
}], "GuideText",ExpressionUUID->"a97acaff-8d93-4ac6-974c-bc39a1b8bf57"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BitAnd", FontSlant -> "Italic"]]], "paclet:ref/BitAnd"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "6cfb7a39-3a4c-4474-998e-a06bb68117bb"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BitXor", FontSlant -> "Italic"]]], "paclet:ref/BitXor"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "5d20f1c5-0d2b-47b0-8edb-f418de74f36e"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BitShiftRight", FontSlant -> "Italic"]]], 
    "paclet:ref/BitShiftRight"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b0efca51-2424-4a4e-b22a-f752f3d3c46a"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Partition", FontSlant -> "Italic"]]], "paclet:ref/Partition"},
   
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4add56b5-311b-4e0a-8a91-5b0b90f03d2a"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Catenate", FontSlant -> "Italic"]]], "paclet:ref/Catenate"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "6a3bd1c4-790f-4aa4-9511-50a987dfdfa3"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"ad6ec8f0-d8a2-409e-b9db-26a1bffaa3fd"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Base58 and the Base58Check envelope", "GuideFunctionsSubsection",ExpressionUUID->"ef34d0f3-0787-4372-a621-f96f0aa29f48"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58Encode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Base58Encode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "bb1921c6-b0a6-4e7d-b0ca-b1fd4e1b5f1b"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "Base58 string for a byte list, with one leading ",
 Cell["\"1\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "f64b69fc-5c97-4ae2-84bf-d9879ac8bd7f"],
 " per leading zero byte"
}], "GuideText",ExpressionUUID->"b6ee6c62-c135-4727-99fe-35a4b9a9ad84"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58Decode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Base58Decode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "06c15893-ae98-4a54-9532-45d9ff54c676"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "byte list a Base58 string encodes"
}], "GuideText",ExpressionUUID->"c84c3fa4-2a22-4d5d-b7f1-b610c9fd0c4e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58CheckEncode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Base58CheckEncode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "d70f8181-33e3-4f02-b45f-697b9b5b3106"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "versioned payload with its four-byte double-SHA256 checksum appended"
}], "GuideText",ExpressionUUID->"6d8cdd3f-b089-4bca-b061-32342d863e60"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58CheckDecode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Base58CheckDecode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "212e8558-46a6-4d33-b8bb-8232c280ab2d"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "payload of a Base58Check string, checksum verified and removed"
}], "GuideText",ExpressionUUID->"b2890664-b9eb-4fdb-9291-b9bb556b2d9a"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Hash", FontSlant -> "Italic"]]], "paclet:ref/Hash"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "65a1d8a2-7d32-43e6-96ed-9fc58a436e1b"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the SHA-256 the Base58Check checksum is built from"
}], "GuideText",ExpressionUUID->"aef05c2b-1546-4c97-929c-a5e4e8a38802"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58Q"]], "paclet:WolframInstitute/Puzzles/ref/Base58Q", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "e836b513-1fcb-433a-a616-6db6c097dad7"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58CheckQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/Base58CheckQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "7273291b-a110-431a-af03-f159d17feddf"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Failure", FontSlant -> "Italic"]]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "3eee60b1-180a-4b1c-b138-c3cf9922e01c"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"f72ba4d3-053b-4674-ba8c-0a1be218eb9e"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Bech32, Bech32m and segregated witness addresses", \
"GuideFunctionsSubsection",ExpressionUUID->"8d5159ad-e9db-403f-9203-\
9c16fe3540ba"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Bech32Encode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Bech32Encode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "990edc01-2e1f-4c66-b293-30a1dea8aba3"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "Bech32 or Bech32m string from a human-readable part and 5-bit data"
}], "GuideText",ExpressionUUID->"dcfb19b1-c312-43d6-a0c1-d8a23d7cc2df"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Bech32Decode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Bech32Decode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "07821634-a043-4f44-819d-bec23856cb45"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "human-readable part, data and variant of a Bech32 or Bech32m string"
}], "GuideText",ExpressionUUID->"72cf431f-3024-436d-8029-022bc783a524"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SegWitAddressEncode"]], 
    "paclet:WolframInstitute/Puzzles/ref/SegWitAddressEncode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "2cd17fa5-3817-4118-81a3-cb1385df8dcd"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "native segregated witness address, Bech32 at witness version 0 and Bech32m \
above it"
}], "GuideText",ExpressionUUID->"e7dbf978-82b5-4cc1-bc5f-47a4be7af0fd"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SegWitAddressDecode"]], 
    "paclet:WolframInstitute/Puzzles/ref/SegWitAddressDecode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4c1cefcb-68a0-4289-ab75-785d188c4c3e"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "human-readable part, witness version, witness program and scriptPubKey of \
an address"
}], "GuideText",ExpressionUUID->"b2a2365c-692c-4f92-b5fc-26530a57e0c7"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BitRegroup"]], 
    "paclet:WolframInstitute/Puzzles/ref/BitRegroup", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "2704699f-69a1-4f77-99e7-a80cceb55f79"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the 8-bit to 5-bit regrouping a witness program passes through"
}], "GuideText",ExpressionUUID->"953c5115-3cba-40a9-9c94-d4ac020a10d1"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Bech32Q"]], "paclet:WolframInstitute/Puzzles/ref/Bech32Q", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "78efdb3a-4a82-4e7b-9b9c-fb8953558991"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SegWitAddressQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/SegWitAddressQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "5752186b-f69d-46de-9a13-fba562844428"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ToLowerCase", FontSlant -> "Italic"]]], 
    "paclet:ref/ToLowerCase"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "de0c3a55-11cb-4b47-8fb8-02ab70838b72"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"bf2da1b5-e20d-4ce7-bef8-f744366f34f9"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Private keys in Wallet Import Format", "GuideFunctionsSubsection",ExpressionUUID->"3c29c6ef-7f98-4fa2-a45a-d630fb82300a"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["WIFEncode"]], "paclet:WolframInstitute/Puzzles/ref/WIFEncode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "332c8114-02b0-4e59-b84b-c3e4a1784075"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "Wallet Import Format string for a 32-byte private key, compressed or not, \
mainnet or testnet"
}], "GuideText",ExpressionUUID->"a50a19ef-1eaa-4166-af1c-4a3d214c1efc"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["WIFDecode"]], "paclet:WolframInstitute/Puzzles/ref/WIFDecode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "87d34989-800f-4dce-be06-f853d100b18d"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "private key, compression flag and network of a Wallet Import Format string"
}], "GuideText",ExpressionUUID->"651fc536-6a8a-459f-8fa8-e1db0d33cc3c"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58CheckEncode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Base58CheckEncode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "40bc54e5-708e-4afb-a2ff-cd71126cc1f6"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the envelope a Wallet Import Format string is built in"
}], "GuideText",ExpressionUUID->"a0c6185c-a383-4723-ac35-047ff4b7a94e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["WIFQ"]], "paclet:WolframInstitute/Puzzles/ref/WIFQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "98142b77-e369-4562-8097-05630072389d"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58CheckQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/Base58CheckQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "96f1494c-af94-4e7d-b71a-65b5dcd494f9"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Base58Q"]], "paclet:WolframInstitute/Puzzles/ref/Base58Q", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "53c30d57-8907-44ec-99e5-70da95da6335"],
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"8fc838f6-f304-43b0-ac81-4a5621521892"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Bitcoin serialization", "GuideFunctionsSubsection",ExpressionUUID->"a0272698-534a-4de9-a86c-e9b4fc0fa722"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CompactSizeEncode"]], 
    "paclet:WolframInstitute/Puzzles/ref/CompactSizeEncode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4f65ebda-3687-4f9e-a397-91c47a751cb9"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "Bitcoin compact-size byte list for an integer below ",
 Cell[BoxData[
  SuperscriptBox["2", "64"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4eb4db1a-0c24-4c68-b08f-3409c55912ad"]
}], "GuideText",ExpressionUUID->"cc3bcd00-2923-41db-975c-5dc6d4094681"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CompactSizeDecode"]], 
    "paclet:WolframInstitute/Puzzles/ref/CompactSizeDecode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "3af44371-001b-49ec-ba12-197c698b70b0"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "integer a compact-size byte list encodes, canonical encoding enforced"
}], "GuideText",ExpressionUUID->"1462fb11-8a75-43b9-b250-31a85cca82c5"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CompactSizeSplit"]], 
    "paclet:WolframInstitute/Puzzles/ref/CompactSizeSplit", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "ce2d9f8e-77ee-443b-a070-c77ea427c2a1"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "leading compact-size integer of a byte list together with the rest"
}], "GuideText",ExpressionUUID->"6cb45da8-c671-46f3-9367-4c9a7cd38015"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Classical pen-and-paper ciphers", "GuideFunctionsSubsection",ExpressionUUID->"6d3fcf3d-5184-4cc5-b6e9-6d9ac890b6f4"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["KeyedAlphabet"]], 
    "paclet:WolframInstitute/Puzzles/ref/KeyedAlphabet", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "238a1a95-50e0-468b-97ef-a81cbd82585b"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the mixed alphabet a keyword induces, the building block of the Kryptos \
Quagmire ciphers"
}], "GuideText",ExpressionUUID->"4e4f413c-ef5c-4c67-b59e-caa0fd62be28"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["VigenereCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/VigenereCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b0f1ef54-d573-43b9-ad9e-f60ad33496f8"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "periodic poly-alphabetic substitution: plain Vigenere, the four Quagmire \
variants over keyed alphabets, and Beaufort"
}], "GuideText",ExpressionUUID->"ea7ac5a1-9137-412a-8e25-560c4dbb4a94"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["AutokeyCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/AutokeyCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "02a4ee1f-c0a1-46bc-bb07-7a81fa818b89"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the non-periodic Vigenere whose running key is the keyword followed by the \
plaintext itself, so no Kasiski period exists"
}], "GuideText",ExpressionUUID->"eaf50315-490f-4b63-88fb-d3dca877328e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["GronsfeldCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/GronsfeldCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "38d3ba17-66a1-41c6-a6b8-3c94bd091c40"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "a Vigenere keyed by a run of digits 0-9 instead of letters"
}], "GuideText",ExpressionUUID->"132644b1-e064-4d8b-af3e-5d6031d8067b"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["FractionatedMorseCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/FractionatedMorseCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "9556387c-4528-4ec3-8b47-7487e55cf4bc"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "Morse code cut into trigrams and substituted through a keyed alphabet - a \
fractionating cipher that flattens the letter frequencies without an \
even-length or square constraint"
}], "GuideText",ExpressionUUID->"0d771b6f-6097-41e1-972e-ed125f0867ca"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PortaCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/PortaCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b9b82772-ef48-47cd-b38a-b2ba6da2be64"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the reciprocal periodic substitution whose keyword picks one of 13 \
self-inverse alphabets, so the same operation enciphers and deciphers"
}], "GuideText",ExpressionUUID->"53e65595-bfc6-42e6-abd0-3508440bf128"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SlidefairCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/SlidefairCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "c3d1da07-8807-436b-84e8-9a7931e53e76"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the ACA periodic digraphic slide: each pair read off the opposite corners \
of a rectangle between the straight alphabet and the key letter's slid one, \
in a Vigenere, Variant, or Beaufort table"
}], "GuideText",ExpressionUUID->"80d5a05f-e7d6-4903-8c1d-b6645d2de01b"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["RailFenceCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/RailFenceCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "6c63eef0-ee1d-4eab-aed3-6252b8301ea2"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the rail-fence (zigzag) transposition, letters written across a number of \
rails and read off row by row"
}], "GuideText",ExpressionUUID->"77ad6660-40a2-4319-8899-f47a9a0e0e81"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ColumnarTransposition"]], 
    "paclet:WolframInstitute/Puzzles/ref/ColumnarTransposition", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "c95a4c71-e48f-4f7d-af4e-32723c6fb15f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the transposition that writes the text in rows and reads it off in \
column-key order, top-to-bottom or bottom-to-top, as in Kryptos K3"
}], "GuideText",ExpressionUUID->"d4047b39-142c-492a-9595-db5cd9c93d74"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["NicodemusCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/NicodemusCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a487814b-ac8e-4a06-847d-22b5f251ecef"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the ACA columnar-plus-Vigenere: each column shifted by its own key letter, \
then read off in key order five rows to a block"
}], "GuideText",ExpressionUUID->"9d26ea3c-cf0b-4a8e-8750-c838c9586cda"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HillCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/HillCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4f80ea01-ac54-4ec7-b35a-260c61713046"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the linear polygraphic cipher: blocks of letters multiplied mod 26 by a key \
matrix, optionally over a keyed alphabet"
}], "GuideText",ExpressionUUID->"8f1c5528-9336-424e-b2cb-8d68dfcd8084"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HillCipherInvertibleQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/HillCipherInvertibleQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1afd2907-50be-473d-9b9c-0dbefda6eca6"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "whether an integer matrix is a usable Hill key (square, determinant coprime \
to 26)"
}], "GuideText",ExpressionUUID->"cbae1d66-395f-4e31-ba14-6b2779b6328e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PolybiusSquare"]], 
    "paclet:WolframInstitute/Puzzles/ref/PolybiusSquare", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "348bab85-85c3-4d93-97dd-920fc6370eea"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the 25-letter keyed square (I/J merged) that keys the two 5x5 ciphers"
}], "GuideText",ExpressionUUID->"269e3c67-1a60-47f6-ae9f-2bba88c2b72e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PlayfairCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/PlayfairCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "db061d81-aa8e-4603-b8b6-c1a76b7b771a"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "Wheatstone's digraphic cipher: each letter pair is read off the square"
}], "GuideText",ExpressionUUID->"339abce5-3f2d-47c6-a9be-8d238f883e72"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["FourSquareCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/FourSquareCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "cba35fb3-ab80-49a6-b34e-2a27ac34ecdd"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the four-square digraphic cipher: pairs located in two plain squares and \
read from two keyed squares"
}], "GuideText",ExpressionUUID->"69da22ee-7ae4-438b-99ec-1953af8d803e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["TwoSquareCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/TwoSquareCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "6baff6b1-33e8-486c-9b47-eeb7e81a569d"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the horizontal two-square digraphic cipher, self-inverse, two keyed squares \
side by side"
}], "GuideText",ExpressionUUID->"ca6d4aaf-8f60-4394-8e7e-685cc0860c85"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BifidCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/BifidCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "68bccac3-ddc0-4d94-be97-c2581355e63b"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "Delastelle's fractionating cipher: coordinates written out per period and \
re-paired"
}], "GuideText",ExpressionUUID->"e3a7c57c-9f9b-45a0-82a3-c3fa24aa8c6f"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["TrifidCipher"]], 
    "paclet:WolframInstitute/Puzzles/ref/TrifidCipher", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "601cadf6-52a6-4cfd-9e20-a5d80a96058f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the 3-D Trifid: three base-3 coordinates over a keyed 3x3x3 cube, \
fractionated per period - each letter spread across three ciphertext letters"
}], "GuideText",ExpressionUUID->"40d49e46-7084-4600-b534-825f14f5c4a4"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["VigenereSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/VigenereSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a6acf807-af42-42fd-bff3-0afe699b9a07"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ColumnarTranspositionSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/ColumnarTranspositionSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "3e26f2e3-5c53-47e4-aefe-7f80ea6e21ba"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HillCipherSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/HillCipherSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b4174bc7-edc1-408b-bf51-3a185c841649"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["BifidSolve"]], 
    "paclet:WolframInstitute/Puzzles/ref/BifidSolve", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "86a2e2ff-aadc-4170-8808-ed524cfb4a79"],
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["IndexOfCoincidence"]], 
    "paclet:WolframInstitute/Puzzles/ref/IndexOfCoincidence", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "9abef751-5986-47fa-82bc-fe3d5178c0e3"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the ciphertext-only cryptanalysis, in the Search guide"
}], "GuideText",ExpressionUUID->"238f1069-55aa-4055-b610-173702573790"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "GuideMoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Puzzles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Puzzles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "874de4ec-0d20-4f96-b446-fc3d53d1fed5"]], "GuideMoreAbout",
         ExpressionUUID->"a5eb65d0-e395-41c2-a119-63ae9782bf96"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Derivation"]], 
           "paclet:WolframInstitute/Puzzles/guide/Derivation"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "290e36dc-a9e3-4542-8c74-32c2602a3c33"]], "GuideMoreAbout",
         ExpressionUUID->"6b479749-5339-4c41-86cf-0303c868676f"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Seeds"]], "paclet:WolframInstitute/Puzzles/guide/Seeds"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "49f9989a-8bf9-4f4f-8462-503f188a660a"]], "GuideMoreAbout",
         ExpressionUUID->"f065a1b6-fce0-4359-8a54-bcdbbf382a1d"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Oracles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Oracles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "2fcf8f2f-1d75-4eff-aacc-e70bcb4a1e8d"]], "GuideMoreAbout",
         ExpressionUUID->"4aec2329-9bd3-414e-bd84-294f4d66048f"]}]}
     }]}
  }]], "GuideMoreAboutSection",ExpressionUUID->"ca296f67-6469-49d4-b951-\
7dce8244e2a9"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData[
    "BIP173: Base32 address format for native v0-16 witness outputs"]], 
   "https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"3cdb9ea7-4e29-4401-808c-\
30ea93ada65c"]], "GuideRelatedLinks",ExpressionUUID->"b1fd6b07-1d4b-4602-9637-\
c8fb7ba6b057"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["BIP350: Bech32m format for v1+ witness addresses"]], 
   "https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"5f86c250-a829-4748-9a3b-\
03418cb43c64"]], "GuideRelatedLinks",ExpressionUUID->"3bfa5568-0d57-4553-b8c1-\
9d9c029c8121"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["Bitcoin Core base58 and key_io test vectors"]], 
   "https://github.com/bitcoin/bitcoin/tree/master/src/test/data"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"8ec0ce0b-3986-4209-8d0b-\
bac562d856f2"]], "GuideRelatedLinks",ExpressionUUID->"59e6840b-1cb6-47e8-8b70-\
58a8ec5c9921"]
}, Open  ]],

Cell[" ", "FooterCell",ExpressionUUID->"bff07ca3-7d36-4f23-a104-4b6836afd12d"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"Encodings",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}}, 
  "NewStyles" -> True, "CitationPopupData" -> {$Failed, ""}, "ShowCitation" -> 
  False, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 12.869500}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {
     "base58", "base58check", "bech32", "bech32m", "BIP173", "BIP350", 
      "segwit", "taproot", "wallet import format", "WIF", "hexadecimal", 
      "bit list", "convertbits", "compact size", "varint", "checksum", 
      "bitcoin"}, "specialkeywords" -> {}, "tutorialcollectionlinks" -> {}, 
    "index" -> True, "label" -> "Wolfram Institute/ Puzzles Guide", 
    "language" -> "en", "paclet" -> "WolframInstitute/Puzzles", "status" -> 
    "None", "summary" -> 
    "A wallet artifact is a byte string wearing a costume. The same 32 bytes \
are a Wallet Import Format key beginning with L, a hexadecimal line in a text \
file, a run of low-order bits hidden in an image, or nothing recognizable at \
all, and recovering the bytes means knowing which costume is on and whether \
it has been transcribed intact. The codecs here are the ones Bitcoin uses: \
Base58 with its four-byte double-SHA256 envelope, Bech32 and its BIP350 \
successor Bech32m with the witness-version rule that separates them, Wallet \
Import Format, and the compact-size length prefix that fronts every vector in \
a serialized transaction, all speaking a common byte list that converts to \
hexadecimal and to bits. The Wolfram Language already provides base64 through \
BaseEncode, hashing through Hash, and big-endian base conversion through \
IntegerDigits; what is added here is the Bitcoin-specific alphabets, \
checksums and framing that sit on top of them, each pinned against the \
published test vectors of the specification it implements, invalid cases \
included.", "synonyms" -> {}, "tabletags" -> {}, "title" -> "Encodings", 
    "titlemodifier" -> "", "metadescription" -> "", "windowtitle" -> 
    "Encodings", "type" -> "Guide", "uri" -> 
    "WolframInstitute/Puzzles/guide/Encodings", "WorkflowDockedCell" -> ""}, 
  "SearchTextTranslated" -> ""},
CellContext->CellGroup,
CacheGraphics->False,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"1852fa12-e6be-4891-8591-082de2ab70e3"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[577, 21, 3056, 74, 70, "AnchorBarGrid",ExpressionUUID->"66652a18-6a0c-425e-9970-2e73003d492b",
 CellID->1],
Cell[CellGroupData[{
Cell[3658, 99, 106, 1, 70, "GuideTitle",ExpressionUUID->"8da07de9-b44b-4b73-8f5a-5185434a2ce9",
 CellID->942062912],
Cell[3767, 102, 2062, 45, 70, "GuideAbstract",ExpressionUUID->"3eeb9465-3f84-490c-a206-9f957fd5cf02",
 CellID->2001916300],
Cell[5832, 149, 93, 0, 70, "GuideDelimiterSubsection",ExpressionUUID->"f593d211-42fc-4a7b-b8df-5cfce77fc37c"],
Cell[CellGroupData[{
Cell[5950, 153, 123, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"a783e0e1-83d6-4bef-824d-a113649f2742"],
Cell[6076, 155, 515, 14, 70, "GuideText",ExpressionUUID->"08bc3e8a-f0a0-4be4-9394-1db3a9f3db6e"],
Cell[6594, 171, 537, 14, 70, "GuideText",ExpressionUUID->"937d11d9-ca59-4e17-a701-8288a2bb0020"],
Cell[7134, 187, 461, 15, 70, "GuideText",ExpressionUUID->"db5a040f-25c7-4f86-af89-17bb8b4a8a67"],
Cell[7598, 204, 461, 15, 70, "GuideText",ExpressionUUID->"5049a111-e1df-47b9-af94-35c83aad79e5"],
Cell[8062, 221, 467, 15, 70, "GuideText",ExpressionUUID->"6000d91d-9ca9-420d-a3d9-f99fd85684fd"],
Cell[8532, 238, 485, 15, 70, "GuideText",ExpressionUUID->"dd570b47-a142-4ecc-9830-bfd057497b23"],
Cell[9020, 255, 473, 15, 70, "GuideText",ExpressionUUID->"40d4dd54-2617-4387-8237-90ac3d457a8d"],
Cell[9496, 272, 2238, 74, 70, "GuideText",ExpressionUUID->"854ef8b3-4e19-4c12-9e6a-ef413e843005"]
}, Open  ]],
Cell[CellGroupData[{
Cell[11771, 351, 114, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"395698d4-383b-4aa8-bf1c-8b99ada326e8"],
Cell[11888, 353, 542, 15, 70, "GuideText",ExpressionUUID->"b05b29b8-ef62-4f53-8e63-f0ef0b17e8d8"],
Cell[12433, 370, 520, 14, 70, "GuideText",ExpressionUUID->"ec690b4a-c80e-46c1-a314-3f346f250d60"],
Cell[12956, 386, 537, 14, 70, "GuideText",ExpressionUUID->"a97acaff-8d93-4ac6-974c-bc39a1b8bf57"],
Cell[13496, 402, 1538, 53, 70, "GuideText",ExpressionUUID->"ad6ec8f0-d8a2-409e-b9db-26a1bffaa3fd"]
}, Open  ]],
Cell[CellGroupData[{
Cell[15071, 460, 126, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"ef34d0f3-0787-4372-a621-f96f0aa29f48"],
Cell[15200, 462, 669, 18, 70, "GuideText",ExpressionUUID->"b6ee6c62-c135-4727-99fe-35a4b9a9ad84"],
Cell[15872, 482, 496, 14, 70, "GuideText",ExpressionUUID->"c84c3fa4-2a22-4d5d-b7f1-b610c9fd0c4e"],
Cell[16371, 498, 541, 14, 70, "GuideText",ExpressionUUID->"6d8cdd3f-b089-4bca-b061-32342d863e60"],
Cell[16915, 514, 535, 14, 70, "GuideText",ExpressionUUID->"b2890664-b9eb-4fdb-9291-b9bb556b2d9a"],
Cell[17453, 530, 465, 14, 70, "GuideText",ExpressionUUID->"aef05c2b-1546-4c97-929c-a5e4e8a38802"],
Cell[17921, 546, 1016, 30, 70, "GuideText",ExpressionUUID->"f72ba4d3-053b-4674-ba8c-0a1be218eb9e"]
}, Open  ]],
Cell[CellGroupData[{
Cell[18974, 581, 143, 2, 70, "GuideFunctionsSubsection",ExpressionUUID->"8d5159ad-e9db-403f-9203-9c16fe3540ba"],
Cell[19120, 585, 529, 14, 70, "GuideText",ExpressionUUID->"dcfb19b1-c312-43d6-a0c1-d8a23d7cc2df"],
Cell[19652, 601, 530, 14, 70, "GuideText",ExpressionUUID->"72cf431f-3024-436d-8029-022bc783a524"],
Cell[20185, 617, 562, 15, 70, "GuideText",ExpressionUUID->"e7dbf978-82b5-4cc1-bc5f-47a4be7af0fd"],
Cell[20750, 634, 563, 15, 70, "GuideText",ExpressionUUID->"b2a2365c-692c-4f92-b5fc-26530a57e0c7"],
Cell[21316, 651, 521, 14, 70, "GuideText",ExpressionUUID->"953c5115-3cba-40a9-9c94-d4ac020a10d1"],
Cell[21840, 667, 1033, 31, 70, "GuideText",ExpressionUUID->"bf2da1b5-e20d-4ce7-bef8-f744366f34f9"]
}, Open  ]],
Cell[CellGroupData[{
Cell[22910, 703, 127, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"3c29c6ef-7f98-4fa2-a45a-d630fb82300a"],
Cell[23040, 705, 546, 14, 70, "GuideText",ExpressionUUID->"a50a19ef-1eaa-4166-af1c-4a3d214c1efc"],
Cell[23589, 721, 526, 13, 70, "GuideText",ExpressionUUID->"651fc536-6a8a-459f-8fa8-e1db0d33cc3c"],
Cell[24118, 736, 527, 14, 70, "GuideText",ExpressionUUID->"a0c6185c-a383-4723-ac35-047ff4b7a94e"],
Cell[24648, 752, 1037, 29, 70, "GuideText",ExpressionUUID->"8fc838f6-f304-43b0-ac81-4a5621521892"]
}, Open  ]],
Cell[CellGroupData[{
Cell[25722, 786, 112, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"a0272698-534a-4de9-a86c-e9b4fc0fa722"],
Cell[25837, 788, 706, 19, 70, "GuideText",ExpressionUUID->"cc3bcd00-2923-41db-975c-5dc6d4094681"],
Cell[26546, 809, 542, 14, 70, "GuideText",ExpressionUUID->"1462fb11-8a75-43b9-b250-31a85cca82c5"],
Cell[27091, 825, 537, 14, 70, "GuideText",ExpressionUUID->"6cb45da8-c671-46f3-9367-4c9a7cd38015"]
}, Open  ]],
Cell[CellGroupData[{
Cell[27665, 844, 122, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"6d3fcf3d-5184-4cc5-b6e9-6d9ac890b6f4"],
Cell[27790, 846, 555, 15, 70, "GuideText",ExpressionUUID->"4e4f413c-ef5c-4c67-b59e-caa0fd62be28"],
Cell[28348, 863, 585, 15, 70, "GuideText",ExpressionUUID->"ea7ac5a1-9137-412a-8e25-560c4dbb4a94"],
Cell[28936, 880, 587, 15, 70, "GuideText",ExpressionUUID->"eaf50315-490f-4b63-88fb-d3dca877328e"],
Cell[29526, 897, 527, 14, 70, "GuideText",ExpressionUUID->"132644b1-e064-4d8b-af3e-5d6031d8067b"],
Cell[30056, 913, 664, 16, 70, "GuideText",ExpressionUUID->"0d771b6f-6097-41e1-972e-ed125f0867ca"],
Cell[30723, 931, 599, 15, 70, "GuideText",ExpressionUUID->"53e65595-bfc6-42e6-abd0-3508440bf128"],
Cell[31325, 948, 664, 16, 70, "GuideText",ExpressionUUID->"80d5a05f-e7d6-4903-8c1d-b6645d2de01b"],
Cell[31992, 966, 574, 15, 70, "GuideText",ExpressionUUID->"77ad6660-40a2-4319-8899-f47a9a0e0e81"],
Cell[32569, 983, 616, 15, 70, "GuideText",ExpressionUUID->"d4047b39-142c-492a-9595-db5cd9c93d74"],
Cell[33188, 1000, 593, 15, 70, "GuideText",ExpressionUUID->"9d26ea3c-cf0b-4a8e-8750-c838c9586cda"],
Cell[33784, 1017, 577, 15, 70, "GuideText",ExpressionUUID->"8f1c5528-9336-424e-b2cb-8d68dfcd8084"],
Cell[34364, 1034, 565, 15, 70, "GuideText",ExpressionUUID->"cbae1d66-395f-4e31-ba14-6b2779b6328e"],
Cell[34932, 1051, 536, 14, 70, "GuideText",ExpressionUUID->"269e3c67-1a60-47f6-ae9f-2bba88c2b72e"],
Cell[35471, 1067, 537, 14, 70, "GuideText",ExpressionUUID->"339abce5-3f2d-47c6-a9be-8d238f883e72"],
Cell[36011, 1083, 573, 15, 70, "GuideText",ExpressionUUID->"69da22ee-7ae4-438b-99ec-1953af8d803e"],
Cell[36587, 1100, 559, 15, 70, "GuideText",ExpressionUUID->"ca6d4aaf-8f60-4394-8e7e-685cc0860c85"],
Cell[37149, 1117, 546, 15, 70, "GuideText",ExpressionUUID->"e3a7c57c-9f9b-45a0-82a3-c3fa24aa8c6f"],
Cell[37698, 1134, 607, 15, 70, "GuideText",ExpressionUUID->"40d49e46-7084-4600-b534-825f14f5c4a4"],
Cell[38308, 1151, 1865, 54, 70, "GuideText",ExpressionUUID->"238f1069-55aa-4055-b610-173702573790"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[40222, 1211, 2323, 53, 70, "GuideMoreAboutSection",ExpressionUUID->"ca296f67-6469-49d4-b951-7dce8244e2a9"],
Cell[42548, 1266, 400, 10, 70, "GuideRelatedLinks",ExpressionUUID->"b1fd6b07-1d4b-4602-9637-c8fb7ba6b057"],
Cell[42951, 1278, 381, 9, 70, "GuideRelatedLinks",ExpressionUUID->"3bfa5568-0d57-4553-b8c1-9d9c029c8121"],
Cell[43335, 1289, 374, 9, 70, "GuideRelatedLinks",ExpressionUUID->"59e6840b-1cb6-47e8-8b70-58a8ec5c9921"]
}, Open  ]],
Cell[43724, 1301, 78, 0, 70, "FooterCell",ExpressionUUID->"bff07ca3-7d36-4f23-a104-4b6836afd12d"]
}
]
*)

(* End of internal cache information *)

