(* 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[     59248,       1546]
NotebookOptionsPosition[     49048,       1359]
NotebookOutlinePosition[     51323,       1411]
CellTagsIndexPosition[     51245,       1406]
WindowTitle->ZlibUncompress
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES SYMBOL", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "2e3cc77f-a3f0-45e7-ab3d-f5415bb5e6b7"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "81e3a68f-39c4-4686-9441-a1faba113fbd"],
        Background->LightDarkSwitched[
          RGBColor[0.490196, 0.576471, 0.690196]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[{
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "See Also",
          " ",
          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->
           "a3c87c28-5d09-460c-bdf7-bed20ee7d984"]
         }],ExpressionUUID->"7b83403e-d3a3-4b71-8fa8-47f5f90d84c8"],
         StripOnInput->False],{
        StyleBox["\"Uncompress\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/Uncompress"], 
         StyleBox[
          "\"ImportByteArray\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/ImportByteArray"], Delimiter, 
         StyleBox[
          "\"Functions\"", "SeeAlsoSection", FontSize -> 14, FontSlant -> 
           "Italic", StripOnInput -> False] :> 
         NotebookFind[EvaluationNotebook[], "SeeAlsoSection", All, CellStyle],
          StyleBox[
          StyleBox[
           "\"ImageTextMetadata\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/ImageTextMetadata"], 
         StyleBox[
          StyleBox[
           "\"ImageContainerChunks\"", "SeeAlsoRelated", StripOnInput -> 
            False], "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/ImageContainerChunks"], 
         StyleBox[
          StyleBox[
           "\"ByteArrayStrings\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/ByteArrayStrings"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "a313d332-17b7-4d10-a0bf-bbcf9bb27d36"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "Related Guides",
          " ",
          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->
           "25aa3636-f5fd-4974-b1d1-4753a1e3957c"]
         }],ExpressionUUID->"8bef9766-f949-430b-8b28-2484a819f0f7"],
         StripOnInput->False],{
        "\"Steganography\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Steganography"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "58361bcb-6e2f-4405-bac9-a50f0bdc48dd"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     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->
           "c3712e6a-308e-4182-b3c6-b09a1ea5e665"]
         }],ExpressionUUID->"0d161036-022c-4f6f-9721-19896c013f1a"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/ZlibUncompress\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/ZlibUncompress"], 
         Delimiter, "\"Copy web URL\"" :> 
         Module[{DocumentationSearch`Private`nb$}, 
           DocumentationSearch`Private`nb$ = 
            NotebookPut[
             Notebook[{
               Cell[BoxData[
                 MakeBoxes[
                  Hyperlink[
                   "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/ref/ZlibUncompress.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/ref/ZlibUncompress" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "b1a61ef2-dabc-4a9f-a8d3-68c09b842627"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "952c1888-8021-4c2d-8fa8-db3d59dfc53d"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"0ed1991a-bd08-411d-b8a2-7880c31f2ac7"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"ff59d3de-e06e-4640-bc59-083346ea1e28"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "ZlibUncompress", "ObjectName",ExpressionUUID->
      "ab439070-c888-44cd-8001-b4fecddfc0e1"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"4d62df5c-94f0-40ef-8a18-d7c422e7969e"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "8c38e21c-912e-45bf-b2d9-9f338db01045"]
    }],ExpressionUUID->"bd192578-5cb2-449c-9c6c-dfa276caf448"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"535f396e-1e6f-43b0-9cf7-\
9ee825f172f9"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["ZlibUncompress"]], 
         "paclet:WolframInstitute/Puzzles/ref/ZlibUncompress", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["bytes", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "693cec20-83d5-476d-b80f-30c9324674e9"],
     "\[LineSeparator]",
     "decompresses a zlib stream and gives a ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["ByteArray"]], "paclet:ref/ByteArray"},
       "RefLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",ExpressionUUID->
      "fae12626-f31e-4660-809a-dd251cf51032"],
     ", verifying the stream's Adler-32 check value."
    }],ExpressionUUID->"a2caa324-8b02-46bf-9398-9780fdf58180"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["ZlibUncompress"]], 
         "paclet:WolframInstitute/Puzzles/ref/ZlibUncompress", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["bytes", "TI"], ",", " ", "\"\<Deflate\>\""}], "]"}]], 
      "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "e74e8571-9e37-4073-b523-05a253181e50"],
     "\[LineSeparator]",
     "decompresses a bare DEFLATE stream, with no header and no check value."
    }],ExpressionUUID->"9c7b9c47-ca60-476e-86a8-b5e120ec7b09"]}
  }]], "Usage",ExpressionUUID->"f67a535b-98d9-46d1-80d6-209934b264f0"]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[Cell[BoxData[Cell[TextData[{
  Cell[BoxData[
   DynamicBox[ToBoxes[
     If[CurrentValue[
        EvaluationCell[], "CellGroupOpen"] =!= Closed, 
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], 
      Rotate[
       Style[
        Graphics[{
          Thickness[0.18], 
          RGBColor[0.8509803921568627, 0.396078431372549, 0], 
          Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
         PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
        0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
    ImageSizeCache->{
     13.600000000000001`, {-0.1685058593749993, 13.768505859375}}]],
   ExpressionUUID->"619263dd-402d-4542-95cf-911713a4341d"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"0711ff30-dcd1-4539-a5be-fca15da16e0e"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "f2f892fe-7b01-44c8-9d30-78413bef2735"]],ExpressionUUID->"0a50bf56-476a-\
477b-9c38-770dd57dd63d"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->1367439574,ExpressionUUID->"4dafc8f2-bcd5-482d-84f2-b6012c5ca803"],

Cell["\<\
A zlib stream, as RFC 1950 defines it, is a two-byte header, a DEFLATE \
stream, and the big-endian Adler-32 of the uncompressed data. All three are \
checked: the compression method, the header check bits, and the Adler-32.\
\>", "Notes",ExpressionUUID->"dd172fef-d94e-47f8-8691-d2dce46fdf8c"],

Cell["\<\
A DEFLATE stream, as RFC 1951 defines it, is a sequence of blocks that are \
stored, fixed-Huffman coded, or dynamic-Huffman coded. All three block types \
are handled.\
\>", "Notes",ExpressionUUID->"0d82bb24-eab9-4d28-b932-7ba2f33b8a93"],

Cell[TextData[{
 "The kernel reads gzip and ZIP archives but exposes no zlib or raw DEFLATE \
reader, which is why this exists. A PNG zTXt chunk, an iCCP colour profile, \
and a raw zlib blob appended to a carrier are all zlib streams and all sit \
outside what ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Import"]], "paclet:ref/Import"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "781b27da-6387-4960-977e-a2cddbeecdf3"],
 " can open."
}], "Notes",ExpressionUUID->"8580754b-57ad-4163-a7cf-078d83806eea"],

Cell[TextData[{
 "A malformed stream, a wrong check value, or a stream that uses a preset \
dictionary is an attempt that engaged and could not finish, and gives a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "c741013e-aadd-49ef-a68b-d034a04c559c"],
 " naming which check failed."
}], "Notes",ExpressionUUID->"b4362a8e-22d1-4282-9916-a619650a8412"],

Cell[TextData[{
 "Output is capped at 16 megabytes, so a stream that expands past that gives \
a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "831a02a4-a23e-40d4-b4af-6cfe0337a086"],
 " rather than exhausting memory."
}], "Notes",ExpressionUUID->"b84357dd-4194-4404-a020-4a94df0d2f5b"],

Cell[TextData[{
 "A first argument that is not a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteArray"]], "paclet:ref/ByteArray"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "087aa6fc-3a9c-4392-8d43-8705e4efe74e"],
 " matches no definition and the call is returned unevaluated."
}], "Notes",ExpressionUUID->"6debab7c-26d9-44c3-9aca-d801809c2dc4"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"dacdf4bf-99c4-48df-8e4c-8fde005336ff"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[
     MatchQ[
      CurrentValue[
       EvaluationNotebook[], {
       TaggingRules, "Openers", "PrimaryExamplesSection"}, Open], 
      Alternatives[True, Open]], 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
   ImageSizeCache->{
    13.600000000000001`, {4.251494140625001, 9.348505859375}}]],
  ExpressionUUID->"4f9a96d4-0938-491a-8372-980c310a33aa"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"e47c306b-4488-4e6e-af39-163dcc12a218"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(13)", "ExampleCount",ExpressionUUID->
  "8ec055fa-91ee-4f44-82ff-22b4fc22ab76"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->186930024,ExpressionUUID->"bcbb33bd-d39e-46da-8e90-f616f7376ab8"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"b7c39cab-70e8-4fd9-9078-915cba64b295"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "ec0f2a71-fb8c-45a2-9fd1-f7a992c31db7"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"efddc6b8-df2a-4a33-bc78-1ca1e30e6c59"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "0d9a025e-bbc5-46f5-bd00-b8fb81c33e43"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2111821454,ExpressionUUID->"2fbe6229-190a-47be-a294-aa9eec352fc4"],

Cell["\<\
A stored DEFLATE block, the simplest kind, written out by hand from RFC 1951:\
\
\>", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"0db44d7b-68c4-4aca-a3f5-56f90de507f6"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ByteArrayToString", "[", 
  RowBox[{"ZlibUncompress", "[", 
   RowBox[{
    RowBox[{"ByteArray", "[", 
     RowBox[{"Join", "[", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{
        "1", ",", " ", "6", ",", " ", "0", ",", " ", "249", ",", " ", "255"}],
         "}"}], ",", " ", 
       RowBox[{"ToCharacterCode", "[", "\"\<STORED\>\"", "]"}]}], "]"}], 
     "]"}], ",", " ", "\"\<Deflate\>\""}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"56293408-c57b-4616-8564-957d458f7194"],

Cell[BoxData["\<\"STORED\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"cf89d97b-8023-4022-91d3-92419cfe6a83"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "30a34ed6-88ef-4e09-a184-e66282fd1c94"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"3062bbbe-3021-4bd1-\
898c-b8276d0d97a3"],

Cell["\<\
A zlib stream, header and check value included, round-tripped from the \
kernel's own compressor:\
\>", "ExampleText",ExpressionUUID->"421f236e-cee0-4808-b3b6-4c3e3668c4dc"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ByteArrayToString", "[", 
  RowBox[{"ZlibUncompress", "[", 
   RowBox[{"ByteArray", "[", 
    RowBox[{"Join", "[", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"120", ",", " ", "156"}], "}"}], ",", " ", 
      RowBox[{"Take", "[", 
       RowBox[{
        RowBox[{"Normal", "[", 
         RowBox[{"ExportByteArray", "[", 
          RowBox[{
           RowBox[{"StringRepeat", "[", 
            RowBox[{"\"\<compress me. \>\"", ",", " ", "20"}], "]"}], ",", 
           " ", 
           RowBox[{"{", 
            RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
          "]"}], "]"}], ",", " ", 
        RowBox[{"{", 
         RowBox[{"11", ",", " ", 
          RowBox[{"-", "9"}]}], "}"}]}], "]"}], ",", " ", 
      RowBox[{"IntegerDigits", "[", 
       RowBox[{
        RowBox[{"Hash", "[", 
         RowBox[{
          RowBox[{"StringToByteArray", "[", 
           RowBox[{"StringRepeat", "[", 
            RowBox[{"\"\<compress me. \>\"", ",", " ", "20"}], "]"}], "]"}], ",",
           " ", "\"\<Adler32\>\""}], "]"}], ",", " ", "256", ",", " ", "4"}], 
       "]"}]}], "]"}], "]"}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"66ae849b-4f73-4936-9c64-7ec650ddf658"],

Cell[BoxData["\<\"compress me. compress me. compress me. compress me. \
compress me. compress me. compress me. compress me. compress me. compress me. \
compress me. compress me. compress me. compress me. compress me. compress me. \
compress me. compress me. compress me. compress me. \"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"9e9467a2-e22b-4408-8f68-3eb64fc0ad10"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "13b35a5a-d09b-4265-b321-8815e4e521f7"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"ebcf3030-1bef-44c6-\
82ea-01e53032b715"],

Cell["The uncompressed length of the same payload:", "ExampleText",ExpressionUUID->"a528d06d-38d3-48f0-b609-1bcedefd0610"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Length", "[", 
  RowBox[{"ZlibUncompress", "[", 
   RowBox[{"ByteArray", "[", 
    RowBox[{"Join", "[", 
     RowBox[{
      RowBox[{"{", 
       RowBox[{"120", ",", " ", "156"}], "}"}], ",", " ", 
      RowBox[{"Take", "[", 
       RowBox[{
        RowBox[{"Normal", "[", 
         RowBox[{"ExportByteArray", "[", 
          RowBox[{
           RowBox[{"StringRepeat", "[", 
            RowBox[{"\"\<compress me. \>\"", ",", " ", "20"}], "]"}], ",", 
           " ", 
           RowBox[{"{", 
            RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
          "]"}], "]"}], ",", " ", 
        RowBox[{"{", 
         RowBox[{"11", ",", " ", 
          RowBox[{"-", "9"}]}], "}"}]}], "]"}], ",", " ", 
      RowBox[{"IntegerDigits", "[", 
       RowBox[{
        RowBox[{"Hash", "[", 
         RowBox[{
          RowBox[{"StringToByteArray", "[", 
           RowBox[{"StringRepeat", "[", 
            RowBox[{"\"\<compress me. \>\"", ",", " ", "20"}], "]"}], "]"}], ",",
           " ", "\"\<Adler32\>\""}], "]"}], ",", " ", "256", ",", " ", "4"}], 
       "]"}]}], "]"}], "]"}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"7675c983-fce9-4123-9ded-06a26e384495"],

Cell[BoxData["260"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"9eca0a7d-a9dc-40b5-897c-ba1407b93a6b"]
}, Open  ]]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "5ccb0813-342d-4f90-8b8d-e5eb86048254"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"a9831835-dfc6-4564-a680-e1a85ec4cdfd"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "2df9b473-823c-4d62-8c3c-5fda3e777a5b"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"2b5997bf-a76d-40db-952d-3be7141253f5"],

Cell["A short input compresses into a fixed-Huffman block:", "ExampleText",ExpressionUUID->"16b94dfe-af92-442e-aba9-5b7310a5e9ac"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ByteArrayToString", "[", 
  RowBox[{"ZlibUncompress", "[", 
   RowBox[{
    RowBox[{"ByteArray", "[", 
     RowBox[{"Take", "[", 
      RowBox[{
       RowBox[{"Normal", "[", 
        RowBox[{"ExportByteArray", "[", 
         RowBox[{"\"\<hello world\>\"", ",", " ", 
          RowBox[{"{", 
           RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], "]"}],
         "]"}], ",", " ", 
       RowBox[{"{", 
        RowBox[{"11", ",", " ", 
         RowBox[{"-", "9"}]}], "}"}]}], "]"}], "]"}], ",", 
    " ", "\"\<Deflate\>\""}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"3a8b7bdb-918f-49dd-9235-116eb1d93f35"],

Cell[BoxData["\<\"hello world\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"bb9799b1-3a17-4a27-a1f6-63f5a7cc0558"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "ff85e481-e9fb-459b-bbb0-ca154e6b055d"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"9bec001f-cd78-4970-\
a993-032cbf03f438"],

Cell["\<\
A long, varied input compresses into a dynamic-Huffman block, whose code \
tables are themselves Huffman coded:\
\>", "ExampleText",ExpressionUUID->"29845d72-fc58-46f7-93e1-1c5804a5c153"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"StringLength", "[", 
  RowBox[{"ByteArrayToString", "[", 
   RowBox[{
    RowBox[{"ZlibUncompress", "[", 
     RowBox[{
      RowBox[{"ByteArray", "[", 
       RowBox[{"Take", "[", 
        RowBox[{
         RowBox[{"Normal", "[", 
          RowBox[{"ExportByteArray", "[", 
           RowBox[{
            RowBox[{"StringJoin", "[", 
             RowBox[{"FromCharacterCode", " ", "/@", " ", 
              RowBox[{"(", 
               RowBox[{
                RowBox[{"Mod", "[", 
                 RowBox[{
                  RowBox[{
                   RowBox[{"Range", "[", "4000", "]"}], "^", "2"}], ",", " ", 
                  "95"}], "]"}], " ", "+", " ", "32"}], ")"}]}], "]"}], ",", 
            " ", 
            RowBox[{"{", 
             RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
           "]"}], "]"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"11", ",", " ", 
           RowBox[{"-", "9"}]}], "}"}]}], "]"}], "]"}], ",", 
      " ", "\"\<Deflate\>\""}], "]"}], ",", " ", "\"\<ISOLatin1\>\""}], "]"}],
   "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"acbea1b7-caee-4552-b362-21e622fc4c85"],

Cell[BoxData["4000"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"7b1ed58e-4047-4f8e-92e8-dd29949ca360"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "f8670415-c5c5-4abd-89b3-b0a7f240b465"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"81b2e023-e0f4-4ffb-\
8f90-c16c3e4cdeef"],

Cell["\<\
A long run compresses into back references, which the decoder resolves \
against output it has already produced:\
\>", "ExampleText",ExpressionUUID->"d22071d8-6f88-49ca-93e4-ae57815524b3"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Length", "[", 
  RowBox[{"ZlibUncompress", "[", 
   RowBox[{
    RowBox[{"ByteArray", "[", 
     RowBox[{"Take", "[", 
      RowBox[{
       RowBox[{"Normal", "[", 
        RowBox[{"ExportByteArray", "[", 
         RowBox[{
          RowBox[{"StringRepeat", "[", 
           RowBox[{"\"\<ab\>\"", ",", " ", "5000"}], "]"}], ",", " ", 
          RowBox[{"{", 
           RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], "]"}],
         "]"}], ",", " ", 
       RowBox[{"{", 
        RowBox[{"11", ",", " ", 
         RowBox[{"-", "9"}]}], "}"}]}], "]"}], "]"}], ",", 
    " ", "\"\<Deflate\>\""}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"9348b177-80fc-46a7-b6ec-c3531521bf3c"],

Cell[BoxData["10000"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"aa323f06-665f-404a-bad4-b0d6bec58890"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "abbb93dd-d5c4-4375-9907-0696b5bdd6be"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"f93c3568-9bbf-4499-a73d-745dedb2b142"],
 "Applications",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "c36ea0e0-3ab0-41ef-ab86-75944caec7fe"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258228157,ExpressionUUID->"7ca59756-5199-44be-9799-05163f4976c4"],

Cell["\<\
A zlib blob appended past a carrier's end, inflated straight out of the \
recovered bytes:\
\>", "ExampleText",ExpressionUUID->"008a30fe-3e5b-4dcc-acfd-e610efc26814"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{
     "secret", " ", "=", " ", "\"\<nothing in the file spells this out\>\""}],
      ",", " ", "blob", ",", " ", "carrier"}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"blob", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"120", ",", " ", "156"}], "}"}], ",", "\n", "\t\t", 
       RowBox[{"Take", "[", 
        RowBox[{
         RowBox[{"Normal", "[", 
          RowBox[{"ExportByteArray", "[", 
           RowBox[{"secret", ",", " ", 
            RowBox[{"{", 
             RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
           "]"}], "]"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"11", ",", " ", 
           RowBox[{"-", "9"}]}], "}"}]}], "]"}], ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"StringToByteArray", "[", "secret", "]"}], ",", 
           " ", "\"\<Adler32\>\""}], "]"}], ",", " ", "256", ",", " ", "4"}], 
        "]"}]}], "\n", "\t", "]"}]}], ";", "\n", "\t", 
    RowBox[{"carrier", " ", "=", " ", 
     RowBox[{"ByteArray", "[", 
      RowBox[{"Join", "[", 
       RowBox[{
        RowBox[{"Normal", "[", 
         RowBox[{"ExportByteArray", "[", 
          RowBox[{
           RowBox[{"Image", "[", 
            RowBox[{
             RowBox[{"Table", "[", 
              RowBox[{
               RowBox[{"{", 
                RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", 
               " ", 
               RowBox[{"{", 
                RowBox[{"i", ",", " ", "8"}], "}"}], ",", " ", 
               RowBox[{"{", 
                RowBox[{"j", ",", " ", "8"}], "}"}]}], "]"}], ",", 
             " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
         "]"}], ",", " ", "blob"}], "]"}], "]"}]}], ";", "\n", "\t", 
    RowBox[{"ByteArrayToString", "[", 
     RowBox[{"ZlibUncompress", "[", 
      RowBox[{"ImageAppendedData", "[", "carrier", "]"}], "]"}], "]"}]}]}], 
  "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d8390275-8e0e-40f4-bb2e-9c7a6460655e"],

Cell[BoxData["\<\"nothing in the file spells this out\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"e6d552a6-c54a-47d8-a12e-46e7135787c2"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "22cdca69-3442-4ed7-887a-83ec471cd23f"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"bc523fdc-f362-4ca3-\
8408-7488136ef0cf"],

Cell["\<\
The blob leaves no printable trace in the carrier, which is the reason to \
compress a payload in the first place:\
\>", "ExampleText",ExpressionUUID->"9210e017-6b63-4e85-8309-a34c939551e1"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{
     "secret", " ", "=", " ", "\"\<nothing in the file spells this out\>\""}],
      ",", " ", "blob", ",", " ", "carrier"}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"blob", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"120", ",", " ", "156"}], "}"}], ",", "\n", "\t\t", 
       RowBox[{"Take", "[", 
        RowBox[{
         RowBox[{"Normal", "[", 
          RowBox[{"ExportByteArray", "[", 
           RowBox[{"secret", ",", " ", 
            RowBox[{"{", 
             RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
           "]"}], "]"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"11", ",", " ", 
           RowBox[{"-", "9"}]}], "}"}]}], "]"}], ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"StringToByteArray", "[", "secret", "]"}], ",", 
           " ", "\"\<Adler32\>\""}], "]"}], ",", " ", "256", ",", " ", "4"}], 
        "]"}]}], "\n", "\t", "]"}]}], ";", "\n", "\t", 
    RowBox[{"carrier", " ", "=", " ", 
     RowBox[{"ByteArray", "[", 
      RowBox[{"Join", "[", 
       RowBox[{
        RowBox[{"Normal", "[", 
         RowBox[{"ExportByteArray", "[", 
          RowBox[{
           RowBox[{"Image", "[", 
            RowBox[{
             RowBox[{"Table", "[", 
              RowBox[{
               RowBox[{"{", 
                RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", 
               " ", 
               RowBox[{"{", 
                RowBox[{"i", ",", " ", "8"}], "}"}], ",", " ", 
               RowBox[{"{", 
                RowBox[{"j", ",", " ", "8"}], "}"}]}], "]"}], ",", 
             " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
         "]"}], ",", " ", "blob"}], "]"}], "]"}]}], ";", "\n", "\t", 
    RowBox[{"ByteArrayStrings", "[", 
     RowBox[{
      RowBox[{"ImageAppendedData", "[", "carrier", "]"}], ",", " ", 
      RowBox[{"\"\<MinimumLength\>\"", " ", "->", " ", "6"}]}], "]"}]}]}], 
  "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"b8c1b2ca-05bc-4432-8843-7066a4df83c9"],

Cell[BoxData[
 RowBox[{"{", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"ecb70ca7-e9ad-409e-891d-4f9d358b1013"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "7140848c-6372-4542-a5de-8ad3c3f31431"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"2df5903f-17a3-47b8-af95-050c1b4cca67"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "e2d96743-e445-47f5-abe0-83bf447c9f24"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"930b52f9-f540-419d-b691-77e7884aca1c"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageTextMetadata"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageTextMetadata", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "db9fd8f0-841d-499a-9626-0f0a98cf2563"],
 " calls this on every zTXt chunk it finds, so the text arrives already \
inflated:"
}], "ExampleText",ExpressionUUID->"028588d2-0aa1-451f-8c12-63bf086b892f"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"text", " ", "=", " ", "\"\<a compressed png comment\>\""}], ",",
      " ", "data", ",", " ", "chunk", ",", " ", "png"}], "}"}], ",", "\n", 
   "\t", 
   RowBox[{
    RowBox[{"data", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"ToCharacterCode", "[", "\"\<Note\>\"", "]"}], ",", " ", 
       RowBox[{"{", 
        RowBox[{"0", ",", " ", "0"}], "}"}], ",", " ", 
       RowBox[{"{", 
        RowBox[{"120", ",", " ", "156"}], "}"}], ",", "\n", "\t\t", 
       RowBox[{"Take", "[", 
        RowBox[{
         RowBox[{"Normal", "[", 
          RowBox[{"ExportByteArray", "[", 
           RowBox[{"text", ",", " ", 
            RowBox[{"{", 
             RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
           "]"}], "]"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"11", ",", " ", 
           RowBox[{"-", "9"}]}], "}"}]}], "]"}], ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"StringToByteArray", "[", "text", "]"}], ",", 
           " ", "\"\<Adler32\>\""}], "]"}], ",", " ", "256", ",", " ", "4"}], 
        "]"}]}], "\n", "\t", "]"}]}], ";", "\n", "\t", 
    RowBox[{"chunk", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Length", "[", "data", "]"}], ",", " ", "256", ",", " ", 
         "4"}], "]"}], ",", " ", 
       RowBox[{"ToCharacterCode", "[", "\"\<zTXt\>\"", "]"}], ",", " ", 
       "data", ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"ByteArray", "[", 
            RowBox[{"Join", "[", 
             RowBox[{
              RowBox[{"ToCharacterCode", "[", "\"\<zTXt\>\"", "]"}], ",", " ",
               "data"}], "]"}], "]"}], ",", " ", "\"\<CRC32\>\""}], "]"}], ",",
          " ", "256", ",", " ", "4"}], "]"}]}], "\n", "\t", "]"}]}], ";", 
    "\n", "\t", 
    RowBox[{"png", " ", "=", " ", 
     RowBox[{"Normal", "[", 
      RowBox[{"ExportByteArray", "[", 
       RowBox[{
        RowBox[{"Image", "[", 
         RowBox[{
          RowBox[{"Table", "[", 
           RowBox[{
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "8"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"j", ",", " ", "8"}], "}"}]}], "]"}], ",", 
          " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
      "]"}]}], ";", "\n", "\t", 
    RowBox[{"Lookup", "[", 
     RowBox[{
      RowBox[{"ImageTextMetadata", "[", 
       RowBox[{"ByteArray", "[", 
        RowBox[{"Join", "[", 
         RowBox[{
          RowBox[{"Take", "[", 
           RowBox[{"png", ",", " ", 
            RowBox[{
             RowBox[{"Length", "[", "png", "]"}], " ", "-", " ", "12"}]}], 
           "]"}], ",", " ", "chunk", ",", " ", 
          RowBox[{"Take", "[", 
           RowBox[{"png", ",", " ", 
            RowBox[{"-", "12"}]}], "]"}]}], "]"}], "]"}], "]"}], ",", 
      " ", "\"\<zTXt/Note\>\""}], "]"}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"4b008b1f-031d-4206-9007-deb75fd45154"],

Cell[BoxData["\<\"a compressed png comment\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"950304e3-fc3f-49d6-8ff8-47221bb63b79"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "abe91834-677c-4170-9fdd-9be05ff49dee"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"10db2927-1340-49d0-\
83b9-debc9ce24867"],

Cell[TextData[{
 "The kernel's ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Uncompress"]], "paclet:ref/Uncompress"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4e12b188-b80b-4517-b770-1526561bc73f"],
 " is a different thing entirely: it reads the Wolfram Language's own \
serialization, not a zlib stream:"
}], "ExampleText",ExpressionUUID->"59a021f0-4c0b-4029-9684-de0437c6cb93"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Uncompress", "[", 
  RowBox[{"Compress", "[", 
   RowBox[{"{", 
    RowBox[{"1", ",", " ", "2", ",", " ", "3"}], "}"}], "]"}], "]"}]], "Input",\

 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"9fe46cd2-6562-478b-9c1a-66338de05166"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"1", ",", "2", ",", "3"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"2f46eae1-c399-44fa-a24f-6da90e4fb767"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "2e0f11ce-48eb-493d-9aa7-6804ae82a808"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"76e55cbb-d851-4ceb-b980-35c309c2f5f2"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "9a4c09db-6853-4d64-9e28-4461a56d8c87"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"392d9a47-bf88-4460-8a44-c016704edae6"],

Cell[TextData[{
 "An Adler-32 that does not match the decompressed data gives a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "678e4bf1-4a81-4828-926c-220b11e28f0d"],
 ", because the data was produced and then found not to be the data the \
writer checksummed:"
}], "ExampleText",ExpressionUUID->"c8798b9c-ebb3-4351-87f9-2a00f40b384d"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", 
  RowBox[{
   RowBox[{"Last", "[", 
    RowBox[{"ZlibUncompress", "[", 
     RowBox[{"ByteArray", "[", 
      RowBox[{"Join", "[", 
       RowBox[{
        RowBox[{"{", 
         RowBox[{"120", ",", " ", "156"}], "}"}], ",", " ", 
        RowBox[{"Take", "[", 
         RowBox[{
          RowBox[{"Normal", "[", 
           RowBox[{"ExportByteArray", "[", 
            RowBox[{"\"\<hello world\>\"", ",", " ", 
             RowBox[{"{", 
              RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
            "]"}], "]"}], ",", " ", 
          RowBox[{"{", 
           RowBox[{"11", ",", " ", 
            RowBox[{"-", "9"}]}], "}"}]}], "]"}], ",", " ", 
        RowBox[{"{", 
         RowBox[{"0", ",", " ", "0", ",", " ", "0", ",", " ", "0"}], "}"}]}], 
       "]"}], "]"}], "]"}], "]"}], ",", " ", "\"\<Information\>\""}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5182be93-7ec8-441b-8ce2-91cfeb7060c3"],

Cell[BoxData["\<\"the Adler-32 check value does not match the decompressed \
data.\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a8be0e7b-114f-4177-9c77-92618cc4519a"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "7c278fc7-f1b9-4751-99a3-c3f10134d439"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"e2ba88e0-4a4d-4e59-\
afe2-d40affe57b07"],

Cell["\<\
A preset dictionary is out of scope, since the dictionary is not in the \
stream:\
\>", "ExampleText",ExpressionUUID->"002af460-b82a-4ca3-83cd-b1d8d5c910e7"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"FailureQ", "[", 
  RowBox[{"ZlibUncompress", "[", 
   RowBox[{"ByteArray", "[", 
    RowBox[{"{", 
     RowBox[{
     "16^^78", ",", " ", "16^^BB", ",", " ", "0", ",", " ", "0", ",", " ", 
      "0", ",", " ", "0", ",", " ", "0", ",", " ", "0", ",", " ", "0", ",", 
      " ", "0"}], "}"}], "]"}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"59708fdb-05e5-424a-86ac-e1aacfe1014e"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"35a50190-d9c0-44ed-8e79-de3b1a7ec664"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "e5626d1a-6be7-4112-aac9-1d054e5c02ce"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"f75eeddf-3072-4546-\
b946-e7a2f562c768"],

Cell["Something that is not bytes is returned unevaluated:", "ExampleText",ExpressionUUID->"c69f2d4b-b2e5-40c9-9e8c-6add06f82e8e"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ZlibUncompress", "[", "\"\<a string\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"ef0586e4-41fa-422f-bb58-135c07d4b387"],

Cell[BoxData[
 RowBox[{"ZlibUncompress", "[", "\<\"a string\"\>", "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"04c2cb75-d5d7-4f95-b9a0-b9d496cbe9d5"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]],
     ImageSizeCache->{50., {26.47265625, 33.52734375}}], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["ImageTextMetadata"]], 
           "paclet:WolframInstitute/Puzzles/ref/ImageTextMetadata", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "7643a44e-e45e-4fdd-a1bc-a21c62894082"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["ImageContainerChunks"]], 
           "paclet:WolframInstitute/Puzzles/ref/ImageContainerChunks", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "70945ac1-a1e1-45a3-8d06-68d433dc6268"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["ByteArrayStrings"]], 
           "paclet:WolframInstitute/Puzzles/ref/ByteArrayStrings", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "2e9bfd28-64da-4acd-b711-c7acfa8a0737"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Uncompress"]], "paclet:ref/Uncompress"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "ca3f4105-31ef-43fd-86d0-643b7d13479b"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["ImportByteArray"]], "paclet:ref/ImportByteArray"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "805bb37a-92bb-4eaa-8c79-e5244fcb1f51"]
       }], "SeeAlso",ExpressionUUID->"e6e66b38-46fe-495b-bb35-a836cc7acf64"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"8171c84a-2721-4047-8100-\
ca8b8d95396d"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, "RelatedGuide.png"]],
     ImageSizeCache->{50., {26.47265625, 33.52734375}}], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Steganography"]], 
           "paclet:WolframInstitute/Puzzles/guide/Steganography"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "b49098a3-1a22-438f-8e92-ad076bc20313"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"9c816939-d257-4355-b383-\
ebd411252f58"],

Cell[" ", "FooterCell",ExpressionUUID->"762ff213-1312-4d9d-aba0-90a5b2c0dfd5"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"ZlibUncompress",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}, 
    "AllOptsTable" -> Closed}, "NewStyles" -> True, 
  "CitationPopupData" -> $Failed, "ShowCitation" -> False, "HasOptions" -> 
  True, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 12, 1.814201}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[ZlibUncompress,paclet : \
WolframInstitute/Puzzles/ref/ZlibUncompress, WolframInstitute/Puzzles Package \
Symbol][bytes] decompresses a zlib stream and gives a ByteArray, verifying \
the stream's Adler-32 check value. PackageLink[ZlibUncompress,paclet : \
WolframInstitute/Puzzles/ref/ZlibUncompress, WolframInstitute/Puzzles Package \
Symbol][bytes, Deflate] decompresses a bare DEFLATE stream, with no header \
and no check value.", "synonyms" -> {}, "tabletags" -> {}, "title" -> 
    "ZlibUncompress", "titlemodifier" -> "", "metadescription" -> "", 
    "windowtitle" -> "ZlibUncompress", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/ZlibUncompress", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"fa16a037-4a2c-4d9f-89fa-36187236357e"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[16336, 434, 197, 5, 70, "ExampleText",ExpressionUUID->"0db44d7b-68c4-4aca-a3f5-56f90de507f6",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 51088, 1400}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[582, 21, 6218, 150, 70, "AnchorBarGrid",ExpressionUUID->"0ed1991a-bd08-411d-b8a2-7880c31f2ac7",
 CellID->1],
Cell[6803, 173, 107, 0, 70, "ContextNameCell",ExpressionUUID->"ff59d3de-e06e-4640-bc59-083346ea1e28"],
Cell[CellGroupData[{
Cell[6935, 177, 557, 14, 70, "ObjectNameGrid",ExpressionUUID->"535f396e-1e6f-43b0-9cf7-9ee825f172f9"],
Cell[7495, 193, 1800, 46, 70, "Usage",ExpressionUUID->"f67a535b-98d9-46d1-80d6-209934b264f0"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9332, 244, 1444, 34, 70, "NotesSection",ExpressionUUID->"4dafc8f2-bcd5-482d-84f2-b6012c5ca803",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->1367439574],
Cell[10779, 280, 304, 4, 70, "Notes",ExpressionUUID->"dd172fef-d94e-47f8-8691-d2dce46fdf8c"],
Cell[11086, 286, 248, 4, 70, "Notes",ExpressionUUID->"0d82bb24-eab9-4d28-b932-7ba2f33b8a93"],
Cell[11337, 292, 591, 14, 70, "Notes",ExpressionUUID->"8580754b-57ad-4163-a7cf-078d83806eea"],
Cell[11931, 308, 512, 12, 70, "Notes",ExpressionUUID->"b4362a8e-22d1-4282-9916-a619650a8412"],
Cell[12446, 322, 449, 12, 70, "Notes",ExpressionUUID->"b84357dd-4194-4404-a020-4a94df0d2f5b"],
Cell[12898, 336, 434, 11, 70, "Notes",ExpressionUUID->"6debab7c-26d9-44c3-9aca-d801809c2dc4"]
}, Closed]],
Cell[13347, 350, 80, 0, 70, "PageDelimiter",ExpressionUUID->"dacdf4bf-99c4-48df-8e4c-8fde005336ff"],
Cell[CellGroupData[{
Cell[13452, 354, 1401, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"bcbb33bd-d39e-46da-8e90-f616f7376ab8",
 CellID->186930024],
Cell[14856, 393, 216, 4, 70, "Input",ExpressionUUID->"b7c39cab-70e8-4fd9-9078-915cba64b295",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[15097, 401, 1236, 31, 70, "ExampleSection",ExpressionUUID->"2fbe6229-190a-47be-a294-aa9eec352fc4",
 CellID->2111821454],
Cell[16336, 434, 197, 5, 70, "ExampleText",ExpressionUUID->"0db44d7b-68c4-4aca-a3f5-56f90de507f6",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[16558, 443, 580, 14, 70, "Input",ExpressionUUID->"56293408-c57b-4616-8564-957d458f7194"],
Cell[17141, 459, 120, 1, 70, "Output",ExpressionUUID->"cf89d97b-8023-4022-91d3-92419cfe6a83"]
}, Open  ]],
Cell[CellGroupData[{
Cell[17298, 465, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"3062bbbe-3021-4bd1-898c-b8276d0d97a3"],
Cell[17525, 472, 183, 3, 70, "ExampleText",ExpressionUUID->"421f236e-cee0-4808-b3b6-4c3e3668c4dc"],
Cell[CellGroupData[{
Cell[17733, 479, 1281, 32, 70, "Input",ExpressionUUID->"66ae849b-4f73-4936-9c64-7ec650ddf658"],
Cell[19017, 513, 380, 4, 70, "Output",ExpressionUUID->"9e9467a2-e22b-4408-8f68-3eb64fc0ad10"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[19446, 523, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"ebcf3030-1bef-44c6-82ea-01e53032b715"],
Cell[19673, 530, 122, 0, 70, "ExampleText",ExpressionUUID->"a528d06d-38d3-48f0-b609-1bcedefd0610"],
Cell[CellGroupData[{
Cell[19820, 534, 1270, 32, 70, "Input",ExpressionUUID->"7675c983-fce9-4123-9ded-06a26e384495"],
Cell[21093, 568, 109, 1, 70, "Output",ExpressionUUID->"9eca0a7d-a9dc-40b5-897c-ba1407b93a6b"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[21263, 576, 1227, 31, 70, "ExampleSection",ExpressionUUID->"2b5997bf-a76d-40db-952d-3be7141253f5",
 CellID->1293636265],
Cell[22493, 609, 130, 0, 70, "ExampleText",ExpressionUUID->"16b94dfe-af92-442e-aba9-5b7310a5e9ac"],
Cell[CellGroupData[{
Cell[22648, 613, 716, 18, 70, "Input",ExpressionUUID->"3a8b7bdb-918f-49dd-9235-116eb1d93f35"],
Cell[23367, 633, 125, 1, 70, "Output",ExpressionUUID->"bb9799b1-3a17-4a27-a1f6-63f5a7cc0558"]
}, Open  ]],
Cell[CellGroupData[{
Cell[23529, 639, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"9bec001f-cd78-4970-a993-032cbf03f438"],
Cell[23756, 646, 197, 3, 70, "ExampleText",ExpressionUUID->"29845d72-fc58-46f7-93e1-1c5804a5c153"],
Cell[CellGroupData[{
Cell[23978, 653, 1217, 31, 70, "Input",ExpressionUUID->"acbea1b7-caee-4552-b362-21e622fc4c85"],
Cell[25198, 686, 110, 1, 70, "Output",ExpressionUUID->"7b1ed58e-4047-4f8e-92e8-dd29949ca360"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[25357, 693, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"81b2e023-e0f4-4ffb-8f90-c16c3e4cdeef"],
Cell[25584, 700, 198, 3, 70, "ExampleText",ExpressionUUID->"d22071d8-6f88-49ca-93e4-ae57815524b3"],
Cell[CellGroupData[{
Cell[25807, 707, 783, 20, 70, "Input",ExpressionUUID->"9348b177-80fc-46a7-b6ec-c3531521bf3c"],
Cell[26593, 729, 111, 1, 70, "Output",ExpressionUUID->"aa323f06-665f-404a-bad4-b0d6bec58890"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[26765, 737, 1233, 31, 70, "ExampleSection",ExpressionUUID->"7ca59756-5199-44be-9799-05163f4976c4",
 CellID->258228157],
Cell[28001, 770, 176, 3, 70, "ExampleText",ExpressionUUID->"008a30fe-3e5b-4dcc-acfd-e610efc26814"],
Cell[CellGroupData[{
Cell[28202, 777, 2263, 57, 70, "Input",ExpressionUUID->"d8390275-8e0e-40f4-bb2e-9c7a6460655e"],
Cell[30468, 836, 149, 1, 70, "Output",ExpressionUUID->"e6d552a6-c54a-47d8-a12e-46e7135787c2"]
}, Open  ]],
Cell[CellGroupData[{
Cell[30654, 842, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"bc523fdc-f362-4ca3-8408-7488136ef0cf"],
Cell[30881, 849, 200, 3, 70, "ExampleText",ExpressionUUID->"9210e017-6b63-4e85-8309-a34c939551e1"],
Cell[CellGroupData[{
Cell[31106, 856, 2307, 58, 70, "Input",ExpressionUUID->"b8c1b2ca-05bc-4432-8843-7066a4df83c9"],
Cell[33416, 916, 124, 2, 70, "Output",ExpressionUUID->"ecb70ca7-e9ad-409e-891d-4f9d358b1013"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[33601, 925, 1244, 31, 70, "ExampleSection",ExpressionUUID->"930b52f9-f540-419d-b691-77e7884aca1c",
 CellID->2123667759],
Cell[34848, 958, 550, 14, 70, "ExampleText",ExpressionUUID->"028588d2-0aa1-451f-8c12-63bf086b892f"],
Cell[CellGroupData[{
Cell[35423, 976, 3458, 87, 70, "Input",ExpressionUUID->"4b008b1f-031d-4206-9007-deb75fd45154"],
Cell[38884, 1065, 138, 1, 70, "Output",ExpressionUUID->"950304e3-fc3f-49d6-8ff8-47221bb63b79"]
}, Open  ]],
Cell[CellGroupData[{
Cell[39059, 1071, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"10db2927-1340-49d0-83b9-debc9ce24867"],
Cell[39286, 1078, 494, 13, 70, "ExampleText",ExpressionUUID->"59a021f0-4c0b-4029-9684-de0437c6cb93"],
Cell[CellGroupData[{
Cell[39805, 1095, 296, 7, 70, "Input",ExpressionUUID->"9fe46cd2-6562-478b-9c1a-66338de05166"],
Cell[40104, 1104, 162, 3, 70, "Output",ExpressionUUID->"2f46eae1-c399-44fa-a24f-6da90e4fb767"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[40327, 1114, 1237, 31, 70, "ExampleSection",ExpressionUUID->"392d9a47-bf88-4460-8a44-c016704edae6",
 CellID->1305812373],
Cell[41567, 1147, 498, 12, 70, "ExampleText",ExpressionUUID->"c8798b9c-ebb3-4351-87f9-2a00f40b384d"],
Cell[CellGroupData[{
Cell[42090, 1163, 1028, 26, 70, "Input",ExpressionUUID->"5182be93-7ec8-441b-8ce2-91cfeb7060c3"],
Cell[43121, 1191, 178, 2, 70, "Output",ExpressionUUID->"a8be0e7b-114f-4177-9c77-92618cc4519a"]
}, Open  ]],
Cell[CellGroupData[{
Cell[43336, 1198, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"e2ba88e0-4a4d-4e59-afe2-d40affe57b07"],
Cell[43563, 1205, 167, 3, 70, "ExampleText",ExpressionUUID->"002af460-b82a-4ca3-83cd-b1d8d5c910e7"],
Cell[CellGroupData[{
Cell[43755, 1212, 472, 10, 70, "Input",ExpressionUUID->"59708fdb-05e5-424a-86ac-e1aacfe1014e"],
Cell[44230, 1224, 110, 1, 70, "Output",ExpressionUUID->"35a50190-d9c0-44ed-8e79-de3b1a7ec664"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[44389, 1231, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"f75eeddf-3072-4546-b946-e7a2f562c768"],
Cell[44616, 1238, 130, 0, 70, "ExampleText",ExpressionUUID->"c69f2d4b-b2e5-40c9-9e8c-6add06f82e8e"],
Cell[CellGroupData[{
Cell[44771, 1242, 209, 3, 70, "Input",ExpressionUUID->"ef0586e4-41fa-422f-bb58-135c07d4b387"],
Cell[44983, 1247, 162, 2, 70, "Output",ExpressionUUID->"04c2cb75-d5d7-4f95-b9a0-b9d496cbe9d5"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[45196, 1255, 3010, 79, 70, "SeeAlsoSection",ExpressionUUID->"8171c84a-2721-4047-8100-ca8b8d95396d"],
Cell[48209, 1336, 754, 19, 70, "MoreAboutSection",ExpressionUUID->"9c816939-d257-4355-b383-ebd411252f58"],
Cell[48966, 1357, 78, 0, 70, "FooterCell",ExpressionUUID->"762ff213-1312-4d9d-aba0-90a5b2c0dfd5"]
}
]
*)

(* End of internal cache information *)

