summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-07-11 03:02:29 +0000
committerNorbert Preining <norbert@preining.info>2020-07-11 03:02:29 +0000
commit9f9f8877a616fec845b82f43c991811cb167c35f (patch)
tree8026a21b2c0942edf536ed6f33ef373b69aca61f
parentb3cf6973881fee79b4abb0be96dcfd5330bfeeea (diff)
CTAN sync 202007110302
-rw-r--r--FILES.byname991
-rw-r--r--FILES.byname.gzbin2228799 -> 2228879 bytes
-rw-r--r--FILES.last07days1010
-rw-r--r--fonts/overlock/README2
-rw-r--r--fonts/overlock/enc/ovlk_2sdgnb.enc2
-rw-r--r--fonts/overlock/enc/ovlk_325tkf.enc2
-rw-r--r--fonts/overlock/enc/ovlk_7l4e47.enc2
-rw-r--r--fonts/overlock/enc/ovlk_a4aghc.enc8
-rw-r--r--fonts/overlock/enc/ovlk_bhbhyo.enc8
-rw-r--r--fonts/overlock/enc/ovlk_cj365g.enc10
-rw-r--r--fonts/overlock/enc/ovlk_cr35rj.enc8
-rw-r--r--fonts/overlock/enc/ovlk_e3j4ia.enc2
-rw-r--r--fonts/overlock/enc/ovlk_fqfhhf.enc2
-rw-r--r--fonts/overlock/enc/ovlk_gmmlzo.enc2
-rw-r--r--fonts/overlock/enc/ovlk_irzqhk.enc8
-rw-r--r--fonts/overlock/enc/ovlk_j3mq5n.enc2
-rw-r--r--fonts/overlock/enc/ovlk_k2npiy.enc8
-rw-r--r--fonts/overlock/enc/ovlk_lhx5go.enc2
-rw-r--r--fonts/overlock/enc/ovlk_lqqrub.enc2
-rw-r--r--fonts/overlock/enc/ovlk_siy5zo.enc8
-rw-r--r--fonts/overlock/enc/ovlk_tmoia5.enc2
-rw-r--r--fonts/overlock/enc/ovlk_vvi6px.enc8
-rw-r--r--fonts/overlock/enc/ovlk_woxjio.enc9
-rw-r--r--fonts/overlock/latex/LY1Overlock-LF.fd4
-rw-r--r--fonts/overlock/latex/LY1Overlock-OsF.fd4
-rw-r--r--fonts/overlock/latex/OT1Overlock-LF.fd4
-rw-r--r--fonts/overlock/latex/OT1Overlock-OsF.fd4
-rw-r--r--fonts/overlock/latex/T1Overlock-LF.fd4
-rw-r--r--fonts/overlock/latex/T1Overlock-OsF.fd4
-rw-r--r--fonts/overlock/latex/TS1Overlock-LF.fd4
-rw-r--r--fonts/overlock/latex/TS1Overlock-OsF.fd4
-rw-r--r--fonts/overlock/latex/overlock.sty2
-rw-r--r--fonts/overlock/opentype/OverlockSC-Regular.otfbin27332 -> 0 bytes
-rw-r--r--fonts/overlock/type1/Overlock-BlackItalicLCDFJ.pfbbin0 -> 7089 bytes
-rw-r--r--fonts/overlock/type1/Overlock-BlackLCDFJ.pfbbin0 -> 7092 bytes
-rw-r--r--fonts/overlock/type1/Overlock-BoldItalicLCDFJ.pfbbin0 -> 7085 bytes
-rw-r--r--fonts/overlock/type1/Overlock-BoldLCDFJ.pfbbin0 -> 7078 bytes
-rw-r--r--fonts/overlock/type1/Overlock-ItalicLCDFJ.pfbbin0 -> 7076 bytes
-rw-r--r--fonts/overlock/type1/Overlock-RegularLCDFJ.pfbbin0 -> 7077 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/README3
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdfbin317216 -> 355590 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex62
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx100
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx4
-rw-r--r--macros/latex/contrib/cryptocode/README10
-rw-r--r--macros/latex/contrib/cryptocode/README.md45
-rw-r--r--macros/latex/contrib/cryptocode/cryptocode-2018-11-11.sty (renamed from macros/latex/contrib/cryptocode/cryptocode.sty)0
-rw-r--r--macros/latex/contrib/cryptocode/cryptocode-2020-04-24.sty2074
-rw-r--r--macros/latex/contrib/cryptocode/cryptocode.dtx9392
-rw-r--r--macros/latex/contrib/cryptocode/cryptocode.ins32
-rw-r--r--macros/latex/contrib/cryptocode/cryptocode.pdfbin981559 -> 1043865 bytes
-rw-r--r--macros/latex/contrib/cryptocode/cryptocode.tex3981
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb95
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2205868 -> 2204164 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--systems/win32/w32tex/ChangeLog12
-rw-r--r--timestamp2
61 files changed, 12855 insertions, 5123 deletions
diff --git a/FILES.byname b/FILES.byname
index 19ae6f527a..89671c624b 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -5003,7 +5003,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2020/07/09 | 244143 | FILES.last07days
+2020/07/10 | 146229 | FILES.last07days
2018/06/27 | 99883 | fonts/academicons/academicons.pdf
2018/06/27 | 10779 | fonts/academicons/academicons.sty
2018/06/27 | 5774 | fonts/academicons/academicons.tex
@@ -92260,257 +92260,262 @@
2009/04/09 | 887 | fonts/orkhun/README_Orkhun.txt
2009/04/14 | 123796 | fonts/orkhun.zip
1994/06/28 | 4640 | fonts/osmanian/osmanian.mf
-2020/07/07 | 4421 | fonts/overlock/doc/License.txt
-2020/07/08 | 117840 | fonts/overlock/doc/overlock-samples.pdf
-2020/07/08 | 693 | fonts/overlock/doc/overlock-samples.tex
-2020/07/07 | 3135 | fonts/overlock/enc/ovlk_2sdgnb.enc
-2020/07/07 | 3057 | fonts/overlock/enc/ovlk_325tkf.enc
-2020/07/07 | 3128 | fonts/overlock/enc/ovlk_7l4e47.enc
-2020/07/07 | 3336 | fonts/overlock/enc/ovlk_a4aghc.enc
-2020/07/07 | 2937 | fonts/overlock/enc/ovlk_bhbhyo.enc
-2020/07/07 | 3085 | fonts/overlock/enc/ovlk_cj365g.enc
-2020/07/07 | 3384 | fonts/overlock/enc/ovlk_cr35rj.enc
-2020/07/07 | 3544 | fonts/overlock/enc/ovlk_e3j4ia.enc
-2020/07/07 | 3064 | fonts/overlock/enc/ovlk_fqfhhf.enc
-2020/07/07 | 2953 | fonts/overlock/enc/ovlk_gmmlzo.enc
-2020/07/07 | 2968 | fonts/overlock/enc/ovlk_irzqhk.enc
-2020/07/07 | 3294 | fonts/overlock/enc/ovlk_j3mq5n.enc
-2020/07/07 | 2944 | fonts/overlock/enc/ovlk_k2npiy.enc
-2020/07/07 | 3456 | fonts/overlock/enc/ovlk_lhx5go.enc
-2020/07/07 | 3197 | fonts/overlock/enc/ovlk_lqqrub.enc
-2020/07/07 | 2841 | fonts/overlock/enc/ovlk_siy5zo.enc
-2020/07/07 | 2962 | fonts/overlock/enc/ovlk_tmoia5.enc
-2020/07/07 | 2975 | fonts/overlock/enc/ovlk_vvi6px.enc
-2020/07/07 | 2848 | fonts/overlock/enc/ovlk_woxjio.enc
-2020/07/07 | 2959 | fonts/overlock/latex/LY1Overlock-LF.fd
-2020/07/07 | 3008 | fonts/overlock/latex/LY1Overlock-OsF.fd
-2020/07/07 | 2959 | fonts/overlock/latex/OT1Overlock-LF.fd
-2020/07/07 | 3008 | fonts/overlock/latex/OT1Overlock-OsF.fd
-2020/07/08 | 3315 | fonts/overlock/latex/overlock.sty
-2020/07/07 | 2926 | fonts/overlock/latex/T1Overlock-LF.fd
-2020/07/07 | 2975 | fonts/overlock/latex/T1Overlock-OsF.fd
-2020/07/07 | 2760 | fonts/overlock/latex/TS1Overlock-LF.fd
-2020/07/07 | 2805 | fonts/overlock/latex/TS1Overlock-OsF.fd
-2020/07/07 | 11054 | fonts/overlock/map/overlock.map
-2020/07/08 | 38980 | fonts/overlock/opentype/Overlock-BlackItalic.otf
-2020/07/08 | 39512 | fonts/overlock/opentype/Overlock-Black.otf
-2020/07/08 | 42716 | fonts/overlock/opentype/Overlock-BoldItalic.otf
-2020/07/08 | 40148 | fonts/overlock/opentype/Overlock-Bold.otf
-2020/07/08 | 41108 | fonts/overlock/opentype/Overlock-Italic.otf
-2020/07/08 | 46012 | fonts/overlock/opentype/Overlock-Regular.otf
-2020/07/08 | 27332 | fonts/overlock/opentype/OverlockSC-Regular.otf
-2020/07/08 | 2005 | fonts/overlock/README
-2020/07/07 | 1964 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--lcdfj.tfm
-2020/07/07 | 2996 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1.tfm
-2020/07/07 | 1408 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--lcdfj.tfm
-2020/07/07 | 2032 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1.tfm
-2020/07/07 | 1872 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--lcdfj.tfm
-2020/07/07 | 2840 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1.tfm
-2020/07/07 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1--base.tfm
-2020/07/07 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1.tfm
-2020/07/07 | 1980 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--lcdfj.tfm
-2020/07/07 | 3036 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1.tfm
-2020/07/07 | 1432 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--lcdfj.tfm
-2020/07/07 | 2100 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1.tfm
-2020/07/07 | 1892 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--lcdfj.tfm
-2020/07/07 | 2924 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1.tfm
-2020/07/07 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1--base.tfm
-2020/07/07 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1.tfm
-2020/07/07 | 1812 | fonts/overlock/tfm/Overlock-Black-lf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ly1--lcdfj.tfm
-2020/07/07 | 2860 | fonts/overlock/tfm/Overlock-Black-lf-ly1.tfm
-2020/07/07 | 1332 | fonts/overlock/tfm/Overlock-Black-lf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ot1--lcdfj.tfm
-2020/07/07 | 1940 | fonts/overlock/tfm/Overlock-Black-lf-ot1.tfm
-2020/07/07 | 1744 | fonts/overlock/tfm/Overlock-Black-lf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-lf-t1--lcdfj.tfm
-2020/07/07 | 2712 | fonts/overlock/tfm/Overlock-Black-lf-t1.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Black-lf-ts1--base.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-Black-lf-ts1.tfm
-2020/07/07 | 1832 | fonts/overlock/tfm/Overlock-Black-osf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ly1--lcdfj.tfm
-2020/07/07 | 2976 | fonts/overlock/tfm/Overlock-Black-osf-ly1.tfm
-2020/07/07 | 1360 | fonts/overlock/tfm/Overlock-Black-osf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ot1--lcdfj.tfm
-2020/07/07 | 2012 | fonts/overlock/tfm/Overlock-Black-osf-ot1.tfm
-2020/07/07 | 1772 | fonts/overlock/tfm/Overlock-Black-osf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-osf-t1--lcdfj.tfm
-2020/07/07 | 2804 | fonts/overlock/tfm/Overlock-Black-osf-t1.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Black-osf-ts1--base.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-Black-osf-ts1.tfm
-2020/07/07 | 1872 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--lcdfj.tfm
-2020/07/07 | 4604 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1.tfm
-2020/07/07 | 1372 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--lcdfj.tfm
-2020/07/07 | 2380 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1.tfm
-2020/07/07 | 1800 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--lcdfj.tfm
-2020/07/07 | 4216 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1.tfm
-2020/07/07 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1--base.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1.tfm
-2020/07/07 | 1900 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--lcdfj.tfm
-2020/07/07 | 4712 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--lcdfj.tfm
-2020/07/07 | 2468 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1.tfm
-2020/07/07 | 1828 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--lcdfj.tfm
-2020/07/07 | 4340 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1.tfm
-2020/07/07 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1--base.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1.tfm
-2020/07/07 | 1844 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--lcdfj.tfm
-2020/07/07 | 2708 | fonts/overlock/tfm/Overlock-Bold-lf-ly1.tfm
-2020/07/07 | 1356 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--lcdfj.tfm
-2020/07/07 | 1908 | fonts/overlock/tfm/Overlock-Bold-lf-ot1.tfm
-2020/07/07 | 1780 | fonts/overlock/tfm/Overlock-Bold-lf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-t1--lcdfj.tfm
-2020/07/07 | 2576 | fonts/overlock/tfm/Overlock-Bold-lf-t1.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Bold-lf-ts1--base.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Bold-lf-ts1.tfm
-2020/07/07 | 1876 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--lcdfj.tfm
-2020/07/07 | 2836 | fonts/overlock/tfm/Overlock-Bold-osf-ly1.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--lcdfj.tfm
-2020/07/07 | 1988 | fonts/overlock/tfm/Overlock-Bold-osf-ot1.tfm
-2020/07/07 | 1812 | fonts/overlock/tfm/Overlock-Bold-osf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-t1--lcdfj.tfm
-2020/07/07 | 2672 | fonts/overlock/tfm/Overlock-Bold-osf-t1.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Bold-osf-ts1--base.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Bold-osf-ts1.tfm
-2020/07/07 | 1876 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--lcdfj.tfm
-2020/07/07 | 2864 | fonts/overlock/tfm/Overlock-Italic-lf-ly1.tfm
-2020/07/07 | 1368 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--lcdfj.tfm
-2020/07/07 | 1992 | fonts/overlock/tfm/Overlock-Italic-lf-ot1.tfm
-2020/07/07 | 1800 | fonts/overlock/tfm/Overlock-Italic-lf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-t1--lcdfj.tfm
-2020/07/07 | 2732 | fonts/overlock/tfm/Overlock-Italic-lf-t1.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Italic-lf-ts1--base.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Italic-lf-ts1.tfm
-2020/07/07 | 1892 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--lcdfj.tfm
-2020/07/07 | 2912 | fonts/overlock/tfm/Overlock-Italic-osf-ly1.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--lcdfj.tfm
-2020/07/07 | 2056 | fonts/overlock/tfm/Overlock-Italic-osf-ot1.tfm
-2020/07/07 | 1820 | fonts/overlock/tfm/Overlock-Italic-osf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-t1--lcdfj.tfm
-2020/07/07 | 2816 | fonts/overlock/tfm/Overlock-Italic-osf-t1.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ts1--base.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Italic-osf-ts1.tfm
-2020/07/07 | 1804 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--lcdfj.tfm
-2020/07/07 | 2864 | fonts/overlock/tfm/Overlock-Regular-lf-ly1.tfm
-2020/07/07 | 1328 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--lcdfj.tfm
-2020/07/07 | 1940 | fonts/overlock/tfm/Overlock-Regular-lf-ot1.tfm
-2020/07/07 | 1824 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--lcdfj.tfm
-2020/07/07 | 2636 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1.tfm
-2020/07/07 | 1340 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--lcdfj.tfm
-2020/07/07 | 1948 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1.tfm
-2020/07/07 | 1752 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--lcdfj.tfm
-2020/07/07 | 2512 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1.tfm
-2020/07/07 | 1736 | fonts/overlock/tfm/Overlock-Regular-lf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-t1--lcdfj.tfm
-2020/07/07 | 2708 | fonts/overlock/tfm/Overlock-Regular-lf-t1.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Regular-lf-ts1--base.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Regular-lf-ts1.tfm
-2020/07/07 | 1824 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--lcdfj.tfm
-2020/07/07 | 2980 | fonts/overlock/tfm/Overlock-Regular-osf-ly1.tfm
-2020/07/07 | 1352 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--lcdfj.tfm
-2020/07/07 | 2008 | fonts/overlock/tfm/Overlock-Regular-osf-ot1.tfm
-2020/07/07 | 1844 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--lcdfj.tfm
-2020/07/07 | 2756 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1.tfm
-2020/07/07 | 1364 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--lcdfj.tfm
-2020/07/07 | 2016 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1.tfm
-2020/07/07 | 1772 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--lcdfj.tfm
-2020/07/07 | 2596 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1.tfm
-2020/07/07 | 1756 | fonts/overlock/tfm/Overlock-Regular-osf-t1--base.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-t1--lcdfj.tfm
-2020/07/07 | 2792 | fonts/overlock/tfm/Overlock-Regular-osf-t1.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Regular-osf-ts1--base.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Regular-osf-ts1.tfm
-2020/07/07 | 60944 | fonts/overlock/type1/Overlock-BlackItalic.pfb
-2020/07/07 | 58561 | fonts/overlock/type1/Overlock-Black.pfb
-2020/07/07 | 60224 | fonts/overlock/type1/Overlock-BoldItalic.pfb
-2020/07/07 | 60209 | fonts/overlock/type1/Overlock-Bold.pfb
-2020/07/07 | 60920 | fonts/overlock/type1/Overlock-Italic.pfb
-2020/07/07 | 69707 | fonts/overlock/type1/Overlock-Regular.pfb
-2020/07/07 | 1740 | fonts/overlock/vf/Overlock-BlackItalic-lf-ly1.vf
-2020/07/07 | 848 | fonts/overlock/vf/Overlock-BlackItalic-lf-ot1.vf
-2020/07/07 | 1432 | fonts/overlock/vf/Overlock-BlackItalic-lf-t1.vf
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-BlackItalic-lf-ts1.vf
-2020/07/07 | 1744 | fonts/overlock/vf/Overlock-BlackItalic-osf-ly1.vf
-2020/07/07 | 852 | fonts/overlock/vf/Overlock-BlackItalic-osf-ot1.vf
-2020/07/07 | 1436 | fonts/overlock/vf/Overlock-BlackItalic-osf-t1.vf
-2020/07/07 | 576 | fonts/overlock/vf/Overlock-BlackItalic-osf-ts1.vf
-2020/07/07 | 1724 | fonts/overlock/vf/Overlock-Black-lf-ly1.vf
-2020/07/07 | 828 | fonts/overlock/vf/Overlock-Black-lf-ot1.vf
-2020/07/07 | 1416 | fonts/overlock/vf/Overlock-Black-lf-t1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Black-lf-ts1.vf
-2020/07/07 | 1724 | fonts/overlock/vf/Overlock-Black-osf-ly1.vf
-2020/07/07 | 832 | fonts/overlock/vf/Overlock-Black-osf-ot1.vf
-2020/07/07 | 1416 | fonts/overlock/vf/Overlock-Black-osf-t1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Black-osf-ts1.vf
-2020/07/07 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-lf-ly1.vf
-2020/07/07 | 848 | fonts/overlock/vf/Overlock-BoldItalic-lf-ot1.vf
-2020/07/07 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-lf-t1.vf
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-BoldItalic-lf-ts1.vf
-2020/07/07 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-osf-ly1.vf
-2020/07/07 | 848 | fonts/overlock/vf/Overlock-BoldItalic-osf-ot1.vf
-2020/07/07 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-osf-t1.vf
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-BoldItalic-osf-ts1.vf
-2020/07/07 | 1720 | fonts/overlock/vf/Overlock-Bold-lf-ly1.vf
-2020/07/07 | 828 | fonts/overlock/vf/Overlock-Bold-lf-ot1.vf
-2020/07/07 | 1412 | fonts/overlock/vf/Overlock-Bold-lf-t1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Bold-lf-ts1.vf
-2020/07/07 | 1724 | fonts/overlock/vf/Overlock-Bold-osf-ly1.vf
-2020/07/07 | 828 | fonts/overlock/vf/Overlock-Bold-osf-ot1.vf
-2020/07/07 | 1416 | fonts/overlock/vf/Overlock-Bold-osf-t1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Bold-osf-ts1.vf
-2020/07/07 | 1732 | fonts/overlock/vf/Overlock-Italic-lf-ly1.vf
-2020/07/07 | 840 | fonts/overlock/vf/Overlock-Italic-lf-ot1.vf
-2020/07/07 | 1424 | fonts/overlock/vf/Overlock-Italic-lf-t1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Italic-lf-ts1.vf
-2020/07/07 | 1732 | fonts/overlock/vf/Overlock-Italic-osf-ly1.vf
-2020/07/07 | 840 | fonts/overlock/vf/Overlock-Italic-osf-ot1.vf
-2020/07/07 | 1424 | fonts/overlock/vf/Overlock-Italic-osf-t1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Italic-osf-ts1.vf
-2020/07/07 | 1728 | fonts/overlock/vf/Overlock-Regular-lf-ly1.vf
-2020/07/07 | 832 | fonts/overlock/vf/Overlock-Regular-lf-ot1.vf
-2020/07/07 | 1732 | fonts/overlock/vf/Overlock-Regular-lf-sc-ly1.vf
-2020/07/07 | 844 | fonts/overlock/vf/Overlock-Regular-lf-sc-ot1.vf
-2020/07/07 | 1424 | fonts/overlock/vf/Overlock-Regular-lf-sc-t1.vf
-2020/07/07 | 1420 | fonts/overlock/vf/Overlock-Regular-lf-t1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Regular-lf-ts1.vf
-2020/07/07 | 1728 | fonts/overlock/vf/Overlock-Regular-osf-ly1.vf
-2020/07/07 | 836 | fonts/overlock/vf/Overlock-Regular-osf-ot1.vf
-2020/07/07 | 1736 | fonts/overlock/vf/Overlock-Regular-osf-sc-ly1.vf
-2020/07/07 | 844 | fonts/overlock/vf/Overlock-Regular-osf-sc-ot1.vf
-2020/07/07 | 1428 | fonts/overlock/vf/Overlock-Regular-osf-sc-t1.vf
-2020/07/07 | 1420 | fonts/overlock/vf/Overlock-Regular-osf-t1.vf
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-Regular-osf-ts1.vf
-2020/07/08 | 939342 | fonts/overlock.zip
+2020/07/10 | 4421 | fonts/overlock/doc/License.txt
+2020/07/10 | 117840 | fonts/overlock/doc/overlock-samples.pdf
+2020/07/10 | 693 | fonts/overlock/doc/overlock-samples.tex
+2020/07/10 | 3135 | fonts/overlock/enc/ovlk_2sdgnb.enc
+2020/07/10 | 3057 | fonts/overlock/enc/ovlk_325tkf.enc
+2020/07/10 | 3128 | fonts/overlock/enc/ovlk_7l4e47.enc
+2020/07/10 | 3351 | fonts/overlock/enc/ovlk_a4aghc.enc
+2020/07/10 | 2952 | fonts/overlock/enc/ovlk_bhbhyo.enc
+2020/07/10 | 3100 | fonts/overlock/enc/ovlk_cj365g.enc
+2020/07/10 | 3399 | fonts/overlock/enc/ovlk_cr35rj.enc
+2020/07/10 | 3544 | fonts/overlock/enc/ovlk_e3j4ia.enc
+2020/07/10 | 3064 | fonts/overlock/enc/ovlk_fqfhhf.enc
+2020/07/10 | 2953 | fonts/overlock/enc/ovlk_gmmlzo.enc
+2020/07/10 | 2983 | fonts/overlock/enc/ovlk_irzqhk.enc
+2020/07/10 | 3294 | fonts/overlock/enc/ovlk_j3mq5n.enc
+2020/07/10 | 2959 | fonts/overlock/enc/ovlk_k2npiy.enc
+2020/07/10 | 3456 | fonts/overlock/enc/ovlk_lhx5go.enc
+2020/07/10 | 3197 | fonts/overlock/enc/ovlk_lqqrub.enc
+2020/07/10 | 2856 | fonts/overlock/enc/ovlk_siy5zo.enc
+2020/07/10 | 2962 | fonts/overlock/enc/ovlk_tmoia5.enc
+2020/07/10 | 2990 | fonts/overlock/enc/ovlk_vvi6px.enc
+2020/07/10 | 2865 | fonts/overlock/enc/ovlk_woxjio.enc
+2020/07/10 | 2959 | fonts/overlock/latex/LY1Overlock-LF.fd
+2020/07/10 | 3008 | fonts/overlock/latex/LY1Overlock-OsF.fd
+2020/07/10 | 2959 | fonts/overlock/latex/OT1Overlock-LF.fd
+2020/07/10 | 3008 | fonts/overlock/latex/OT1Overlock-OsF.fd
+2020/07/10 | 3315 | fonts/overlock/latex/overlock.sty
+2020/07/10 | 2926 | fonts/overlock/latex/T1Overlock-LF.fd
+2020/07/10 | 2975 | fonts/overlock/latex/T1Overlock-OsF.fd
+2020/07/10 | 2760 | fonts/overlock/latex/TS1Overlock-LF.fd
+2020/07/10 | 2805 | fonts/overlock/latex/TS1Overlock-OsF.fd
+2020/07/10 | 11054 | fonts/overlock/map/overlock.map
+2020/07/10 | 38980 | fonts/overlock/opentype/Overlock-BlackItalic.otf
+2020/07/10 | 39512 | fonts/overlock/opentype/Overlock-Black.otf
+2020/07/10 | 42716 | fonts/overlock/opentype/Overlock-BoldItalic.otf
+2020/07/10 | 40148 | fonts/overlock/opentype/Overlock-Bold.otf
+2020/07/10 | 41108 | fonts/overlock/opentype/Overlock-Italic.otf
+2020/07/10 | 46012 | fonts/overlock/opentype/Overlock-Regular.otf
+2020/07/10 | 2005 | fonts/overlock/README
+2020/07/10 | 1964 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--lcdfj.tfm
+2020/07/10 | 2996 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1.tfm
+2020/07/10 | 1408 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--lcdfj.tfm
+2020/07/10 | 2032 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1.tfm
+2020/07/10 | 1872 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--lcdfj.tfm
+2020/07/10 | 2840 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1.tfm
+2020/07/10 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1--base.tfm
+2020/07/10 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1.tfm
+2020/07/10 | 1980 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--lcdfj.tfm
+2020/07/10 | 3036 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1.tfm
+2020/07/10 | 1432 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--lcdfj.tfm
+2020/07/10 | 2100 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1.tfm
+2020/07/10 | 1892 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--lcdfj.tfm
+2020/07/10 | 2924 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1.tfm
+2020/07/10 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1--base.tfm
+2020/07/10 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1.tfm
+2020/07/10 | 1812 | fonts/overlock/tfm/Overlock-Black-lf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ly1--lcdfj.tfm
+2020/07/10 | 2860 | fonts/overlock/tfm/Overlock-Black-lf-ly1.tfm
+2020/07/10 | 1332 | fonts/overlock/tfm/Overlock-Black-lf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ot1--lcdfj.tfm
+2020/07/10 | 1940 | fonts/overlock/tfm/Overlock-Black-lf-ot1.tfm
+2020/07/10 | 1744 | fonts/overlock/tfm/Overlock-Black-lf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-lf-t1--lcdfj.tfm
+2020/07/10 | 2712 | fonts/overlock/tfm/Overlock-Black-lf-t1.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Black-lf-ts1--base.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-Black-lf-ts1.tfm
+2020/07/10 | 1832 | fonts/overlock/tfm/Overlock-Black-osf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ly1--lcdfj.tfm
+2020/07/10 | 2976 | fonts/overlock/tfm/Overlock-Black-osf-ly1.tfm
+2020/07/10 | 1360 | fonts/overlock/tfm/Overlock-Black-osf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ot1--lcdfj.tfm
+2020/07/10 | 2012 | fonts/overlock/tfm/Overlock-Black-osf-ot1.tfm
+2020/07/10 | 1772 | fonts/overlock/tfm/Overlock-Black-osf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-osf-t1--lcdfj.tfm
+2020/07/10 | 2804 | fonts/overlock/tfm/Overlock-Black-osf-t1.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Black-osf-ts1--base.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-Black-osf-ts1.tfm
+2020/07/10 | 1872 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--lcdfj.tfm
+2020/07/10 | 4604 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1.tfm
+2020/07/10 | 1372 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--lcdfj.tfm
+2020/07/10 | 2380 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1.tfm
+2020/07/10 | 1800 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--lcdfj.tfm
+2020/07/10 | 4216 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1.tfm
+2020/07/10 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1--base.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1.tfm
+2020/07/10 | 1900 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--lcdfj.tfm
+2020/07/10 | 4712 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--lcdfj.tfm
+2020/07/10 | 2468 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1.tfm
+2020/07/10 | 1828 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--lcdfj.tfm
+2020/07/10 | 4340 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1.tfm
+2020/07/10 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1--base.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1.tfm
+2020/07/10 | 1844 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--lcdfj.tfm
+2020/07/10 | 2708 | fonts/overlock/tfm/Overlock-Bold-lf-ly1.tfm
+2020/07/10 | 1356 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--lcdfj.tfm
+2020/07/10 | 1908 | fonts/overlock/tfm/Overlock-Bold-lf-ot1.tfm
+2020/07/10 | 1780 | fonts/overlock/tfm/Overlock-Bold-lf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-t1--lcdfj.tfm
+2020/07/10 | 2576 | fonts/overlock/tfm/Overlock-Bold-lf-t1.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Bold-lf-ts1--base.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Bold-lf-ts1.tfm
+2020/07/10 | 1876 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--lcdfj.tfm
+2020/07/10 | 2836 | fonts/overlock/tfm/Overlock-Bold-osf-ly1.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--lcdfj.tfm
+2020/07/10 | 1988 | fonts/overlock/tfm/Overlock-Bold-osf-ot1.tfm
+2020/07/10 | 1812 | fonts/overlock/tfm/Overlock-Bold-osf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-t1--lcdfj.tfm
+2020/07/10 | 2672 | fonts/overlock/tfm/Overlock-Bold-osf-t1.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Bold-osf-ts1--base.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Bold-osf-ts1.tfm
+2020/07/10 | 1876 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--lcdfj.tfm
+2020/07/10 | 2864 | fonts/overlock/tfm/Overlock-Italic-lf-ly1.tfm
+2020/07/10 | 1368 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--lcdfj.tfm
+2020/07/10 | 1992 | fonts/overlock/tfm/Overlock-Italic-lf-ot1.tfm
+2020/07/10 | 1800 | fonts/overlock/tfm/Overlock-Italic-lf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-t1--lcdfj.tfm
+2020/07/10 | 2732 | fonts/overlock/tfm/Overlock-Italic-lf-t1.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Italic-lf-ts1--base.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Italic-lf-ts1.tfm
+2020/07/10 | 1892 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--lcdfj.tfm
+2020/07/10 | 2912 | fonts/overlock/tfm/Overlock-Italic-osf-ly1.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--lcdfj.tfm
+2020/07/10 | 2056 | fonts/overlock/tfm/Overlock-Italic-osf-ot1.tfm
+2020/07/10 | 1820 | fonts/overlock/tfm/Overlock-Italic-osf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-t1--lcdfj.tfm
+2020/07/10 | 2816 | fonts/overlock/tfm/Overlock-Italic-osf-t1.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ts1--base.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Italic-osf-ts1.tfm
+2020/07/10 | 1804 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--lcdfj.tfm
+2020/07/10 | 2864 | fonts/overlock/tfm/Overlock-Regular-lf-ly1.tfm
+2020/07/10 | 1328 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--lcdfj.tfm
+2020/07/10 | 1940 | fonts/overlock/tfm/Overlock-Regular-lf-ot1.tfm
+2020/07/10 | 1824 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--lcdfj.tfm
+2020/07/10 | 2636 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1.tfm
+2020/07/10 | 1340 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--lcdfj.tfm
+2020/07/10 | 1948 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1.tfm
+2020/07/10 | 1752 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--lcdfj.tfm
+2020/07/10 | 2512 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1.tfm
+2020/07/10 | 1736 | fonts/overlock/tfm/Overlock-Regular-lf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-t1--lcdfj.tfm
+2020/07/10 | 2708 | fonts/overlock/tfm/Overlock-Regular-lf-t1.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Regular-lf-ts1--base.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Regular-lf-ts1.tfm
+2020/07/10 | 1824 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--lcdfj.tfm
+2020/07/10 | 2980 | fonts/overlock/tfm/Overlock-Regular-osf-ly1.tfm
+2020/07/10 | 1352 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--lcdfj.tfm
+2020/07/10 | 2008 | fonts/overlock/tfm/Overlock-Regular-osf-ot1.tfm
+2020/07/10 | 1844 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--lcdfj.tfm
+2020/07/10 | 2756 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1.tfm
+2020/07/10 | 1364 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--lcdfj.tfm
+2020/07/10 | 2016 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1.tfm
+2020/07/10 | 1772 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--lcdfj.tfm
+2020/07/10 | 2596 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1.tfm
+2020/07/10 | 1756 | fonts/overlock/tfm/Overlock-Regular-osf-t1--base.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-t1--lcdfj.tfm
+2020/07/10 | 2792 | fonts/overlock/tfm/Overlock-Regular-osf-t1.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Regular-osf-ts1--base.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Regular-osf-ts1.tfm
+2020/07/10 | 7089 | fonts/overlock/type1/Overlock-BlackItalicLCDFJ.pfb
+2020/07/10 | 60944 | fonts/overlock/type1/Overlock-BlackItalic.pfb
+2020/07/10 | 7092 | fonts/overlock/type1/Overlock-BlackLCDFJ.pfb
+2020/07/10 | 58561 | fonts/overlock/type1/Overlock-Black.pfb
+2020/07/10 | 7085 | fonts/overlock/type1/Overlock-BoldItalicLCDFJ.pfb
+2020/07/10 | 60224 | fonts/overlock/type1/Overlock-BoldItalic.pfb
+2020/07/10 | 7078 | fonts/overlock/type1/Overlock-BoldLCDFJ.pfb
+2020/07/10 | 60209 | fonts/overlock/type1/Overlock-Bold.pfb
+2020/07/10 | 7076 | fonts/overlock/type1/Overlock-ItalicLCDFJ.pfb
+2020/07/10 | 60920 | fonts/overlock/type1/Overlock-Italic.pfb
+2020/07/10 | 7077 | fonts/overlock/type1/Overlock-RegularLCDFJ.pfb
+2020/07/10 | 69707 | fonts/overlock/type1/Overlock-Regular.pfb
+2020/07/10 | 1740 | fonts/overlock/vf/Overlock-BlackItalic-lf-ly1.vf
+2020/07/10 | 848 | fonts/overlock/vf/Overlock-BlackItalic-lf-ot1.vf
+2020/07/10 | 1432 | fonts/overlock/vf/Overlock-BlackItalic-lf-t1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-BlackItalic-lf-ts1.vf
+2020/07/10 | 1744 | fonts/overlock/vf/Overlock-BlackItalic-osf-ly1.vf
+2020/07/10 | 852 | fonts/overlock/vf/Overlock-BlackItalic-osf-ot1.vf
+2020/07/10 | 1436 | fonts/overlock/vf/Overlock-BlackItalic-osf-t1.vf
+2020/07/10 | 576 | fonts/overlock/vf/Overlock-BlackItalic-osf-ts1.vf
+2020/07/10 | 1724 | fonts/overlock/vf/Overlock-Black-lf-ly1.vf
+2020/07/10 | 828 | fonts/overlock/vf/Overlock-Black-lf-ot1.vf
+2020/07/10 | 1416 | fonts/overlock/vf/Overlock-Black-lf-t1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Black-lf-ts1.vf
+2020/07/10 | 1724 | fonts/overlock/vf/Overlock-Black-osf-ly1.vf
+2020/07/10 | 832 | fonts/overlock/vf/Overlock-Black-osf-ot1.vf
+2020/07/10 | 1416 | fonts/overlock/vf/Overlock-Black-osf-t1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Black-osf-ts1.vf
+2020/07/10 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-lf-ly1.vf
+2020/07/10 | 848 | fonts/overlock/vf/Overlock-BoldItalic-lf-ot1.vf
+2020/07/10 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-lf-t1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-BoldItalic-lf-ts1.vf
+2020/07/10 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-osf-ly1.vf
+2020/07/10 | 848 | fonts/overlock/vf/Overlock-BoldItalic-osf-ot1.vf
+2020/07/10 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-osf-t1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-BoldItalic-osf-ts1.vf
+2020/07/10 | 1720 | fonts/overlock/vf/Overlock-Bold-lf-ly1.vf
+2020/07/10 | 828 | fonts/overlock/vf/Overlock-Bold-lf-ot1.vf
+2020/07/10 | 1412 | fonts/overlock/vf/Overlock-Bold-lf-t1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Bold-lf-ts1.vf
+2020/07/10 | 1724 | fonts/overlock/vf/Overlock-Bold-osf-ly1.vf
+2020/07/10 | 828 | fonts/overlock/vf/Overlock-Bold-osf-ot1.vf
+2020/07/10 | 1416 | fonts/overlock/vf/Overlock-Bold-osf-t1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Bold-osf-ts1.vf
+2020/07/10 | 1732 | fonts/overlock/vf/Overlock-Italic-lf-ly1.vf
+2020/07/10 | 840 | fonts/overlock/vf/Overlock-Italic-lf-ot1.vf
+2020/07/10 | 1424 | fonts/overlock/vf/Overlock-Italic-lf-t1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Italic-lf-ts1.vf
+2020/07/10 | 1732 | fonts/overlock/vf/Overlock-Italic-osf-ly1.vf
+2020/07/10 | 840 | fonts/overlock/vf/Overlock-Italic-osf-ot1.vf
+2020/07/10 | 1424 | fonts/overlock/vf/Overlock-Italic-osf-t1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Italic-osf-ts1.vf
+2020/07/10 | 1728 | fonts/overlock/vf/Overlock-Regular-lf-ly1.vf
+2020/07/10 | 832 | fonts/overlock/vf/Overlock-Regular-lf-ot1.vf
+2020/07/10 | 1732 | fonts/overlock/vf/Overlock-Regular-lf-sc-ly1.vf
+2020/07/10 | 844 | fonts/overlock/vf/Overlock-Regular-lf-sc-ot1.vf
+2020/07/10 | 1424 | fonts/overlock/vf/Overlock-Regular-lf-sc-t1.vf
+2020/07/10 | 1420 | fonts/overlock/vf/Overlock-Regular-lf-t1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Regular-lf-ts1.vf
+2020/07/10 | 1728 | fonts/overlock/vf/Overlock-Regular-osf-ly1.vf
+2020/07/10 | 836 | fonts/overlock/vf/Overlock-Regular-osf-ot1.vf
+2020/07/10 | 1736 | fonts/overlock/vf/Overlock-Regular-osf-sc-ly1.vf
+2020/07/10 | 844 | fonts/overlock/vf/Overlock-Regular-osf-sc-ot1.vf
+2020/07/10 | 1428 | fonts/overlock/vf/Overlock-Regular-osf-sc-t1.vf
+2020/07/10 | 1420 | fonts/overlock/vf/Overlock-Regular-osf-t1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-Regular-osf-ts1.vf
+2020/07/10 | 955233 | fonts/overlock.zip
2001/01/02 | 86868 | fonts/pacioli/pacioli.dtx
1999/03/17 | 2778 | fonts/pacioli/pacioli.ins
1999/03/17 | 1261 | fonts/pacioli/README
@@ -163046,7 +163051,7 @@
2019/12/10 | 107860149 | install/fonts/noto.tds.zip
2020/05/30 | 3595835 | install/fonts/oldstandard.tds.zip
2019/06/24 | 4612348 | install/fonts/opensans.tds.zip
-2020/07/08 | 962574 | install/fonts/overlock.tds.zip
+2020/07/10 | 978875 | install/fonts/overlock.tds.zip
2014/02/03 | 9095563 | install/fonts/paratype.tds.zip
2011/01/11 | 196131 | install/fonts/pcarl.tds.zip
2019/10/15 | 2786609 | install/fonts/playfair.tds.zip
@@ -182703,12 +182708,12 @@
2019/12/03 | 1387 | macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx
2019/12/03 | 655 | macros/latex/contrib/biblatex-contrib/biblatex-phys/README.md
2019/12/03 | 459931 | macros/latex/contrib/biblatex-contrib/biblatex-phys.zip
-2019/04/16 | 317216 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
-2019/04/16 | 32330 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
-2019/04/16 | 32308 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
-2019/04/16 | 1251 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
-2019/04/16 | 6112 | macros/latex/contrib/biblatex-contrib/biblatex-publist/README
-2019/04/16 | 336261 | macros/latex/contrib/biblatex-contrib/biblatex-publist.zip
+2020/07/10 | 355590 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
+2020/07/10 | 35195 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
+2020/07/10 | 35217 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
+2020/07/10 | 1251 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
+2020/07/10 | 6177 | macros/latex/contrib/biblatex-contrib/biblatex-publist/README
+2020/07/10 | 375796 | macros/latex/contrib/biblatex-contrib/biblatex-publist.zip
2017/11/19 | 73204 | macros/latex/contrib/biblatex-contrib/biblatex-realauthor/documentation/biblatex-realauthor.pdf
2017/11/19 | 8922 | macros/latex/contrib/biblatex-contrib/biblatex-realauthor/documentation/biblatex-realauthor.tex
2016/06/13 | 1261 | macros/latex/contrib/biblatex-contrib/biblatex-realauthor/documentation/example-realauthor.bib
@@ -185414,11 +185419,13 @@
2010/02/01 | 239279 | macros/latex/contrib/crosswrd/crosswrd.pdf
2010/02/01 | 2398 | macros/latex/contrib/crosswrd/README
2010/02/01 | 234083 | macros/latex/contrib/crosswrd.zip
-2018/11/11 | 981559 | macros/latex/contrib/cryptocode/cryptocode.pdf
-2018/11/11 | 75696 | macros/latex/contrib/cryptocode/cryptocode.sty
-2018/11/11 | 123034 | macros/latex/contrib/cryptocode/cryptocode.tex
-2018/11/11 | 546 | macros/latex/contrib/cryptocode/README
-2018/11/11 | 714208 | macros/latex/contrib/cryptocode.zip
+2020/07/10 | 75696 | macros/latex/contrib/cryptocode/cryptocode-2018-11-11.sty
+2020/07/10 | 77437 | macros/latex/contrib/cryptocode/cryptocode-2020-04-24.sty
+2020/07/10 | 289954 | macros/latex/contrib/cryptocode/cryptocode.dtx
+2020/07/10 | 941 | macros/latex/contrib/cryptocode/cryptocode.ins
+2020/07/10 | 1043865 | macros/latex/contrib/cryptocode/cryptocode.pdf
+2020/07/10 | 1393 | macros/latex/contrib/cryptocode/README.md
+2020/07/10 | 1113972 | macros/latex/contrib/cryptocode.zip
2020/03/20 | 3739 | macros/latex/contrib/csbulletin/csbulacronym.sty
2020/03/20 | 18016 | macros/latex/contrib/csbulletin/csbulletin.cls
2020/03/20 | 264133 | macros/latex/contrib/csbulletin/csbulletin.pdf
@@ -255161,14 +255168,14 @@
2019/02/28 | 376 | systems/texlive/tlnet/archive/bib2gls.amd64-freebsd.r45266.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.amd64-netbsd.r45266.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.armhf-linux.r45266.tar.xz
-2020/05/31 | 5141688 | systems/texlive/tlnet/archive/bib2gls.doc.r55348.tar.xz
+2020/07/10 | 5142160 | systems/texlive/tlnet/archive/bib2gls.doc.r55794.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.i386-cygwin.r45266.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.i386-freebsd.r45266.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.i386-linux.r45266.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.i386-netbsd.r45266.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.i386-solaris.r45266.tar.xz
-2020/05/31 | 1186360 | systems/texlive/tlnet/archive/bib2gls.r55348.tar.xz
-2020/05/31 | 1181728 | systems/texlive/tlnet/archive/bib2gls.source.r55348.tar.xz
+2020/07/10 | 1186468 | systems/texlive/tlnet/archive/bib2gls.r55794.tar.xz
+2020/07/10 | 1181728 | systems/texlive/tlnet/archive/bib2gls.source.r55794.tar.xz
2019/02/28 | 712 | systems/texlive/tlnet/archive/bib2gls.win32.r45266.tar.xz
2019/02/28 | 376 | systems/texlive/tlnet/archive/bib2gls.x86_64-cygwin.r45266.tar.xz
2019/02/28 | 384 | systems/texlive/tlnet/archive/bib2gls.x86_64-darwinlegacy.r45266.tar.xz
@@ -261097,8 +261104,8 @@
2019/02/28 | 1092 | systems/texlive/tlnet/archive/mceinleger.r15878.tar.xz
2019/02/28 | 241840 | systems/texlive/tlnet/archive/mcexam.doc.r46155.tar.xz
2019/02/28 | 11424 | systems/texlive/tlnet/archive/mcexam.r46155.tar.xz
-2020/01/27 | 880812 | systems/texlive/tlnet/archive/mcf2graph.doc.r53550.tar.xz
-2020/01/27 | 20036 | systems/texlive/tlnet/archive/mcf2graph.r53550.tar.xz
+2020/07/10 | 887428 | systems/texlive/tlnet/archive/mcf2graph.doc.r55793.tar.xz
+2020/07/10 | 20060 | systems/texlive/tlnet/archive/mcf2graph.r55793.tar.xz
2019/02/28 | 138716 | systems/texlive/tlnet/archive/mcite.doc.r18173.tar.xz
2019/02/28 | 391980 | systems/texlive/tlnet/archive/mciteplus.doc.r31648.tar.xz
2019/02/28 | 34344 | systems/texlive/tlnet/archive/mciteplus.r31648.tar.xz
@@ -262124,8 +262131,8 @@
2019/02/28 | 2504 | systems/texlive/tlnet/archive/outlining.source.r45601.tar.xz
2019/02/28 | 105112 | systems/texlive/tlnet/archive/overlays.doc.r46122.tar.xz
2019/02/28 | 2440 | systems/texlive/tlnet/archive/overlays.r46122.tar.xz
-2019/10/17 | 42360 | systems/texlive/tlnet/archive/overlock.doc.r52408.tar.xz
-2019/10/17 | 538156 | systems/texlive/tlnet/archive/overlock.r52408.tar.xz
+2020/07/10 | 121736 | systems/texlive/tlnet/archive/overlock.doc.r55791.tar.xz
+2020/07/10 | 569396 | systems/texlive/tlnet/archive/overlock.r55791.tar.xz
2020/02/25 | 372204 | systems/texlive/tlnet/archive/overpic.doc.r53889.tar.xz
2020/02/25 | 1728 | systems/texlive/tlnet/archive/overpic.r53889.tar.xz
2020/02/25 | 4784 | systems/texlive/tlnet/archive/overpic.source.r53889.tar.xz
@@ -264641,13 +264648,13 @@
2020/03/02 | 109508 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r53999.tar.xz
2020/03/02 | 87376 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r53995.tar.xz
2020/03/04 | 72564 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r54033.tar.xz
-2020/07/09 | 135724 | systems/texlive/tlnet/archive/tex4ht.doc.r55788.tar.xz
+2020/07/10 | 135724 | systems/texlive/tlnet/archive/tex4ht.doc.r55795.tar.xz
2020/06/02 | 51092 | systems/texlive/tlnet/archive/tex4ht.i386-cygwin.r55384.tar.xz
2020/03/02 | 90676 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r53999.tar.xz
2020/03/02 | 89232 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r53999.tar.xz
2020/03/06 | 76276 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r54104.tar.xz
2020/03/02 | 83968 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r53999.tar.xz
-2020/07/09 | 860612 | systems/texlive/tlnet/archive/tex4ht.r55788.tar.xz
+2020/07/10 | 860700 | systems/texlive/tlnet/archive/tex4ht.r55795.tar.xz
2020/03/02 | 57708 | systems/texlive/tlnet/archive/tex4ht.win32.r53994.tar.xz
2020/06/02 | 57936 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r55384.tar.xz
2020/03/02 | 85024 | systems/texlive/tlnet/archive/tex4ht.x86_64-darwinlegacy.r53999.tar.xz
@@ -264825,8 +264832,8 @@
2020/03/24 | 280 | systems/texlive/tlnet/archive/texlive-cz.r54496.tar.xz
2020/03/29 | 1338300 | systems/texlive/tlnet/archive/texlive-de.doc.r54604.tar.xz
2020/03/29 | 272 | systems/texlive/tlnet/archive/texlive-de.r54604.tar.xz
-2020/07/09 | 167372 | systems/texlive/tlnet/archive/texlive-docindex.doc.r55779.tar.xz
-2020/07/09 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r55779.tar.xz
+2020/07/10 | 167364 | systems/texlive/tlnet/archive/texlive-docindex.doc.r55790.tar.xz
+2020/07/10 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r55790.tar.xz
2020/04/16 | 1891392 | systems/texlive/tlnet/archive/texlive-en.doc.r54755.tar.xz
2020/04/16 | 272 | systems/texlive/tlnet/archive/texlive-en.r54755.tar.xz
2020/03/22 | 3090144 | systems/texlive/tlnet/archive/texlive-es.doc.r54465.tar.xz
@@ -264882,7 +264889,7 @@
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz
-2020/07/08 | 218656 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55769.tar.xz
+2020/07/10 | 218656 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55790.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz
2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz
@@ -264906,7 +264913,7 @@
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz
-2020/07/08 | 131996 | systems/texlive/tlnet/archive/texlive-scripts.r55769.tar.xz
+2020/07/10 | 132016 | systems/texlive/tlnet/archive/texlive-scripts.r55790.tar.xz
2020/05/31 | 36284 | systems/texlive/tlnet/archive/texlive-scripts.win32.r55357.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz
2020/05/12 | 592 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-darwinlegacy.r55117.tar.xz
@@ -265159,9 +265166,9 @@
2019/02/28 | 33908 | systems/texlive/tlnet/archive/thumbs.source.r33134.tar.xz
2019/02/28 | 155976 | systems/texlive/tlnet/archive/thumby.doc.r16736.tar.xz
2019/02/28 | 3268 | systems/texlive/tlnet/archive/thumby.r16736.tar.xz
-2020/06/15 | 2306204 | systems/texlive/tlnet/archive/thuthesis.doc.r55547.tar.xz
-2020/06/15 | 34844 | systems/texlive/tlnet/archive/thuthesis.r55547.tar.xz
-2020/06/15 | 38692 | systems/texlive/tlnet/archive/thuthesis.source.r55547.tar.xz
+2020/07/10 | 2308216 | systems/texlive/tlnet/archive/thuthesis.doc.r55792.tar.xz
+2020/07/10 | 35508 | systems/texlive/tlnet/archive/thuthesis.r55792.tar.xz
+2020/07/10 | 38808 | systems/texlive/tlnet/archive/thuthesis.source.r55792.tar.xz
2019/02/28 | 488008 | systems/texlive/tlnet/archive/ticket.doc.r42280.tar.xz
2019/02/28 | 3996 | systems/texlive/tlnet/archive/ticket.r42280.tar.xz
2019/02/28 | 371572 | systems/texlive/tlnet/archive/ticollege.doc.r36306.tar.xz
@@ -266544,16 +266551,16 @@
2020/01/24 | 138180 | systems/texlive/tlnet/archive/zxjatype.doc.r53500.tar.xz
2020/01/24 | 8760 | systems/texlive/tlnet/archive/zxjatype.r53500.tar.xz
2020/06/13 | 105829 | systems/texlive/tlnet/install-tl
-2020/07/09 | 5500777 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2020/07/09 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2020/07/09 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2020/07/10 | 5500780 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2020/07/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2020/07/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2020/05/31 | 4770 | systems/texlive/tlnet/install-tl-windows.bat
-2020/07/09 | 19379813 | systems/texlive/tlnet/install-tl-windows.exe
-2020/07/09 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2020/07/09 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2020/07/09 | 24269277 | systems/texlive/tlnet/install-tl.zip
-2020/07/09 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2020/07/09 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2020/07/10 | 19378637 | systems/texlive/tlnet/install-tl-windows.exe
+2020/07/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2020/07/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2020/07/10 | 24269290 | systems/texlive/tlnet/install-tl.zip
+2020/07/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2020/07/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2020/03/05 | 1215 | systems/texlive/tlnet/README.md
2020/04/06 | 5961 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
2016/04/12 | 600 | systems/texlive/tlnet/tlpkg/gpg/random_seed
@@ -266562,7 +266569,7 @@
2020/04/06 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2020/06/17 | 48858 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2020/07/07 | 6492 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2020/07/09 | 6504 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/04/15 | 223687 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2018/04/29 | 13647 | systems/texlive/tlnet/tlpkg/installer/DirSelect.pm
@@ -266609,12 +266616,12 @@
2020/05/17 | 20322 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2020/05/03 | 4786 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2017/11/14 | 27560 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2020/07/09 | 16311719 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2020/07/09 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2020/07/10 | 16321159 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2020/07/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2020/05/13 | 86417 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2020/07/09 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2020/07/09 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2020/07/09 | 2204788 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2020/07/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2020/07/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2020/07/10 | 2205868 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2020/04/15 | 58761 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2020/03/20 | 41736 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2020/05/11 | 15010 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -271092,7 +271099,7 @@
2020/02/04 | 281488 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2020/07/09 | 540439 | systems/win32/miktex/tm/packages/files.csv.lzma
+2020/07/10 | 540439 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -272251,9 +272258,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2020/06/30 | 39315 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2020/06/30 | 43053 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2020/07/09 | 201660 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2020/07/09 | 1206654 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2020/07/09 | 1126052 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2020/07/10 | 201596 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2020/07/10 | 1206548 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2020/07/10 | 1125558 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2020/06/30 | 13117 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2020/06/30 | 14123 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
@@ -272407,192 +272414,192 @@
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2019/09/11 | 231430 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2020/07/09 | 541774 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2020/07/09 | 59173 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2020/07/09 | 67327 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2020/07/09 | 957366 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2020/07/09 | 1060543 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2020/07/09 | 28620 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2020/07/09 | 30893 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2020/07/09 | 29321 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2020/07/09 | 34705 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2020/07/09 | 49696 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2020/07/09 | 57198 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2020/07/09 | 84389 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2020/07/09 | 93644 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2020/07/09 | 65601 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2020/07/09 | 73409 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2020/07/09 | 27037 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2020/07/09 | 30877 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2020/07/09 | 329721 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2020/07/09 | 392544 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2020/07/09 | 32134 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2020/07/09 | 36307 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2020/07/09 | 72072 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2020/07/09 | 79200 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2020/07/09 | 203502 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2020/07/09 | 223962 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2020/07/09 | 169764 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2020/07/09 | 184500 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2020/07/09 | 51923 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2020/07/09 | 58608 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2020/07/09 | 20771 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2020/07/09 | 22970 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2020/07/09 | 460275 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
-2020/07/09 | 460365 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2020/07/09 | 45499 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2020/07/09 | 51045 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2020/07/09 | 273617 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2020/07/09 | 310932 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2020/07/09 | 40788 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2020/07/09 | 44984 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2020/07/09 | 115820 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2020/07/09 | 130331 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2020/07/09 | 1266022 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2020/07/09 | 1409381 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2020/07/09 | 95314 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2020/07/09 | 109776 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2020/07/09 | 43306 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2020/07/09 | 48050 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2020/07/09 | 46285 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2020/07/09 | 51240 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2020/07/09 | 57185 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2020/07/09 | 62929 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2020/07/09 | 133620 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2020/07/09 | 151908 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2020/07/09 | 73102 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2020/07/09 | 77569 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2020/07/09 | 68821 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2020/07/09 | 77428 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2020/07/09 | 246797 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2020/07/09 | 281691 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2020/07/09 | 25475 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2020/07/09 | 28977 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2020/07/09 | 100973 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2020/07/09 | 117131 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2020/07/09 | 63531 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2020/07/09 | 72601 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2020/07/09 | 94264 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2020/07/09 | 113698 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2020/07/09 | 58973 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2020/07/09 | 65576 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2020/07/09 | 462360 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2020/07/09 | 550401 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2020/07/09 | 141817 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2020/07/09 | 154455 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2020/07/09 | 94530 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2020/07/09 | 109016 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2020/07/09 | 15924 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2020/07/09 | 17621 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2020/07/09 | 27943 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2020/07/09 | 29633 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2020/07/09 | 623381 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2020/07/09 | 676984 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2020/07/09 | 500485 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2020/07/09 | 562948 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2020/07/09 | 544669 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2020/07/09 | 586876 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2020/07/09 | 93647 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2020/07/09 | 102565 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2020/07/09 | 1751872 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2020/07/09 | 2028476 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2020/07/09 | 67272 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2020/07/09 | 73669 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2020/07/09 | 26957 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2020/07/09 | 31223 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2020/07/09 | 7556 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2020/07/09 | 8582 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2020/07/09 | 171137 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2020/07/09 | 187108 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2020/07/09 | 269063 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2020/07/09 | 305169 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2020/07/09 | 96909 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2020/07/09 | 101911 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2020/07/09 | 79745 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
-2020/07/09 | 88780 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
-2020/07/09 | 170232 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2020/07/09 | 189217 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2020/07/09 | 159288 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2020/07/09 | 179906 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2020/07/09 | 196476 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2020/07/09 | 177271 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2020/07/09 | 84819 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2020/07/09 | 96515 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2020/07/09 | 31242 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2020/07/09 | 35049 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2020/07/09 | 57249 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2020/07/09 | 64201 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2020/07/09 | 63351 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2020/07/09 | 69874 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2020/07/09 | 45737 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2020/07/09 | 52206 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2020/07/09 | 193352 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2020/07/09 | 210652 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2020/07/09 | 35336 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-2.9.tar.lzma
-2020/07/09 | 35313 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2020/07/09 | 39509 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64-2.9.tar.lzma
-2020/07/09 | 39507 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2020/07/09 | 327002 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2020/07/09 | 360664 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2020/07/09 | 187767 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2020/07/09 | 194051 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2020/07/09 | 207506 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2020/07/09 | 243028 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2020/07/09 | 78146 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2020/07/09 | 87406 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2020/07/09 | 922568 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2020/07/09 | 1021925 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2020/07/09 | 20014 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2020/07/09 | 23597 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2020/07/09 | 31240 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2020/07/09 | 36858 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2020/07/09 | 63502 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2020/07/09 | 71535 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2020/07/09 | 42503 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2020/07/09 | 50901 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2020/07/09 | 1193675 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2020/07/09 | 1327712 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2020/07/09 | 42065 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2020/07/09 | 51417 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2020/07/09 | 76755 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
-2020/07/09 | 76738 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2020/07/09 | 82832 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
-2020/07/09 | 82761 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2020/07/09 | 26879 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2020/07/09 | 29182 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2020/07/09 | 16018 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2020/07/09 | 17729 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2020/07/09 | 63496 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2020/07/09 | 69137 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2020/07/09 | 151032 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2020/07/09 | 164959 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2020/07/09 | 77604 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2020/07/09 | 88017 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2020/07/09 | 98014 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2020/07/09 | 104588 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2020/07/09 | 2534429 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2020/07/09 | 2659107 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2020/07/09 | 55578 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2020/07/09 | 61817 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2020/07/09 | 33138 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2020/07/09 | 36965 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2020/07/09 | 26631 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2020/07/09 | 32402 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2020/07/09 | 66120 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2020/07/09 | 70305 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2020/07/09 | 249727 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2020/07/09 | 279309 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2020/07/09 | 597671 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2020/07/09 | 638873 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2020/07/09 | 38947 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2020/07/09 | 43024 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2020/07/09 | 201750 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2020/07/09 | 1206242 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2020/07/09 | 1126204 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2020/07/09 | 13134 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2020/07/09 | 14115 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2020/07/10 | 541774 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2020/07/10 | 59173 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2020/07/10 | 67326 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2020/07/10 | 957364 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2020/07/10 | 1060543 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2020/07/10 | 28619 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2020/07/10 | 30892 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2020/07/10 | 29320 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2020/07/10 | 34704 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2020/07/10 | 49695 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2020/07/10 | 57199 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2020/07/10 | 84389 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2020/07/10 | 93646 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2020/07/10 | 65604 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2020/07/10 | 73408 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2020/07/10 | 27038 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2020/07/10 | 30876 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2020/07/10 | 329723 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2020/07/10 | 392542 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2020/07/10 | 32135 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2020/07/10 | 36307 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2020/07/10 | 72071 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2020/07/10 | 79201 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2020/07/10 | 203503 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2020/07/10 | 223961 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2020/07/10 | 169761 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2020/07/10 | 184500 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2020/07/10 | 51922 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2020/07/10 | 58608 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2020/07/10 | 20769 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2020/07/10 | 22970 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2020/07/10 | 460276 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
+2020/07/10 | 460366 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2020/07/10 | 45498 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2020/07/10 | 51044 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2020/07/10 | 273614 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2020/07/10 | 310931 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2020/07/10 | 40787 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2020/07/10 | 44983 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2020/07/10 | 115820 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2020/07/10 | 130330 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2020/07/10 | 1266025 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2020/07/10 | 1409381 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2020/07/10 | 95314 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2020/07/10 | 109775 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2020/07/10 | 43305 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2020/07/10 | 48050 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2020/07/10 | 46285 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2020/07/10 | 51239 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2020/07/10 | 57185 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2020/07/10 | 62929 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2020/07/10 | 133619 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2020/07/10 | 151908 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2020/07/10 | 73102 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2020/07/10 | 77566 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2020/07/10 | 68819 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2020/07/10 | 77429 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2020/07/10 | 246796 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2020/07/10 | 281690 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2020/07/10 | 25474 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2020/07/10 | 28975 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2020/07/10 | 100971 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2020/07/10 | 117132 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2020/07/10 | 63528 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2020/07/10 | 72599 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2020/07/10 | 94263 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2020/07/10 | 113698 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2020/07/10 | 58973 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2020/07/10 | 65576 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2020/07/10 | 462362 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2020/07/10 | 550401 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2020/07/10 | 141817 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2020/07/10 | 154453 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2020/07/10 | 94531 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2020/07/10 | 109017 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2020/07/10 | 15924 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2020/07/10 | 17621 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2020/07/10 | 27944 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2020/07/10 | 29632 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2020/07/10 | 623381 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2020/07/10 | 676982 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2020/07/10 | 500484 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2020/07/10 | 562946 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2020/07/10 | 544672 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2020/07/10 | 586876 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2020/07/10 | 93648 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2020/07/10 | 102565 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2020/07/10 | 1751873 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2020/07/10 | 2028477 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2020/07/10 | 67273 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2020/07/10 | 73668 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2020/07/10 | 26957 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2020/07/10 | 31222 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2020/07/10 | 7556 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2020/07/10 | 8582 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2020/07/10 | 171140 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2020/07/10 | 187109 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2020/07/10 | 269064 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2020/07/10 | 305165 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2020/07/10 | 96908 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2020/07/10 | 101910 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2020/07/10 | 79744 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2020/07/10 | 88780 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2020/07/10 | 170232 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2020/07/10 | 189215 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2020/07/10 | 159287 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2020/07/10 | 179905 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2020/07/10 | 196475 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2020/07/10 | 177270 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2020/07/10 | 84819 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2020/07/10 | 96514 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2020/07/10 | 31242 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2020/07/10 | 35049 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2020/07/10 | 57249 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2020/07/10 | 64201 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2020/07/10 | 63351 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2020/07/10 | 69874 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2020/07/10 | 45737 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2020/07/10 | 52204 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2020/07/10 | 193351 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2020/07/10 | 210645 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2020/07/10 | 35336 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-2.9.tar.lzma
+2020/07/10 | 35313 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2020/07/10 | 39508 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64-2.9.tar.lzma
+2020/07/10 | 39508 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2020/07/10 | 327004 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2020/07/10 | 360663 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2020/07/10 | 187769 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2020/07/10 | 194052 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2020/07/10 | 207507 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2020/07/10 | 243026 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2020/07/10 | 78146 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2020/07/10 | 87408 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2020/07/10 | 922567 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2020/07/10 | 1021924 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2020/07/10 | 20013 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2020/07/10 | 23598 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2020/07/10 | 31242 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2020/07/10 | 36862 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2020/07/10 | 63502 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2020/07/10 | 71535 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2020/07/10 | 42504 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2020/07/10 | 50904 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2020/07/10 | 1193675 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2020/07/10 | 1327711 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2020/07/10 | 42064 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2020/07/10 | 51416 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2020/07/10 | 76755 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
+2020/07/10 | 76739 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2020/07/10 | 82831 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
+2020/07/10 | 82762 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2020/07/10 | 26878 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2020/07/10 | 29181 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2020/07/10 | 16017 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2020/07/10 | 17729 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2020/07/10 | 63496 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2020/07/10 | 69136 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2020/07/10 | 151033 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2020/07/10 | 164958 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2020/07/10 | 77603 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2020/07/10 | 88014 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2020/07/10 | 98015 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2020/07/10 | 104588 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2020/07/10 | 2534428 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2020/07/10 | 2659108 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2020/07/10 | 55580 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2020/07/10 | 61817 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2020/07/10 | 33135 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2020/07/10 | 36964 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2020/07/10 | 26630 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2020/07/10 | 32402 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2020/07/10 | 66121 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2020/07/10 | 70304 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2020/07/10 | 249730 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2020/07/10 | 279309 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2020/07/10 | 597671 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2020/07/10 | 638875 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2020/07/10 | 38948 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2020/07/10 | 43025 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2020/07/10 | 201780 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2020/07/10 | 1206902 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2020/07/10 | 1125050 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2020/07/10 | 13136 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2020/07/10 | 14114 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2020/07/09 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2020/07/10 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
@@ -272908,7 +272915,7 @@
2008/11/07 | 35981 | systems/win32/miktex/tm/packages/prettyref.tar.lzma
2017/07/26 | 201385 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
-2020/07/09 | 860 | systems/win32/miktex/tm/packages/pr.ini
+2020/07/10 | 860 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -274054,13 +274061,13 @@
2020/07/08 | 4916332 | systems/win32/w32tex/aleph-w32.tar.xz
2020/06/28 | 66276404 | systems/win32/w32tex/biblatex-biber.tar.xz
2016/12/13 | 65971452 | systems/win32/w32tex/cbfonts.tar.xz
-2020/07/08 | 681639 | systems/win32/w32tex/ChangeLog
+2020/07/09 | 681901 | systems/win32/w32tex/ChangeLog
2009/08/03 | 141221 | systems/win32/w32tex/ChangeLog.0
2009/08/03 | 221890 | systems/win32/w32tex/ChangeLog.1
2009/08/03 | 116462 | systems/win32/w32tex/ChangeLog.2
2013/09/03 | 352299 | systems/win32/w32tex/ChangeLog.3
2017/06/24 | 644754 | systems/win32/w32tex/ChangeLog.4
-2020/06/15 | 22150800 | systems/win32/w32tex/cjkzr.tar.xz
+2020/07/09 | 23424956 | systems/win32/w32tex/cjkzr.tar.xz
2013/04/27 | 15858676 | systems/win32/w32tex/context-doc.tar.xz
2020/07/07 | 140347908 | systems/win32/w32tex/context.tar.xz
2020/06/13 | 910472 | systems/win32/w32tex/cweb-w32.tar.xz
@@ -274078,7 +274085,7 @@
2020/05/30 | 29268960 | systems/win32/w32tex/latex.tar.xz
2020/06/13 | 996116 | systems/win32/w32tex/lcdf-typetools-w32.tar.xz
2020/06/17 | 399352436 | systems/win32/w32tex/ltxpkgdocs.tar.xz
-2020/07/08 | 34934916 | systems/win32/w32tex/ltxpkgs.tar.xz
+2020/07/09 | 34928980 | systems/win32/w32tex/ltxpkgs.tar.xz
2020/07/08 | 3846712 | systems/win32/w32tex/luajittex-dev-w32.tar.xz
2020/07/08 | 3805884 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
2020/07/08 | 3853588 | systems/win32/w32tex/luajittex-w32.tar.xz
@@ -274103,13 +274110,13 @@
2020/06/13 | 1169008 | systems/win32/w32tex/pstoedit-w32.tar.xz
2020/06/18 | 274417320 | systems/win32/w32tex/pstricks.tar.xz
2020/06/13 | 517656 | systems/win32/w32tex/psutils-w32.tar.xz
-2020/07/08 | 6470856 | systems/win32/w32tex/ptex-ng-w32.tar.xz
+2020/07/08 | 6471048 | systems/win32/w32tex/ptex-ng-w32.tar.xz
2020/07/08 | 10488504 | systems/win32/w32tex/ptex-w32.tar.xz
2020/04/10 | 1784316 | systems/win32/w32tex/qpdf-w32.tar.xz
2019/04/15 | 499188 | systems/win32/w32tex/sam2p-w32.tar.xz
2020/01/24 | 24929772 | systems/win32/w32tex/t1fonts.tar.xz
2020/01/19 | 135584 | systems/win32/w32tex/t1utils-w32.tar.xz
-2020/07/08 | 2559244 | systems/win32/w32tex/tex4htk-w32.tar.xz
+2020/07/09 | 2571516 | systems/win32/w32tex/tex4htk-w32.tar.xz
2018/06/20 | 15940044 | systems/win32/w32tex/tex-gyre.tar.xz
2020/06/26 | 4485732 | systems/win32/w32tex/texinfo-w32.tar.xz
2020/04/20 | 2050855 | systems/win32/w32tex/texinstwin.zip
@@ -274162,7 +274169,7 @@
2020/03/20 | 557532 | systems/win32/w32tex/win64/pmx-w64.tar.xz
2020/06/13 | 789904 | systems/win32/w32tex/win64/pstoedit-w64.tar.xz
2020/06/13 | 385996 | systems/win32/w32tex/win64/psutils-w64.tar.xz
-2020/07/04 | 1705484 | systems/win32/w32tex/win64/ptex-ng-w64.tar.xz
+2020/07/08 | 1705184 | systems/win32/w32tex/win64/ptex-ng-w64.tar.xz
2020/07/07 | 1878640 | systems/win32/w32tex/win64/ptex-w64.tar.xz
2020/01/18 | 40736 | systems/win32/w32tex/win64/t1utils-w64.tar.xz
2020/06/13 | 419688 | systems/win32/w32tex/win64/tex4htk-w64.tar.xz
@@ -274270,7 +274277,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2020/07/10 | 186 | timestamp
+2020/07/11 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2017/06/30 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 86d3bb9a87..aac7d2a2e4 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index f1966cfc19..83d182772f 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,391 +1,676 @@
+2020/07/10 | 98015 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2020/07/10 | 978875 | install/fonts/overlock.tds.zip
+2020/07/10 | 96908 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2020/07/10 | 96514 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2020/07/10 | 957364 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2020/07/10 | 955233 | fonts/overlock.zip
+2020/07/10 | 95314 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2020/07/10 | 94531 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2020/07/10 | 94263 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2020/07/10 | 941 | macros/latex/contrib/cryptocode/cryptocode.ins
+2020/07/10 | 93648 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2020/07/10 | 93646 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2020/07/10 | 922567 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2020/07/10 | 88780 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2020/07/10 | 887428 | systems/texlive/tlnet/archive/mcf2graph.doc.r55793.tar.xz
+2020/07/10 | 88014 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2020/07/10 | 87408 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2020/07/10 | 860 | systems/win32/miktex/tm/packages/pr.ini
+2020/07/10 | 860700 | systems/texlive/tlnet/archive/tex4ht.r55795.tar.xz
+2020/07/10 | 8582 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2020/07/10 | 852 | fonts/overlock/vf/Overlock-BlackItalic-osf-ot1.vf
+2020/07/10 | 848 | fonts/overlock/vf/Overlock-BoldItalic-osf-ot1.vf
+2020/07/10 | 848 | fonts/overlock/vf/Overlock-BoldItalic-lf-ot1.vf
+2020/07/10 | 848 | fonts/overlock/vf/Overlock-BlackItalic-lf-ot1.vf
+2020/07/10 | 84819 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2020/07/10 | 844 | fonts/overlock/vf/Overlock-Regular-osf-sc-ot1.vf
+2020/07/10 | 844 | fonts/overlock/vf/Overlock-Regular-lf-sc-ot1.vf
+2020/07/10 | 84389 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2020/07/10 | 840 | fonts/overlock/vf/Overlock-Italic-osf-ot1.vf
+2020/07/10 | 840 | fonts/overlock/vf/Overlock-Italic-lf-ot1.vf
+2020/07/10 | 836 | fonts/overlock/vf/Overlock-Regular-osf-ot1.vf
+2020/07/10 | 832 | fonts/overlock/vf/Overlock-Regular-lf-ot1.vf
+2020/07/10 | 832 | fonts/overlock/vf/Overlock-Black-osf-ot1.vf
+2020/07/10 | 828 | fonts/overlock/vf/Overlock-Bold-osf-ot1.vf
+2020/07/10 | 828 | fonts/overlock/vf/Overlock-Bold-lf-ot1.vf
+2020/07/10 | 828 | fonts/overlock/vf/Overlock-Black-lf-ot1.vf
+2020/07/10 | 82831 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
+2020/07/10 | 82762 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2020/07/10 | 79744 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2020/07/10 | 79201 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2020/07/10 | 78146 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2020/07/10 | 77603 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2020/07/10 | 77566 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2020/07/10 | 77437 | macros/latex/contrib/cryptocode/cryptocode-2020-04-24.sty
+2020/07/10 | 77429 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2020/07/10 | 76755 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
+2020/07/10 | 76739 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2020/07/10 | 75696 | macros/latex/contrib/cryptocode/cryptocode-2018-11-11.sty
+2020/07/10 | 7556 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2020/07/10 | 73668 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2020/07/10 | 73408 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2020/07/10 | 73102 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2020/07/10 | 72599 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2020/07/10 | 72071 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2020/07/10 | 71535 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2020/07/10 | 7092 | fonts/overlock/type1/Overlock-BlackLCDFJ.pfb
+2020/07/10 | 7089 | fonts/overlock/type1/Overlock-BlackItalicLCDFJ.pfb
+2020/07/10 | 7085 | fonts/overlock/type1/Overlock-BoldItalicLCDFJ.pfb
+2020/07/10 | 7078 | fonts/overlock/type1/Overlock-BoldLCDFJ.pfb
+2020/07/10 | 7077 | fonts/overlock/type1/Overlock-RegularLCDFJ.pfb
+2020/07/10 | 7076 | fonts/overlock/type1/Overlock-ItalicLCDFJ.pfb
+2020/07/10 | 70304 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2020/07/10 | 69874 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2020/07/10 | 69707 | fonts/overlock/type1/Overlock-Regular.pfb
+2020/07/10 | 693 | fonts/overlock/doc/overlock-samples.tex
+2020/07/10 | 69136 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2020/07/10 | 68819 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2020/07/10 | 676982 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2020/07/10 | 67326 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2020/07/10 | 67273 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2020/07/10 | 66121 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2020/07/10 | 65604 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2020/07/10 | 65576 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2020/07/10 | 64201 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2020/07/10 | 638875 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2020/07/10 | 63528 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2020/07/10 | 63502 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2020/07/10 | 63496 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2020/07/10 | 63351 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2020/07/10 | 62929 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2020/07/10 | 623381 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2020/07/10 | 61817 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2020/07/10 | 6177 | macros/latex/contrib/biblatex-contrib/biblatex-publist/README
+2020/07/10 | 60944 | fonts/overlock/type1/Overlock-BlackItalic.pfb
+2020/07/10 | 60920 | fonts/overlock/type1/Overlock-Italic.pfb
+2020/07/10 | 60224 | fonts/overlock/type1/Overlock-BoldItalic.pfb
+2020/07/10 | 60209 | fonts/overlock/type1/Overlock-Bold.pfb
+2020/07/10 | 597671 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2020/07/10 | 59173 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2020/07/10 | 58973 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2020/07/10 | 586876 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2020/07/10 | 58608 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2020/07/10 | 58561 | fonts/overlock/type1/Overlock-Black.pfb
+2020/07/10 | 576 | fonts/overlock/vf/Overlock-BlackItalic-osf-ts1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-Regular-osf-ts1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-BoldItalic-osf-ts1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-BoldItalic-lf-ts1.vf
+2020/07/10 | 572 | fonts/overlock/vf/Overlock-BlackItalic-lf-ts1.vf
+2020/07/10 | 57249 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2020/07/10 | 57199 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2020/07/10 | 57185 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2020/07/10 | 569396 | systems/texlive/tlnet/archive/overlock.r55791.tar.xz
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Regular-lf-ts1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Italic-osf-ts1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Italic-lf-ts1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Bold-osf-ts1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Bold-lf-ts1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Black-osf-ts1.vf
+2020/07/10 | 568 | fonts/overlock/vf/Overlock-Black-lf-ts1.vf
+2020/07/10 | 562946 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2020/07/10 | 55580 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2020/07/10 | 550401 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2020/07/10 | 5500780 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2020/07/10 | 544672 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2020/07/10 | 541774 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2020/07/10 | 540439 | systems/win32/miktex/tm/packages/files.csv.lzma
+2020/07/10 | 52204 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2020/07/10 | 51922 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2020/07/10 | 5142160 | systems/texlive/tlnet/archive/bib2gls.doc.r55794.tar.xz
+2020/07/10 | 51416 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2020/07/10 | 51239 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2020/07/10 | 51044 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2020/07/10 | 50904 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2020/07/10 | 500484 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2020/07/10 | 49695 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2020/07/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2020/07/10 | 48050 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2020/07/10 | 4712 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1.tfm
+2020/07/10 | 46285 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2020/07/10 | 462362 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2020/07/10 | 4604 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1.tfm
+2020/07/10 | 460366 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2020/07/10 | 460276 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
+2020/07/10 | 46012 | fonts/overlock/opentype/Overlock-Regular.otf
+2020/07/10 | 45737 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2020/07/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2020/07/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2020/07/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2020/07/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2020/07/10 | 45498 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2020/07/10 | 44983 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2020/07/10 | 4421 | fonts/overlock/doc/License.txt
+2020/07/10 | 4340 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1.tfm
+2020/07/10 | 43305 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2020/07/10 | 43025 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2020/07/10 | 42716 | fonts/overlock/opentype/Overlock-BoldItalic.otf
+2020/07/10 | 42504 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2020/07/10 | 4216 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1.tfm
+2020/07/10 | 42064 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2020/07/10 | 41108 | fonts/overlock/opentype/Overlock-Italic.otf
+2020/07/10 | 40787 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2020/07/10 | 40148 | fonts/overlock/opentype/Overlock-Bold.otf
+2020/07/10 | 39512 | fonts/overlock/opentype/Overlock-Black.otf
+2020/07/10 | 39508 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2020/07/10 | 39508 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64-2.9.tar.lzma
+2020/07/10 | 392542 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2020/07/10 | 38980 | fonts/overlock/opentype/Overlock-BlackItalic.otf
+2020/07/10 | 38948 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2020/07/10 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r55790.tar.xz
+2020/07/10 | 38808 | systems/texlive/tlnet/archive/thuthesis.source.r55792.tar.xz
+2020/07/10 | 375796 | macros/latex/contrib/biblatex-contrib/biblatex-publist.zip
+2020/07/10 | 36964 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2020/07/10 | 36862 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2020/07/10 | 36307 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2020/07/10 | 360663 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2020/07/10 | 355590 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
+2020/07/10 | 35508 | systems/texlive/tlnet/archive/thuthesis.r55792.tar.xz
+2020/07/10 | 3544 | fonts/overlock/enc/ovlk_e3j4ia.enc
+2020/07/10 | 35336 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-2.9.tar.lzma
+2020/07/10 | 35313 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2020/07/10 | 35217 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
+2020/07/10 | 35195 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
+2020/07/10 | 35049 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2020/07/10 | 34704 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2020/07/10 | 3456 | fonts/overlock/enc/ovlk_lhx5go.enc
+2020/07/10 | 3399 | fonts/overlock/enc/ovlk_cr35rj.enc
+2020/07/10 | 3351 | fonts/overlock/enc/ovlk_a4aghc.enc
+2020/07/10 | 3315 | fonts/overlock/latex/overlock.sty
+2020/07/10 | 33135 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2020/07/10 | 329723 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2020/07/10 | 3294 | fonts/overlock/enc/ovlk_j3mq5n.enc
+2020/07/10 | 327004 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2020/07/10 | 32402 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2020/07/10 | 32135 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2020/07/10 | 3197 | fonts/overlock/enc/ovlk_lqqrub.enc
+2020/07/10 | 3135 | fonts/overlock/enc/ovlk_2sdgnb.enc
+2020/07/10 | 3128 | fonts/overlock/enc/ovlk_7l4e47.enc
+2020/07/10 | 31242 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2020/07/10 | 31242 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2020/07/10 | 31222 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2020/07/10 | 310931 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2020/07/10 | 3100 | fonts/overlock/enc/ovlk_cj365g.enc
+2020/07/10 | 30892 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2020/07/10 | 30876 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2020/07/10 | 3064 | fonts/overlock/enc/ovlk_fqfhhf.enc
+2020/07/10 | 3057 | fonts/overlock/enc/ovlk_325tkf.enc
+2020/07/10 | 305165 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2020/07/10 | 3036 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1.tfm
+2020/07/10 | 3008 | fonts/overlock/latex/OT1Overlock-OsF.fd
+2020/07/10 | 3008 | fonts/overlock/latex/LY1Overlock-OsF.fd
+2020/07/10 | 2996 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1.tfm
+2020/07/10 | 2990 | fonts/overlock/enc/ovlk_vvi6px.enc
+2020/07/10 | 2983 | fonts/overlock/enc/ovlk_irzqhk.enc
+2020/07/10 | 2980 | fonts/overlock/tfm/Overlock-Regular-osf-ly1.tfm
+2020/07/10 | 2976 | fonts/overlock/tfm/Overlock-Black-osf-ly1.tfm
+2020/07/10 | 2975 | fonts/overlock/latex/T1Overlock-OsF.fd
+2020/07/10 | 29632 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2020/07/10 | 2962 | fonts/overlock/enc/ovlk_tmoia5.enc
+2020/07/10 | 2959 | fonts/overlock/latex/OT1Overlock-LF.fd
+2020/07/10 | 2959 | fonts/overlock/latex/LY1Overlock-LF.fd
+2020/07/10 | 2959 | fonts/overlock/enc/ovlk_k2npiy.enc
+2020/07/10 | 2953 | fonts/overlock/enc/ovlk_gmmlzo.enc
+2020/07/10 | 2952 | fonts/overlock/enc/ovlk_bhbhyo.enc
+2020/07/10 | 29320 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2020/07/10 | 2926 | fonts/overlock/latex/T1Overlock-LF.fd
+2020/07/10 | 2924 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1.tfm
+2020/07/10 | 29181 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2020/07/10 | 2912 | fonts/overlock/tfm/Overlock-Italic-osf-ly1.tfm
+2020/07/10 | 289954 | macros/latex/contrib/cryptocode/cryptocode.dtx
+2020/07/10 | 28975 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2020/07/10 | 2865 | fonts/overlock/enc/ovlk_woxjio.enc
+2020/07/10 | 2864 | fonts/overlock/tfm/Overlock-Regular-lf-ly1.tfm
+2020/07/10 | 2864 | fonts/overlock/tfm/Overlock-Italic-lf-ly1.tfm
+2020/07/10 | 28619 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2020/07/10 | 2860 | fonts/overlock/tfm/Overlock-Black-lf-ly1.tfm
+2020/07/10 | 2856 | fonts/overlock/enc/ovlk_siy5zo.enc
+2020/07/10 | 2840 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1.tfm
+2020/07/10 | 2836 | fonts/overlock/tfm/Overlock-Bold-osf-ly1.tfm
+2020/07/10 | 2816 | fonts/overlock/tfm/Overlock-Italic-osf-t1.tfm
+2020/07/10 | 281690 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2020/07/10 | 2805 | fonts/overlock/latex/TS1Overlock-OsF.fd
+2020/07/10 | 2804 | fonts/overlock/tfm/Overlock-Black-osf-t1.tfm
+2020/07/10 | 27944 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2020/07/10 | 279309 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2020/07/10 | 2792 | fonts/overlock/tfm/Overlock-Regular-osf-t1.tfm
+2020/07/10 | 2760 | fonts/overlock/latex/TS1Overlock-LF.fd
+2020/07/10 | 2756 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1.tfm
+2020/07/10 | 273614 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2020/07/10 | 2732 | fonts/overlock/tfm/Overlock-Italic-lf-t1.tfm
+2020/07/10 | 2712 | fonts/overlock/tfm/Overlock-Black-lf-t1.tfm
+2020/07/10 | 2708 | fonts/overlock/tfm/Overlock-Regular-lf-t1.tfm
+2020/07/10 | 2708 | fonts/overlock/tfm/Overlock-Bold-lf-ly1.tfm
+2020/07/10 | 27038 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2020/07/10 | 26957 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2020/07/10 | 269064 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2020/07/10 | 26878 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2020/07/10 | 2672 | fonts/overlock/tfm/Overlock-Bold-osf-t1.tfm
+2020/07/10 | 26630 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2020/07/10 | 2659108 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2020/07/10 | 2636 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1.tfm
+2020/07/10 | 2596 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1.tfm
+2020/07/10 | 2576 | fonts/overlock/tfm/Overlock-Bold-lf-t1.tfm
+2020/07/10 | 25474 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2020/07/10 | 2534428 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2020/07/10 | 2512 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1.tfm
+2020/07/10 | 249730 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2020/07/10 | 2468 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1.tfm
+2020/07/10 | 246796 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2020/07/10 | 243026 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2020/07/10 | 24269290 | systems/texlive/tlnet/install-tl.zip
+2020/07/10 | 2380 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1.tfm
+2020/07/10 | 23598 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2020/07/10 | 2308216 | systems/texlive/tlnet/archive/thuthesis.doc.r55792.tar.xz
+2020/07/10 | 22970 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2020/07/10 | 223961 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2020/07/10 | 2205868 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2020/07/10 | 218656 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55790.tar.xz
+2020/07/10 | 210645 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2020/07/10 | 2100 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1.tfm
+2020/07/10 | 20769 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2020/07/10 | 207507 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2020/07/10 | 2056 | fonts/overlock/tfm/Overlock-Italic-osf-ot1.tfm
+2020/07/10 | 203503 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2020/07/10 | 2032 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1.tfm
+2020/07/10 | 2028477 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2020/07/10 | 201780 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2020/07/10 | 2016 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1.tfm
+2020/07/10 | 201596 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2020/07/10 | 2012 | fonts/overlock/tfm/Overlock-Black-osf-ot1.tfm
+2020/07/10 | 2008 | fonts/overlock/tfm/Overlock-Regular-osf-ot1.tfm
+2020/07/10 | 20060 | systems/texlive/tlnet/archive/mcf2graph.r55793.tar.xz
+2020/07/10 | 2005 | fonts/overlock/README
+2020/07/10 | 20013 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2020/07/10 | 1992 | fonts/overlock/tfm/Overlock-Italic-lf-ot1.tfm
+2020/07/10 | 1988 | fonts/overlock/tfm/Overlock-Bold-osf-ot1.tfm
+2020/07/10 | 1980 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--base.tfm
+2020/07/10 | 1964 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--base.tfm
+2020/07/10 | 196475 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2020/07/10 | 1948 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1.tfm
+2020/07/10 | 1940 | fonts/overlock/tfm/Overlock-Regular-lf-ot1.tfm
+2020/07/10 | 1940 | fonts/overlock/tfm/Overlock-Black-lf-ot1.tfm
+2020/07/10 | 194052 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2020/07/10 | 19378637 | systems/texlive/tlnet/install-tl-windows.exe
+2020/07/10 | 193351 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2020/07/10 | 1908 | fonts/overlock/tfm/Overlock-Bold-lf-ot1.tfm
+2020/07/10 | 1900 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--base.tfm
+2020/07/10 | 1892 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--base.tfm
+2020/07/10 | 1892 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--base.tfm
+2020/07/10 | 189215 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2020/07/10 | 187769 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2020/07/10 | 1876 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--base.tfm
+2020/07/10 | 1876 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--base.tfm
+2020/07/10 | 1872 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--base.tfm
+2020/07/10 | 1872 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--base.tfm
+2020/07/10 | 187109 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2020/07/10 | 184500 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2020/07/10 | 1844 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--base.tfm
+2020/07/10 | 1844 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--base.tfm
+2020/07/10 | 1832 | fonts/overlock/tfm/Overlock-Black-osf-ly1--base.tfm
+2020/07/10 | 1828 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--base.tfm
+2020/07/10 | 1824 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--base.tfm
+2020/07/10 | 1824 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--base.tfm
+2020/07/10 | 1820 | fonts/overlock/tfm/Overlock-Italic-osf-t1--base.tfm
+2020/07/10 | 1812 | fonts/overlock/tfm/Overlock-Bold-osf-t1--base.tfm
+2020/07/10 | 1812 | fonts/overlock/tfm/Overlock-Black-lf-ly1--base.tfm
+2020/07/10 | 1804 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--base.tfm
+2020/07/10 | 1800 | fonts/overlock/tfm/Overlock-Italic-lf-t1--base.tfm
+2020/07/10 | 1800 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--base.tfm
+2020/07/10 | 179905 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2020/07/10 | 1780 | fonts/overlock/tfm/Overlock-Bold-lf-t1--base.tfm
+2020/07/10 | 1772 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--base.tfm
+2020/07/10 | 1772 | fonts/overlock/tfm/Overlock-Black-osf-t1--base.tfm
+2020/07/10 | 17729 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2020/07/10 | 177270 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2020/07/10 | 17621 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2020/07/10 | 1756 | fonts/overlock/tfm/Overlock-Regular-osf-t1--base.tfm
+2020/07/10 | 1752 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--base.tfm
+2020/07/10 | 1751873 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2020/07/10 | 1744 | fonts/overlock/vf/Overlock-BlackItalic-osf-ly1.vf
+2020/07/10 | 1744 | fonts/overlock/tfm/Overlock-Black-lf-t1--base.tfm
+2020/07/10 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-osf-ly1.vf
+2020/07/10 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-lf-ly1.vf
+2020/07/10 | 1740 | fonts/overlock/vf/Overlock-BlackItalic-lf-ly1.vf
+2020/07/10 | 1736 | fonts/overlock/vf/Overlock-Regular-osf-sc-ly1.vf
+2020/07/10 | 1736 | fonts/overlock/tfm/Overlock-Regular-lf-t1--base.tfm
+2020/07/10 | 1732 | fonts/overlock/vf/Overlock-Regular-lf-sc-ly1.vf
+2020/07/10 | 1732 | fonts/overlock/vf/Overlock-Italic-osf-ly1.vf
+2020/07/10 | 1732 | fonts/overlock/vf/Overlock-Italic-lf-ly1.vf
+2020/07/10 | 1728 | fonts/overlock/vf/Overlock-Regular-osf-ly1.vf
+2020/07/10 | 1728 | fonts/overlock/vf/Overlock-Regular-lf-ly1.vf
+2020/07/10 | 1724 | fonts/overlock/vf/Overlock-Bold-osf-ly1.vf
+2020/07/10 | 1724 | fonts/overlock/vf/Overlock-Black-osf-ly1.vf
+2020/07/10 | 1724 | fonts/overlock/vf/Overlock-Black-lf-ly1.vf
+2020/07/10 | 1720 | fonts/overlock/vf/Overlock-Bold-lf-ly1.vf
+2020/07/10 | 171140 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2020/07/10 | 170232 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2020/07/10 | 169761 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2020/07/10 | 167364 | systems/texlive/tlnet/archive/texlive-docindex.doc.r55790.tar.xz
+2020/07/10 | 164958 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2020/07/10 | 16321159 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2020/07/10 | 16017 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2020/07/10 | 159287 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2020/07/10 | 15924 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-osf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-lf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--lcdfj.tfm
+2020/07/10 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--lcdfj.tfm
+2020/07/10 | 154453 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2020/07/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2020/07/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2020/07/10 | 151908 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2020/07/10 | 151033 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2020/07/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2020/07/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2020/07/10 | 1436 | fonts/overlock/vf/Overlock-BlackItalic-osf-t1.vf
+2020/07/10 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-osf-t1.vf
+2020/07/10 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-lf-t1.vf
+2020/07/10 | 1432 | fonts/overlock/vf/Overlock-BlackItalic-lf-t1.vf
+2020/07/10 | 1432 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--base.tfm
+2020/07/10 | 1428 | fonts/overlock/vf/Overlock-Regular-osf-sc-t1.vf
+2020/07/10 | 1424 | fonts/overlock/vf/Overlock-Regular-lf-sc-t1.vf
+2020/07/10 | 1424 | fonts/overlock/vf/Overlock-Italic-osf-t1.vf
+2020/07/10 | 1424 | fonts/overlock/vf/Overlock-Italic-lf-t1.vf
+2020/07/10 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1.tfm
+2020/07/10 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1.tfm
+2020/07/10 | 1420 | fonts/overlock/vf/Overlock-Regular-osf-t1.vf
+2020/07/10 | 1420 | fonts/overlock/vf/Overlock-Regular-lf-t1.vf
+2020/07/10 | 141817 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2020/07/10 | 1416 | fonts/overlock/vf/Overlock-Bold-osf-t1.vf
+2020/07/10 | 1416 | fonts/overlock/vf/Overlock-Black-osf-t1.vf
+2020/07/10 | 1416 | fonts/overlock/vf/Overlock-Black-lf-t1.vf
+2020/07/10 | 1412 | fonts/overlock/vf/Overlock-Bold-lf-t1.vf
+2020/07/10 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1--base.tfm
+2020/07/10 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1--base.tfm
+2020/07/10 | 14114 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2020/07/10 | 1409381 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2020/07/10 | 1408 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--base.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Regular-osf-ts1.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Regular-lf-ts1.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Italic-osf-ts1.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Italic-lf-ts1.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Bold-osf-ts1.tfm
+2020/07/10 | 1404 | fonts/overlock/tfm/Overlock-Bold-lf-ts1.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--base.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-Black-osf-ts1.tfm
+2020/07/10 | 1400 | fonts/overlock/tfm/Overlock-Black-lf-ts1.tfm
+2020/07/10 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1--base.tfm
+2020/07/10 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1--base.tfm
+2020/07/10 | 1393 | macros/latex/contrib/cryptocode/README.md
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Regular-osf-ts1--base.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Regular-lf-ts1--base.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--base.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Black-osf-ts1--base.tfm
+2020/07/10 | 1392 | fonts/overlock/tfm/Overlock-Black-lf-ts1--base.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ts1--base.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--base.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Italic-lf-ts1--base.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Bold-osf-ts1--base.tfm
+2020/07/10 | 1388 | fonts/overlock/tfm/Overlock-Bold-lf-ts1--base.tfm
+2020/07/10 | 1372 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--base.tfm
+2020/07/10 | 1368 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--base.tfm
+2020/07/10 | 1364 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--base.tfm
+2020/07/10 | 1360 | fonts/overlock/tfm/Overlock-Black-osf-ot1--base.tfm
+2020/07/10 | 135724 | systems/texlive/tlnet/archive/tex4ht.doc.r55795.tar.xz
+2020/07/10 | 1356 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--base.tfm
+2020/07/10 | 1352 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--base.tfm
+2020/07/10 | 1340 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--base.tfm
+2020/07/10 | 133619 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2020/07/10 | 1332 | fonts/overlock/tfm/Overlock-Black-lf-ot1--base.tfm
+2020/07/10 | 1328 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--base.tfm
+2020/07/10 | 1327711 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2020/07/10 | 132016 | systems/texlive/tlnet/archive/texlive-scripts.r55790.tar.xz
+2020/07/10 | 13136 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2020/07/10 | 130330 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2020/07/10 | 1266025 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2020/07/10 | 1251 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
+2020/07/10 | 121736 | systems/texlive/tlnet/archive/overlock.doc.r55791.tar.xz
+2020/07/10 | 1206902 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2020/07/10 | 1206548 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2020/07/10 | 1193675 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2020/07/10 | 1186468 | systems/texlive/tlnet/archive/bib2gls.r55794.tar.xz
+2020/07/10 | 1181728 | systems/texlive/tlnet/archive/bib2gls.source.r55794.tar.xz
+2020/07/10 | 117840 | fonts/overlock/doc/overlock-samples.pdf
+2020/07/10 | 117132 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2020/07/10 | 115820 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2020/07/10 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2020/07/10 | 113698 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2020/07/10 | 1125558 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2020/07/10 | 1125050 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2020/07/10 | 1113972 | macros/latex/contrib/cryptocode.zip
+2020/07/10 | 11054 | fonts/overlock/map/overlock.map
+2020/07/10 | 109775 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2020/07/10 | 109017 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2020/07/10 | 1060543 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2020/07/10 | 104588 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2020/07/10 | 1043865 | macros/latex/contrib/cryptocode/cryptocode.pdf
+2020/07/10 | 102565 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2020/07/10 | 1021924 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2020/07/10 | 101910 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2020/07/10 | 100971 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
2020/07/09 | 993458 | support/bib2gls/texparserlib.jar
2020/07/09 | 986 | support/bib2gls/examples/sample-hierarchical.tex
-2020/07/09 | 98014 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2020/07/09 | 96909 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2020/07/09 | 96515 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
2020/07/09 | 9627040 | support/bib2gls.zip
2020/07/09 | 9614 | support/bib2gls/convertgls2bib.1
2020/07/09 | 960043 | support/bib2gls/src/bib2gls.tex
-2020/07/09 | 957366 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2020/07/09 | 95314 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2020/07/09 | 94530 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2020/07/09 | 94264 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2020/07/09 | 93647 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2020/07/09 | 93644 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2020/07/09 | 9356 | support/bib2gls/src/bib2gls.pod
-2020/07/09 | 922568 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
2020/07/09 | 913 | support/bib2gls/examples/sample-textsymbols2.tex
2020/07/09 | 908401 | systems/win32/miktex/tm/packages/mcf2graph.tar.lzma
2020/07/09 | 8947739 | systems/win32/miktex/tm/packages/reledmac.tar.lzma
2020/07/09 | 89393 | support/bib2gls/examples/sample-constants.pdf
-2020/07/09 | 88780 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
-2020/07/09 | 88017 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2020/07/09 | 875812 | macros/latex/contrib/thuthesis/thuthesis-example.pdf
-2020/07/09 | 87406 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2020/07/09 | 860 | systems/win32/miktex/tm/packages/pr.ini
-2020/07/09 | 860612 | systems/texlive/tlnet/archive/tex4ht.r55788.tar.xz
-2020/07/09 | 8582 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2020/07/09 | 84819 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2020/07/09 | 84389 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
2020/07/09 | 833776 | support/bib2gls/src/texparser-src.zip
-2020/07/09 | 82832 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
-2020/07/09 | 82761 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2020/07/09 | 79745 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
2020/07/09 | 7956557 | systems/texlive/tlnet/update-tlmgr-r55776.sh
-2020/07/09 | 79200 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2020/07/09 | 78146 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
2020/07/09 | 780 | support/bib2gls/examples/sample-msymbols.tex
-2020/07/09 | 77604 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2020/07/09 | 77569 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2020/07/09 | 77428 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
2020/07/09 | 7726 | macros/latex/contrib/thuthesis/figures/thu-lib-logo.pdf
-2020/07/09 | 76755 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
-2020/07/09 | 76738 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
2020/07/09 | 7585 | macros/latex/contrib/thuthesis/data/appendix-survey.tex
-2020/07/09 | 7556 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2020/07/09 | 73669 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2020/07/09 | 73409 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2020/07/09 | 73102 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
2020/07/09 | 7290 | macros/latex/contrib/thuthesis/ref/refs.bib
2020/07/09 | 726545 | support/bib2gls/bib2gls-begin.pdf
-2020/07/09 | 72601 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2020/07/09 | 72072 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2020/07/09 | 71535 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2020/07/09 | 70305 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2020/07/09 | 69874 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
2020/07/09 | 69804 | support/bib2gls/examples/sample-textsymbols.pdf
-2020/07/09 | 69137 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2020/07/09 | 691311 | systems/win32/miktex/tm/packages/overlock.tar.lzma
-2020/07/09 | 68821 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2020/07/09 | 676984 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2020/07/09 | 67327 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2020/07/09 | 681901 | systems/win32/w32tex/ChangeLog
2020/07/09 | 672 | systems/texlive/tlnet/archive/collection-luatex.r55786.tar.xz
-2020/07/09 | 67272 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
2020/07/09 | 67013 | systems/win32/miktex/tm/packages/beamerthemenord.tar.lzma
2020/07/09 | 67011 | support/bib2gls/examples/sample-textsymbols2.pdf
2020/07/09 | 6630 | macros/latex/contrib/thuthesis/README.md
-2020/07/09 | 66120 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2020/07/09 | 65601 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2020/07/09 | 65576 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
2020/07/09 | 65460 | systems/win32/miktex/tm/packages/de-macro.tar.lzma
-2020/07/09 | 64201 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2020/07/09 | 6504 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/07/09 | 640 | support/bib2gls/examples/terms.bib
-2020/07/09 | 638873 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2020/07/09 | 63531 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2020/07/09 | 63502 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2020/07/09 | 63496 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2020/07/09 | 63351 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
2020/07/09 | 630 | support/bib2gls/bib2gls.sh
-2020/07/09 | 62929 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2020/07/09 | 623381 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2020/07/09 | 61817 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2020/07/09 | 6135 | macros/latex/contrib/thuthesis/data/chap02.tex
2020/07/09 | 612 | macros/latex/contrib/thuthesis/data/acknowledgements.tex
-2020/07/09 | 597671 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2020/07/09 | 59173 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2020/07/09 | 58973 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2020/07/09 | 586876 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2020/07/09 | 58608 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2020/07/09 | 5857661 | systems/win32/miktex/tm/packages/media9.tar.lzma
2020/07/09 | 5852 | support/bib2gls/README.md
2020/07/09 | 577404 | systems/win32/miktex/tm/packages/nanicolle.tar.lzma
2020/07/09 | 576 | support/bib2gls/examples/binaryoperators.bib
-2020/07/09 | 57249 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2020/07/09 | 57198 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2020/07/09 | 57185 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
2020/07/09 | 571764 | systems/texlive/tlnet/archive/nanicolle.doc.r55784.tar.xz
2020/07/09 | 570921 | systems/win32/miktex/tm/packages/babel-french.tar.lzma
2020/07/09 | 565886 | graphics/mcf2graph/mcf_manual.pdf
2020/07/09 | 56336 | support/bib2gls/examples/sample-markuplanguages.pdf
-2020/07/09 | 562948 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
2020/07/09 | 557 | support/bib2gls/examples/unaryoperators.bib
-2020/07/09 | 55578 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
2020/07/09 | 5520 | support/bib2gls/examples/sample-multi1.tex
-2020/07/09 | 550401 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2020/07/09 | 5500777 | systems/texlive/tlnet/install-tl-unx.tar.gz
2020/07/09 | 54758 | support/bib2gls/examples/sample-units2.pdf
2020/07/09 | 5455 | support/bib2gls/examples/films.bib
2020/07/09 | 5448 | systems/texlive/tlnet/archive/nanicolle.r55784.tar.xz
-2020/07/09 | 544669 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2020/07/09 | 541774 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2020/07/09 | 540439 | systems/win32/miktex/tm/packages/files.csv.lzma
2020/07/09 | 53015 | support/bib2gls/examples/sample-units1.pdf
2020/07/09 | 5298 | macros/latex/contrib/thuthesis/thusetup.tex
-2020/07/09 | 52206 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2020/07/09 | 51923 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2020/07/09 | 51417 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2020/07/09 | 51240 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
2020/07/09 | 511470 | support/bib2gls/src/bib2gls.bib
2020/07/09 | 5105 | macros/latex/contrib/thuthesis/data/appendix-translation.tex
-2020/07/09 | 51045 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2020/07/09 | 50901 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
2020/07/09 | 50469 | support/bib2gls/examples/sample-bacteria.pdf
2020/07/09 | 50259 | support/bib2gls/examples/sample-chemical.pdf
-2020/07/09 | 500485 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2020/07/09 | 49696 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
2020/07/09 | 49676 | support/bib2gls/examples/sample-nested.pdf
2020/07/09 | 49667 | support/bib2gls/examples/sample-hierarchical.pdf
2020/07/09 | 49326 | graphics/mcf2graph/mcf_manual.tex
2020/07/09 | 492022 | systems/win32/miktex/tm/packages/guitlogo.tar.lzma
2020/07/09 | 49018 | support/bib2gls/examples/sample-authors.pdf
-2020/07/09 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2020/07/09 | 482 | macros/latex/contrib/thuthesis/latexmkrc
-2020/07/09 | 48050 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2020/07/09 | 47754 | support/bib2gls/examples/sample-people.pdf
2020/07/09 | 47253 | support/bib2gls/examples/sample-citations.pdf
2020/07/09 | 4692418 | support/bib2gls/bib2gls.pdf
-2020/07/09 | 46285 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2020/07/09 | 462360 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2020/07/09 | 460365 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2020/07/09 | 460275 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
-2020/07/09 | 45737 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
2020/07/09 | 45708 | systems/texlive/tlnet/archive/ekdosis.source.r55786.tar.xz
2020/07/09 | 455 | systems/texlive/tlnet/update-tlmgr-r55776.sh.sha512.asc
2020/07/09 | 455 | systems/texlive/tlnet/update-tlmgr-r55776.exe.sha512.asc
-2020/07/09 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2020/07/09 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2020/07/09 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2020/07/09 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
-2020/07/09 | 45499 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2020/07/09 | 44984 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
2020/07/09 | 44524 | support/bib2gls/bib2gls-en.xml
2020/07/09 | 4446 | support/bib2gls/examples/people.bib
-2020/07/09 | 43306 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2020/07/09 | 43024 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
2020/07/09 | 428 | macros/latex/contrib/thuthesis/ref/appendix.bib
2020/07/09 | 4251 | macros/latex/contrib/thuthesis/data/appendix.tex
-2020/07/09 | 42503 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
2020/07/09 | 42241 | macros/latex/contrib/thuthesis/thuthesis-author-year.bst
-2020/07/09 | 42065 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
2020/07/09 | 414370 | systems/win32/miktex/tm/packages/expkv.tar.lzma
2020/07/09 | 41145 | support/bib2gls/examples/sample-units3.pdf
2020/07/09 | 40803 | macros/latex/contrib/fitr/fitr.dtx
2020/07/09 | 4078 | support/bib2gls/src/bib2gls-cite.bib
-2020/07/09 | 40788 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
2020/07/09 | 4053 | support/bib2gls/examples/usergroups.bib
2020/07/09 | 404 | support/bib2gls/convertgls2bib.sh
2020/07/09 | 4045 | support/bib2gls/src/convertgls2bib.pod
2020/07/09 | 3995127 | systems/texlive/tlnet/update-tlmgr-r55776.exe
-2020/07/09 | 39509 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64-2.9.tar.lzma
-2020/07/09 | 39507 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2020/07/09 | 393440 | systems/win32/miktex/tm/packages/ekdosis.tar.lzma
2020/07/09 | 39257 | support/bib2gls/convertgls2bib.jar
-2020/07/09 | 392544 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2020/07/09 | 38947 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2020/07/09 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r55779.tar.xz
2020/07/09 | 38887 | macros/latex/contrib/thuthesis/thuthesis-numeric.bst
2020/07/09 | 38635 | macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
2020/07/09 | 3709076 | systems/texlive/tlnet/archive/media9.doc.r55785.tar.xz
2020/07/09 | 3703 | graphics/mcf2graph/README
-2020/07/09 | 36965 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2020/07/09 | 36858 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2020/07/09 | 3672 | support/bib2gls/examples/mathsobjects.bib
-2020/07/09 | 36307 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2020/07/09 | 360664 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2020/07/09 | 35983 | graphics/mcf2graph/mcf_man_soc.mf
2020/07/09 | 35716 | macros/latex/contrib/thuthesis/figures/scan-copyright.pdf
-2020/07/09 | 35336 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-2.9.tar.lzma
-2020/07/09 | 35313 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2020/07/09 | 35049 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2020/07/09 | 3496 | support/bib2gls/examples/books.bib
-2020/07/09 | 34705 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2020/07/09 | 34928980 | systems/win32/w32tex/ltxpkgs.tar.xz
2020/07/09 | 3464493 | macros/latex/contrib/fitr.zip
2020/07/09 | 338 | support/bib2gls/examples/interpret-preamble2.bib
2020/07/09 | 332944 | systems/texlive/tlnet/archive/ekdosis.doc.r55786.tar.xz
2020/07/09 | 33141 | macros/latex/contrib/fitr/docs/fitr_man.tex
-2020/07/09 | 33138 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2020/07/09 | 329721 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
2020/07/09 | 328 | support/bib2gls/examples/no-interpret-preamble.bib
2020/07/09 | 328 | support/bib2gls/examples/interpret-preamble.bib
-2020/07/09 | 327002 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
2020/07/09 | 3254 | support/bib2gls/examples/sample-usergroups.tex
-2020/07/09 | 32402 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
2020/07/09 | 32332 | support/bib2gls/src/gls2bib-src.zip
-2020/07/09 | 32134 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
2020/07/09 | 3211 | support/bib2gls/examples/mathgreek.bib
2020/07/09 | 318047 | support/bib2gls/examples/sample-multi2.pdf
2020/07/09 | 317267 | systems/win32/miktex/tm/packages/expkv-def.tar.lzma
2020/07/09 | 31558 | macros/latex/contrib/thuthesis/figures/scan-statement.pdf
2020/07/09 | 3129 | support/bib2gls/examples/sample-maths.tex
-2020/07/09 | 31242 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2020/07/09 | 31240 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2020/07/09 | 31223 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2020/07/09 | 310932 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2020/07/09 | 30893 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2020/07/09 | 30877 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
2020/07/09 | 307 | macros/latex/contrib/thuthesis/spine.tex
2020/07/09 | 30728 | macros/latex/contrib/thuthesis/CHANGELOG.md
-2020/07/09 | 305169 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
2020/07/09 | 2994 | support/bib2gls/examples/bigmathsymbols.bib
-2020/07/09 | 29633 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2020/07/09 | 29321 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
2020/07/09 | 29232 | macros/latex/contrib/thuthesis/data/chap01.tex
-2020/07/09 | 29182 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2020/07/09 | 28977 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2020/07/09 | 289548 | graphics/mcf2graph/mcf_example.pdf
-2020/07/09 | 28620 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
2020/07/09 | 283808 | macros/latex/contrib/fitr/docs/fitr_man.pdf
-2020/07/09 | 281691 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
2020/07/09 | 2802 | macros/latex/contrib/thuthesis/data/denotation.tex
-2020/07/09 | 27943 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2020/07/09 | 279309 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
2020/07/09 | 275726 | support/bib2gls/bib2gls.jar
2020/07/09 | 2740104 | macros/latex/contrib/fitr/docs/fitr.pdf
-2020/07/09 | 273617 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2020/07/09 | 27037 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2020/07/09 | 26957 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2020/07/09 | 269063 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2020/07/09 | 26879 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
2020/07/09 | 267417 | systems/win32/miktex/tm/packages/semantex.tar.lzma
2020/07/09 | 266 | support/bib2gls/examples/topics.bib
-2020/07/09 | 26631 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2020/07/09 | 2659107 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2020/07/09 | 2652 | macros/latex/contrib/thuthesis/data/resume.tex
2020/07/09 | 2633 | macros/latex/contrib/thuthesis/data/abstract.tex
2020/07/09 | 2585 | support/bib2gls/examples/chemicalformula.bib
-2020/07/09 | 25475 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2020/07/09 | 2534429 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2020/07/09 | 2571516 | systems/win32/w32tex/tex4htk-w32.tar.xz
2020/07/09 | 2528054 | install/macros/latex/contrib/thuthesis.tds.zip
2020/07/09 | 2509045 | macros/latex/contrib/thuthesis.zip
-2020/07/09 | 249727 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2020/07/09 | 246797 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
2020/07/09 | 243161 | support/bib2gls/examples/sample-multi1.pdf
-2020/07/09 | 243028 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2020/07/09 | 24269277 | systems/texlive/tlnet/install-tl.zip
2020/07/09 | 2419 | support/bib2gls/examples/minerals.bib
2020/07/09 | 241545 | support/bib2gls/src/bib2gls-begin.tex
2020/07/09 | 2392 | support/bib2gls/examples/constants.bib
2020/07/09 | 23840 | support/bib2gls/examples/sample-usergroups.pdf
2020/07/09 | 2367 | support/bib2gls/examples/sample-people.tex
-2020/07/09 | 23597 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2020/07/09 | 23424956 | systems/win32/w32tex/cjkzr.tar.xz
2020/07/09 | 2301 | support/bib2gls/examples/miscsymbols.bib
-2020/07/09 | 22970 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
2020/07/09 | 227000 | systems/texlive/tlnet/archive/texlive.infra.r55776.tar.xz
2020/07/09 | 22624 | systems/win32/miktex/tm/packages/miktex-misc.tar.lzma
-2020/07/09 | 223962 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
2020/07/09 | 2222 | macros/latex/contrib/thuthesis/thuthesis.ins
-2020/07/09 | 2204788 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2020/07/09 | 22013 | macros/latex/contrib/thuthesis/figures/thu-text-logo.pdf
2020/07/09 | 21065 | graphics/mcf2graph/mcf_exa_soc.mf
-2020/07/09 | 210652 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2020/07/09 | 20771 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2020/07/09 | 207506 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
2020/07/09 | 204024 | systems/texlive/tlnet/archive/texlive.infra.doc.r55776.tar.xz
-2020/07/09 | 203502 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2020/07/09 | 2028476 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2020/07/09 | 201750 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2020/07/09 | 201660 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2020/07/09 | 20014 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
2020/07/09 | 198295 | support/bib2gls/src/bib2gls-src.zip
-2020/07/09 | 196476 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
2020/07/09 | 1941 | support/bib2gls/examples/sample-citations.tex
-2020/07/09 | 194051 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2020/07/09 | 19379813 | systems/texlive/tlnet/install-tl-windows.exe
-2020/07/09 | 193352 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
2020/07/09 | 1927 | macros/latex/contrib/thuthesis/Makefile
2020/07/09 | 19106 | macros/latex/contrib/thuthesis/LICENSE
2020/07/09 | 1894812 | systems/texlive/tlnet/archive/media9.r55785.tar.xz
-2020/07/09 | 189217 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2020/07/09 | 187767 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2020/07/09 | 187108 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2020/07/09 | 184500 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2020/07/09 | 179906 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
2020/07/09 | 1776720 | systems/texlive/tlnet/archive/media9.source.r55785.tar.xz
2020/07/09 | 1772 | support/bib2gls/examples/markuplanguages.bib
-2020/07/09 | 17729 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2020/07/09 | 177271 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2020/07/09 | 17621 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
2020/07/09 | 175596 | systems/win32/miktex/tm/packages/cascade.tar.lzma
-2020/07/09 | 1751872 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
2020/07/09 | 1740 | support/bib2gls/examples/sample-units3.tex
2020/07/09 | 1734 | support/bib2gls/examples/sample-media.tex
2020/07/09 | 17319 | macros/latex/contrib/thuthesis/spine.pdf
-2020/07/09 | 171137 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2020/07/09 | 170232 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2020/07/09 | 169764 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
2020/07/09 | 16929 | graphics/mcf2graph/mcf_mplib_exa.tex
-2020/07/09 | 167372 | systems/texlive/tlnet/archive/texlive-docindex.doc.r55779.tar.xz
2020/07/09 | 16593 | support/bib2gls/bib2gls.1
-2020/07/09 | 164959 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2020/07/09 | 16311719 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2020/07/09 | 1621782 | systems/win32/miktex/tm/packages/babel.tar.lzma
2020/07/09 | 160849 | support/bib2gls/examples/sample-media.pdf
2020/07/09 | 1603 | support/bib2gls/examples/animals.bib
-2020/07/09 | 16018 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2020/07/09 | 159288 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2020/07/09 | 15924 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
2020/07/09 | 1591 | macros/latex/contrib/thuthesis/thuthesis-example.tex
2020/07/09 | 1580 | support/bib2gls/examples/derivedunits.bib
2020/07/09 | 1561 | macros/latex/contrib/fitr/README.md
2020/07/09 | 154 | systems/texlive/tlnet/update-tlmgr-r55776.exe.sha512
-2020/07/09 | 154455 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2020/07/09 | 153 | systems/texlive/tlnet/update-tlmgr-r55776.sh.sha512
-2020/07/09 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
2020/07/09 | 15348 | CTAN.sites
2020/07/09 | 153047 | macros/latex/contrib/thuthesis/thuthesis.dtx
-2020/07/09 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2020/07/09 | 151908 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2020/07/09 | 15176 | systems/texlive/tlnet/archive/ekdosis.r55786.tar.xz
-2020/07/09 | 151032 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
2020/07/09 | 1506 | support/bib2gls/examples/sample-authors.tex
-2020/07/09 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2020/07/09 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2020/07/09 | 14186 | macros/latex/contrib/thuthesis/tsinghua-name-bachelor.pdf
-2020/07/09 | 141817 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2020/07/09 | 14115 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
-2020/07/09 | 1409381 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2020/07/09 | 1408252 | systems/win32/miktex/tm/packages/eplain.tar.lzma
2020/07/09 | 139843 | graphics/mcf2graph/mcf_mplib_exa.pdf
2020/07/09 | 1396 | support/bib2gls/examples/sample-markuplanguages.tex
2020/07/09 | 1382 | support/bib2gls/examples/sample-bacteria.tex
2020/07/09 | 1378 | support/bib2gls/examples/sample-constants.tex
2020/07/09 | 1371 | support/bib2gls/examples/citations.bib
-2020/07/09 | 135724 | systems/texlive/tlnet/archive/tex4ht.doc.r55788.tar.xz
2020/07/09 | 1344 | support/bib2gls/examples/sample-nested.tex
-2020/07/09 | 133620 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2020/07/09 | 1327712 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2020/07/09 | 13134 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2020/07/09 | 130331 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
2020/07/09 | 1291 | support/bib2gls/examples/sample-chemical.tex
2020/07/09 | 12775 | support/bib2gls/examples/sample-multi2.tex
-2020/07/09 | 1266022 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
2020/07/09 | 1265 | support/bib2gls/examples/mathsrelations.bib
2020/07/09 | 1234 | support/bib2gls/examples/sample-units2.tex
2020/07/09 | 1228338 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
2020/07/09 | 1219 | support/bib2gls/examples/bacteria.bib
2020/07/09 | 121086 | macros/latex/contrib/thuthesis/figures/thu-whole-logo.pdf
2020/07/09 | 1207 | support/bib2gls/examples/sample-textsymbols.tex
-2020/07/09 | 1206654 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2020/07/09 | 1206242 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2020/07/09 | 1193675 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
2020/07/09 | 11883 | support/bib2gls/CHANGES
-2020/07/09 | 117131 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2020/07/09 | 115820 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2020/07/09 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
-2020/07/09 | 113698 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2020/07/09 | 1126204 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2020/07/09 | 1126052 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2020/07/09 | 111420 | macros/latex/contrib/thuthesis/figures/thu-fig-logo.pdf
2020/07/09 | 110937 | support/bib2gls/examples/sample-maths.pdf
-2020/07/09 | 109776 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
2020/07/09 | 1091 | support/bib2gls/examples/vegetables.bib
-2020/07/09 | 109016 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
2020/07/09 | 108783 | macros/latex/contrib/thuthesis/figures/scan-record.pdf
2020/07/09 | 1080107 | macros/latex/contrib/thuthesis/thuthesis.pdf
2020/07/09 | 1070 | support/bib2gls/examples/sample-units1.tex
-2020/07/09 | 1060543 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2020/07/09 | 104588 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2020/07/09 | 103831 | support/bib2gls/examples/sample-msymbols.pdf
2020/07/09 | 1031 | support/bib2gls/examples/baseunits.bib
-2020/07/09 | 102565 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2020/07/09 | 1021925 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2020/07/09 | 101911 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2020/07/09 | 100973 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
2020/07/09 | 10051 | graphics/mcf2graph/CHANGELOG
2020/07/08 | 99283792 | systems/win32/w32tex/web2c-lib.tar.xz
2020/07/08 | 982708 | systems/texlive/tlnet/archive/eplain.doc.r55777.tar.xz
-2020/07/08 | 962574 | install/fonts/overlock.tds.zip
-2020/07/08 | 939342 | fonts/overlock.zip
2020/07/08 | 934287 | graphics/mcf2graph.zip
2020/07/08 | 90520 | systems/texlive/tlnet/archive/newcomputermodern.doc.r55777.tar.xz
2020/07/08 | 8679968 | systems/texlive/tlnet/archive/reledmac.doc.r55777.tar.xz
@@ -398,12 +683,10 @@
2020/07/08 | 7430658 | install/macros/latex/contrib/media9.tds.zip
2020/07/08 | 7425368 | macros/latex/contrib/media9.zip
2020/07/08 | 700 | systems/texlive/tlnet/archive/texliveonfly.doc.r55777.tar.xz
-2020/07/08 | 693 | fonts/overlock/doc/overlock-samples.tex
2020/07/08 | 6896 | macros/luatex/latex/ekdosis/samples/Caesar_BG-6-13-1-tei.xml
-2020/07/08 | 681639 | systems/win32/w32tex/ChangeLog
2020/07/08 | 679736 | systems/texlive/tlnet/archive/verifiche.doc.r55777.tar.xz
2020/07/08 | 660616 | systems/texlive/tlnet/archive/babel.source.r55777.tar.xz
-2020/07/08 | 6470856 | systems/win32/w32tex/ptex-ng-w32.tar.xz
+2020/07/08 | 6471048 | systems/win32/w32tex/ptex-ng-w32.tar.xz
2020/07/08 | 644 | systems/texlive/tlnet/archive/latex-tds.r55777.tar.xz
2020/07/08 | 6316 | systems/texlive/tlnet/archive/pdftexcmds.r55777.tar.xz
2020/07/08 | 6132 | systems/texlive/tlnet/archive/texliveonfly.r55777.tar.xz
@@ -418,18 +701,12 @@
2020/07/08 | 4916332 | systems/win32/w32tex/aleph-w32.tar.xz
2020/07/08 | 48798632 | systems/win32/w32tex/xetex-w32.tar.xz
2020/07/08 | 4605 | macros/luatex/latex/ekdosis/README.md
-2020/07/08 | 46012 | fonts/overlock/opentype/Overlock-Regular.otf
2020/07/08 | 4363084 | systems/texlive/tlnet/archive/newcomputermodern.r55777.tar.xz
-2020/07/08 | 42716 | fonts/overlock/opentype/Overlock-BoldItalic.otf
2020/07/08 | 42240 | systems/texlive/tlnet/archive/eplain.r55777.tar.xz
2020/07/08 | 41864532 | systems/win32/w32tex/latex-dev.tar.xz
-2020/07/08 | 41108 | fonts/overlock/opentype/Overlock-Italic.otf
2020/07/08 | 407888 | install/macros/luatex/latex/ekdosis.tds.zip
-2020/07/08 | 40148 | fonts/overlock/opentype/Overlock-Bold.otf
2020/07/08 | 396580 | systems/texlive/tlnet/archive/eplain.source.r55777.tar.xz
-2020/07/08 | 39512 | fonts/overlock/opentype/Overlock-Black.otf
2020/07/08 | 3915 | macros/luatex/latex/ekdosis/samples/Caesar_BG-6-13-1.tex
-2020/07/08 | 38980 | fonts/overlock/opentype/Overlock-BlackItalic.otf
2020/07/08 | 389748 | macros/xetex/latex/nanicolle/nanicolle-doc-zh.pdf
2020/07/08 | 3892 | systems/texlive/tlnet/archive/textpos.r55777.tar.xz
2020/07/08 | 387808 | macros/luatex/latex/ekdosis.zip
@@ -442,14 +719,10 @@
2020/07/08 | 3704 | systems/texlive/tlnet/archive/verifiche.r55777.tar.xz
2020/07/08 | 362094 | macros/luatex/latex/ekdosis/ekdosis.pdf
2020/07/08 | 359672 | systems/texlive/tlnet/archive/asymptote.r55777.tar.xz
-2020/07/08 | 34934916 | systems/win32/w32tex/ltxpkgs.tar.xz
-2020/07/08 | 3315 | fonts/overlock/latex/overlock.sty
2020/07/08 | 315024 | systems/texlive/tlnet/archive/textpos.doc.r55777.tar.xz
2020/07/08 | 31060 | systems/texlive/tlnet/archive/accessibility.source.r55777.tar.xz
-2020/07/08 | 27332 | fonts/overlock/opentype/OverlockSC-Regular.otf
2020/07/08 | 2632 | systems/texlive/tlnet/archive/versonotes.r55777.tar.xz
2020/07/08 | 262772 | macros/xetex/latex/nanicolle/nanicolle-doc-en.pdf
-2020/07/08 | 2559244 | systems/win32/w32tex/tex4htk-w32.tar.xz
2020/07/08 | 249764 | systems/texlive/tlnet/archive/semantex.doc.r55777.tar.xz
2020/07/08 | 2386940 | systems/texlive/tlnet/archive/asymptote.doc.r55777.tar.xz
2020/07/08 | 238148 | systems/texlive/tlnet/archive/urlbst.doc.r55777.tar.xz
@@ -457,13 +730,11 @@
2020/07/08 | 22884 | systems/texlive/tlnet/archive/urlbst.source.r55777.tar.xz
2020/07/08 | 22860 | systems/texlive/tlnet/archive/textpos.source.r55777.tar.xz
2020/07/08 | 22094 | macros/xetex/latex/nanicolle/nanicolle-doc-en.tex
-2020/07/08 | 218656 | systems/texlive/tlnet/archive/texlive-scripts.doc.r55769.tar.xz
2020/07/08 | 21351 | macros/xetex/latex/nanicolle/nanicolle-doc-zh.tex
2020/07/08 | 210048 | systems/texlive/tlnet/archive/versonotes.doc.r55777.tar.xz
2020/07/08 | 20809920 | systems/win32/w32tex/pdftex-w32.tar.xz
2020/07/08 | 206020 | systems/texlive/tlnet/archive/reledmac.source.r55777.tar.xz
2020/07/08 | 201415 | macros/latex/contrib/fitr/examples/fitr_demo.pdf
-2020/07/08 | 2005 | fonts/overlock/README
2020/07/08 | 19473 | web/pwebmac/pwebmac.tex
2020/07/08 | 190826 | macros/luatex/latex/ekdosis/ekdosis.dtx
2020/07/08 | 1868 | macros/luatex/latex/ekdosis/ekdosis.ins
@@ -476,6 +747,7 @@
2020/07/08 | 17989 | macros/luatex/latex/ekdosis/samples/Caesar_BG-6-13-1.pdf
2020/07/08 | 17336 | systems/texlive/tlnet/archive/semantex.r55777.tar.xz
2020/07/08 | 172449 | macros/xetex/latex/nanicolle/nanicolle-ex-zh.pdf
+2020/07/08 | 1705184 | systems/win32/w32tex/win64/ptex-ng-w64.tar.xz
2020/07/08 | 168260 | systems/texlive/tlnet/archive/babel.r55777.tar.xz
2020/07/08 | 16212 | systems/texlive/tlnet/archive/feyn.source.r55777.tar.xz
2020/07/08 | 16029 | macros/xetex/latex/nanicolle/nanicolle.cls
@@ -487,12 +759,10 @@
2020/07/08 | 13668 | systems/texlive/tlnet/archive/urlbst.r55777.tar.xz
2020/07/08 | 13628 | systems/texlive/tlnet/archive/accessibility.r55777.tar.xz
2020/07/08 | 13492 | systems/texlive/tlnet/archive/feyn.r55777.tar.xz
-2020/07/08 | 131996 | systems/texlive/tlnet/archive/texlive-scripts.r55769.tar.xz
2020/07/08 | 131876 | systems/texlive/tlnet/archive/circuitikz.r55777.tar.xz
2020/07/08 | 13037 | web/pwebmac.zip
2020/07/08 | 128296 | systems/texlive/tlnet/archive/latex-tds.source.r55777.tar.xz
2020/07/08 | 12744 | systems/texlive/tlnet/archive/verifiche.source.r55777.tar.xz
-2020/07/08 | 117840 | fonts/overlock/doc/overlock-samples.pdf
2020/07/08 | 1140335 | macros/xetex/latex/nanicolle.zip
2020/07/08 | 1106784 | systems/texlive/tlnet/archive/circuitikz.doc.r55777.tar.xz
2020/07/08 | 10488504 | systems/win32/w32tex/ptex-w32.tar.xz
@@ -564,34 +834,20 @@
2020/07/07 | 856 | graphics/asymptote/examples/animations/sphere.asy
2020/07/07 | 85383 | graphics/asymptote/base/three.asy
2020/07/07 | 852 | graphics/asymptote/parser.h
-2020/07/07 | 852 | fonts/overlock/vf/Overlock-BlackItalic-osf-ot1.vf
2020/07/07 | 850 | graphics/asymptote/GUI/res/icons/android-folder-open.svg
2020/07/07 | 849 | graphics/asymptote/examples/SierpinskiGasket.asy
-2020/07/07 | 848 | fonts/overlock/vf/Overlock-BoldItalic-osf-ot1.vf
-2020/07/07 | 848 | fonts/overlock/vf/Overlock-BoldItalic-lf-ot1.vf
-2020/07/07 | 848 | fonts/overlock/vf/Overlock-BlackItalic-lf-ot1.vf
2020/07/07 | 845 | graphics/asymptote/envcompleter.h
2020/07/07 | 8458 | graphics/asymptote/runpath.in
2020/07/07 | 844 | graphics/asymptote/GUI/res/icons/android-radio-button-on.svg
-2020/07/07 | 844 | fonts/overlock/vf/Overlock-Regular-osf-sc-ot1.vf
-2020/07/07 | 844 | fonts/overlock/vf/Overlock-Regular-lf-sc-ot1.vf
-2020/07/07 | 840 | fonts/overlock/vf/Overlock-Italic-osf-ot1.vf
-2020/07/07 | 840 | fonts/overlock/vf/Overlock-Italic-lf-ot1.vf
2020/07/07 | 839 | graphics/asymptote/examples/venn3.asy
2020/07/07 | 838 | graphics/asymptote/GUI/res/icons/close-round.svg
2020/07/07 | 83751 | graphics/asymptote/webgl/gl.js
2020/07/07 | 8371 | graphics/asymptote/prc/PRCbitStream.cc
-2020/07/07 | 836 | fonts/overlock/vf/Overlock-Regular-osf-ot1.vf
2020/07/07 | 83431 | graphics/asymptote/lex.yy.cc
2020/07/07 | 833 | graphics/asymptote/runbacktrace.in
2020/07/07 | 833 | graphics/asymptote/examples/markregular.asy
-2020/07/07 | 832 | fonts/overlock/vf/Overlock-Regular-lf-ot1.vf
-2020/07/07 | 832 | fonts/overlock/vf/Overlock-Black-osf-ot1.vf
2020/07/07 | 829 | graphics/asymptote/examples/shellsqrtx01.asy
2020/07/07 | 8290 | graphics/asymptote/base/simplex.asy
-2020/07/07 | 828 | fonts/overlock/vf/Overlock-Bold-osf-ot1.vf
-2020/07/07 | 828 | fonts/overlock/vf/Overlock-Bold-lf-ot1.vf
-2020/07/07 | 828 | fonts/overlock/vf/Overlock-Black-lf-ot1.vf
2020/07/07 | 827 | graphics/asymptote/examples/xxsq01y.asy
2020/07/07 | 8243 | graphics/asymptote/base/asy-kate.sh
2020/07/07 | 822 | graphics/asymptote/GUI/res/icons/android-expand.svg
@@ -666,7 +922,6 @@
2020/07/07 | 70 | graphics/asymptote/tests/gc/transform.asy
2020/07/07 | 70751 | graphics/asymptote/prc/oPRCFile.cc
2020/07/07 | 700 | graphics/asymptote/GUI/locale/th/LC_MESSAGES/base.po
-2020/07/07 | 69707 | fonts/overlock/type1/Overlock-Regular.pfb
2020/07/07 | 695 | graphics/asymptote/GUI/res/icons/android-close.svg
2020/07/07 | 691 | graphics/asymptote/examples/centroidfg.asy
2020/07/07 | 6911 | graphics/asymptote/errortest.asy
@@ -703,7 +958,6 @@
2020/07/07 | 654 | graphics/asymptote/examples/limit.asy
2020/07/07 | 6503 | graphics/asymptote/tests/types/constructor.asy
2020/07/07 | 649 | graphics/asymptote/examples/NURBScurve.asy
-2020/07/07 | 6492 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/07/07 | 643 | graphics/asymptote/examples/p-orbital.asy
2020/07/07 | 6425 | graphics/asymptote/mathop.h
2020/07/07 | 639 | graphics/asymptote/tests/arith/transform.asy
@@ -737,17 +991,13 @@
2020/07/07 | 610 | graphics/asymptote/examples/impact.asy
2020/07/07 | 6104 | graphics/asymptote/doc/FAQ/m-lout.pl
2020/07/07 | 609 | graphics/asymptote/keywords.cc
-2020/07/07 | 60944 | fonts/overlock/type1/Overlock-BlackItalic.pfb
-2020/07/07 | 60920 | fonts/overlock/type1/Overlock-Italic.pfb
2020/07/07 | 608 | graphics/asymptote/base/size10.asy
2020/07/07 | 605 | graphics/asymptote/examples/integraltest.asy
2020/07/07 | 60505 | graphics/asymptote/runtime.cc
2020/07/07 | 604 | graphics/asymptote/doc/flow.asy
2020/07/07 | 60325 | graphics/asymptote/base/webgl/asygl.js
2020/07/07 | 602 | graphics/asymptote/examples/treetest.asy
-2020/07/07 | 60224 | fonts/overlock/type1/Overlock-BoldItalic.pfb
2020/07/07 | 6021 | graphics/asymptote/prc/PRCTools/bitData.cc
-2020/07/07 | 60209 | fonts/overlock/type1/Overlock-Bold.pfb
2020/07/07 | 600 | graphics/asymptote/base/size11.asy
2020/07/07 | 6008 | systems/texlive/tlnet/archive/cloze.source.r55763.tar.xz
2020/07/07 | 59 | graphics/asymptote/examples/stroke3.asy
@@ -762,7 +1012,6 @@
2020/07/07 | 5879 | graphics/asymptote/base/three_tube.asy
2020/07/07 | 587744 | systems/win32/w32tex/win64/jtex-w64.tar.xz
2020/07/07 | 5857 | graphics/asymptote/item.h
-2020/07/07 | 58561 | fonts/overlock/type1/Overlock-Black.pfb
2020/07/07 | 582 | graphics/asymptote/examples/cos3.asy
2020/07/07 | 581 | graphics/asymptote/examples/floatingdisk.asy
2020/07/07 | 581 | graphics/asymptote/examples/BezierSaddle.asy
@@ -777,24 +1026,12 @@
2020/07/07 | 577160 | systems/texlive/tlnet/archive/cloze.doc.r55763.tar.xz
2020/07/07 | 576 | graphics/asymptote/examples/threeviews.asy
2020/07/07 | 576 | graphics/asymptote/examples/circles.asy
-2020/07/07 | 576 | fonts/overlock/vf/Overlock-BlackItalic-osf-ts1.vf
2020/07/07 | 5760 | graphics/asymptote/base/plain_scaling.asy
2020/07/07 | 574 | graphics/asymptote/examples/fillcontour.asy
2020/07/07 | 5740 | graphics/asymptote/examples/cpkcolors.asy
2020/07/07 | 573 | graphics/asymptote/examples/curvedlabel3.asy
2020/07/07 | 57302 | graphics/asymptote/runpicture.cc
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-Regular-osf-ts1.vf
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-BoldItalic-osf-ts1.vf
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-BoldItalic-lf-ts1.vf
-2020/07/07 | 572 | fonts/overlock/vf/Overlock-BlackItalic-lf-ts1.vf
2020/07/07 | 57104 | systems/texlive/tlnet/archive/de-macro.doc.r55766.tar.xz
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Regular-lf-ts1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Italic-osf-ts1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Italic-lf-ts1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Bold-osf-ts1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Bold-lf-ts1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Black-osf-ts1.vf
-2020/07/07 | 568 | fonts/overlock/vf/Overlock-Black-lf-ts1.vf
2020/07/07 | 56646 | graphics/asymptote/GUI/pyUIClass/window1.py
2020/07/07 | 5633 | graphics/asymptote/drawpath3.cc
2020/07/07 | 5631 | graphics/asymptote/bezierpatch.h
@@ -872,7 +1109,6 @@
2020/07/07 | 4727 | graphics/asymptote/doc/westnile.csv
2020/07/07 | 4718 | graphics/asymptote/doc/FAQ/m-ascii.pl
2020/07/07 | 4716 | graphics/asymptote/prc/PRCTools/makePRC.cc
-2020/07/07 | 4712 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1.tfm
2020/07/07 | 4687 | graphics/asymptote/castop.h
2020/07/07 | 46727 | graphics/asymptote/base/plain_picture.asy
2020/07/07 | 466 | graphics/asymptote/drawgsave.h
@@ -883,7 +1119,6 @@
2020/07/07 | 461 | graphics/asymptote/examples/cosaddition.asy
2020/07/07 | 4619 | graphics/asymptote/drawfill.cc
2020/07/07 | 460 | graphics/asymptote/examples/lever.asy
-2020/07/07 | 4604 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1.tfm
2020/07/07 | 459 | graphics/asymptote/examples/hierarchy.asy
2020/07/07 | 45928 | graphics/asymptote/glrender.cc
2020/07/07 | 458 | graphics/asymptote/doc/multicontour.asy
@@ -897,7 +1132,6 @@
2020/07/07 | 4474 | graphics/asymptote/GUI/windows/widg_editBezier.ui
2020/07/07 | 445 | graphics/asymptote/examples/sacone.asy
2020/07/07 | 442 | graphics/asymptote/doc/join3.asy
-2020/07/07 | 4421 | fonts/overlock/doc/License.txt
2020/07/07 | 441 | graphics/asymptote/examples/triangles.asy
2020/07/07 | 441 | graphics/asymptote/doc/histogram.asy
2020/07/07 | 440 | graphics/asymptote/examples/gamma.asy
@@ -907,7 +1141,6 @@
2020/07/07 | 438 | graphics/asymptote/examples/projectrevolution.asy
2020/07/07 | 4348 | graphics/asymptote/doc/colo-asy.tex
2020/07/07 | 4347 | graphics/asymptote/fundec.h
-2020/07/07 | 4340 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1.tfm
2020/07/07 | 4335 | graphics/asymptote/prc/PRCTools/describePRC.h
2020/07/07 | 430 | graphics/asymptote/examples/unitoctant.asy
2020/07/07 | 42 | graphics/asymptote/base/animate.asy
@@ -920,7 +1153,6 @@
2020/07/07 | 423 | graphics/asymptote/doc/log2graph.asy
2020/07/07 | 423 | graphics/asymptote/doc/helix.asy
2020/07/07 | 4231 | graphics/asymptote/flatguide.h
-2020/07/07 | 4216 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1.tfm
2020/07/07 | 420 | graphics/asymptote/examples/PythagoreanTree.asy
2020/07/07 | 4203 | graphics/asymptote/examples/fin.asy
2020/07/07 | 41 | graphics/asymptote/doc/bigdiagonal.asy
@@ -996,7 +1228,6 @@
2020/07/07 | 3553 | graphics/asymptote/rounding.h
2020/07/07 | 354 | graphics/asymptote/doc/reloadpdf.tex
2020/07/07 | 354 | graphics/asymptote/doc/planes.asy
-2020/07/07 | 3544 | fonts/overlock/enc/ovlk_e3j4ia.enc
2020/07/07 | 352 | graphics/asymptote/examples/cylinder.asy
2020/07/07 | 3526 | macros/latex/required/babel/base/bbidxglo.dtx
2020/07/07 | 3522 | graphics/asymptote/drawpath.cc
@@ -1009,7 +1240,6 @@
2020/07/07 | 3498 | graphics/asymptote/parser.cc
2020/07/07 | 3497 | graphics/asymptote/doc/ocg.sty
2020/07/07 | 345 | graphics/asymptote/lexical.h
-2020/07/07 | 3456 | fonts/overlock/enc/ovlk_lhx5go.enc
2020/07/07 | 3449 | graphics/asymptote/build-scripts/build-asymptote.dos
2020/07/07 | 343 | graphics/asymptote/doc/externalprc.tex
2020/07/07 | 3430 | graphics/asymptote/base/roundedpath.asy
@@ -1019,16 +1249,13 @@
2020/07/07 | 34126 | graphics/asymptote/path.cc
2020/07/07 | 3390492 | systems/win32/w32tex/win64/web2c-w64.tar.xz
2020/07/07 | 33877 | graphics/asymptote/exp.cc
-2020/07/07 | 3384 | fonts/overlock/enc/ovlk_cr35rj.enc
2020/07/07 | 3375 | graphics/asymptote/tests/types/guide.asy
2020/07/07 | 3344 | graphics/asymptote/examples/pdb.asy
2020/07/07 | 3340 | graphics/asymptote/examples/slidedemo.asy
2020/07/07 | 333 | graphics/asymptote/doc/asy.1.end
-2020/07/07 | 3336 | fonts/overlock/enc/ovlk_a4aghc.enc
2020/07/07 | 3328 | graphics/asymptote/stack.h
2020/07/07 | 330 | graphics/asymptote/doc/HermiteSpline.asy
2020/07/07 | 3309 | graphics/asymptote/access.cc
-2020/07/07 | 3294 | fonts/overlock/enc/ovlk_j3mq5n.enc
2020/07/07 | 327 | graphics/asymptote/examples/sin1x.asy
2020/07/07 | 3279 | graphics/asymptote/base/obj.asy
2020/07/07 | 3275 | graphics/asymptote/program.cc
@@ -1042,7 +1269,6 @@
2020/07/07 | 32279 | graphics/asymptote/bezierpatch.cc
2020/07/07 | 320 | graphics/asymptote/runtriple.h
2020/07/07 | 320533 | graphics/asymptote/base/geometry.asy
-2020/07/07 | 3197 | fonts/overlock/enc/ovlk_lqqrub.enc
2020/07/07 | 318 | graphics/asymptote/patches/gcc3.3.2curses.patch
2020/07/07 | 3161 | graphics/asymptote/genv.cc
2020/07/07 | 31609 | graphics/asymptote/config.sub
@@ -1050,51 +1276,28 @@
2020/07/07 | 315 | graphics/asymptote/examples/hyperboloid.asy
2020/07/07 | 314 | graphics/asymptote/doc/logticks.asy
2020/07/07 | 314 | graphics/asymptote/base/graph_settings.asy
-2020/07/07 | 3135 | fonts/overlock/enc/ovlk_2sdgnb.enc
2020/07/07 | 312 | graphics/asymptote/examples/textpath.asy
-2020/07/07 | 3128 | fonts/overlock/enc/ovlk_7l4e47.enc
2020/07/07 | 31244 | graphics/asymptote/builtin.cc
2020/07/07 | 3106 | graphics/asymptote/doc/latexusage.tex
2020/07/07 | 309 | graphics/asymptote/examples/oneoverx.asy
2020/07/07 | 309 | graphics/asymptote/examples/1overx.asy
2020/07/07 | 308 | graphics/asymptote/tests/types/shadow.asy
2020/07/07 | 308 | graphics/asymptote/tests/Makefile
-2020/07/07 | 3085 | fonts/overlock/enc/ovlk_cj365g.enc
2020/07/07 | 306 | graphics/asymptote/doc/binarytreetest.asy
-2020/07/07 | 3064 | fonts/overlock/enc/ovlk_fqfhhf.enc
-2020/07/07 | 3057 | fonts/overlock/enc/ovlk_325tkf.enc
2020/07/07 | 3042 | graphics/asymptote/drawimage.h
2020/07/07 | 303 | graphics/asymptote/examples/tensor.asy
-2020/07/07 | 3036 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1.tfm
2020/07/07 | 3023 | graphics/asymptote/doc/Makefile.in
2020/07/07 | 30208 | graphics/asymptote/prc/PRC.h
2020/07/07 | 30147 | graphics/asymptote/getopt.c
-2020/07/07 | 3008 | fonts/overlock/latex/OT1Overlock-OsF.fd
-2020/07/07 | 3008 | fonts/overlock/latex/LY1Overlock-OsF.fd
2020/07/07 | 3003 | graphics/asymptote/process.h
2020/07/07 | 3001 | graphics/asymptote/asymptote.spec
2020/07/07 | 299 | graphics/asymptote/runpair.h
-2020/07/07 | 2996 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1.tfm
2020/07/07 | 298 | graphics/asymptote/guideflags.h
-2020/07/07 | 2980 | fonts/overlock/tfm/Overlock-Regular-osf-ly1.tfm
2020/07/07 | 2976 | graphics/asymptote/access.h
-2020/07/07 | 2976 | fonts/overlock/tfm/Overlock-Black-osf-ly1.tfm
-2020/07/07 | 2975 | fonts/overlock/latex/T1Overlock-OsF.fd
-2020/07/07 | 2975 | fonts/overlock/enc/ovlk_vvi6px.enc
-2020/07/07 | 2968 | fonts/overlock/enc/ovlk_irzqhk.enc
-2020/07/07 | 2962 | fonts/overlock/enc/ovlk_tmoia5.enc
-2020/07/07 | 2959 | fonts/overlock/latex/OT1Overlock-LF.fd
-2020/07/07 | 2959 | fonts/overlock/latex/LY1Overlock-LF.fd
-2020/07/07 | 2953 | fonts/overlock/enc/ovlk_gmmlzo.enc
-2020/07/07 | 2944 | fonts/overlock/enc/ovlk_k2npiy.enc
2020/07/07 | 293 | graphics/asymptote/doc/makepen.asy
-2020/07/07 | 2937 | fonts/overlock/enc/ovlk_bhbhyo.enc
-2020/07/07 | 2926 | fonts/overlock/latex/T1Overlock-LF.fd
2020/07/07 | 2924 | graphics/asymptote/drawgroup.h
-2020/07/07 | 2924 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1.tfm
2020/07/07 | 291 | graphics/asymptote/examples/trumpet.asy
2020/07/07 | 291 | graphics/asymptote/examples/jump.asy
-2020/07/07 | 2912 | fonts/overlock/tfm/Overlock-Italic-osf-ly1.tfm
2020/07/07 | 2905 | graphics/asymptote/shaders.cc
2020/07/07 | 289 | graphics/asymptote/base/res/notes.txt
2020/07/07 | 288 | graphics/asymptote/examples/sacone3D.asy
@@ -1102,40 +1305,23 @@
2020/07/07 | 288 | graphics/asymptote/build-scripts/README-binaries
2020/07/07 | 2882 | graphics/asymptote/doc/diatom.asy
2020/07/07 | 28809 | graphics/asymptote/exp.h
-2020/07/07 | 2864 | fonts/overlock/tfm/Overlock-Regular-lf-ly1.tfm
-2020/07/07 | 2864 | fonts/overlock/tfm/Overlock-Italic-lf-ly1.tfm
-2020/07/07 | 2860 | fonts/overlock/tfm/Overlock-Black-lf-ly1.tfm
2020/07/07 | 285954 | graphics/asymptote/configure
2020/07/07 | 284 | graphics/asymptote/GUI/res/icons/text.svg
-2020/07/07 | 2848 | fonts/overlock/enc/ovlk_woxjio.enc
-2020/07/07 | 2841 | fonts/overlock/enc/ovlk_siy5zo.enc
-2020/07/07 | 2840 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1.tfm
-2020/07/07 | 2836 | fonts/overlock/tfm/Overlock-Bold-osf-ly1.tfm
2020/07/07 | 2832 | graphics/asymptote/examples/alignedaxis.asy
2020/07/07 | 2825 | graphics/asymptote/GUI/pyUIClass/setCustomAnchor.py
-2020/07/07 | 2816 | fonts/overlock/tfm/Overlock-Italic-osf-t1.tfm
2020/07/07 | 28156 | graphics/asymptote/pen.h
-2020/07/07 | 2805 | fonts/overlock/latex/TS1Overlock-OsF.fd
-2020/07/07 | 2804 | fonts/overlock/tfm/Overlock-Black-osf-t1.tfm
2020/07/07 | 2800 | graphics/asymptote/doc/asycolors.sty
2020/07/07 | 279 | graphics/asymptote/doc/hatch.asy
-2020/07/07 | 2792 | fonts/overlock/tfm/Overlock-Regular-osf-t1.tfm
2020/07/07 | 277 | graphics/asymptote/doc/generalaxis.asy
2020/07/07 | 2771 | graphics/asymptote/doc/pixel.pdf
2020/07/07 | 276 | graphics/asymptote/tests/bench/6000circles.asy
2020/07/07 | 2766 | graphics/asymptote/lnkX64IconFix.nsh
2020/07/07 | 2764 | graphics/asymptote/base/three_margins.asy
-2020/07/07 | 2760 | fonts/overlock/latex/TS1Overlock-LF.fd
-2020/07/07 | 2756 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1.tfm
2020/07/07 | 2738 | graphics/asymptote/record.h
-2020/07/07 | 2732 | fonts/overlock/tfm/Overlock-Italic-lf-t1.tfm
2020/07/07 | 2731 | graphics/asymptote/tests/types/resolve.asy
2020/07/07 | 271 | graphics/asymptote/patches/gc6.8_AIX.patch
2020/07/07 | 2719 | graphics/asymptote/runtriple.in
2020/07/07 | 2714843 | install/macros/latex/required/babel-base.tds.zip
-2020/07/07 | 2712 | fonts/overlock/tfm/Overlock-Black-lf-t1.tfm
-2020/07/07 | 2708 | fonts/overlock/tfm/Overlock-Regular-lf-t1.tfm
-2020/07/07 | 2708 | fonts/overlock/tfm/Overlock-Bold-lf-ly1.tfm
2020/07/07 | 26 | graphics/asymptote/doc/filegraph.dat
2020/07/07 | 269 | graphics/asymptote/runmath.h
2020/07/07 | 2697 | graphics/asymptote/table.h
@@ -1145,14 +1331,12 @@
2020/07/07 | 26872 | graphics/asymptote/runpath.cc
2020/07/07 | 267 | graphics/asymptote/examples/hyperboloidsilhouette.asy
2020/07/07 | 2678 | graphics/asymptote/examples/soccerball.asy
-2020/07/07 | 2672 | fonts/overlock/tfm/Overlock-Bold-osf-t1.tfm
2020/07/07 | 2662 | graphics/asymptote/symbol.h
2020/07/07 | 2661 | graphics/asymptote/runbacktrace.cc
2020/07/07 | 2653 | graphics/asymptote/doc/TeXShopAndAsymptote.tex
2020/07/07 | 2653 | graphics/asymptote/doc/markers1.asy
2020/07/07 | 264 | graphics/asymptote/examples/labelbox.asy
2020/07/07 | 264 | graphics/asymptote/examples/coag.asy
-2020/07/07 | 2636 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1.tfm
2020/07/07 | 2633 | graphics/asymptote/examples/worldmap.asy
2020/07/07 | 2632 | graphics/asymptote/material.h
2020/07/07 | 2631 | graphics/asymptote/GUI/windows/setCustomAnchor.ui
@@ -1161,8 +1345,6 @@
2020/07/07 | 261 | graphics/asymptote/doc/join.asy
2020/07/07 | 2615 | graphics/asymptote/base/patterns.asy
2020/07/07 | 26096 | graphics/asymptote/examples/uhrturm.obj
-2020/07/07 | 2596 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1.tfm
-2020/07/07 | 2576 | fonts/overlock/tfm/Overlock-Bold-lf-t1.tfm
2020/07/07 | 25707 | graphics/asymptote/runpath3d.cc
2020/07/07 | 256 | graphics/asymptote/doc/shadedtiling.asy
2020/07/07 | 2562 | graphics/asymptote/program.h
@@ -1178,7 +1360,6 @@
2020/07/07 | 2518 | graphics/asymptote/prc/PRCbitStream.h
2020/07/07 | 25137 | graphics/asymptote/doc/extra/intro.asy
2020/07/07 | 2512 | graphics/asymptote/examples/mosquito.asy
-2020/07/07 | 2512 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1.tfm
2020/07/07 | 250 | graphics/asymptote/examples/transparentCubes.asy
2020/07/07 | 2505 | graphics/asymptote/README
2020/07/07 | 2505 | graphics/asymptote/binaries/x86_64-windows/README
@@ -1187,7 +1368,6 @@
2020/07/07 | 2482 | graphics/asymptote/build-scripts/build-asymptote
2020/07/07 | 246 | graphics/asymptote/examples/transparency.asy
2020/07/07 | 246 | graphics/asymptote/doc/axis3.asy
-2020/07/07 | 2468 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1.tfm
2020/07/07 | 2465 | graphics/asymptote/base/labelpath3.asy
2020/07/07 | 24659 | graphics/asymptote/base/lmfit.asy
2020/07/07 | 245 | graphics/asymptote/examples/alignbox.asy
@@ -1201,7 +1381,6 @@
2020/07/07 | 238 | graphics/asymptote/GUI/xasyValidator.py
2020/07/07 | 238 | graphics/asymptote/doc/filegraph.asy
2020/07/07 | 23876 | graphics/asymptote/drawsurface.cc
-2020/07/07 | 2380 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1.tfm
2020/07/07 | 23791 | graphics/asymptote/base/three_arrows.asy
2020/07/07 | 2378 | graphics/asymptote/profile.py
2020/07/07 | 236 | graphics/asymptote/tests/string/erase.asy
@@ -1244,7 +1423,6 @@
2020/07/07 | 210 | graphics/asymptote/examples/spiral.asy
2020/07/07 | 2109 | graphics/asymptote/base/drawtree.asy
2020/07/07 | 2104 | graphics/asymptote/jsfile.h
-2020/07/07 | 2100 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1.tfm
2020/07/07 | 21005 | graphics/asymptote/base/plain_bounds.asy
2020/07/07 | 209 | graphics/asymptote/examples/triangle.asy
2020/07/07 | 20866 | graphics/asymptote/dec.cc
@@ -1252,47 +1430,35 @@
2020/07/07 | 20738 | graphics/asymptote/entry.cc
2020/07/07 | 206 | graphics/asymptote/examples/log.asy
2020/07/07 | 206707 | graphics/asymptote/asy.list
-2020/07/07 | 2056 | fonts/overlock/tfm/Overlock-Italic-osf-ot1.tfm
2020/07/07 | 20545 | graphics/asymptote/runtime.in
2020/07/07 | 2046 | graphics/asymptote/base/slopefield.asy
2020/07/07 | 2043 | graphics/asymptote/examples/slope.asy
2020/07/07 | 2039 | graphics/asymptote/doc/elliptic.asy
-2020/07/07 | 2032 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1.tfm
2020/07/07 | 202 | graphics/asymptote/tests/frames/stat2.asy
2020/07/07 | 202 | graphics/asymptote/glew.c
2020/07/07 | 202 | graphics/asymptote/doc/exp.asy
2020/07/07 | 20202 | graphics/asymptote/drawsurface.h
-2020/07/07 | 2016 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1.tfm
2020/07/07 | 20163 | graphics/asymptote/fileio.h
2020/07/07 | 2013 | graphics/asymptote/varinit.h
-2020/07/07 | 2012 | fonts/overlock/tfm/Overlock-Black-osf-ot1.tfm
2020/07/07 | 20105 | graphics/asymptote/base/contour.asy
-2020/07/07 | 2008 | fonts/overlock/tfm/Overlock-Regular-osf-ot1.tfm
2020/07/07 | 20051 | graphics/asymptote/doc/asyRefCard.tex
2020/07/07 | 20029 | graphics/asymptote/camp.y
2020/07/07 | 199 | graphics/asymptote/examples/upint.asy
2020/07/07 | 199 | graphics/asymptote/examples/BezierTriangle.asy
-2020/07/07 | 1992 | fonts/overlock/tfm/Overlock-Italic-lf-ot1.tfm
2020/07/07 | 198 | graphics/asymptote/examples/tanh.asy
-2020/07/07 | 1988 | fonts/overlock/tfm/Overlock-Bold-osf-ot1.tfm
2020/07/07 | 1986 | graphics/asymptote/inst.h
2020/07/07 | 1986 | graphics/asymptote/array.h
-2020/07/07 | 1980 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--base.tfm
2020/07/07 | 1978 | graphics/asymptote/varinit.cc
2020/07/07 | 196 | graphics/asymptote/examples/lowint.asy
2020/07/07 | 196 | graphics/asymptote/examples/label3ribbon.asy
2020/07/07 | 196 | graphics/asymptote/examples/animations/embeddedu3d.asy
2020/07/07 | 1967 | graphics/asymptote/GUI/res/icons/filledbucket.svg
-2020/07/07 | 1964 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--base.tfm
2020/07/07 | 19597 | graphics/asymptote/doc/external-proposal.html
2020/07/07 | 19561 | graphics/asymptote/runpicture.in
2020/07/07 | 19561 | graphics/asymptote/base/plain_arrows.asy
2020/07/07 | 1950 | graphics/asymptote/examples/mergeExample.asy
-2020/07/07 | 1948 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1.tfm
2020/07/07 | 19462 | graphics/asymptote/patches/gl-matrix-2.4.0-pruned.patch
2020/07/07 | 194595 | graphics/asymptote/doc/asy-latex.pdf
-2020/07/07 | 1940 | fonts/overlock/tfm/Overlock-Regular-lf-ot1.tfm
-2020/07/07 | 1940 | fonts/overlock/tfm/Overlock-Black-lf-ot1.tfm
2020/07/07 | 193 | graphics/asymptote/tests/gc/shipout.asy
2020/07/07 | 193 | graphics/asymptote/tests/arith/random.asy
2020/07/07 | 1936 | graphics/asymptote/refaccess.h
@@ -1303,22 +1469,14 @@
2020/07/07 | 1919 | graphics/asymptote/examples/animations/earthmoon.asy
2020/07/07 | 19124 | graphics/asymptote/psfile.cc
2020/07/07 | 1908 | graphics/asymptote/examples/linearregression.asy
-2020/07/07 | 1908 | fonts/overlock/tfm/Overlock-Bold-lf-ot1.tfm
2020/07/07 | 1907 | graphics/asymptote/build-scripts/HOWTO-MSWindows
-2020/07/07 | 1900 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--base.tfm
2020/07/07 | 18 | graphics/asymptote/tests/output/circle.asy
-2020/07/07 | 1892 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--base.tfm
-2020/07/07 | 1892 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--base.tfm
2020/07/07 | 188 | graphics/asymptote/runstring.h
2020/07/07 | 187 | graphics/asymptote/tests/string/rfind.asy
2020/07/07 | 187 | graphics/asymptote/examples/label3solid.asy
2020/07/07 | 1878 | graphics/asymptote/drawclipbegin.h
2020/07/07 | 1878640 | systems/win32/w32tex/win64/ptex-w64.tar.xz
2020/07/07 | 18772 | graphics/asymptote/runstring.cc
-2020/07/07 | 1876 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--base.tfm
-2020/07/07 | 1876 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--base.tfm
-2020/07/07 | 1872 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--base.tfm
-2020/07/07 | 1872 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--base.tfm
2020/07/07 | 186 | graphics/asymptote/runpath3d.h
2020/07/07 | 186 | graphics/asymptote/doc/unitcircle3.asy
2020/07/07 | 1863 | graphics/asymptote/prc/PRCTools/bitSearchUI.cc
@@ -1326,60 +1484,27 @@
2020/07/07 | 1860 | graphics/asymptote/prc/PRCTools/bitData.h
2020/07/07 | 18591 | graphics/asymptote/application.cc
2020/07/07 | 1851 | graphics/asymptote/beziercurve.cc
-2020/07/07 | 1844 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--base.tfm
-2020/07/07 | 1844 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--base.tfm
2020/07/07 | 1835 | graphics/asymptote/examples/cyclohexane.asy
-2020/07/07 | 1832 | fonts/overlock/tfm/Overlock-Black-osf-ly1--base.tfm
2020/07/07 | 18307 | graphics/asymptote/texfile.cc
2020/07/07 | 182 | graphics/asymptote/tests/string/find.asy
2020/07/07 | 182 | graphics/asymptote/examples/roll.asy
2020/07/07 | 182 | graphics/asymptote/examples/label3.asy
-2020/07/07 | 1828 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--base.tfm
-2020/07/07 | 1824 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--base.tfm
-2020/07/07 | 1824 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--base.tfm
-2020/07/07 | 1820 | fonts/overlock/tfm/Overlock-Italic-osf-t1--base.tfm
-2020/07/07 | 1812 | fonts/overlock/tfm/Overlock-Bold-osf-t1--base.tfm
-2020/07/07 | 1812 | fonts/overlock/tfm/Overlock-Black-lf-ly1--base.tfm
2020/07/07 | 18126 | graphics/asymptote/doc/asy-latex.dtx
2020/07/07 | 1806820 | systems/win32/w32tex/win64/uptex-w64.tar.xz
2020/07/07 | 1805 | graphics/asymptote/patches/cygwin_freeglut-3.0.0.patch
-2020/07/07 | 1804 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--base.tfm
-2020/07/07 | 1800 | fonts/overlock/tfm/Overlock-Italic-lf-t1--base.tfm
-2020/07/07 | 1800 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--base.tfm
2020/07/07 | 17816 | graphics/asymptote/asy-keywords.el
2020/07/07 | 1780 | graphics/asymptote/examples/conicurv.asy
-2020/07/07 | 1780 | fonts/overlock/tfm/Overlock-Bold-lf-t1--base.tfm
2020/07/07 | 177 | graphics/asymptote/runpath.h
2020/07/07 | 177 | graphics/asymptote/examples/curvedlabel.asy
2020/07/07 | 17790 | graphics/asymptote/runfile.cc
-2020/07/07 | 1772 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--base.tfm
-2020/07/07 | 1772 | fonts/overlock/tfm/Overlock-Black-osf-t1--base.tfm
2020/07/07 | 177246 | graphics/asymptote/prc/PRCdouble.cc
2020/07/07 | 1764 | graphics/asymptote/GUI/res/icons/grid.svg
2020/07/07 | 1760 | graphics/asymptote/examples/animations/heatequation.asy
-2020/07/07 | 1756 | fonts/overlock/tfm/Overlock-Regular-osf-t1--base.tfm
2020/07/07 | 1753 | graphics/asymptote/errormsg.cc
-2020/07/07 | 1752 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--base.tfm
2020/07/07 | 1746 | graphics/asymptote/doc/westnile.asy
2020/07/07 | 174673 | graphics/asymptote/base/colormap.asy
-2020/07/07 | 1744 | fonts/overlock/vf/Overlock-BlackItalic-osf-ly1.vf
-2020/07/07 | 1744 | fonts/overlock/tfm/Overlock-Black-lf-t1--base.tfm
-2020/07/07 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-osf-ly1.vf
-2020/07/07 | 1740 | fonts/overlock/vf/Overlock-BoldItalic-lf-ly1.vf
-2020/07/07 | 1740 | fonts/overlock/vf/Overlock-BlackItalic-lf-ly1.vf
2020/07/07 | 1739730 | macros/latex/required/babel/base.zip
-2020/07/07 | 1736 | fonts/overlock/vf/Overlock-Regular-osf-sc-ly1.vf
-2020/07/07 | 1736 | fonts/overlock/tfm/Overlock-Regular-lf-t1--base.tfm
-2020/07/07 | 1732 | fonts/overlock/vf/Overlock-Regular-lf-sc-ly1.vf
-2020/07/07 | 1732 | fonts/overlock/vf/Overlock-Italic-osf-ly1.vf
-2020/07/07 | 1732 | fonts/overlock/vf/Overlock-Italic-lf-ly1.vf
-2020/07/07 | 1728 | fonts/overlock/vf/Overlock-Regular-osf-ly1.vf
-2020/07/07 | 1728 | fonts/overlock/vf/Overlock-Regular-lf-ly1.vf
2020/07/07 | 1724 | graphics/asymptote/GUI/GuidesManager.py
-2020/07/07 | 1724 | fonts/overlock/vf/Overlock-Bold-osf-ly1.vf
-2020/07/07 | 1724 | fonts/overlock/vf/Overlock-Black-osf-ly1.vf
-2020/07/07 | 1724 | fonts/overlock/vf/Overlock-Black-lf-ly1.vf
-2020/07/07 | 1720 | fonts/overlock/vf/Overlock-Bold-lf-ly1.vf
2020/07/07 | 1711 | graphics/asymptote/GUI/res/icons.qrc
2020/07/07 | 1710 | graphics/asymptote/tests/arith/roots.asy
2020/07/07 | 170 | graphics/asymptote/examples/stereoscopic.asy
@@ -1411,48 +1536,6 @@
2020/07/07 | 15845 | graphics/asymptote/dec.h
2020/07/07 | 157 | graphics/asymptote/runsystem.h
2020/07/07 | 157 | graphics/asymptote/doc/saddle.asy
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-osf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Regular-lf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-osf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Italic-lf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-osf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Bold-lf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-osf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-osf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-lf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-Black-lf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ly1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-t1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--lcdfj.tfm
-2020/07/07 | 156 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ly1--lcdfj.tfm
2020/07/07 | 1569 | graphics/asymptote/examples/near_earth.asy
2020/07/07 | 15645 | graphics/asymptote/install-sh
2020/07/07 | 156442 | macros/xetex/latex/nanicolle/nanicolle-ex-en.pdf
@@ -1486,82 +1569,30 @@
2020/07/07 | 14494 | graphics/asymptote/stack.cc
2020/07/07 | 1446 | graphics/asymptote/webgl/vertex.glsl
2020/07/07 | 143 | graphics/asymptote/tests/gc/label.asy
-2020/07/07 | 1436 | fonts/overlock/vf/Overlock-BlackItalic-osf-t1.vf
-2020/07/07 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-osf-t1.vf
-2020/07/07 | 1432 | fonts/overlock/vf/Overlock-BoldItalic-lf-t1.vf
-2020/07/07 | 1432 | fonts/overlock/vf/Overlock-BlackItalic-lf-t1.vf
-2020/07/07 | 1432 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ot1--base.tfm
2020/07/07 | 14311 | graphics/asymptote/base/flowchart.asy
-2020/07/07 | 1428 | fonts/overlock/vf/Overlock-Regular-osf-sc-t1.vf
-2020/07/07 | 1424 | fonts/overlock/vf/Overlock-Regular-lf-sc-t1.vf
-2020/07/07 | 1424 | fonts/overlock/vf/Overlock-Italic-osf-t1.vf
-2020/07/07 | 1424 | fonts/overlock/vf/Overlock-Italic-lf-t1.vf
-2020/07/07 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1.tfm
-2020/07/07 | 1424 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1.tfm
-2020/07/07 | 1420 | fonts/overlock/vf/Overlock-Regular-osf-t1.vf
-2020/07/07 | 1420 | fonts/overlock/vf/Overlock-Regular-lf-t1.vf
2020/07/07 | 141 | graphics/asymptote/examples/sphere.asy
2020/07/07 | 141 | graphics/asymptote/examples/ring.asy
-2020/07/07 | 1416 | fonts/overlock/vf/Overlock-Bold-osf-t1.vf
-2020/07/07 | 1416 | fonts/overlock/vf/Overlock-Black-osf-t1.vf
-2020/07/07 | 1416 | fonts/overlock/vf/Overlock-Black-lf-t1.vf
2020/07/07 | 1415947 | graphics/asymptote/ChangeLog
-2020/07/07 | 1412 | fonts/overlock/vf/Overlock-Bold-lf-t1.vf
-2020/07/07 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-osf-ts1--base.tfm
-2020/07/07 | 1412 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ts1--base.tfm
-2020/07/07 | 1408 | fonts/overlock/tfm/Overlock-BlackItalic-lf-ot1--base.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Regular-osf-ts1.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Regular-lf-ts1.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Italic-osf-ts1.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Italic-lf-ts1.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Bold-osf-ts1.tfm
-2020/07/07 | 1404 | fonts/overlock/tfm/Overlock-Bold-lf-ts1.tfm
2020/07/07 | 140347908 | systems/win32/w32tex/context.tar.xz
2020/07/07 | 14023 | graphics/asymptote/arrayop.h
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ot1--base.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-Black-osf-ts1.tfm
-2020/07/07 | 1400 | fonts/overlock/tfm/Overlock-Black-lf-ts1.tfm
-2020/07/07 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-osf-ts1--base.tfm
-2020/07/07 | 1396 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ts1--base.tfm
2020/07/07 | 13944 | graphics/asymptote/runtriple.cc
2020/07/07 | 1393 | graphics/asymptote/GUI/SetCustomAnchor.py
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Regular-osf-ts1--base.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Regular-lf-ts1--base.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Bold-osf-ot1--base.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Black-osf-ts1--base.tfm
-2020/07/07 | 1392 | fonts/overlock/tfm/Overlock-Black-lf-ts1--base.tfm
2020/07/07 | 1391 | graphics/asymptote/doc/CAD1.asy
2020/07/07 | 138 | graphics/asymptote/Pipfile
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ts1--base.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Italic-osf-ot1--base.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Italic-lf-ts1--base.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Bold-osf-ts1--base.tfm
-2020/07/07 | 1388 | fonts/overlock/tfm/Overlock-Bold-lf-ts1--base.tfm
2020/07/07 | 13884 | graphics/asymptote/types.cc
2020/07/07 | 1384 | graphics/asymptote/tests/pic/trans.asy
2020/07/07 | 1375 | graphics/asymptote/base/tree.asy
2020/07/07 | 13739 | graphics/asymptote/examples/teapot.asy
-2020/07/07 | 1372 | fonts/overlock/tfm/Overlock-BoldItalic-lf-ot1--base.tfm
2020/07/07 | 136 | graphics/asymptote/examples/latticeshading.asy
-2020/07/07 | 1368 | fonts/overlock/tfm/Overlock-Italic-lf-ot1--base.tfm
2020/07/07 | 13663 | graphics/asymptote/doc/install-sh
2020/07/07 | 13663 | graphics/asymptote/doc/FAQ/install-sh
-2020/07/07 | 1364 | fonts/overlock/tfm/Overlock-Regular-osf-sc-ot1--base.tfm
-2020/07/07 | 1360 | fonts/overlock/tfm/Overlock-Black-osf-ot1--base.tfm
-2020/07/07 | 1356 | fonts/overlock/tfm/Overlock-Bold-lf-ot1--base.tfm
2020/07/07 | 13550 | graphics/asymptote/GUI/xasyBezierInterface.py
-2020/07/07 | 1352 | fonts/overlock/tfm/Overlock-Regular-osf-ot1--base.tfm
2020/07/07 | 1349 | graphics/asymptote/interact.h
2020/07/07 | 13476 | graphics/asymptote/base/grid3.asy
2020/07/07 | 1343 | graphics/asymptote/runtimebase.in
-2020/07/07 | 1340 | fonts/overlock/tfm/Overlock-Regular-lf-sc-ot1--base.tfm
2020/07/07 | 13339 | graphics/asymptote/camp.l
-2020/07/07 | 1332 | fonts/overlock/tfm/Overlock-Black-lf-ot1--base.tfm
2020/07/07 | 1331 | graphics/asymptote/tests/types/spec.asy
2020/07/07 | 132 | graphics/asymptote/tests/string/length.asy
-2020/07/07 | 1328 | fonts/overlock/tfm/Overlock-Regular-lf-ot1--base.tfm
2020/07/07 | 1326 | graphics/asymptote/examples/electromagnetic.asy
2020/07/07 | 131 | graphics/asymptote/GUI/DebugFlags.py
2020/07/07 | 1319 | graphics/asymptote/GUI/res/icons/android-color-palette.svg
@@ -1649,7 +1680,6 @@
2020/07/07 | 111 | graphics/asymptote/GUI/res/icons/center.asy
2020/07/07 | 11180 | graphics/asymptote/util.cc
2020/07/07 | 1114 | graphics/asymptote/examples/laserlattice.asy
-2020/07/07 | 11054 | fonts/overlock/map/overlock.map
2020/07/07 | 11030 | graphics/asymptote/base/math.asy
2020/07/07 | 1102 | graphics/asymptote/GUI/res/icons/closedpolygon.svg
2020/07/07 | 109 | graphics/asymptote/tests/string/insert.asy
@@ -1946,7 +1976,6 @@
2020/07/04 | 186 | macros/eplain/tex/eplain.aux
2020/07/04 | 18011 | macros/eplain/doc/COPYING
2020/07/04 | 17780 | systems/texlive/tlnet/archive/guitlogo.source.r55741.tar.xz
-2020/07/04 | 1705484 | systems/win32/w32tex/win64/ptex-ng-w64.tar.xz
2020/07/04 | 16136 | systems/texlive/tlnet/archive/babel-french.r55742.tar.xz
2020/07/04 | 1534 | macros/eplain/doc/README
2020/07/04 | 1531858 | install/macros/eplain.tds.zip
@@ -1985,48 +2014,3 @@
2020/07/04 | 12067 | usergrps/usergrps/mx.html
2020/07/04 | 11971 | usergrps/usergrps/ee.html
2020/07/04 | 1127 | macros/generic/expkv-opt/README.md
-2020/07/03 | 977944 | systems/texlive/tlnet/archive/etbb.r55727.tar.xz
-2020/07/03 | 93532 | macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
-2020/07/03 | 7916 | systems/texlive/tlnet/archive/bubblesort.source.r55733.tar.xz
-2020/07/03 | 75050 | systems/win32/miktex/tm/packages/beamerappendixnote.tar.lzma
-2020/07/03 | 70428 | systems/texlive/tlnet/archive/beamerappendixnote.doc.r55732.tar.xz
-2020/07/03 | 698067 | systems/win32/miktex/tm/packages/verifiche.tar.lzma
-2020/07/03 | 6967 | macros/latex/contrib/GuIT/GuITlogo/README
-2020/07/03 | 67288 | macros/latex/contrib/beamer-contrib/themes/beamerthemenord.zip
-2020/07/03 | 65079 | macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.pdf
-2020/07/03 | 63452 | macros/latex/contrib/GuIT/GuITlogo/guit.dtx
-2020/07/03 | 6060 | systems/texlive/tlnet/archive/xits.doc.r55730.tar.xz
-2020/07/03 | 564966 | macros/latex/contrib/babel-contrib/french.zip
-2020/07/03 | 547474 | systems/win32/miktex/tm/packages/xits.tar.lzma
-2020/07/03 | 541240 | systems/texlive/tlnet/archive/xits.r55730.tar.xz
-2020/07/03 | 529 | macros/latex/contrib/beamer-contrib/themes/beamerthemenord/README.md
-2020/07/03 | 495312 | macros/latex/contrib/GuIT/GuITlogo.zip
-2020/07/03 | 470700 | systems/texlive/tlnet/archive/fbb.doc.r55728.tar.xz
-2020/07/03 | 356853 | systems/win32/miktex/tm/packages/mnras.tar.lzma
-2020/07/03 | 3477 | macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.tex
-2020/07/03 | 3336 | systems/texlive/tlnet/archive/beamerappendixnote.source.r55732.tar.xz
-2020/07/03 | 328176 | systems/texlive/tlnet/archive/mnras.doc.r55729.tar.xz
-2020/07/03 | 326852 | macros/latex/contrib/babel-contrib/french/frenchb.pdf
-2020/07/03 | 316428 | macros/latex/contrib/GuIT/GuITlogo/guit.pdf
-2020/07/03 | 3029 | macros/latex/contrib/babel-contrib/french/frenchb.ins
-2020/07/03 | 280953 | systems/win32/miktex/tm/packages/draftwatermark.tar.lzma
-2020/07/03 | 2709 | macros/latex/contrib/GuIT/GuITlogo/guit.ins
-2020/07/03 | 2607 | macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerthemeNord.sty
-2020/07/03 | 25980 | systems/texlive/tlnet/archive/mnras.r55729.tar.xz
-2020/07/03 | 2501 | macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamercolorthemeNord.sty
-2020/07/03 | 2417588 | systems/win32/miktex/tm/packages/richtext.tar.lzma
-2020/07/03 | 239354 | macros/latex/contrib/babel-contrib/french/frenchb.dtx
-2020/07/03 | 232846 | systems/win32/miktex/tm/packages/bubblesort.tar.lzma
-2020/07/03 | 223260 | systems/texlive/tlnet/archive/etbb.doc.r55727.tar.xz
-2020/07/03 | 222892 | systems/texlive/tlnet/archive/bubblesort.doc.r55733.tar.xz
-2020/07/03 | 1904 | systems/texlive/tlnet/archive/bubblesort.r55733.tar.xz
-2020/07/03 | 161156 | macros/latex/contrib/GuIT/GuITlogo/guittest.pdf
-2020/07/03 | 1599281 | systems/win32/miktex/tm/packages/fbb.tar.lzma
-2020/07/03 | 1591 | macros/latex/contrib/babel-contrib/french/README.md
-2020/07/03 | 1556 | systems/texlive/tlnet/archive/beamerappendixnote.r55732.tar.xz
-2020/07/03 | 153909 | macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
-2020/07/03 | 1198771 | systems/win32/miktex/tm/packages/etbb.tar.lzma
-2020/07/03 | 1175012 | systems/win32/w32tex/extractpdfmark-w32.tar.xz
-2020/07/03 | 1120660 | systems/texlive/tlnet/archive/fbb.r55728.tar.xz
-2020/07/03 | 1079704 | systems/win32/w32tex/win64/extractpdfmark-w64.tar.xz
-2020/07/03 | 1062 | macros/latex/contrib/beamer-contrib/themes/beamerthemenord/beamerfontthemeNord.sty
diff --git a/fonts/overlock/README b/fonts/overlock/README
index b598c0f6b8..54cab0f400 100644
--- a/fonts/overlock/README
+++ b/fonts/overlock/README
@@ -1,4 +1,4 @@
-This is the README for the Overlock package, version 2020-07-07.
+This is the README for the Overlock package, version 2020-07-10.
This package provides LaTeX, pdfLaTeX, XeLaTeX and LuaLaTeX support
for the Overlock family of fonts, designed by
diff --git a/fonts/overlock/enc/ovlk_2sdgnb.enc b/fonts/overlock/enc/ovlk_2sdgnb.enc
index f557458b6c..3a5629cde0 100644
--- a/fonts/overlock/enc/ovlk_2sdgnb.enc
+++ b/fonts/overlock/enc/ovlk_2sdgnb.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_2sdgnb5x563it4jcpbvoqbov4f
-% Encoding created by otftotfm on Tue Jul 7 14:30:26 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:27 2020
% Command line follows encoding
/AutoEnc_2sdgnb5x563it4jcpbvoqbov4f [
%00
diff --git a/fonts/overlock/enc/ovlk_325tkf.enc b/fonts/overlock/enc/ovlk_325tkf.enc
index b09aaef493..652ac83c33 100644
--- a/fonts/overlock/enc/ovlk_325tkf.enc
+++ b/fonts/overlock/enc/ovlk_325tkf.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_325tkfjbi4xwiqvm2wgvkvbrmc
-% Encoding created by otftotfm on Tue Jul 7 14:30:27 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:28 2020
% Command line follows encoding
/AutoEnc_325tkfjbi4xwiqvm2wgvkvbrmc [
%00
diff --git a/fonts/overlock/enc/ovlk_7l4e47.enc b/fonts/overlock/enc/ovlk_7l4e47.enc
index 790e511bc7..8f9746ecc6 100644
--- a/fonts/overlock/enc/ovlk_7l4e47.enc
+++ b/fonts/overlock/enc/ovlk_7l4e47.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_7l4e47cng7hvdg3cpm4miymr5a
-% Encoding created by otftotfm on Tue Jul 7 14:30:27 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:28 2020
% Command line follows encoding
/AutoEnc_7l4e47cng7hvdg3cpm4miymr5a [
%00
diff --git a/fonts/overlock/enc/ovlk_a4aghc.enc b/fonts/overlock/enc/ovlk_a4aghc.enc
index f27f8dbb87..b01b248130 100644
--- a/fonts/overlock/enc/ovlk_a4aghc.enc
+++ b/fonts/overlock/enc/ovlk_a4aghc.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_a4aghcjch6knbm5cm2vj6qwkha
-% Encoding created by otftotfm on Tue Jul 7 14:30:31 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:32 2020
% Command line follows encoding
/AutoEnc_a4aghcjch6knbm5cm2vj6qwkha [
%00
@@ -60,7 +60,7 @@
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
% --coding-scheme=EXTENDED TEX FONT ENCODING - LATIN --feature=kern
-% --feature=liga --feature=smcp --ligkern=f i =: fi --ligkern=f l =: fl
-% --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff l =: ffl
-% --unicoding=germandbls =: SSsmall Overlock-Regular.otf
+% --feature=liga --feature=lnum --feature=smcp --ligkern=f i =: fi
+% --ligkern=f l =: fl --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff
+% l =: ffl --unicoding=germandbls =: SSsmall Overlock-Regular.otf
% Overlock-Regular-lf-sc-t1'
diff --git a/fonts/overlock/enc/ovlk_bhbhyo.enc b/fonts/overlock/enc/ovlk_bhbhyo.enc
index 664c9055d3..367ffedd2f 100644
--- a/fonts/overlock/enc/ovlk_bhbhyo.enc
+++ b/fonts/overlock/enc/ovlk_bhbhyo.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_bhbhyohpixfjhncxk2ia6hj2ch
-% Encoding created by otftotfm on Tue Jul 7 14:30:27 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:27 2020
% Command line follows encoding
/AutoEnc_bhbhyohpixfjhncxk2ia6hj2ch [
%00
@@ -60,6 +60,6 @@
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
% --coding-scheme=EXTENDED TEX FONT ENCODING - LATIN --feature=kern
-% --feature=liga --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff
-% --ligkern=ff i =: ffi --ligkern=ff l =: ffl Overlock-Black.otf
-% Overlock-Black-lf-t1'
+% --feature=liga --feature=lnum --ligkern=f i =: fi --ligkern=f l =: fl
+% --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff l =: ffl
+% Overlock-Black.otf Overlock-Black-lf-t1'
diff --git a/fonts/overlock/enc/ovlk_cj365g.enc b/fonts/overlock/enc/ovlk_cj365g.enc
index 2d6386a877..7bb61583e8 100644
--- a/fonts/overlock/enc/ovlk_cj365g.enc
+++ b/fonts/overlock/enc/ovlk_cj365g.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_cj365g2dgf7uotglaibfbctlfh
-% Encoding created by otftotfm on Tue Jul 7 14:30:31 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:31 2020
% Command line follows encoding
/AutoEnc_cj365g2dgf7uotglaibfbctlfh [
%00
@@ -59,7 +59,7 @@
% --type1-directory=texmf/fonts/type1/muhafara/overlock
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
-% --coding-scheme=TEX TEXT --feature=kern --feature=liga --feature=smcp
-% --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff --ligkern=ff i
-% =: ffi --ligkern=ff l =: ffl --unicoding=germandbls =: SSsmall
-% Overlock-Regular.otf Overlock-Regular-lf-sc-ot1'
+% --coding-scheme=TEX TEXT --feature=kern --feature=liga --feature=lnum
+% --feature=smcp --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff
+% --ligkern=ff i =: ffi --ligkern=ff l =: ffl --unicoding=germandbls =:
+% SSsmall Overlock-Regular.otf Overlock-Regular-lf-sc-ot1'
diff --git a/fonts/overlock/enc/ovlk_cr35rj.enc b/fonts/overlock/enc/ovlk_cr35rj.enc
index 0dcc6269e8..a34d8761f8 100644
--- a/fonts/overlock/enc/ovlk_cr35rj.enc
+++ b/fonts/overlock/enc/ovlk_cr35rj.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_cr35rjhfqdj2wxwrpiqxypmmpd
-% Encoding created by otftotfm on Tue Jul 7 14:30:31 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:32 2020
% Command line follows encoding
/AutoEnc_cr35rjhfqdj2wxwrpiqxypmmpd [
%00
@@ -60,7 +60,7 @@
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
% --coding-scheme=TEX TYPEWRITER AND WINDOWS ANSI --feature=kern
-% --feature=liga --feature=smcp --ligkern=f i =: fi --ligkern=f l =: fl
-% --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff l =: ffl
-% --unicoding=germandbls =: SSsmall Overlock-Regular.otf
+% --feature=liga --feature=lnum --feature=smcp --ligkern=f i =: fi
+% --ligkern=f l =: fl --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff
+% l =: ffl --unicoding=germandbls =: SSsmall Overlock-Regular.otf
% Overlock-Regular-lf-sc-ly1'
diff --git a/fonts/overlock/enc/ovlk_e3j4ia.enc b/fonts/overlock/enc/ovlk_e3j4ia.enc
index 2e82ba96da..a320c2e216 100644
--- a/fonts/overlock/enc/ovlk_e3j4ia.enc
+++ b/fonts/overlock/enc/ovlk_e3j4ia.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_e3j4iabkytyfkjdzyjnmw7lmvf
-% Encoding created by otftotfm on Tue Jul 7 14:30:32 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:33 2020
% Command line follows encoding
/AutoEnc_e3j4iabkytyfkjdzyjnmw7lmvf [
%00
diff --git a/fonts/overlock/enc/ovlk_fqfhhf.enc b/fonts/overlock/enc/ovlk_fqfhhf.enc
index 2332b91be2..c8d9034dc5 100644
--- a/fonts/overlock/enc/ovlk_fqfhhf.enc
+++ b/fonts/overlock/enc/ovlk_fqfhhf.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_fqfhhfxomkr3h6polueqah3uyd
-% Encoding created by otftotfm on Tue Jul 7 14:30:26 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:27 2020
% Command line follows encoding
/AutoEnc_fqfhhfxomkr3h6polueqah3uyd [
%00
diff --git a/fonts/overlock/enc/ovlk_gmmlzo.enc b/fonts/overlock/enc/ovlk_gmmlzo.enc
index 4971e67c7a..2045d94ff2 100644
--- a/fonts/overlock/enc/ovlk_gmmlzo.enc
+++ b/fonts/overlock/enc/ovlk_gmmlzo.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_gmmlzoui4e3cic5m7zm53lkb6b
-% Encoding created by otftotfm on Tue Jul 7 14:30:27 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:28 2020
% Command line follows encoding
/AutoEnc_gmmlzoui4e3cic5m7zm53lkb6b [
%00
diff --git a/fonts/overlock/enc/ovlk_irzqhk.enc b/fonts/overlock/enc/ovlk_irzqhk.enc
index aafd6d2976..8cea7cf5a9 100644
--- a/fonts/overlock/enc/ovlk_irzqhk.enc
+++ b/fonts/overlock/enc/ovlk_irzqhk.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_irzqhk73woobpgtstexkoyt5bf
-% Encoding created by otftotfm on Tue Jul 7 14:30:27 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:27 2020
% Command line follows encoding
/AutoEnc_irzqhk73woobpgtstexkoyt5bf [
%00
@@ -60,6 +60,6 @@
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
% --coding-scheme=TEX TYPEWRITER AND WINDOWS ANSI --feature=kern
-% --feature=liga --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff
-% --ligkern=ff i =: ffi --ligkern=ff l =: ffl Overlock-Black.otf
-% Overlock-Black-lf-ly1'
+% --feature=liga --feature=lnum --ligkern=f i =: fi --ligkern=f l =: fl
+% --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff l =: ffl
+% Overlock-Black.otf Overlock-Black-lf-ly1'
diff --git a/fonts/overlock/enc/ovlk_j3mq5n.enc b/fonts/overlock/enc/ovlk_j3mq5n.enc
index 3e5d219e81..08d22239cd 100644
--- a/fonts/overlock/enc/ovlk_j3mq5n.enc
+++ b/fonts/overlock/enc/ovlk_j3mq5n.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_j3mq5nqbtnsu2eloaceetc2yqc
-% Encoding created by otftotfm on Tue Jul 7 14:30:26 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:27 2020
% Command line follows encoding
/AutoEnc_j3mq5nqbtnsu2eloaceetc2yqc [
%00
diff --git a/fonts/overlock/enc/ovlk_k2npiy.enc b/fonts/overlock/enc/ovlk_k2npiy.enc
index 1c6f8456b1..8429afbf32 100644
--- a/fonts/overlock/enc/ovlk_k2npiy.enc
+++ b/fonts/overlock/enc/ovlk_k2npiy.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_k2npiyfkpjwncss3lgbgdsvdsd
-% Encoding created by otftotfm on Tue Jul 7 14:30:26 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:26 2020
% Command line follows encoding
/AutoEnc_k2npiyfkpjwncss3lgbgdsvdsd [
%00
@@ -60,6 +60,6 @@
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
% --coding-scheme=EXTENDED TEX FONT ENCODING - LATIN --feature=kern
-% --feature=liga --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff
-% --ligkern=ff i =: ffi --ligkern=ff l =: ffl Overlock-BlackItalic.otf
-% Overlock-BlackItalic-lf-t1'
+% --feature=liga --feature=lnum --ligkern=f i =: fi --ligkern=f l =: fl
+% --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff l =: ffl
+% Overlock-BlackItalic.otf Overlock-BlackItalic-lf-t1'
diff --git a/fonts/overlock/enc/ovlk_lhx5go.enc b/fonts/overlock/enc/ovlk_lhx5go.enc
index 65f2f6e7a5..41a940a6ed 100644
--- a/fonts/overlock/enc/ovlk_lhx5go.enc
+++ b/fonts/overlock/enc/ovlk_lhx5go.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_lhx5gowcws4zqn3bnkmgld6dfe
-% Encoding created by otftotfm on Tue Jul 7 14:30:32 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:32 2020
% Command line follows encoding
/AutoEnc_lhx5gowcws4zqn3bnkmgld6dfe [
%00
diff --git a/fonts/overlock/enc/ovlk_lqqrub.enc b/fonts/overlock/enc/ovlk_lqqrub.enc
index ffa3c0822c..ea09320d0d 100644
--- a/fonts/overlock/enc/ovlk_lqqrub.enc
+++ b/fonts/overlock/enc/ovlk_lqqrub.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_lqqrub5fsevsuwx76ng2ek2weg
-% Encoding created by otftotfm on Tue Jul 7 14:30:32 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:32 2020
% Command line follows encoding
/AutoEnc_lqqrub5fsevsuwx76ng2ek2weg [
%00
diff --git a/fonts/overlock/enc/ovlk_siy5zo.enc b/fonts/overlock/enc/ovlk_siy5zo.enc
index b98fc3b814..88074ebf10 100644
--- a/fonts/overlock/enc/ovlk_siy5zo.enc
+++ b/fonts/overlock/enc/ovlk_siy5zo.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_siy5zo4nxisxjix4nmcp6sm5ub
-% Encoding created by otftotfm on Tue Jul 7 14:30:27 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:27 2020
% Command line follows encoding
/AutoEnc_siy5zo4nxisxjix4nmcp6sm5ub [
%00
@@ -59,6 +59,6 @@
% --type1-directory=texmf/fonts/type1/muhafara/overlock
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
-% --coding-scheme=TEX TEXT --feature=kern --feature=liga --ligkern=f i =: fi
-% --ligkern=f l =: fl --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff
-% l =: ffl Overlock-Black.otf Overlock-Black-lf-ot1'
+% --coding-scheme=TEX TEXT --feature=kern --feature=liga --feature=lnum
+% --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff --ligkern=ff i
+% =: ffi --ligkern=ff l =: ffl Overlock-Black.otf Overlock-Black-lf-ot1'
diff --git a/fonts/overlock/enc/ovlk_tmoia5.enc b/fonts/overlock/enc/ovlk_tmoia5.enc
index c0b1d6a070..f397bcd24a 100644
--- a/fonts/overlock/enc/ovlk_tmoia5.enc
+++ b/fonts/overlock/enc/ovlk_tmoia5.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_tmoia5mfo53vda5lq5wnmoa5va
-% Encoding created by otftotfm on Tue Jul 7 14:30:26 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:27 2020
% Command line follows encoding
/AutoEnc_tmoia5mfo53vda5lq5wnmoa5va [
%00
diff --git a/fonts/overlock/enc/ovlk_vvi6px.enc b/fonts/overlock/enc/ovlk_vvi6px.enc
index 43e33f10ce..5c78cc664d 100644
--- a/fonts/overlock/enc/ovlk_vvi6px.enc
+++ b/fonts/overlock/enc/ovlk_vvi6px.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_vvi6pxx5sx2on2ocn7y5gjmarh
-% Encoding created by otftotfm on Tue Jul 7 14:30:26 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:26 2020
% Command line follows encoding
/AutoEnc_vvi6pxx5sx2on2ocn7y5gjmarh [
%00
@@ -60,6 +60,6 @@
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
% --coding-scheme=TEX TYPEWRITER AND WINDOWS ANSI --feature=kern
-% --feature=liga --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff
-% --ligkern=ff i =: ffi --ligkern=ff l =: ffl Overlock-BlackItalic.otf
-% Overlock-BlackItalic-lf-ly1'
+% --feature=liga --feature=lnum --ligkern=f i =: fi --ligkern=f l =: fl
+% --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff l =: ffl
+% Overlock-BlackItalic.otf Overlock-BlackItalic-lf-ly1'
diff --git a/fonts/overlock/enc/ovlk_woxjio.enc b/fonts/overlock/enc/ovlk_woxjio.enc
index 8105b45828..98ed4dc328 100644
--- a/fonts/overlock/enc/ovlk_woxjio.enc
+++ b/fonts/overlock/enc/ovlk_woxjio.enc
@@ -1,7 +1,7 @@
% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
%%AutoEnc_woxjioicn57zo7v7snwnj4dtgc
-% Encoding created by otftotfm on Tue Jul 7 14:30:26 2020
+% Encoding created by otftotfm on Fri Jul 10 06:50:26 2020
% Command line follows encoding
/AutoEnc_woxjioicn57zo7v7snwnj4dtgc [
%00
@@ -59,6 +59,7 @@
% --type1-directory=texmf/fonts/type1/muhafara/overlock
% --encoding-directory=texmf/fonts/enc/dvips/overlock
% --map-file=texmf/fonts/map/dvips/overlock/Overlock.map --no-updmap
-% --coding-scheme=TEX TEXT --feature=kern --feature=liga --ligkern=f i =: fi
-% --ligkern=f l =: fl --ligkern=f f =: ff --ligkern=ff i =: ffi --ligkern=ff
-% l =: ffl Overlock-BlackItalic.otf Overlock-BlackItalic-lf-ot1'
+% --coding-scheme=TEX TEXT --feature=kern --feature=liga --feature=lnum
+% --ligkern=f i =: fi --ligkern=f l =: fl --ligkern=f f =: ff --ligkern=ff i
+% =: ffi --ligkern=ff l =: ffl Overlock-BlackItalic.otf
+% Overlock-BlackItalic-lf-ot1'
diff --git a/fonts/overlock/latex/LY1Overlock-LF.fd b/fonts/overlock/latex/LY1Overlock-LF.fd
index f2985700e3..13b7f191ec 100644
--- a/fonts/overlock/latex/LY1Overlock-LF.fd
+++ b/fonts/overlock/latex/LY1Overlock-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{LY1Overlock-LF.fd}
- [2020/07/07 (autoinst) Font definitions for LY1/Overlock-LF.]
+ [2020/07/10 (autoinst) Font definitions for LY1/Overlock-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/LY1Overlock-OsF.fd b/fonts/overlock/latex/LY1Overlock-OsF.fd
index c8f631f5c0..14d7ed6a1b 100644
--- a/fonts/overlock/latex/LY1Overlock-OsF.fd
+++ b/fonts/overlock/latex/LY1Overlock-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{LY1Overlock-OsF.fd}
- [2020/07/07 (autoinst) Font definitions for LY1/Overlock-OsF.]
+ [2020/07/10 (autoinst) Font definitions for LY1/Overlock-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/OT1Overlock-LF.fd b/fonts/overlock/latex/OT1Overlock-LF.fd
index 4f7c72b81f..9a2adea09d 100644
--- a/fonts/overlock/latex/OT1Overlock-LF.fd
+++ b/fonts/overlock/latex/OT1Overlock-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{OT1Overlock-LF.fd}
- [2020/07/07 (autoinst) Font definitions for OT1/Overlock-LF.]
+ [2020/07/10 (autoinst) Font definitions for OT1/Overlock-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/OT1Overlock-OsF.fd b/fonts/overlock/latex/OT1Overlock-OsF.fd
index 41b65d2815..840cb201ce 100644
--- a/fonts/overlock/latex/OT1Overlock-OsF.fd
+++ b/fonts/overlock/latex/OT1Overlock-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{OT1Overlock-OsF.fd}
- [2020/07/07 (autoinst) Font definitions for OT1/Overlock-OsF.]
+ [2020/07/10 (autoinst) Font definitions for OT1/Overlock-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/T1Overlock-LF.fd b/fonts/overlock/latex/T1Overlock-LF.fd
index e581db9c37..ca3317fbc7 100644
--- a/fonts/overlock/latex/T1Overlock-LF.fd
+++ b/fonts/overlock/latex/T1Overlock-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{T1Overlock-LF.fd}
- [2020/07/07 (autoinst) Font definitions for T1/Overlock-LF.]
+ [2020/07/10 (autoinst) Font definitions for T1/Overlock-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/T1Overlock-OsF.fd b/fonts/overlock/latex/T1Overlock-OsF.fd
index 37a31ce234..ef9e39b515 100644
--- a/fonts/overlock/latex/T1Overlock-OsF.fd
+++ b/fonts/overlock/latex/T1Overlock-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{T1Overlock-OsF.fd}
- [2020/07/07 (autoinst) Font definitions for T1/Overlock-OsF.]
+ [2020/07/10 (autoinst) Font definitions for T1/Overlock-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/TS1Overlock-LF.fd b/fonts/overlock/latex/TS1Overlock-LF.fd
index 8923928dde..d88fc65864 100644
--- a/fonts/overlock/latex/TS1Overlock-LF.fd
+++ b/fonts/overlock/latex/TS1Overlock-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{TS1Overlock-LF.fd}
- [2020/07/07 (autoinst) Font definitions for TS1/Overlock-LF.]
+ [2020/07/10 (autoinst) Font definitions for TS1/Overlock-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/TS1Overlock-OsF.fd b/fonts/overlock/latex/TS1Overlock-OsF.fd
index 279b24217e..bc209e4b59 100644
--- a/fonts/overlock/latex/TS1Overlock-OsF.fd
+++ b/fonts/overlock/latex/TS1Overlock-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2020/07/07
+%% Generated by autoinst on 2020/07/10
%%
\ProvidesFile{TS1Overlock-OsF.fd}
- [2020/07/07 (autoinst) Font definitions for TS1/Overlock-OsF.]
+ [2020/07/10 (autoinst) Font definitions for TS1/Overlock-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/fonts/overlock/latex/overlock.sty b/fonts/overlock/latex/overlock.sty
index c9c69e3c5b..5a335c792d 100644
--- a/fonts/overlock/latex/overlock.sty
+++ b/fonts/overlock/latex/overlock.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{overlock}
- [2020/07/07 (Bob Tennent) Supports Overlock fonts for all LaTeX engines.]
+ [2020/07/10 (Bob Tennent) Supports Overlock fonts for all LaTeX engines.]
\RequirePackage{ifxetex,ifluatex,xkeyval,textcomp}
diff --git a/fonts/overlock/opentype/OverlockSC-Regular.otf b/fonts/overlock/opentype/OverlockSC-Regular.otf
deleted file mode 100644
index fba25e1ac7..0000000000
--- a/fonts/overlock/opentype/OverlockSC-Regular.otf
+++ /dev/null
Binary files differ
diff --git a/fonts/overlock/type1/Overlock-BlackItalicLCDFJ.pfb b/fonts/overlock/type1/Overlock-BlackItalicLCDFJ.pfb
new file mode 100644
index 0000000000..bd94769abb
--- /dev/null
+++ b/fonts/overlock/type1/Overlock-BlackItalicLCDFJ.pfb
Binary files differ
diff --git a/fonts/overlock/type1/Overlock-BlackLCDFJ.pfb b/fonts/overlock/type1/Overlock-BlackLCDFJ.pfb
new file mode 100644
index 0000000000..05c5a72fb9
--- /dev/null
+++ b/fonts/overlock/type1/Overlock-BlackLCDFJ.pfb
Binary files differ
diff --git a/fonts/overlock/type1/Overlock-BoldItalicLCDFJ.pfb b/fonts/overlock/type1/Overlock-BoldItalicLCDFJ.pfb
new file mode 100644
index 0000000000..301938027e
--- /dev/null
+++ b/fonts/overlock/type1/Overlock-BoldItalicLCDFJ.pfb
Binary files differ
diff --git a/fonts/overlock/type1/Overlock-BoldLCDFJ.pfb b/fonts/overlock/type1/Overlock-BoldLCDFJ.pfb
new file mode 100644
index 0000000000..dc27f1d199
--- /dev/null
+++ b/fonts/overlock/type1/Overlock-BoldLCDFJ.pfb
Binary files differ
diff --git a/fonts/overlock/type1/Overlock-ItalicLCDFJ.pfb b/fonts/overlock/type1/Overlock-ItalicLCDFJ.pfb
new file mode 100644
index 0000000000..45df443337
--- /dev/null
+++ b/fonts/overlock/type1/Overlock-ItalicLCDFJ.pfb
Binary files differ
diff --git a/fonts/overlock/type1/Overlock-RegularLCDFJ.pfb b/fonts/overlock/type1/Overlock-RegularLCDFJ.pfb
new file mode 100644
index 0000000000..91df587882
--- /dev/null
+++ b/fonts/overlock/type1/Overlock-RegularLCDFJ.pfb
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
index d2ebc58258..cfc3c42f5a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
@@ -45,6 +45,9 @@ instructions.
== CHANGES ==
+* V. 1.17 (2020-07-10):
+ - Add options to get clickable titles.
+
* V. 1.16 (2019-04-16):
- Major code cleanup.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
index 935fb57685..55ccaa2f3f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
index cbd326deb0..001ee67721 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
@@ -102,7 +102,7 @@
\thanks{Please report issues via \protect\url{https://github.com/jspitz/biblatex-publist}.}%
}
-\date{Version 1.16, 2019/04/16}
+\date{Version 1.17, 2020/07/10}
\maketitle
\begin{abstract}
@@ -159,7 +159,7 @@ It informs the style file which name(s) it should suppress or highlight in the
author\slash editor list (usually yours).
With the default settings, the author\slash editor name(s) will be omitted completely
-for all of publications which are authored or edited only by the specified person(s), as in:
+for all publications which are authored or edited only by the specified person(s), as in:
\begin{quote}
\textbf{2012.} Some recent trends in gardening. In: \emph{Gardening
Practice} 56, pp.~34--86.
@@ -242,6 +242,38 @@ with abbreviated and full first name (\textsc{J. Doe} and well as \textsc{John D
works of colleagues with the same surname (maybe your family members), which you will not want to mark as your own's.
Of course, the solution does not help if there is an entry with same surname and same first name initial (such as \textsc{Jane Doe}).
+\end{description}
+%
+The following options are available if \textsf{hyperref} is loaded:
+
+\begin{description}
+
+\item [{\joption{linktitleall{[}=true|false{]}}}] default: \emph{false}.
+
+Turns the title (and subtitle, if available) into a clickable hyperlink to either the DOI, the URL, the ISBN,
+or the ISSN (the latter two via customizable search provider), if any of these is available. See section~\ref{sec:clicktitles}
+for details.
+
+\item [{\joption{linktitledoi{[}=true|false{]}}}] default: \emph{false}.
+
+Turns the title (and subtitle, if available) into a clickable hyperlink to the DOI, if available. See section~\ref{sec:clicktitles}
+for details.
+
+\item [{\joption{linktitleurl{[}=true|false{]}}}] default: \emph{false}.
+
+Turns the title (and subtitle, if available) into a clickable hyperlink to the URL, if available. See section~\ref{sec:clicktitles}
+for details.
+
+\item [{\joption{linktitleisbn{[}=true|false{]}}}] default: \emph{false}.
+
+Turns the title (and subtitle, if available) into a clickable hyperlink to the ISBN (via customizable search provider), if available.
+See section~\ref{sec:clicktitles} for details.
+
+\item [{\joption{linktitleissn{[}=true|false{]}}}] default: \emph{false}.
+
+Turns the title (and subtitle, if available) into a clickable hyperlink to the ISSN (via customizable search provider), if available.
+See section~\ref{sec:clicktitles} for details.
+
\end{description}
@@ -328,6 +360,27 @@ differ from what you expect with specific base styles. To change the order,
use the package option \joption{nameorder} (see sec.~\ref{sec:addopts}).
+\subsection{Clickable titles}\label{sec:clicktitles}
+
+With the options \joption{linktitledoi}, \joption{linktitleurl}, \joption{linktitleisbn}, \joption{linktitleissn}
+or the combining option \joption{linktitleall}, titles and subtitles are turned into clickable hyperlinks if
+the \textsf{hyperref} package is loaded, and the respective data is there, i.\,e., if either the DOI field,
+the URL field, the ISBN field or the ISSN field is defined for the given entry (checked in this order if multiple
+of these options or \joption{linktitleall} are used).
+
+With URL and DOI, direct links are created. With ISBN or ISSN, a link to a search provider is created instead
+(\textsf{worldcat} by default). The search provider can be customized by redefining the following macros:
+\begin{lstlisting}[moretexcs={[2]{plisbnlink,plissnlink}}]
+\newcommand*\plisbnlink[1]{https://www.worldcat.org/search?qt=worldcat_org_all&q=#1}
+\newcommand*\plissnlink[1]{https://www.worldcat.org/search?qt=worldcat_org_all&q=#1}
+\end{lstlisting}
+%
+where \verb|#1| is a placeholder for the ISBN or ISSN, respectively.
+
+Note that the output of URLs, DOIs, ISBNs and ISSNs is not affected by the \joption{linktitle} options,
+so you might get redundant output. To control (e.\,g., omit) them, use the \joption{url}, \joption{doi}
+and \joption{isbn} biblatex options.
+
\section{Localization}
Since the package draws on \bibltx, it supports localization.
@@ -539,6 +592,11 @@ or
\section{Revision Log}
\begin{description}
+ \item [{V. 1.17 (2020-07-10):}]~
+ \begin{itemize}
+ \item Add options to get clickable titles. See sec.~\ref{sec:clicktitles}.
+ \end{itemize}
+
\item [{V. 1.16 (2019-04-16):}]~
\begin{itemize}
\item Major code cleanup.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
index 7ba7be52ce..4c8f91ff62 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
@@ -25,8 +25,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{1.16}
-\def\bpl@rdate{2019/04/16}
+\def\bpl@version{1.17}
+\def\bpl@rdate{2020/07/10}
\ProvidesFile{publist.bbx}[\bpl@rdate\space v.\bpl@version\space
biblatex bibliography style (JSP)]
@@ -127,6 +127,59 @@
}
}
+\newtoggle{bpl@linktitle}
+\newtoggle{bpl@linktitleisbn}
+\newtoggle{bpl@linktitleissn}
+\newtoggle{bpl@linktitleurl}
+\newtoggle{bpl@linktitledoi}
+\DeclareBibliographyOption{linktitleall}[true]{%
+ \ifstrequal{#1}{true}{
+ \toggletrue{bpl@linktitleisbn}
+ \toggletrue{bpl@linktitleissn}
+ \toggletrue{bpl@linktitleurl}
+ \toggletrue{bpl@linktitledoi}
+ \toggletrue{bpl@linktitle}
+ }{%
+ \togglefalse{bpl@linktitleisbn}
+ \togglefalse{bpl@linktitleissn}
+ \togglefalse{bpl@linktitleurl}
+ \togglefalse{bpl@linktitledoi}
+ \togglefalse{bpl@linktitle}
+ }%
+}
+\DeclareBibliographyOption{linktitleurl}[true]{%
+ \ifstrequal{#1}{true}{%
+ \toggletrue{bpl@linktitleurl}
+ \toggletrue{bpl@linktitle}
+ }{%
+ \togglefalse{bpl@linktitleurl}
+ }%
+}
+\DeclareBibliographyOption{linktitledoi}[true]{%
+ \ifstrequal{#1}{true}{%
+ \toggletrue{bpl@linktitledoi}
+ \toggletrue{bpl@linktitle}
+ }{%
+ \togglefalse{bpl@linktitledoi}
+ }%
+}
+\DeclareBibliographyOption{linktitleisbn}[true]{%
+ \ifstrequal{#1}{true}{%
+ \toggletrue{bpl@linktitleisbn}
+ \toggletrue{bpl@linktitle}
+ }{%
+ \togglefalse{bpl@linktitleisbn}
+ }%
+}
+\DeclareBibliographyOption{linktitleissn}[true]{%
+ \ifstrequal{#1}{true}{%
+ \toggletrue{bpl@linktitleissn}
+ \toggletrue{bpl@linktitle}
+ }{%
+ \togglefalse{bpl@linktitleissn}
+ }%
+}
+
% Check if users have defined different base styles
% If not, use authoryear.
\newif\ifbpl@standardbasestyle\bpl@standardbasestylefalse
@@ -1096,6 +1149,27 @@
}
+% Define bibmacro that applies a hypertext reference
+% Inspired by https://tex.stackexchange.com/a/48506/19291
+\newbibmacro*{bpl:linked}[1]{%
+ \ifboolexpr{ test {\ifhyperref} and not test {\ifentrytype{online}} }
+ {\iffieldundef{doi}
+ {\iffieldundef{url}
+ {\iffieldundef{isbn}
+ {\iffieldundef{issn}
+ {#1}
+ {\iftoggle{bpl@linktitleissn}{\href{\plissnlink{\thefield{issn}}}{#1}}{#1}}}
+ {\iftoggle{bpl@linktitleisbn}{\href{\plisbnlink{\thefield{isbn}}}{#1}}{#1}}}
+ {\iftoggle{bpl@linktitleurl}{\href{\thefield{url}}{#1}}{#1}}}
+ {\iftoggle{bpl@linktitledoi}{\href{https://doi.org/\thefield{doi}}{#1}}{#1}}}
+ {#1}%
+}
+
+% URL for ISBN/ISSN queries
+\newcommand*\plisbnlink[1]{https://www.worldcat.org/search?qt=worldcat_org_all&q=#1}
+\newcommand*\plissnlink[1]{https://www.worldcat.org/search?qt=worldcat_org_all&q=#1}
+
+
%
% Mappings (biber)
%
@@ -1139,6 +1213,28 @@
}
}
+% Link titles if so requested
+\AtBeginDocument{%
+\iftoggle{bpl@linktitle}{%
+ \DeclareStyleSourcemap{
+ \maps[datatype=bibtex]{
+ \map[overwrite=true]{
+ \step[fieldsource=title,
+ match=\regexp{(.*)},
+ replace=\regexp{\\usebibmacro{bpl:linked}{$1}},
+ final=true]
+ }
+ \map[overwrite=true]{
+ \step[fieldsource=subtitle,
+ match=\regexp{(.*)},
+ replace=\regexp{\\usebibmacro{bpl:linked}{$1}},
+ final=true]
+ }
+ }
+ }
+}{}
+}
+
%
% Deprecated stuff
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
index 2a18c9e50d..d70ac4dbf5 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
@@ -26,8 +26,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{1.16}
-\def\bpl@rdate{2019/04/16}
+\def\bpl@version{1.17}
+\def\bpl@rdate{2020/07/10}
\ProvidesFile{publist.cbx}[\bpl@rdate\space v.\bpl@version\space
biblatex citation style (JSP)]
diff --git a/macros/latex/contrib/cryptocode/README b/macros/latex/contrib/cryptocode/README
deleted file mode 100644
index 4d95ad33dc..0000000000
--- a/macros/latex/contrib/cryptocode/README
+++ /dev/null
@@ -1,10 +0,0 @@
-The cryptocode package provides a set of macros to ease the typesetting of
-pseudocode, algorithms and protocols. In addition it comes with a wide range
-of tools to typeset cryptographic papers (hence the name).
-This includes simple predefined commands for concepts such as
-a security parameter or advantage terms but also flexible and powerful
-environments to layout game-based proofs or black-box reductions.
-
-The cryptocode bundle is licensed under the LaTeX Project Public License
-
- -- Arno Mittelbach <mail@arno-mittelbach.de> 11 Nov 2018 \ No newline at end of file
diff --git a/macros/latex/contrib/cryptocode/README.md b/macros/latex/contrib/cryptocode/README.md
new file mode 100644
index 0000000000..44832eada3
--- /dev/null
+++ b/macros/latex/contrib/cryptocode/README.md
@@ -0,0 +1,45 @@
+# Cryptocode
+The cryptocode package provides a set of macros to ease the typesetting of pseudocode, algorithms and protocols. In addition it comes with a wide range of tools to typeset cryptographic papers. This includes simple predefined commands for concepts such as a security parameter or advantage terms but also flexible and powerful environments to layout game-based proofs or black-box reductions.
+
+# Installation
+
+Extract the *cryptocode.sty* file via
+
+ pdflatex cryptocode.ins
+
+# Documentation
+
+Create the documentation via
+
+ pdflatex cryptocode.dtx
+ pdflatex cryptocode.dtx
+ makeindex -s gind.ist -o cryptocode.idx cryptocode
+ makeindex -s gglo.ist -o cryptocode.gls cryptocode.glo
+ pdflatex cryptocode.dtx
+
+A prebuilt version of the documentation is available in the repository.
+
+# Versioning
+
+Cryptocode supports LaTeX' rollback mechanism. To load a particular version of cryptocode use
+
+ \usepackage[options]{cryptocode}[=2018-11-11]
+
+Besides the current version 0.40, the following deprecated versions are available via
+the rollback mechanism.
+
+- v0.32 (2020-04-01)
+- v0.30 (2018-11-11)
+
+# Contribution
+
+Contributions to *cryptocode* are very welcome.
+
+# Attribution
+
+If you use cryptocode in your work, consider starring the repository on GitHub and/or rating it on CTAN.
+
+# License
+
+[LaTeX Project Public License](http://www.latex-project.org/lppl.txt)
+
diff --git a/macros/latex/contrib/cryptocode/cryptocode.sty b/macros/latex/contrib/cryptocode/cryptocode-2018-11-11.sty
index d406c96306..d406c96306 100644
--- a/macros/latex/contrib/cryptocode/cryptocode.sty
+++ b/macros/latex/contrib/cryptocode/cryptocode-2018-11-11.sty
diff --git a/macros/latex/contrib/cryptocode/cryptocode-2020-04-24.sty b/macros/latex/contrib/cryptocode/cryptocode-2020-04-24.sty
new file mode 100644
index 0000000000..aacbb94966
--- /dev/null
+++ b/macros/latex/contrib/cryptocode/cryptocode-2020-04-24.sty
@@ -0,0 +1,2074 @@
+ %% Copyright 2018 Arno Mittelbach
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is Arno Mittelbach.
+ %
+ % This work consists of the files cryptocode.tex and cryptocode.sty
+ %
+ % Changelog
+ %
+ % 2016/11/30
+ % - changed \pckeystyle to ensure that subscripts on \sk and \pk are aligned the same
+ % before, $(\sk_R, \pk_R)$ had slightly misaligned subscripts due to Tex treating
+ % subscripts on composite objects with descenders differently than without.
+ % see https://groups.google.com/forum/#!msg/comp.text.tex/IaXu_xBG06Q/CibRPH5GCAAJ
+ % - added \NAND
+ % - added pcmbox environment for matrices in pseudocode
+ %
+ % 2016/12/02
+ % - changed minheight for bbrbox environment to actually reflect a minimum height in tikz
+ % the old minheight which added space at the bottom was preserved as addheight
+ % - added namepos middle for bbrbox
+ % - added pcfail
+ % - added valign to pseudocode to allow minipage vertical alignment
+ % - added \setgameproceduredefaultstyle
+ % - ensure line numbers are right aligned to allow for two digit linenumbers having the same width
+ %
+ % 2017/08/26
+ % - added \pcabort
+ % - better control whitespace for \pcif, \pcelse, \pcelseif
+ %
+ % 2017/10/02
+ % - side and oside support to \bbroracleqryto and \bbroracleqryfrom
+ % - add bottom to namepos in bbrbox
+ % - names for brrinput and bbroutput
+ % - angle for bbrloop
+ % - fix length for bbrinput
+ % - introduce hoffset for bbrinput
+ %
+ % 2017/12/21
+ % - added \pcunless
+ %
+ % 2018/11/11
+ % replace obsolete l3regex
+ %
+ % 2018/11/26 TODO: document
+ % added tprob (variants for prob and co for in-text)
+ %
+ % 2018/12/21
+ % added \prp
+ %
+ % 2020/01/11
+ % - allow to control spacing with \pcfor
+ % - allow overwriting rule command in pseudocode via headlinecmd (defaults to \hrule)
+ %
+ % 2020/04/24
+ % - fix spacing of pchstack[center]. Can be controlled via \pccenterbelowskip and \pccenteraboveskip
+ %
+ %
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{cryptocode}
+ [2018/11/11 v0.3.0 Cryptocode LaTeX package for typesetting pseudocode, algorithms and protocols as well as cryptographic proofs.]
+
+
+\def\hi{Hello, this is cryptocode.}
+\let\myDate\date
+
+\RequirePackage{amsmath}
+\RequirePackage{mathtools}
+%\usepackage{l3tl-analysis} % uncomment for debugging
+
+%%%
+% option modes
+\newif\ifpc@orderofgrowth
+\newif\ifpc@algorithmstyle
+\newif\ifpc@amsfonts
+\newif\ifpc@advantage
+\newif\ifpc@primitives
+
+%%%
+%
+\DeclareOption{operators}{
+ \providecommand{\sample}{\hskip2.3pt{\gets\!\!\mbox{\tiny${\$}$\normalsize}}\,}
+
+ \providecommand{\floor}[1]{\ensuremath{\left\lfloor #1\right\rfloor}}
+ \providecommand{\ceil}[1]{\ensuremath{\left\lceil #1\right\rceil}}
+ \providecommand{\Angle}[1]{\ensuremath{\left\langle #1\right\rangle}}
+ \providecommand{\abs}[1]{\ensuremath{\left\lvert #1 \right\rvert}}
+ \providecommand{\norm}[1]{\ensuremath{\left\|#1\right\|}}
+ \providecommand{\concat}{\ensuremath{\|}}
+
+ \providecommand{\emptystring}{\ensuremath{\varepsilon}}
+}
+
+\DeclareOption{adversary}{
+ \providecommand{\pcadvstyle}[1]{\mathcal{#1}}
+
+ \providecommand{\adv}{\ensuremath{\pcadvstyle{A}}}
+ \providecommand{\bdv}{\ensuremath{\pcadvstyle{B}}}
+ \providecommand{\cdv}{\ensuremath{\pcadvstyle{C}}}
+ \providecommand{\ddv}{\ensuremath{\pcadvstyle{D}}}
+ \providecommand{\mdv}{\ensuremath{\pcadvstyle{M}}}
+ \providecommand{\pdv}{\ensuremath{\pcadvstyle{P}}}
+ \providecommand{\rdv}{\ensuremath{\pcadvstyle{R}}}
+ \providecommand{\sdv}{\ensuremath{\pcadvstyle{S}}}
+}
+
+\DeclareOption{landau}{
+ \pc@orderofgrowthtrue
+
+ \providecommand{\bigO}[1]{\ensuremath{\mathcal{O}\olrk{#1}}}
+ \providecommand{\smallO}[1]{\ensuremath{\text{o}\olrk{#1}}}
+ \providecommand{\bigOmega}[1]{\ensuremath{\Omega\olrk{#1}}}
+ \providecommand{\smallOmega}[1]{\ensuremath{\omega\olrk{#1}}}
+ \providecommand{\bigsmallO}[1]{\ensuremath{\Theta\olrk{#1}}}
+}
+
+\DeclareOption{probability}{
+ \pc@orderofgrowthtrue
+ \pc@amsfontstrue
+
+ \providecommand{\probname}{Pr}
+ \providecommand{\expectationname}{\ensuremath{\mathbb{E}}}
+ \providecommand{\supportname}{Supp}
+
+ \providecommand{\tprob}[1]{\ensuremath{\operatorname{\probname}\telrk{#1}}}
+ \providecommand{\prob}[1]{\ensuremath{\operatorname{\probname}\elrk{#1}}}
+
+ \providecommand{\tprobsub}[2]{\ensuremath{\operatorname{\probname}_{#1}\telrk{#2}}}
+ \providecommand{\probsub}[2]{\ensuremath{\operatorname{\probname}_{#1}\elrk{#2}}}
+
+ \providecommand{\tcondprob}[2]{\ensuremath{\tprob{#1\,\left|\,#2\vphantom{#1}\right.}}}
+ \providecommand{\condprob}[2]{\ensuremath{\prob{#1\,\left|\,#2\vphantom{#1}\right.}}}
+
+ \providecommand{\tcondprobsub}[3]{\ensuremath{\tprobsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+ \providecommand{\condprobsub}[3]{\ensuremath{\probsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+
+ \providecommand{\texpect}[1]{\ensuremath{\operatorname{\expectationname}\telrk{#1}}}
+ \providecommand{\expect}[1]{\ensuremath{\operatorname{\expectationname}\elrk{#1}}}
+
+ \providecommand{\texpsub}[2]{\ensuremath{\operatorname{\expectationname}_{#1}\telrk{#2}}}
+ \providecommand{\expsub}[2]{\ensuremath{\operatorname{\expectationname}_{#1}\elrk{#2}}}
+
+ \providecommand{\tcondexp}[2]{\ensuremath{\texpect{#1\,\left|\,#2\vphantom{#1}\right.}}}
+ \providecommand{\condexp}[2]{\ensuremath{\expect{#1\,\left|\,#2\vphantom{#1}\right.}}}
+
+ \providecommand{\tcondexpsub}[3]{\ensuremath{\texpsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+ \providecommand{\condexpsub}[3]{\ensuremath{\expsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+
+ \providecommand{\supp}[1]{ \ensuremath{\operatorname{Supp}\olrk{#1}}}
+
+ \providecommand{\entropy}[1]{\ensuremath{\operatorname{H}\olrk{#1}}}
+ \providecommand{\condentropy}[2]{\ensuremath{\operatorname{H}\olrk{#1\,\left|\,#2\vphantom{#1}\right.}}}
+ \providecommand{\minentropy}[1]{\ensuremath{\operatorname{H_\infty}\olrk{#1}}}
+ \providecommand{\condminentropy}[2]{\ensuremath{\operatorname{H_\infty}\olrk{#1\,\left|\,#2\vphantom{#1}\right.}}}
+ \providecommand{\condavgminentropy}[2]{\ensuremath{\operatorname{\tilde{H}_\infty}\olrk{#1\,\left|\,#2\vphantom{#1}\right.}}}
+}
+
+\DeclareOption{sets}{
+ \pc@orderofgrowthtrue
+ \pc@amsfontstrue
+
+ \providecommand\NN{\mathbb{N}}
+ \providecommand\ZZ{\mathbb{Z}}
+ \providecommand\CC{\mathbb{C}}
+ \providecommand\QQ{\mathbb{Q}}
+ \providecommand\RR{\mathbb{R}}
+ \providecommand\PP{\mathbb{P}}
+ \providecommand\FF{\mathbb{F}}
+ \providecommand\GG{\mathbb{G}}
+
+ \providecommand{\set}[1]{\ensuremath{\clrk{#1}}}
+ \providecommand{\sequence}[1]{\ensuremath{\olrk{#1}}}
+ \providecommand{\bin}{\ensuremath{\{0,1\}}}
+}
+
+\DeclareOption{noamsfonts}{
+ \pc@amsfontsfalse
+}
+
+
+\DeclareOption{notions}{
+ \providecommand{\pcnotionstyle}[1]{\ensuremath{\mathrm{#1}}}
+
+ \providecommand{\indcpa}{\pcnotionstyle{IND\pcmathhyphen{}CPA}}
+ \providecommand{\indcca}{\pcnotionstyle{IND\pcmathhyphen{}CCA}}
+ \providecommand{\indccai}{\pcnotionstyle{IND\pcmathhyphen{}CCA1}}
+ \providecommand{\indccaii}{\pcnotionstyle{IND\pcmathhyphen{}CCA2}}
+ \providecommand{\priv}{\pcnotionstyle{PRIV}}
+ \providecommand{\ind}{\pcnotionstyle{IND}}
+ \providecommand{\indcda}{\pcnotionstyle{IND\pcmathhyphen{}CDA}}
+ \providecommand{\prvcda}{\pcnotionstyle{PRV\pcmathhyphen{}CDA}}
+ \providecommand{\prvrcda}{\pcnotionstyle{PRV\$\pcmathhyphen{}CDA}}
+ \providecommand{\kiae}{\pcnotionstyle{KIAE}}
+ \providecommand{\kdae}{\pcnotionstyle{KDAE}}
+ \providecommand{\mle}{\pcnotionstyle{MLE}}
+ \providecommand{\uce}{\pcnotionstyle{UCE}}
+}
+
+\DeclareOption{logic}{
+ \providecommand{\AND}{\ensuremath{\mathrm{AND}}}
+ \providecommand{\OR}{\ensuremath{\mathrm{OR}}}
+ \providecommand{\NOR}{\ensuremath{\mathrm{NOR}}}
+ \providecommand{\NOT}{\ensuremath{\mathrm{NOT}}}
+ \providecommand{\NAND}{\ensuremath{\mathrm{NAND}}}
+ \providecommand{\XOR}{\ensuremath{\mathrm{XOR}}}
+ \providecommand{\XNOR}{\ensuremath{\mathrm{XNOR}}}
+ \providecommand{\xor}{\ensuremath{\oplus}}
+ \providecommand{\false}{\mathsf{false}}
+ \providecommand{\true}{\mathsf{true}}
+}
+
+
+% Function Families
+\DeclareOption{ff}{
+ \pc@algorithmstyletrue
+
+ \providecommand{\kgen}{\pcalgostyle{KGen}}
+ \providecommand{\pgen}{\pcalgostyle{Pgen}}
+ \providecommand{\eval}{\pcalgostyle{Eval}}
+ \providecommand{\invert}{\pcalgostyle{Inv}}
+
+ \providecommand{\il}{\pcalgostyle{il}}
+ \providecommand{\ol}{\pcalgostyle{ol}}
+ \providecommand{\kl}{\pcalgostyle{kl}}
+ \providecommand{\nl}{\pcalgostyle{nl}}
+ \providecommand{\rl}{\pcalgostyle{rl}}
+}
+
+% Machine Model
+\DeclareOption{mm}{
+ \pc@algorithmstyletrue
+
+ \providecommand{\pcmachinemodelstyle}[1]{\ensuremath{\mathsf{#1}}}
+
+ \providecommand{\CRKT}{\pcmachinemodelstyle{C}}
+ \providecommand{\TM}{\pcmachinemodelstyle{M}}
+ \providecommand{\PROG}{\pcmachinemodelstyle{P}}
+
+ \providecommand{\uTM}{\pcmachinemodelstyle{UM}}
+ \providecommand{\uC}{\pcmachinemodelstyle{UC}}
+ \providecommand{\uP}{\pcmachinemodelstyle{UEval}}
+
+ \providecommand{\csize}{\pcmachinemodelstyle{size}}
+ \providecommand{\tmtime}{\pcmachinemodelstyle{time}}
+ \providecommand{\ppt}{\pcalgostyle{PPT}}
+}
+
+\DeclareOption{advantage}{
+ \pc@advantagetrue
+}
+
+\DeclareOption{primitives}{
+ \pc@primitivestrue
+ \pc@algorithmstyletrue
+}
+
+\DeclareOption{events}{
+ \providecommand{\event}[1]{\ensuremath{\mathsf{#1}}}
+ \providecommand{\nevent}[1]{\ensuremath{\overline{\event{#1}}}}
+
+ \providecommand{\bad}{\ensuremath{\event{bad}}}
+}
+
+\DeclareOption{complexity}{
+ \providecommand{\pccomplexitystyle}[1]{\ensuremath{\mathsf{#1}}}
+
+ \providecommand{\npol}{\pccomplexitystyle{NP}}
+ \providecommand{\conpol}{\ensuremath{\mathsf{co}}\pccomplexitystyle{NP}}
+ \providecommand{\pol}{\pccomplexitystyle{P}}
+ \providecommand{\bpp}{\pccomplexitystyle{BPP}}
+ \providecommand{\ppoly}{\ensuremath{\pol/\mathrm{poly}}}
+
+ \providecommand{\AM}{\pccomplexitystyle{AM}}
+ \providecommand{\coAM}{\ensuremath{\mathsf{co}}\pccomplexitystyle{AM}}
+
+ \providecommand{\AC}[1]{\ensuremath{\ifthenelse{\equal{#1}{}}{\pccomplexitystyle{AC}}{\pccomplexitystyle{AC}^{#1}}}}
+ \providecommand{\NC}[1]{\ensuremath{\ifthenelse{\equal{#1}{}}{\pccomplexitystyle{NC}}{\pccomplexitystyle{NC}^{#1}}}}
+ \providecommand{\TC}[1]{\ensuremath{\ifthenelse{\equal{#1}{}}{\pccomplexitystyle{TC}}{\pccomplexitystyle{TC}^{#1}}}}
+}
+
+\DeclareOption{asymptotics}{
+ \pc@orderofgrowthtrue
+
+ \providecommand{\pcpolynomialstyle}[1]{\mathsf{#1}}
+
+ \providecommand{\negl}[1][\secpar]{\ensuremath{\pcpolynomialstyle{negl}\ifthenelse{\equal{#1}{}}{}{\olrk{#1}}}}
+ \providecommand{\poly}[1][\secpar]{\ensuremath{\pcpolynomialstyle{poly}\ifthenelse{\equal{#1}{}}{}{\olrk{#1}}}}
+
+ \providecommand{\pp}{\ensuremath{\pcpolynomialstyle{p}}}
+ \providecommand{\qq}{\ensuremath{\pcpolynomialstyle{q}}}
+}
+
+\DeclareOption{keys}{
+ \providecommand{\pckeystyle}[1]{\ensuremath{\mathsf{\protect\vphantom{p}#1}}}
+
+ \providecommand{\pk}{\pckeystyle{pk}}
+ \providecommand{\vk}{\pckeystyle{vk}}
+ \providecommand{\sk}{\pckeystyle{sk}}
+ \providecommand{\key}{\pckeystyle{k}}
+ \providecommand{\hk}{\pckeystyle{hk}}
+ \providecommand{\gk}{\pckeystyle{gk}}
+ \providecommand{\fk}{\pckeystyle{fk}}
+
+ \providecommand{\st}{\pckeystyle{st}}
+ \providecommand{\state}{\pckeystyle{state}}
+}
+
+\DeclareOption{n}{
+ \providecommand{\secpar}{\ensuremath{n}}
+ \providecommand{\secparam}{\ensuremath{1^\secpar}}
+}
+
+\DeclareOption{lambda}{
+ \renewcommand{\secpar}{\ensuremath{\lambda}}
+ \renewcommand{\secparam}{\ensuremath{1^\secpar}}
+}
+
+\DeclareOption*{%
+ \PackageError{crypto code}{Unknown option ‘\CurrentOption’}%
+}
+
+\ExecuteOptions{n}
+
+\ProcessOptions\relax
+
+\RequirePackage{etex}
+
+%amsfonts
+\ifpc@amsfonts
+ \RequirePackage{amsfonts}
+\fi
+\RequirePackage{xcolor}
+\RequirePackage{calc}
+\RequirePackage{tikz}
+\usetikzlibrary{positioning,calc}
+\RequirePackage{ifthen}
+\RequirePackage{xargs}
+\RequirePackage{pgf}
+%\RequirePackage{mathabx}
+\RequirePackage{forloop}
+\RequirePackage{array}
+\RequirePackage{xparse}
+\RequirePackage{expl3}
+\RequirePackage{pbox}
+\RequirePackage{varwidth}
+\RequirePackage{suffix}
+\RequirePackage{etoolbox}
+\RequirePackage{environ}
+%\RequirePackage{xspace}
+\RequirePackage{xkeyval}
+
+\ifpc@advantage
+ \newcommand{\pcadvantagesuperstyle}[1]{\mathrm{\MakeLowercase{#1}}}
+ \newcommand{\pcadvantagesubstyle}[1]{#1}
+ \newcommandx*{\advantage}[3][3=(\secpar)]{\ensuremath{\mathsf{Adv}^{\pcadvantagesuperstyle{#1}}_{\pcadvantagesubstyle{#2}}#3}}
+\fi
+
+\ifpc@primitives
+ % zero knowledge
+ \providecommand{\prover}{\pcalgostyle{P}}
+ \providecommand{\verifier}{\pcalgostyle{V}}
+ \providecommand{\nizk}{\pcalgostyle{NIZK}}
+
+ % hash
+ \providecommand{\hash}{\pcalgostyle{H}}
+ \providecommand{\gash}{\pcalgostyle{G}}
+ \providecommand{\fash}{\pcalgostyle{F}}
+
+ % encryption
+ \providecommand{\enc}{\pcalgostyle{Enc}}
+ \providecommand{\dec}{\pcalgostyle{Dec}}
+
+ % signatures
+ \providecommand{\sig}{\pcalgostyle{Sig}}
+ \providecommand{\verify}{\pcalgostyle{Vf}}
+
+ % obfuscation
+ \providecommand{\obf}{\pcalgostyle{O}}
+ \providecommand{\iO}{\pcalgostyle{iO}}
+ \providecommand{\diO}{\pcalgostyle{diO}}
+
+ % PRF, PRP, PRG
+ \providecommand{\prf}{\pcalgostyle{PRF}}
+ \providecommand{\prp}{\pcalgostyle{PRP}}
+ \providecommand{\prg}{\pcalgostyle{PRG}}
+
+ % Mac
+ \providecommand{\mac}{\pcalgostyle{MAC}}
+
+ % puncture
+ \providecommand{\puncture}{\pcalgostyle{Puncture}}
+
+ % Misc
+ \providecommand{\source}{\pcalgostyle{S}}
+ \providecommand{\predictor}{\pcalgostyle{P}}
+ \providecommand{\sam}{\pcalgostyle{Sam}}
+ \providecommand{\dist}{\pcalgostyle{D}}
+ \providecommand{\distinguisher}{\pcalgostyle{Dist}}
+ \providecommand{\simulator}{\pcalgostyle{Sim}}
+ \providecommand{\ext}{\pcalgostyle{Ext}}
+ \providecommand{\extractor}{\ext}
+\fi
+
+%%
+% math hyphen
+\mathchardef\pcmathhyphen ="2D
+
+%%%
+% order of growth helper
+\ifpc@orderofgrowth
+\providecommand{\tolrk}[1]{\ifx\nursymbol#1\else\!\!\mskip6.5mu plus 0.5mu (\mskip0.5mu plus0.5mu #1\mskip1.5mu plus0.5mu )\fi}
+\providecommand{\olrk}[1]{\ifx\nursymbol#1\else\!\!\mskip4.5mu plus 0.5mu\left(\mskip0.5mu plus0.5mu #1\mskip1.5mu plus0.5mu \right)\fi}
+
+\providecommand{\telrk}[1]{\ifx\nursymbol#1\else\!\!\mskip6.5mu plus0.5mu [\mskip0.5mu plus0.5mu #1\mskip1.5mu plus0.5mu ]\fi}
+\providecommand{\elrk}[1]{\ifx\nursymbol#1\else\!\!\mskip4.5mu plus0.5mu\left[\mskip0.5mu plus0.5mu #1\mskip1.5mu plus0.5mu \right]\fi}
+
+\providecommand{\tclrk}[1]{\ifx\nursymbol#1\else\!\!\mskip6.5mu plus0.5mu \{\mskip0.5mu plus0.5mu #1\mskip1.5mu plus0.5mu \}\fi}
+\providecommand{\clrk}[1]{\ifx\nursymbol#1\else\!\!\mskip4.5mu plus0.5mu\left\{\mskip0.5mu plus0.5mu #1\mskip1.5mu plus0.5mu \right\}\fi}
+\fi
+
+\ifpc@algorithmstyle
+ \providecommand{\pcalgostyle}[1]{\ensuremath{\mathsf{#1}}}
+\fi
+
+%%%
+% create command to measure width of align
+%
+\newcommand{\@settowidthofalign}[2]{%
+ \setbox\z@=\vbox{\@pseudocodecodesize
+ \begin{flalign*}
+ #2
+ \ifmeasuring@\else\global\let\got@maxcolwd\maxcolumn@widths\fi
+ \end{flalign*}
+ }%
+ \begingroup
+ \def\or{+}\edef\x{\endgroup#1=\dimexpr\got@maxcolwd\relax}\x}
+
+\newcommand{\@settowidthofaligned}[2]{%
+\settowidth{#1}{\@pseudocodesubcodesize$\begin{aligned}#2\end{aligned}$}}
+
+% check for draft mode
+\def\@pc@ifdraft{\ifdim\overfullrule>\z@
+ \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+
+% run stuff in an empty box
+\newcommand{\@pcexecuteblindly}[1]{%
+ \setbox\z@=\vbox{#1 }}
+
+% copy label command
+\AtBeginDocument{
+ \let\pc@original@label\ltx@label
+}
+
+
+%%%%%%
+\newcommand*{\@pc@globaladdtolength}[2]{%
+\addtolength{#1}{#2}%
+\global#1=#1\relax}
+
+\newcommand*{\@pc@globalsetlength}[2]{%
+\setlength{#1}{#2}%
+\global#1=#1\relax}
+
+
+
+%%%%%
+% spaces before and after pseudo codes (left and right)
+\providecommand{\beforepcskip}{2pt}
+\providecommand{\afterpcskip}{0pt}
+
+%%%
+% a global counter of the number of times the pseudocode command was triggered
+\newcounter{@pc@global@pc@cnt}
+\newcounter{@pc@global@pc@nestcnt}
+
+%%%
+% Fix hyperref package.. gnarl http://tex.stackexchange.com/questions/130319/incompatibility-between-etoolbox-and-hyperref
+\providecommand{\pcfixhyperref}{
+\global\let\textlabel\label
+\global\let\pc@original@label\textlabel
+%\global\let\pc@original@label\relax
+%\global\let\label\relax
+}
+
+\newcounter{@spacecounter}
+\providecommand{\spacetoindent}{1}
+\newenvironment{@withspaces}
+ {\obeyspaces\begingroup\lccode`~=` \lowercase{\endgroup\let~}\ }
+ {}
+
+%%%%%%%%%%%%%%
+% a latex3 string substitution.
+\ExplSyntaxOn
+\tl_new:N \l_pc_strsub_input_tl
+\tl_new:N \l_pc_strsub_search_tl
+\tl_new:N \l_pc_strsub_replace_tl
+
+\NewDocumentCommand{\@pc@stringsubstitution}{mmm}
+ {
+ \tl_set:Nn \l_pc_strsub_input_tl { #1 }
+ \tl_set:Nn \l_pc_strsub_search_tl { #2 }
+ \tl_set:Nn \l_pc_strsub_replace_tl { #3 }
+% \tl_show_analysis:N \l_pc_strsub_input_tl % uncomment for debugging
+% \tl_show_analysis:N \l_pc_strsub_search_tl % uncomment for debugging
+% \tl_show_analysis:N \l_pc_strsub_replace_tl % uncomment for debugging
+ \regex_replace_all:nnN
+ { (\W)\u{l_pc_strsub_search_tl} } %only match if keyword does not have a word character preceding
+ { \1\u{l_pc_strsub_replace_tl} }
+ \l_pc_strsub_input_tl
+ % \tl_show_analysis:N \l_tmpa_tl % uncomment for debugging
+ \tl_use:N \l_pc_strsub_input_tl
+ }
+
+ % same as \@pc@stringsubstitution but without requiring the extra non word character
+ \NewDocumentCommand{\@pc@spacesubstitution}{mmm}
+ {
+ \tl_set:Nn \l_pc_strsub_input_tl { #1 }
+ \tl_set:Nn \l_pc_strsub_search_tl { #2 }
+ \tl_set:Nn \l_pc_strsub_replace_tl { #3 }
+% \tl_show_analysis:N \l_pc_strsub_input_tl % uncomment for debugging
+% \tl_show_analysis:N \l_pc_strsub_search_tl % uncomment for debugging
+% \tl_show_analysis:N \l_pc_strsub_replace_tl % uncomment for debugging
+ \regex_replace_all:nnN
+ { \u{l_pc_strsub_search_tl} }
+ { \u{l_pc_strsub_replace_tl} }
+ \l_pc_strsub_input_tl
+ % \tl_show_analysis:N \l_tmpa_tl % uncomment for debugging
+ \tl_use:N \l_pc_strsub_input_tl
+ }
+
+\NewDocumentCommand{\@pc@centercolifnec}{m}%
+{%
+#1%
+}
+
+
+
+\ExplSyntaxOff
+
+%%%%%%%%
+% line numbers
+%%%%%%%%
+% The following commands handle line numbering within the pseudocode command. The
+% pseudocode command itself does need to do some counter magic
+\newcounter{pclinenumber}
+\newcounter{Hpclinenumber} % make hyperref happy
+\newcounter{@pclinenumber}
+\newcounter{H@pclinenumber} % make hyperref happy
+\newcounter{@pclinenumbertmp}
+\newcounter{pcgamecounter}
+\newcounter{Hpcgamecounter}
+\newcounter{pcrlinenumber}
+\newcounter{Hpcrlinenumber}
+\newcounter{@pcrlinenumbertmp}
+
+% separators
+\providecommand{\pclnseparator}{:}
+\providecommand{\pcrlnseparator}{\hspace{1pt}}
+
+% spacing for linenumbers
+\providecommand{\pclnspace}{0pt}
+\providecommand{\pclnrspace}{5pt}
+
+\renewcommand{\the@pclinenumber}{\thepclinenumber}
+\providecommand{\@pcln}{%
+\refstepcounter{@pclinenumber}%
+\stepcounter{H@pclinenumber}%
+}
+
+% left align line numbers
+\providecommand{\pcln}[1][]{%
+\refstepcounter{pclinenumber}%
+\stepcounter{Hpclinenumber}%
+\ifthenelse{\equal{#1}{}}{}{%
+%keep hyperref happy
+\ifmeasuring@\else\pc@original@label{#1}\fi%
+}%
+\ifthenelse{\value{pclinenumber}<10}{\hspace{1ex}}{}%
+\hspace{\pclnspace}\text{\scriptsize\arabic{pclinenumber}}\pclnseparator\quad}%
+
+% allow to skip numbering single lines if linenumbering=on
+\providecommand{\pcnoln}{%
+}
+
+% right align line numbers (same counter)
+\providecommand{\pclnr}{%
+\refstepcounter{pclinenumber}%
+\quad\text{\scriptsize\pcrlnseparator\arabic{pclinenumber}}\hspace{5pt}}
+
+% right align line numbers different counter
+\providecommand{\pcrln}{
+\refstepcounter{pcrlinenumber}%
+\stepcounter{Hpcrlinenumber}%
+\text{\scriptsize\pcrlnseparator\arabic{pcrlinenumber}}\hspace{\pclnrspace}}
+
+
+%%%
+% indentation
+\newlength{\@pcindentwidth}
+\providecommand{\pcind}[1][1]{%
+\setlength{\@pcindentwidth}{\widthof{\ensuremath{\quad}}*#1}%
+\ensuremath{\mathmakebox[\@pcindentwidth]{}}}
+
+
+% create length
+\newlength{\@pc@minipage@length}
+\newlength{\@pc@alt@minipage@length}
+
+% backward games
+\newcommand{\@withingame}{false}
+\newcommand{\@withinbxgame}{false}
+\newcommand{\@bxgameheader}{}
+\newcommand{\@withingamedescription}{false}
+
+
+%%%%%%%%%%%%
+% The pseudocode Command
+%%%%%
+\newlength{\@pc@length@tmp@width@vstack}
+
+
+\newcommand{\@pc@beginnewline}{%
+\@pseudocodecodeatbeginline\@pseudocodelinenumber\@pc@and\@pcln%
+%checkspace
+\ifthenelse{\equal{\@pseudocodespace}{auto}}%
+{\expandafter\pcind\expandafter[\value{@pc@indentationlevel}]}%
+{}%
+%reset column counter
+\setcounter{pccolumncounter}{2}%
+%beginmode
+\@pc@modebegin}
+\newcommand{\@pc@and}{&}
+\newcommand{\@pc@and@wrap@end}{\@pc@modeend&\@pseudocodecodeatendline}
+\newcommand{\@pc@and@wrap@start}{\@pc@beginnewline}
+\newcommand{\pctabname}{>}
+\newcommand{\pcdbltabname}{<}
+\newcommand{\pcindentname}{t}
+
+
+
+\newcommand*\@pseudocodehead{}
+\newcommand*\@pseudocodewidth{}
+\newcommand*\@pseudocodexshift{0pt}
+\newcommand*\@pseudocodeyshift{0pt}
+\newcommand*\@pseudocodelinenumber{}
+\newcommand*\@pseudocodebeforeskip{0ex}
+\newcommand*\@pseudocodeafterskip{0ex}
+\newcommand*\@pseudocodelnstart{0}
+\newcommand*\@pseudocodelnstartright{0}
+\newcommand*\@pseudocodesyntaxhighlighting{}
+\newcommand*\@pseudocodenodraft{false}
+\newcommand*\@pseudocodecolspace{} % empty per default, use length,
+
+\newcommand*\@pseudocodeheadlinecmd{\hrule}
+\newcommand*\@pseudocodeheadlinesep{0em}
+\newcommand*\@pseudocodebodylinesep{-0.5\baselineskip}
+
+\newcommand*\@pseudocodecolsep{0em}
+\newcommand*\@pseudocodeaddtolength{2pt}
+
+\newcommand*\@pseudocodecodeatbeginline{}
+\newcommand*\@pseudocodecodeatendline{}
+\newcommand*\@pseudocodecodejot{0em}
+\newcommand*\@pseudocodecodesize{\small}
+\newcommand*\@pseudocodesubcodesize{\footnotesize}
+
+\newcommand*\@pseudocodeminipagealign{t}
+
+%%%%%%%%%%%%%%
+% Define keywords for the automatic syntax highlighting
+% the accompanying add provides additional keywords.
+% The space version for automatic spacing
+\newcommand*\@pseudocodekeywordsindent{for ,foreach ,if ,repeat ,while }
+\newcommand*\@pseudocodekeywordsunindent{endfor,endforeach,fi,endif,until ,endwhile}
+\newcommand*\@pseudocodekeywordsuninindent{else if,elseif, else}
+\newcommand*\@pseudocodekeywords{return ,{ do }, in ,new ,null ,null,true ,true,{ to },false ,false,{ then },done ,done}
+\newcommand*\@pseudocodeaddkeywords{}
+\newcommand*\@pseudocodealtkeywords{}
+\begin{@withspaces}
+\global\def\@pseudocodekeywordsspace{for,endfor,foreach,endforeach,return,do,in,new,if,null,true,until,to,false,then,repeat,else if,elseif,while,endwhile,else,done,fi,endif}
+\end{@withspaces}
+
+
+\define@key{pseudocode}{beginline}[]{\renewcommand*\@pseudocodecodeatbeginline{#1}}
+\define@key{pseudocode}{endline}[]{\renewcommand*\@pseudocodecodeatendline{#1}}
+\define@key{pseudocode}{jot}[0em]{\renewcommand*\@pseudocodecodejot{#1}}
+\define@key{pseudocode}{codesize}[\small]{\renewcommand*\@pseudocodecodesize{#1}}
+\define@key{pseudocode}{subcodesize}[\small]{\renewcommand*\@pseudocodesubcodesize{#1}}
+\define@key{pseudocode}{head}[]{\renewcommand*\@pseudocodehead{#1}}
+\define@key{pseudocode}{width}[]{\renewcommand*\@pseudocodewidth{#1}}
+\define@key{pseudocode}{valign}[t]{\renewcommand*\@pseudocodeminipagealign{#1}}
+\define@key{pseudocode}{xshift}[]{\renewcommand*\@pseudocodexshift{#1}}
+\define@key{pseudocode}{yshift}[]{\renewcommand*\@pseudocodeyshift{#1}}
+\define@key{pseudocode}{colspace}[]{\renewcommand*\@pseudocodecolspace{#1}}
+\define@key{pseudocode}{linenumbering}[on]{\ifthenelse{\equal{#1}{on}}{\renewcommand*\@pseudocodelinenumber{\pcln}}{\renewcommand*\@pseudocodelinenumber{}}}
+\define@key{pseudocode}{beforeskip}[]{\renewcommand*\@pseudocodebeforeskip{#1}}
+\define@key{pseudocode}{afterskip}[]{\renewcommand*\@pseudocodeafterskip{#1}}
+\define@key{pseudocode}{lnstart}[0]{\renewcommand*\@pseudocodelnstart{#1}}
+\define@key{pseudocode}{lnstartright}[0]{\renewcommand*\@pseudocodelnstartright{#1}}
+\define@key{pseudocode}{colsep}[0em]{\renewcommand*\@pseudocodecolsep{#1}}
+\define@key{pseudocode}{headlinecmd}[\hrule]{\renewcommand*\@pseudocodeheadlinecmd{#1}}
+\define@key{pseudocode}{headlinesep}[0em]{\renewcommand*\@pseudocodeheadlinesep{#1}}
+\define@key{pseudocode}{bodylinesep}[0em]{\renewcommand*\@pseudocodebodylinesep{#1}}
+\define@key{pseudocode}{addtolength}[2pt]{\renewcommand*\@pseudocodeaddtolength{#1}}
+\define@key{pseudocode}{mode}[math]{%
+\ifthenelse{\equal{#1}{text}}{%
+\renewcommand*\@pc@modebegin{\begin{varwidth}{\textwidth}%
+%introduce line magic for text mode
+\let\@pc@lb\\%
+\renewcommandx*{\\}[2][1=,2=]{\@pc@modeend\@pc@and \@pseudocodecodeatendline\ifthenelse{\equal{####1}{}}{\@pc@lb}{\@pc@lb[####1]}####2 \@pc@beginnewline}%
+\def\pclb{\let\\\@pc@lb\relax\@pc@modeend\\}%
+\def\pcolb{\let\\\@pc@lb\relax\@pc@modeend\\}%
+}%
+\renewcommand*\@pc@modeend{\end{varwidth}}
+}{}%
+}
+\define@key{pseudocode}{nodraft}[true]{\renewcommand*\@pseudocodenodraft{#1}}
+\define@key{pseudocode}{keywords}[]{\renewcommand*\@pseudocodekeywords{#1}}
+\define@key{pseudocode}{keywordsindent}[]{\renewcommand*\@pseudocodekeywordsindent{#1}}
+\define@key{pseudocode}{keywordsunindent}[]{\renewcommand*\@pseudocodekeywordsunindent{#1}}
+\define@key{pseudocode}{keywordsuninindent}[]{\renewcommand*\@pseudocodekeywordsuninindent{#1}}
+\define@key{pseudocode}{addkeywords}[]{\renewcommand*\@pseudocodeaddkeywords{#1}}
+\define@key{pseudocode}{altkeywords}[]{\renewcommand*\@pseudocodealtkeywords{#1}}
+\define@key{pseudocode}{syntaxhighlight}[]{\renewcommand*\@pseudocodesyntaxhighlighting{#1}}
+
+\newcommand{\@pc@modebegin}{}
+\newcommand{\@pc@modeend}{}
+\newcommand{\@pc@thecontent}{}
+
+\newcommand{\@pc@syntaxhighlight}[1]{%
+\ifthenelse{\equal{\@pseudocodesyntaxhighlighting}{auto}}{%
+\def\@shtmp{#1}% first step
+\ifthenelse{\equal{\@pseudocodespace}{keep}}
+ {\edef\@tmpkeywords{\@pseudocodekeywordsspace,\@pseudocodeaddkeywords}}
+ {\ifthenelse{\equal{\@pseudocodespace}{auto}}
+ {\edef\@tmpkeywords{\@pseudocodekeywords,\@pseudocodeaddkeywords}}
+ {\edef\@tmpkeywords{\@pseudocodekeywords,\@pseudocodekeywordsindent,\@pseudocodekeywordsunindent,\@pseudocodekeywordsuninindent,\@pseudocodeaddkeywords}}}
+\foreach \@pckw in \@tmpkeywords{%
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlight\expandafter{\@pckw}}}%
+}% alt keywords
+}%
+\foreach \@pckw in \@pseudocodealtkeywords{%
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@althighlight\expandafter{\@pckw}}}%
+}%
+}%
+%%%%
+% if automatic spacing
+\ifthenelse{\equal{\@pseudocodespace}{auto}}
+{%
+\foreach \@pckw in \@pseudocodekeywordsindent{% indentation keywords
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlightindent\expandafter{\@pckw}}}%
+}}%
+\foreach \@pckw in \@pseudocodekeywordsunindent{% unindentation keywords
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlightunindent\expandafter{\@pckw}}}%
+}}%
+\foreach \@pckw in \@pseudocodekeywordsuninindent{% uninindentation keywords
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlightuninindent\expandafter{\@pckw}}}%
+}}%
+}{}%
+% return result
+\@shtmp%
+}{#1}% nothing to highlight
+}
+
+\newcommand{\@pc@highlight}[1]{%
+\ifthenelse{\equal{\@pseudocodespace}{keep}}
+ {\highlightkeyword[]{#1}}%
+ {\highlightkeyword[]{\@pc@spacesubstitution{#1}{ }{~}}}%
+}
+
+\newcommand{\@pc@highlightindent}[1]{%
+\@pc@increaseindent\@pc@highlight{#1}%
+}
+
+\newcommand{\@pc@highlightunindent}[1]{%
+\@pc@decreaseindent\@pc@highlight{#1}%
+}
+
+\newcommand{\@pc@highlightuninindent}[1]{%
+\@pc@tmpdecreaseindent\@pc@highlight{#1}%
+}
+
+\newcommand{\@pc@althighlight}[1]{%
+\ifthenelse{\equal{\@pseudocodespace}{keep}}
+ {\highlightaltkeyword{#1}}%
+ {\highlightaltkeyword{\@pc@spacesubstitution{#1}{ }{~}}}%
+}
+
+\newcommand{\@pc@colspace}{}
+
+%%%%%%%%%%%%%%%%%
+% Allow for spacing
+\newcommand{\@withinspaces}{false}%
+\newcommand{\@keepspaces}{%
+\renewcommand{\@withinspaces}{true}\@withspaces%
+}
+\newcommand{\@pc@endgroupafterpc}{}
+
+\newcommand*\@pseudocodespace{}
+\define@key{pcspace}{space}[]{\ifthenelse{\equal{#1}{keep}}{\@keepspaces}{}\renewcommand*\@pseudocodespace{#1}}
+
+%%% automatic indentation
+\newcounter{@pc@indentationlevel}
+\newcommand{\@pc@increaseindent}{\addtocounter{@pc@indentationlevel}{1}}
+\newcommand{\@pc@decreaseindent}{\ifthenelse{\equal{\@pseudocodespace}{auto}}{\pcind[-1]}{}\addtocounter{@pc@indentationlevel}{-1}}
+\newcommand{\@pc@tmpdecreaseindent}{\ifthenelse{\equal{\@pseudocodespace}{auto}}{\pcind[-1]}{}}
+
+\newcounter{pccolumncounter}
+\setcounter{pccolumncounter}{2}
+
+% store original halign
+\let\@pc@halign\halign%
+
+%% Check if the pseudocode command is called with an optional argument
+\providecommand{\pseudocode}{%
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+\@ifnextchar[%]
+ {\@pseudocodeA}%
+ {\@pseudocode[]}%
+}
+
+\def\@pseudocodeA[#1]{%
+\setkeys*{pcspace}{#1}%test if there is a space assignment within the keys .. make the necessary arrangements and call the actual method
+\@pseudocode[#1]%
+}
+
+\def\@pseudocode[#1]#2{%
+\begingroup%
+\setkeys{pseudocode}[space]{#1}%ignore the space key.
+% check draft mode and disable syntax highlighting
+\@pc@ifdraft{\ifthenelse{\equal{\@pseudocodenodraft}{true}}{}{\renewcommand\@pseudocodesyntaxhighlighting{}}}{}%
+%
+%
+\addtocounter{@pc@global@pc@nestcnt}{1}%
+% allow for tikz usage
+\@pc@ensureremember%
+%
+% create tabbing command
+\ifcsname \pctabname\endcsname%
+\expandafter\renewcommand\csname \pctabname\endcsname{\@pc@modeend&\@pc@colspace\@pc@modebegin}%
+\else%
+\expandafter\newcommand\csname \pctabname\endcsname{\@pc@modeend&\@pc@colspace\@pc@modebegin}%
+\fi%
+\ifcsname \pcdbltabname\endcsname%
+\expandafter\renewcommand\csname \pcdbltabname\endcsname{\@pc@modeend&&\@pc@colspace\@pc@modebegin}%
+\else%
+\expandafter\newcommand\csname \pcdbltabname\endcsname{\@pc@modeend&&\@pc@colspace\@pc@modebegin}%
+\fi%
+% create colspace command if necessary (must be empty for multicolumns
+\ifthenelse{\equal{\@pseudocodecolspace}{}}
+ {}
+ {\renewcommand{\@pc@colspace}{\hspace{\@pseudocodecolspace}}}%
+%
+%adjust row width
+\addtolength{\jot}{\@pseudocodecodejot}%
+% create indent command
+\expandafter\let\csname \pcindentname\endcsname\pcind%
+%
+%store and wrap (do syntax highlighting) argument
+\renewcommand{\@pc@thecontent}{\@pc@and@wrap@start\@pc@syntaxhighlight{#2}\@pc@and@wrap@end}%
+%
+%take care of counters
+\stepcounter{@pc@global@pc@cnt}%
+\setcounter{pclinenumber}{\@pseudocodelnstart}%
+\setcounter{pcrlinenumber}{\@pseudocodelnstartright}%
+\setlength{\@pc@minipage@length}{0pt}%
+\setlength{\@pc@alt@minipage@length}{0pt}%
+\setcounter{@pclinenumbertmp}{\value{pclinenumber}}%
+\setcounter{@pcrlinenumbertmp}{\value{pcrlinenumber}}%
+%reset column counter
+\setcounter{pccolumncounter}{2}%
+%
+% vertical space
+\vspace{\@pseudocodeyshift}%
+%\setlength{\abovedisplayskip}{0pt}%
+%\setlength{\belowdisplayskip}{0pt}%
+%\setlength{\abovedisplayshortskip}{0pt}%
+%\setlength{\belowdisplayshortskip}{0pt}%
+%
+%
+% line magic
+\ifthenelse{\value{@pc@global@pc@nestcnt}=1}{%
+\let\@pc@halign\halign%
+\newenvironment{pcmbox}{\let\halign\@pc@halign}{}%
+\def\halign{%
+\renewcommand{\label}[1]{\ifmeasuring@\else\pc@original@label{####1}\fi}%
+\let\@pc@lb\\%
+\renewcommandx*{\\}[2][1=,2=]{\@pc@modeend\@pc@and\@pseudocodecodeatendline \ifthenelse{\equal{####1}{}}{\@pc@lb}{\@pc@lb[####1]}####2 \@pc@beginnewline}%
+\def\pclb{\let\\\@pc@lb\relax\@pc@modeend\\}%
+\@pc@halign}%
+}{}%
+%
+%align column separation
+\renewcommand*{\minalignsep}{\@pseudocodecolsep}%
+%
+% if no width is set compute width and store in circuitlength
+\ifthenelse{\equal{\@pseudocodewidth}{}}{%
+% compute length of pseudocode
+\ifthenelse{\value{@pcsubprogstep}=0}{%
+\@settowidthofalign{\@pc@minipage@length}{\@pc@thecontent}%
+}{%
+\@settowidthofaligned{\@pc@minipage@length}{\@pc@thecontent}%
+}%
+%compute length of header
+\addtolength{\@pc@alt@minipage@length}{\widthof{\@pseudocodehead}}%
+% use header length if longer and add some points for good measure
+\ifdim\@pc@alt@minipage@length>\@pc@minipage@length%
+\setlength{\@pc@minipage@length}{\@pc@alt@minipage@length}%
+\fi%
+\addtolength{\@pc@minipage@length}{\@pseudocodeaddtolength}%
+}{\addtolength{\@pc@minipage@length}{\@pseudocodewidth}}%
+% reset counter
+\setcounter{pclinenumber}{\value{@pclinenumbertmp}}%
+\setcounter{pcrlinenumber}{\value{@pcrlinenumbertmp}}%
+\setcounter{@pc@indentationlevel}{0}%
+% begin actual output
+%
+%
+%do the actual mini page
+\hspace{\@pseudocodexshift}%
+\begin{minipage}[\@pseudocodeminipagealign]{\@pc@minipage@length}%
+\ifthenelse{\value{@pcsubprogstep}=0}{%
+\pc@display@pseudocode{\@pseudocodehead}{\@pc@thecontent}%
+}{% if sub procedure
+\pc@display@subcode{\@pseudocodehead}{\@pc@thecontent}%
+}%
+\end{minipage}%
+\hspace{\afterpcskip}%
+% tikz usage
+\@pc@releaseremember%
+\addtocounter{@pc@global@pc@nestcnt}{-1}%
+\endgroup%
+% close spacing and potentially a single group generated by the space tester
+\ifthenelse{\equal{\@withinspaces}{true}}{\end@withspaces}{}%
+\endgroup%
+}
+
+\newcommand{\@pc@gameheader}[2]{%
+\tikz{\gdef\i{\thepcgamecounter}%
+\node[anchor=base,#2,inner sep=0.05em,outer sep=0] (gamenode\i) {#1\vphantom{$\sum^A_{A_b}$}};
+\ifthenelse{\equal{\@withinbxgame}{true}}
+ {\node[draw,anchor=base, above=0.1cm of gamenode\i] (bgamenode\i) {\@bxgameheader\vphantom{$\sum^A_{A_b}$}};}
+ {}%
+}%
+}
+
+\let\pclb\relax
+%
+\newcommand{\pc@display@pseudocode}[2]{%
+\ifthenelse{\equal{#1}{}}{\vspace{-1\baselineskip}\@pseudocodecodesize}{%
+\ifthenelse{\equal{\@withingame}{true}}{%
+\@pc@gameheader{#1}{}\ifthenelse{\equal{\@pc@secondheader}{true}}{\addtocounter{pcgamecounter}{1}\@pc@gameheader{#1}{draw}}{}%
+\vspace{0.2em}%
+}{#1\vphantom{$\sum^A_{A_b}$}}%
+\vspace{\@pseudocodeheadlinesep}\@pseudocodeheadlinecmd\vspace{\@pseudocodebodylinesep}\@pseudocodecodesize}%
+\begin{flalign*}#2\end{flalign*}%
+}
+
+
+\newcommand{\pc@display@subcode}[2]{%
+\begingroup%
+\ifthenelse{\equal{#1}{}}{}{#1\vphantom{$\sum^A_{A_b}$} %
+\vspace{\@pseudocodeheadlinesep}\@pseudocodeheadlinecmd \vspace{\baselineskip}\vspace{\@pseudocodebodylinesep}}%
+\@pseudocodesubcodesize%
+$\begin{aligned}#2\end{aligned}$%
+\endgroup%
+}
+
+
+\newcommand{\@pc@gettikzwidth}[2]{ % #1 = width, #2 = height
+ \pgfextractx{\@tempdima}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}
+ {\pgfpointanchor{current bounding box}{north east}}}
+ \global#1=\@tempdima
+ \pgfextracty{\@tempdima}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}
+ {\pgfpointanchor{current bounding box}{north east}}}
+ \global#2=\@tempdima
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+% remember pictues
+\newcounter{@pc@remember}
+
+\newcommand{\@pc@ensureremember}{%
+\ifthenelse{\value{@pc@remember}=0}{\tikzstyle{every picture}+=[remember picture]}{}%
+\addtocounter{@pc@remember}{1}}
+
+\newcommand{\@pc@releaseremember}{%
+\addtocounter{@pc@remember}{-1}%
+\ifthenelse{\value{@pc@remember}=0}{\tikzstyle{every picture}-=[remember picture]}{}%
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+% pcimage
+\newenvironment{pcimage}{%
+\begingroup\@pc@ensureremember%
+}{%
+\@pc@releaseremember\endgroup%
+}
+
+\newcommand*\@pcnodecontent{}
+\newcommand*\@pcnodestyle{}
+\newcommand*\@pcnodedraw{}
+\define@key{pcnode}{content}[]{\renewcommand*\@pcnodecontent{#1}}
+\define@key{pcnode}{style}[]{\renewcommand*\@pcnodestyle{#1}}
+\define@key{pcnode}{draw}[]{\renewcommand*\@pcnodedraw{#1}}
+
+\newcommandx*{\pcnode}[2][2=]{%
+\begingroup\setkeys{pcnode}{#2}%
+\tikzset{PCNODE-STYLE/.style/.expand once=\@pcnodestyle}%
+\begin{tikzpicture}[inner sep=0ex,baseline=0pt]%
+\node[PCNODE-STYLE] (#1) {\@pcnodecontent}; %
+\end{tikzpicture}%
+\ifdefempty{\@pcnodedraw}{}{%
+\begin{tikzpicture}[overlay,inner sep=0ex,baseline=0pt]\@pcnodedraw\end{tikzpicture}
+}%
+\endgroup}
+
+\newcommandx*{\pcdraw}[2][2=]{%
+\begin{tikzpicture}[overlay,inner sep=0ex,baseline=0pt,#2]
+#1
+\end{tikzpicture}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+% Reductions
+\newcommand{\@bb@lastbox}{}
+\newcommand{\@bb@lastoracle}{}
+\newcommand{\@bb@lastchallenger}{}
+
+
+\newlength{\@bb@message@hoffset}
+\newlength{\@bb@query@hoffset}
+\newlength{\@bb@oraclequery@hoffset}
+\newlength{\@bb@challengerquery@hoffset}
+
+\newcounter{@bb@oracle@cnt}
+\newcounter{@bb@oracle@nestcnt}
+\newcounter{@bb@challenger@cnt}
+\newcounter{@bb@challenger@nestcnt}
+
+\newcounter{@bb@env@nestcnt}
+
+\newcommand{\bbroraclenodenameprefix}{ora-}
+\newcommand{\bbrchallengernodenameprefix}{challenger-}
+\newcommand{\bbrenvnodenameprefix}{env-}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Black Box Reduction Environment
+\newenvironmentx{bbrenv}[3][1=0pt,3=0pt]{%
+\addtocounter{@bb@env@nestcnt}{1}%
+\renewcommand{\@bb@lastbox}{#2}%
+%
+% reset lengths
+\@pc@globalsetlength{\@bb@message@hoffset}{0pt}%
+\@pc@globalsetlength{\@bb@query@hoffset}{0pt}%
+\@pc@globalsetlength{\@bb@oraclequery@hoffset}{0pt}%
+\@pc@globalsetlength{\@bb@challengerquery@hoffset}{0pt}%
+%
+%reset oracle counter and oracle query offset
+\ifthenelse{\value{@bb@oracle@nestcnt}=0}
+ {\setcounter{@bb@oracle@cnt}{0}}{}%
+\ifthenelse{\value{@bb@challenger@nestcnt}=0}
+ {\setcounter{@bb@challenger@cnt}{0}}{}%
+%
+\def\@bbendskip{#3}%
+\vspace{#1}%
+\ifthenelse{\value{@bb@env@nestcnt}=1}
+ {\@pc@ensureremember%
+\begin{tikzpicture}
+}{\tikz\bgroup}
+}{%
+\ifthenelse{\value{@bb@env@nestcnt}=1}
+{\end{tikzpicture}%
+\@pc@releaseremember%
+}{\egroup}%
+\vspace{\@bbendskip}%
+\addtocounter{@bb@env@nestcnt}{-1}%
+% reset lengths
+\@pc@globalsetlength{\@bb@message@hoffset}{0pt}%
+\@pc@globalsetlength{\@bb@query@hoffset}{0pt}%
+\@pc@globalsetlength{\@bb@oraclequery@hoffset}{0pt}%
+\@pc@globalsetlength{\@bb@challengerquery@hoffset}{0pt}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% black box reduction box
+% option keys
+\newcommand*\bbrboxname{}
+\newcommand*\bbrboxnamepos{right}
+\newcommand*\bbrboxnamestyle{}
+\newcommand*\@bbrboxnamepos{below right=0.5ex and -0.5ex of \@bb@lastbox.north east,anchor=north east}
+\newcommand*\bbrboxabovesep{\baselineskip}
+\newcommand*\@bbrboxnameposoffset{below left=\bbrboxabovesep of phantomname.south west}
+\newcommand*\bbrboxstyle{draw}
+\newcommand*\bbrboxafterskip{}
+\newcommand*\bbrboxminheight{0cm}
+\newcommand*\bbrboxminwidth{2cm}
+\newcommand*\bbrboxxshift{0cm}
+\newcommand*\bbrboxyshift{0cm}
+\define@key{bbrbox}{abovesep}[]{\renewcommand*\bbrboxabovesep{#1}}
+\define@key{bbrbox}{name}[]{\renewcommand*\bbrboxname{#1}}
+\define@key{bbrbox}{namestyle}[]{\renewcommand*\bbrboxnamestyle{#1}}
+\define@key{bbrbox}{namepos}[]{\renewcommand*\bbrboxnamepos{#1}}
+\define@key{bbrbox}{style}[draw]{\renewcommand*\bbrboxstyle{#1}}
+\define@key{bbrbox}{minwidth}[]{\renewcommand*\bbrboxminwidth{#1}}
+\define@key{bbrbox}{addheight}[]{\renewcommand*\bbrboxafterskip{#1}}
+\define@key{bbrbox}{minheight}[]{\renewcommand*\bbrboxminheight{#1}}
+\define@key{bbrbox}{xshift}[]{\renewcommand*\bbrboxxshift{#1}}
+\define@key{bbrbox}{yshift}[]{\renewcommand*\bbrboxyshift{#1}}
+
+
+\NewEnviron{bbrbox}[1][]{%
+\setkeys{bbrbox}{#1}%
+
+\ifthenelse{\equal{\bbrboxnamepos}{center}}
+ {\renewcommand{\@bbrboxnamepos}{below=0.5ex of \@bb@lastbox.north,anchor=north}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{left}}
+ {\renewcommand{\@bbrboxnamepos}{below=0.5ex of \@bb@lastbox.north west,anchor=north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{top right}}
+ {\renewcommand{\@bbrboxnamepos}{above=0cm of \@bb@lastbox.north east,anchor=south east}\renewcommand{\@bbrboxnameposoffset}{below left=0cm of phantomname.north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{top center}}
+ {\renewcommand{\@bbrboxnamepos}{above=0cm of \@bb@lastbox.north,anchor=south}\renewcommand{\@bbrboxnameposoffset}{below left=0cm of phantomname.north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{top left}}
+ {\renewcommand{\@bbrboxnamepos}{above=0cm of \@bb@lastbox.north west,anchor=south west}\renewcommand{\@bbrboxnameposoffset}{below left=0cm of phantomname.north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{middle}}
+ {\renewcommand{\@bbrboxnamepos}{above=0.5ex of \@bb@lastbox.base,anchor=south}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{bottom}}
+ {\renewcommand{\@bbrboxnamepos}{above=0.5ex of \@bb@lastbox.base,anchor=north}}{}
+
+
+\tikzset{BBRBOXSTYLE/.style/.expand once=\bbrboxstyle}%
+\tikzset{BBRBOXNAMEPOS/.style/.expand once=\@bbrboxnamepos}%
+\tikzset{BBRBOXNAMESTYLE/.style/.expand once=\bbrboxnamestyle}%
+\tikzset{BBRBOXNAMEPOSOFFSET/.style/.expand once=\@bbrboxnameposoffset}%
+
+\node[inner sep=0pt,outer sep=0pt] (\@bb@lastbox-tmpouter) {};
+\node[inner sep=.3333em,anchor=north,BBRBOXSTYLE,minimum height=\bbrboxminheight,below right=\bbrboxyshift and \bbrboxxshift of \@bb@lastbox-tmpouter] (\@bb@lastbox) \bgroup
+ \tikz{
+ \node[inner sep=0pt,outer sep=0pt,minimum height=0cm] (phantomname) {}; %minimum width
+ \node[BBRBOXNAMEPOSOFFSET,minimum height=0cm] (\@bb@lastbox-inner) {\begin{varwidth}{2\linewidth}\BODY\end{varwidth}};
+ \ifthenelse{\equal{\bbrboxafterskip}{}}{}{
+ \node[below=0cm of \@bb@lastbox-inner,minimum height=\bbrboxafterskip] {};
+ }
+ \node[inner sep=0pt,outer sep=0pt,at=(\@bb@lastbox-inner.south west),minimum height=0cm] () {\phantom{\hspace{\bbrboxminwidth}}}; %minimum width
+ }
+\egroup;
+\ifthenelse{\equal{\bbrboxnamepos}{none}}
+{}{\node[BBRBOXNAMEPOS,BBRBOXNAMESTYLE, inner sep=0.2ex, outer sep=0pt, overlay] () {\bbrboxname};}
+}
+
+
+\newcommand*\bbroraclevdistance{\baselineskip}
+\newcommand*\bbroraclehdistance{1.5cm}
+\define@key{bbroracle}{distance}[]{\renewcommand*\bbroraclehdistance{#1}}
+\define@key{bbroracle}{hdistance}[]{\renewcommand*\bbroraclehdistance{#1}}
+\define@key{bbroracle}{vdistance}[]{\renewcommand*\bbroraclevdistance{#1}}
+
+
+% ORACLES
+\newenvironmentx{bbroracle}[2][2=]{%
+ \begingroup
+ \setkeys{bbroracle}{#2}
+ %add to nesting cout
+ \addtocounter{@bb@oracle@nestcnt}{1}
+ %if first oracle, then put it to the right, else stack them vertically
+ \addtocounter{@bb@oracle@cnt}{1}
+ \ifthenelse{\value{@bb@oracle@cnt}=1}{
+ \setlength{\@bb@tmplength@b}{\bbroraclevdistance-\baselineskip}
+ \node[inner sep=0pt,below right=\@bb@tmplength@b and \bbroraclehdistance of \@bb@lastbox.north east,anchor=north west] (\bbroraclenodenameprefix#1) \bgroup
+ }{
+% compute distance of top of last box to bottom of last oracle
+ \coordinate (@bbtmpcoord) at (\@bb@lastbox.north east);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordA}
+ \coordinate (@bbtmpcoord) at (\bbroraclenodenameprefix \@bb@lastoracle.south west);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordB}
+ \setlength{\@bb@tmplength@b}{\YCoordA-\YCoordB+\bbroraclevdistance}
+ \node[inner sep=0pt,below right=\@bb@tmplength@b and \bbroraclehdistance of \@bb@lastbox.north east,anchor=north west] (\bbroraclenodenameprefix#1) \bgroup
+ }
+ \global\def\@bb@lastoracle{#1}
+ \begin{bbrenv}{#1}
+}{
+ \end{bbrenv}
+ \egroup;
+
+ \addtocounter{@bb@oracle@nestcnt}{-1}
+ \endgroup
+}
+
+
+\newcommand*\bbrchallengerhdistance{1.5cm}
+\newcommand*\bbrchallengervdistance{\baselineskip}
+\define@key{bbrchallenger}{distance}[]{\renewcommand*\bbrchallengerhdistance{#1}}
+\define@key{bbrchallenger}{hdistance}[]{\renewcommand*\bbrchallengerhdistance{#1}}
+\define@key{bbrchallenger}{vdistance}[]{\renewcommand*\bbrchallengervdistance{#1}}
+
+
+% Challenger
+\newenvironmentx{bbrchallenger}[2][2=]{%
+\begingroup%
+\setkeys{bbrchallenger}{#2}%
+%add to nesting cout
+\addtocounter{@bb@challenger@nestcnt}{1}%
+%if first oracle, then put it to the right, else stack them vertically
+\addtocounter{@bb@challenger@cnt}{1}%
+\ifthenelse{\value{@bb@challenger@cnt}=1}{%
+\setlength{\@bb@tmplength@b}{\bbrchallengervdistance-\baselineskip}%
+\node[inner sep=0pt,below left=\@bb@tmplength@b and \bbrchallengerhdistance of \@bb@lastbox.north west,anchor=north east] (\bbrchallengernodenameprefix#1) \bgroup%
+}{%
+\coordinate (@bbtmpcoord) at (\@bb@lastbox.north west);%
+\path (@bbtmpcoord);%
+\pgfgetlastxy{\XCoord}{\YCoordA}%
+\coordinate (@bbtmpcoord) at (\bbrchallengernodenameprefix \@bb@lastchallenger.south east);%
+\path (@bbtmpcoord);%
+\pgfgetlastxy{\XCoord}{\YCoordB}%
+\setlength{\@bb@tmplength@b}{\YCoordA-\YCoordB+\bbrchallengervdistance}%
+\node[inner sep=0pt,below left=\@bb@tmplength@b and \bbrchallengerhdistance of \@bb@lastbox.north west,anchor=north east] (\bbrchallengernodenameprefix#1) \bgroup%
+}%
+\global\def\@bb@lastchallenger{#1}
+\begin{bbrenv}{#1}%
+}{
+\end{bbrenv}%
+\egroup;%
+\addtocounter{@bb@challenger@nestcnt}{-1}%
+\endgroup%
+\let\msgfrom\bbrchallengerqueryto%
+}
+
+
+\newcommand*\bbrinputlength{0.5cm}
+\newcommand*\bbrinputhoffset{0.5cm}
+\newcommand*\bbrinputbottom{}
+\newcommand*\bbrinputtop{}
+\newcommand*\bbrinputedgestyle{}
+\newcommand*\bbrinputtopstyle{}
+\newcommand*\bbrinputbottomstyle{}
+\newcommand*\bbrinputnodestyle{}
+\newcommand*\bbrinputnodename{}
+\define@key{bbrinput}{length}[]{\renewcommand*\bbrinputlength{#1}}
+\define@key{bbrinput}{hoffset}[]{\renewcommand*\bbrinputhoffset{#1}}
+\define@key{bbrinput}{name}[]{\renewcommand*\bbrinputnodename{#1}}
+\define@key{bbrinput}{top}[]{\renewcommand*\bbrinputtop{#1}}
+\define@key{bbrinput}{bottom}[]{\renewcommand*\bbrinputbottom{#1}}
+
+
+\newcommand{\@bb@inputsetup}[1]{
+ %load keys
+ \begingroup % for local keys
+
+ \setkeys{bbrinput}{#1}%
+
+ \tikzset{BBRINPUT-NODESTYLE/.style/.expand once=\bbrinputedgestyle}%
+ \tikzset{BBRINPUT-TOPSTYLE/.style/.expand once=\bbrinputtopstyle}%
+ \tikzset{BBRINPUT-BOTTOMSTYLE/.style/.expand once=\bbrinputbottomstyle}%
+ \tikzset{BBRINPUT-EDGESTYLE/.style/.expand once=\bbrinputedgestyle}%
+
+}
+
+\newcommand{\@bb@inputfinalize}{
+ \endgroup
+}
+
+\newcommandx*{\bbrinput}[2][2=]{%
+\@bb@inputsetup{#2}
+\ifthenelse{\equal{\bbrinputnodename}{}}
+ {\renewcommand{\bbrinputnodename}{\@bb@lastbox-input}}{}
+
+\node[overlay,above right={\bbrinputlength} and {\bbrinputhoffset} of \@bb@lastbox.north west, anchor=south,BBRINPUT-NODESTYLE] (\bbrinputnodename) {#1};
+\path[->] (\bbrinputnodename.south) edge[BBRINPUT-EDGESTYLE] node[above,anchor=east,BBRINPUT-TOPSTYLE] () {\bbrinputtop} node[below,anchor=west,BBRINPUT-BOTTOMSTYLE] () {\bbrinputbottom} (\bbrinputnodename.south|-\@bb@lastbox.north);
+\@bb@inputfinalize
+}
+
+\newcommandx*{\bbroutput}[2][2=]{%
+\@bb@inputsetup{#2}
+\ifthenelse{\equal{\bbrinputnodename}{}}
+ {\renewcommand{\bbrinputnodename}{\@bb@lastbox-output}}{}
+
+\node[overlay,below right={\bbrinputlength} and {\bbrinputhoffset} of \@bb@lastbox.south west, anchor=north] (\bbrinputnodename) {#1};
+\draw[->] (\bbrinputnodename.north|-\@bb@lastbox.south) -- (\bbrinputnodename.north|-\bbrinputnodename.north);
+\@bb@inputfinalize
+}
+
+\newenvironment{bbrpic}[1][]{%
+\begin{tikzpicture}[overlay,inner sep=0ex,baseline=0pt,#1]%
+}{%
+\end{tikzpicture}}
+
+%%%%%%%%%%%
+% communication
+%temporary lengths
+\newlength{\@bb@com@tmpoffset}
+\newlength{\@bb@tmplength@b}
+\newcommand{\@bb@firstmessageheight}{0.25\baselineskip}
+\newcommand{\@bb@msglength}{1.25cm}
+\newcommand{\@bb@qrylength}{1.5cm}
+
+%keys
+\newcommand*\bbrcomnsidestyle{}
+\newcommand*\bbrcomtopstyle{}
+\newcommand*\bbrcombottomstyle{}
+\newcommand*\bbrcomside{}
+\newcommand*\bbrcomoside{}
+\newcommand*\bbrcomtop{}
+\newcommand*\bbrcombottom{}
+\newcommand*\bbrcomedgestyle{}
+\newcommand*\bbrcomlength{1.25cm}
+\newcommand*\bbrcomtopname{bbrcomtop}
+\newcommand*\bbrcombottomname{bbrcombottom}
+\newcommand*\bbrcomsidename{bbrcomside}
+\newcommand*\bbrcomosidename{bbrcomoside}
+\newcommand*\bbrcombeforeskip{0pt}
+\newcommand*\bbrcomafterskip{0pt}
+\define@key{bbrcom}{sidestyle}[]{\renewcommand*\bbrcomnsidestyle{#1}}
+\define@key{bbrcom}{topstyle}[]{\renewcommand*\bbrcomtopstyle{#1}}
+\define@key{bbrcom}{bottomstyle}[]{\renewcommand*\bbrcombottomstyle{#1}}
+\define@key{bbrcom}{side}[]{\renewcommand*\bbrcomside{#1}}
+\define@key{bbrcom}{oside}[]{\renewcommand*\bbrcomoside{#1}}
+\define@key{bbrcom}{top}[]{\renewcommand*\bbrcomtop{#1}}
+\define@key{bbrcom}{bottom}[]{\renewcommand*\bbrcombottom{#1}}
+\define@key{bbrcom}{edgestyle}[]{\renewcommand*\bbrcomedgestyle{#1}}
+\define@key{bbrcom}{length}[]{\renewcommand*\bbrcomlength{#1}}
+\define@key{bbrcom}{topname}[]{\renewcommand*\bbrcomtopname{#1}}
+\define@key{bbrcom}{bottomname}[]{\renewcommand*\bbrcombottomname{#1}}
+\define@key{bbrcom}{sidename}[]{\renewcommand*\bbrcomsidename{#1}}
+\define@key{bbrcom}{osidename}[]{\renewcommand*\bbrcomosidename{#1}}
+\define@key{bbrcom}{beforeskip}[]{\renewcommand*\bbrcombeforeskip{#1}}
+\define@key{bbrcom}{afterskip}[]{\renewcommand*\bbrcomafterskip{#1}}
+
+\newcommand*\bbrbasenodestyle{}
+\newcommand*\bbrbasenodename{bbrtmpname}
+\define@key{bbrabase}{nodestyle}[]{\renewcommand*\bbrbasenodestyle{#1}}
+\define@key{bbrabase}{nodename}[]{\renewcommand*\bbrbasenodename{#1}}
+
+
+\newcommand{\@bb@comsetup}[3]{
+ %load keys
+ \begingroup % for local keys
+
+ \setkeys{bbrcom}{#1}%
+
+ %set styles
+ \tikzset{BBRCOM-SIDESTYLE/.style/.expand once=\bbrcomnsidestyle}%
+ \tikzset{BBRCOM-TOPSTYLE/.style/.expand once=\bbrcomtopstyle}%
+ \tikzset{BBRCOM-BOTTOMSTYLE/.style/.expand once=\bbrcombottomstyle}%
+ \tikzset{BBRCOM-EDGESTYLE/.style/.expand once=\bbrcomedgestyle}%
+
+ % increase space
+ \ifthenelse{\lengthtest{#2<\@bb@firstmessageheight}}
+ {#3{\@bb@firstmessageheight}}
+ {
+ #3{1.25\baselineskip}
+ \ifthenelse{\equal{\bbrcomtop}{}}{}{#3{0.5\baselineskip}}
+ }
+
+ #3{\bbrcombeforeskip}
+
+ \setlength{\@bb@com@tmpoffset}{#2}%
+}
+
+\newcommand{\@bb@comfinalize}[1]{
+ \ifthenelse{\equal{\bbrcombottom}{}}{}{#1{\baselineskip}}
+ #1{\bbrcomafterskip}
+ \endgroup
+}
+
+\newcommand{\@bbrmsg}[8]{
+ \@bb@comsetup{#1}{#7}{#8}
+ %
+ \node[#3=\@bb@com@tmpoffset and \bbrcomlength of \@bb@lastbox.#4,anchor=#6,BBRCOM-SIDESTYLE] (\bbrcomsidename) {\bbrcomside};
+ \path[#2] (\bbrcomsidename.#6) edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\bbrcomtopname) {\bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\bbrcombottomname) {\bbrcombottom} (\@bb@lastbox.#5|-\bbrcomsidename) node[inner sep=0pt,outer sep=0pt] (\bbrcomosidename) {};
+ %
+ \@bb@comfinalize{#8}
+}
+
+\newcommandx{\bbrmsgto}[1]{%
+\@bbrmsg{#1}{->}{below left}{north west}{west}{east}{\@bb@message@hoffset}{\bbrmsgspace}
+}
+\newcommandx{\bbrmsgfrom}[1]{%
+\@bbrmsg{#1}{<-}{below left}{north west}{west}{east}{\@bb@message@hoffset}{\bbrmsgspace}
+}
+\newcommandx{\bbrmsgvdots}{%
+ \bbrmsgtxt[xshift=\bbrcomlength/2,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip]{$\vdots$}
+}
+
+
+\newcommandx{\bbrqryto}[1]{%
+\@bbrmsg{#1}{<-}{below right}{north east}{east}{west}{\@bb@query@hoffset}{\bbrqryspace}
+}
+\newcommandx{\bbrqryfrom}[1]{%
+\@bbrmsg{#1}{->}{below right}{north east}{east}{west}{\@bb@query@hoffset}{\bbrqryspace}
+}
+
+\newcommand{\@bbroracleqry}[4]{
+ \@bb@comsetup{#1}{#3}{#4}
+ %
+
+ \path[#2] (\@bb@lastoracle.north west) -- ++ (0,-\@bb@com@tmpoffset) node[inner sep=0pt,outer sep=0pt] (\bbrcomsidename){\bbrcomside} edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\bbrcomtopname) {\bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\bbrcombottomname) {\bbrcombottom} (\@bb@lastbox.east|-\bbrcomsidename) node[inner sep=0pt,outer sep=0pt] (\bbrcomosidename) {\bbrcomoside};
+ %
+ \@bb@comfinalize{#4}
+}
+
+\newcommand{\bbroracleqryfrom}[1]{
+ \@bbroracleqry{#1}{->}{\@bb@oraclequery@hoffset}{\bbroracleqryspace}
+}
+
+\newcommand{\bbroracleqryto}[1]{
+ \@bbroracleqry{#1}{<-}{\@bb@oraclequery@hoffset}{\bbroracleqryspace}
+}
+
+\newcommand{\@bbrchallengerqry}[4]{
+ \@bb@comsetup{#1}{#3}{#4}
+ %
+
+ \path[#2] (\@bb@lastchallenger.north east) -- ++ (0,-\@bb@com@tmpoffset) node[inner sep=0pt,outer sep=0pt] (\bbrcomsidename){\bbrcomside} edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\bbrcomtopname) {\bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\bbrcombottomname) {\bbrcombottom} (\@bb@lastbox.west|-\bbrcomsidename) node[inner sep=0pt,outer sep=0pt] (\bbrcomosidename) {\bbrcomoside};
+ %
+ \@bb@comfinalize{#4}
+}
+
+\newcommand{\bbrchallengerqryfrom}[1]{
+ \@bbrchallengerqry{#1}{<-}{\@bb@challengerquery@hoffset}{\bbrchallengerqryspace}
+}
+
+\newcommand{\bbrchallengerqryto}[1]{
+ \@bbrchallengerqry{#1}{->}{\@bb@challengerquery@hoffset}{\bbrchallengerqryspace}
+}
+
+
+
+\newcommand*\bbrcomloopleft{}
+\newcommand*\bbrcomloopright{}
+\newcommand*\bbrcomloopcenter{}
+\newcommand*\bbrcomloopangle{50}
+\define@key{bbrcomloop}{left}[]{\renewcommand*\bbrcomloopleft{#1}}
+\define@key{bbrcomloop}{right}[]{\renewcommand*\bbrcomloopright{#1}}
+\define@key{bbrcomloop}{center}[]{\renewcommand*\bbrcomloopcenter{#1}}
+\define@key{bbrcomloop}{angle}[]{\renewcommand*\bbrcomloopangle{#1}}
+
+\newcommand{\bbrloop}[3]{
+ \begingroup % for local keys
+ \setkeys{bbrcomloop}{#3}%
+
+ \path[->] (#1) edge[bend right=\bbrcomloopangle] node[midway,left] (bbrleft) {\bbrcomloopleft} (#2);
+ \path[->] (#2) edge[bend right=\bbrcomloopangle] node[midway,right] (bbrright) {\bbrcomloopright} (#1);
+ \node[at=($(bbrleft.north west)!0.5!(bbrright.north east)$),anchor=north]() {\bbrcomloopcenter};
+
+ \endgroup
+}
+
+\newcommand*\bbrintertexthoffset{1.5cm}
+\define@key{bbrintertext}{xshift}[]{\renewcommand*\bbrintertexthoffset{#1}}
+
+\newcommand{\@bb@intertextsetup}[1]{
+ %load keys
+ \begingroup % for local keys
+
+ \setkeys{bbrcom,bbrabase,bbrintertext}{#1}%
+
+ \tikzset{BBRBASE-NODESTYLE/.style/.expand once=\bbrbasenodestyle}%
+}
+
+\newcommand{\@bb@intertextfinalize}[1]{
+ #1{\bbrcomafterskip}
+ \endgroup
+}
+
+\newcommand{\@bbrintertext}[6]{
+ \@bb@intertextsetup{#1}
+
+ % increase space
+ \ifthenelse{\lengthtest{#4<\@bb@firstmessageheight}}
+ {#5{\@bb@firstmessageheight}}
+ {#5{1\baselineskip}}
+
+ \setlength{\@bb@com@tmpoffset}{#4+\bbrcombeforeskip}%
+
+ %
+ \node[#2=\@bb@com@tmpoffset and \bbrintertexthoffset of \@bb@lastbox.#3,BBRBASE-NODESTYLE] (\bbrbasenodename) {#6};
+ %
+ % compute height of node
+ \coordinate (@bbtmpcoord) at (\bbrbasenodename.north);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordA}
+ \coordinate (@bbtmpcoord) at (\bbrbasenodename.south);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordB}
+
+ % update hoffset
+ \setlength{\@bb@tmplength@b}{\YCoordA-\YCoordB}
+ #5{\the\@bb@tmplength@b}
+
+ \@bb@intertextfinalize{#5}
+}
+
+\newcommand{\bbrmsgtxt}[2][]{
+ \@bbrintertext{#1}{below left}{north west}{\@bb@message@hoffset}{\bbrmsgspace}{#2}
+}
+
+\newcommand{\bbrqrytxt}[2][]{
+ \@bbrintertext{#1}{below right}{north east}{\@bb@query@hoffset}{\bbrqryspace}{#2}
+}
+
+\newcommand{\bbrchallengertxt}[2][]{
+\begingroup
+\setlength{\@bb@tmplength@b}{\bbrchallengerhdistance/2}%
+\renewcommand{\bbrintertexthoffset}{\the\@bb@tmplength@b}%
+ \@bbrintertext{#1}{below left}{north west}{\@bb@challengerquery@hoffset}{\bbrchallengerqryspace}{#2}
+\endgroup
+}
+
+\newcommand{\bbroracletxt}[2][]{
+\begingroup
+\setlength{\@bb@tmplength@b}{\bbroraclehdistance/2}%
+\renewcommand{\bbrintertexthoffset}{\the\@bb@tmplength@b}%
+ \@bbrintertext{#1}{below left}{north west}{\@bb@oraclequery@hoffset}{\bbroracleqryspace}{#2}
+\endgroup
+}
+
+\newcommand{\bbrmsgspace}[1]{
+\@pc@globaladdtolength{\@bb@message@hoffset}{#1}
+}
+
+\newcommand{\bbrqryspace}[1]{
+\@pc@globaladdtolength{\@bb@query@hoffset}{#1}
+}
+
+\newcommand{\bbroracleqryspace}[1]{
+\@pc@globaladdtolength{\@bb@oraclequery@hoffset}{#1}
+}
+
+\newcommand{\bbrchallengerqryspace}[1]{
+\@pc@globaladdtolength{\@bb@challengerquery@hoffset}{#1}
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% stacking
+\providecommand{\pccenteraboveskip}{0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}
+\providecommand{\pccenterbelowskip}{0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}
+\newenvironment{pccenter}{%
+\setlength\topsep{0pt}\setlength\parskip{0pt}%
+\begin{center}\vspace{\pccenteraboveskip}%
+}{%
+\vspace{\pccenterbelowskip}%
+\end{center}}
+
+
+%%%%%%%%%%%%%%%%%%%%%
+% horizontal stacking
+% space before hstacks
+\newlength{\pcbeforehstackskip}
+
+\NewEnviron{pchstack}[1][]{%
+% write out content
+\ifthenelse{\equal{#1}{center}}{%
+\begin{pccenter}\mbox{\hspace{\pcbeforehstackskip}\BODY}\end{pccenter}}{%
+\mbox{\hspace{\pcbeforehstackskip}\BODY}}%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+\NewEnviron{pcvstack}[1][]{%
+% display minipage
+\ifthenelse{\equal{#1}{center}}{\begin{pccenter}}{}%
+\begin{varwidth}[t]{2\linewidth}\hspace{0pt}\BODY\end{varwidth}% hspace needed for proper vertical positioning .. strange as it is.
+\ifthenelse{\equal{#1}{center}}{\end{pccenter}}{}%
+}
+
+
+% spacing for stacking
+\newcommand{\pchspace}[1][1em]{\hspace{#1}}
+\newcommand{\pcvspace}[1][\baselineskip]{\par\vspace{#1}}
+
+
+
+
+
+%%%%
+% subprocedures
+\newcounter{@pcsubprogcnt1}
+\newcounter{@pcrsubprogcnt1}
+\newcounter{@pcsubprogcnt2}
+\newcounter{@pcrsubprogcnt2}
+\newcounter{@pcsubprogcnt3}
+\newcounter{@pcrsubprogcnt3}
+\newcounter{@pcsubprogcnt4}
+\newcounter{@pcrsubprogcnt4}
+\newcounter{@pcsubprogcnt5}
+\newcounter{@pcrsubprogcnt5}
+\newcounter{@pcsubprogcnt6}
+\newcounter{@pcrsubprogcnt6}
+\newcounter{@pcsubprogcnt7}
+\newcounter{@pcrsubprogcnt7}
+\newcounter{@pcsubprogcnt8}
+\newcounter{@pcrsubprogcnt8}
+\newcounter{@pcsubprogcnt9}
+\newcounter{@pcrsubprogcnt9}
+\newcounter{@pcsubprogstep}
+
+\newenvironment{subprocedure}{%
+\addtocounter{@pcsubprogstep}{1}%
+% store old counter values
+\setcounter{@pcsubprogcnt\the@pcsubprogstep}{\value{pclinenumber}}%
+\setcounter{@pcrsubprogcnt\the@pcsubprogstep}{\value{pcrlinenumber}}%
+}{%
+\setcounter{pclinenumber}{\value{@pcsubprogcnt\the@pcsubprogstep}}%
+\setcounter{pcrlinenumber}{\value{@pcrsubprogcnt\the@pcsubprogstep}}%
+\addtocounter{@pcsubprogstep}{-1}}
+
+
+%%%%%
+% parameter reordering
+\def\@pseudocodeB#1#2[#3]#4{\setkeys*{pcspace}{#2,#3}\@pseudocode[head={#1#4},#2,#3]}
+\def\@pseudocodeC#1#2#3{\setkeys*{pcspace}{#2}\@pseudocode[head={#1#3},#2]}
+%for no headers
+\def\@pseudocodeE#1#2[#3]{\setkeys*{pcspace}{#2,#3}\@pseudocode[head={#1},#2,#3]}
+\def\@pseudocodeF#1#2{\setkeys*{pcspace}{#2}\@pseudocode[head={#1},#2]}
+
+%%%%%%%%%
+% Define pseudocode command:
+% #1 name
+% #2 code to execute after begingroup
+% #3 head prefix
+% #4 other config
+\newcommand{\createprocedurecommand}[4]{
+ \expandafter\gdef\csname #1\endcsname{%
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+#2%
+\@ifnextchar[%]
+ {\@pseudocodeB{#3}{#4}}
+ {\@pseudocodeC{#3}{#4}}%
+}%
+}
+
+\newcommand{\createpseudocodecommand}[4]{
+ \expandafter\gdef\csname #1\endcsname{%
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+#2%
+\@ifnextchar[%]
+ {\@pseudocodeE{#3}{#4}}
+ {\@pseudocodeF{#3}{#4}}%
+}%
+}
+
+
+%%%%%%
+% create procedure
+\createprocedurecommand{procedure}{}{}{}
+
+
+
+
+%%%
+% send message
+\newcommand{\pcshortmessageoffset}{0.5cm}
+\newcommand{\pcdefaultmessagelength}{3.5cm}
+\newcommand{\pcdefaultlongmessagelength}{6cm}
+\newcommand{\pcbeforemessageskip}{0pt}
+\newcommand{\pcaftermessageskip}{10pt}
+\newlength{\pcmessagearrow}
+
+\newcommand*\@pcsendmessagelength{\pcdefaultmessagelength}
+\newcommand*\@pcsendmessagecol{}
+\newcommand*\@pcsendmessagewidth{}
+\newcommand*\@pcsendmessagestyle{}
+\newcommand*\@pcsendmessagetop{}
+\newcommand*\@pcsendmessagebottom{}
+\newcommand*\@pcsendmessageright{}
+\newcommand*\@pcsendmessageleft{}
+\newcommand*\@pcsendmessagetopname{t}
+\newcommand*\@pcsendmessagebottomname{b}
+\newcommand*\@pcsendmessagerightname{r}
+\newcommand*\@pcsendmessageleftname{l}
+\newcommand*\@pcsendmessagetopstyle{}
+\newcommand*\@pcsendmessagebottomstyle{}
+\newcommand*\@pcsendmessagerightstyle{}
+\newcommand*\@pcsendmessageleftstyle{}
+\newcommand*\@pcsendmessagebeforeskip{\pcbeforemessageskip}
+\newcommand*\@pcsendmessageafterskip{\pcaftermessageskip}
+\define@key{pcsendmessage}{centercol}[]{\renewcommand*\@pcsendmessagecol{#1}}
+\define@key{pcsendmessage}{width}[]{\renewcommand*\@pcsendmessagewidth{#1}}
+\define@key{pcsendmessage}{style}[]{\renewcommand*\@pcsendmessagestyle{#1}}
+\define@key{pcsendmessage}{length}[]{\renewcommand*\@pcsendmessagelength{#1}}
+\define@key{pcsendmessage}{top}[]{\renewcommand*\@pcsendmessagetop{#1}}
+\define@key{pcsendmessage}{bottom}[]{\renewcommand*\@pcsendmessagebottom{#1}}
+\define@key{pcsendmessage}{right}[]{\renewcommand*\@pcsendmessageright{#1}}
+\define@key{pcsendmessage}{left}[]{\renewcommand*\@pcsendmessageleft{#1}}
+\define@key{pcsendmessage}{topname}[]{\renewcommand*\@pcsendmessagetopname{#1}}
+\define@key{pcsendmessage}{bottomname}[]{\renewcommand*\@pcsendmessagebottomname{#1}}
+\define@key{pcsendmessage}{rightname}[]{\renewcommand*\@pcsendmessagerightname{#1}}
+\define@key{pcsendmessage}{leftname}[]{\renewcommand*\@pcsendmessageleftname{#1}}
+\define@key{pcsendmessage}{topstyle}[]{\renewcommand*\@pcsendmessagetopstyle{#1}}
+\define@key{pcsendmessage}{bottomstyle}[]{\renewcommand*\@pcsendmessagebottomstyle{#1}}
+\define@key{pcsendmessage}{rightstyle}[]{\renewcommand*\@pcsendmessagerightstyle{#1}}
+\define@key{pcsendmessage}{leftstyle}[]{\renewcommand*\@pcsendmessageleftstyle{#1}}
+\define@key{pcsendmessage}{beforeskip}[]{\renewcommand*\@pcsendmessagebeforeskip{#1}}
+\define@key{pcsendmessage}{afterskip}[]{\renewcommand*\@pcsendmessageafterskip{#1}}
+
+
+\newcommand{\@pc@centerincol}[2]{%
+\ifmeasuring@%
+#2%
+\else%
+\makebox[\ifcase\expandafter #1\maxcolumn@widths\fi]{$\displaystyle#2$}%
+\fi%
+}
+
+\newcommand{\centerincol}[1]{\@pc@centerincol{\thepccolumncounter}{#1}}
+
+\newcommand{\@do@sendmessage}[1]{%
+\ifthenelse{\equal{\@pcsendmessagecol}{}}{%
+\ifthenelse{\equal{\@pcsendmessagewidth}{}}{#1}{% we have some width
+\makebox[\@pcsendmessagewidth]{$\displaystyle#1$}%
+}}{%we know the column to center on
+\@pc@centerincol{\@pcsendmessagecol}{#1}%
+}%
+}
+
+\newcommandx*{\sendmessage}[2]{%
+\begingroup\setkeys{pcsendmessage}{#2}%
+\tikzset{PCSENDMSG-PATH-STYLE/.style/.expand once=\@pcsendmessagestyle}%
+\tikzset{PCSENDMSG-TOP-STYLE/.style/.expand once=\@pcsendmessagetopstyle}%
+\tikzset{PCSENDMSG-BOTTOM-STYLE/.style/.expand once=\@pcsendmessagebottomstyle}%
+\tikzset{PCSENDMSG-LEFT-STYLE/.style/.expand once=\@pcsendmessageleftstyle}%
+\tikzset{PCSENDMSG-RIGHT-STYLE/.style/.expand once=\@pcsendmessagerightstyle}%
+%restore halign
+%
+\hspace{\@pcsendmessagebeforeskip}%
+\begin{varwidth}{\linewidth}
+\@do@sendmessage{
+ \begin{tikzpicture}%
+ \node[PCSENDMSG-LEFT-STYLE] (\@pcsendmessageleftname) {\@pcsendmessageleft};
+ \node[right=\@pcsendmessagelength of \@pcsendmessageleftname,PCSENDMSG-RIGHT-STYLE] (\@pcsendmessagerightname) {\@pcsendmessageright};
+ \path[#1,PCSENDMSG-PATH-STYLE] (\@pcsendmessageleftname) edge[] node[above,PCSENDMSG-TOP-STYLE] (\@pcsendmessagetopname) {\@pcsendmessagetop} node[below,PCSENDMSG-BOTTOM-STYLE] (\@pcsendmessagebottomname) {\@pcsendmessagebottom} (\@pcsendmessagerightname);
+ \end{tikzpicture}%
+}%
+\end{varwidth}
+\hspace{\@pcsendmessageafterskip}%
+\endgroup%
+}
+
+\newcommandx*{\sendmessageright}[2][1=->]{%
+\sendmessage{#1}{#2}%
+}
+
+\newcommandx*{\sendmessageleft}[2][1=<-]{%
+\sendmessage{#1}{#2}%
+}
+
+\WithSuffix\newcommand\sendmessageleft*[2][\pcdefaultmessagelength]{%
+\begingroup%
+\renewcommand{\@pcsendmessagetop}{\let\halign\@pc@halign$\begin{aligned}#2\end{aligned}$}%
+\sendmessage{<-}{length=#1}%
+\endgroup%
+}
+
+
+\WithSuffix\newcommand\sendmessageright*[2][\pcdefaultmessagelength]{%
+\begingroup%
+\renewcommand{\@pcsendmessagetop}{\let\halign\@pc@halign$\begin{aligned}#2\end{aligned}$}%
+\sendmessage{->}{length=#1}%
+\endgroup%
+}
+
+
+
+\DeclareExpandableDocumentCommand{\sendmessagerightx}{O{\pcdefaultlongmessagelength}mO{}m}{%
+\multicolumn{#2}{c}{\ensuremath{\hspace{\pcbeforemessageskip}\xrightarrow[\begin{aligned}#3\end{aligned}]{\mathmakebox[#1]{\begin{aligned}#4\end{aligned}}}\hspace{\pcaftermessageskip}}}
+}
+
+\DeclareExpandableDocumentCommand{\sendmessageleftx}{O{\pcdefaultlongmessagelength}mO{}m}{%
+\multicolumn{#2}{c}{\ensuremath{\hspace{\pcbeforemessageskip}\xleftarrow[\begin{aligned}#3\end{aligned}]{\mathmakebox[#1]{\begin{aligned}#4\end{aligned}}}\hspace{\pcaftermessageskip}}}
+}
+
+%%%
+% Division
+\DeclareExpandableDocumentCommand{\pcintertext}{O{}m}{\intertext{%
+\ifthenelse{\equal{#1}{center}}{\makebox[\linewidth][c]{#2}}{}%
+\ifthenelse{\equal{#1}{dotted}}{\dotfill#2\dotfill}{}%
+\ifthenelse{\equal{#1}{}}{#2}{}%
+}\@pc@beginnewline}
+
+
+
+%%%
+% Games
+%
+\newcounter{pcstartgamecounter}
+
+
+\newcommand*{\pcgameprocedurestyle}{} % define pseudocode arguments for game procedures
+
+\newcommand*{\pcgamename}{\ensuremath{\mathsf{Game}}}
+\newcommand*{\gameprocedurearg}{\ensuremath{(\secpar)}}
+\newcommand*\@pcgameproofgamenr{0}
+\define@key{pcgameproof}{nr}[]{\renewcommand*\@pcgameproofgamenr{#1}}
+\define@key{pcgameproof}{name}[]{\renewcommand*\pcgamename{\ensuremath{#1}}}
+\define@key{pcgameproof}{arg}[]{\renewcommand*\gameprocedurearg{\ensuremath{#1}}}
+
+\newenvironment{gameproof}[1][]{%
+\begingroup%
+\setkeys{pcgameproof}{#1}%
+\@pc@ensureremember%
+\setcounter{pcgamecounter}{\@pcgameproofgamenr}%
+\setcounter{pcstartgamecounter}{\@pcgameproofgamenr}\stepcounter{pcstartgamecounter}%
+}{\@pc@releaseremember\endgroup}
+
+\newcommand{\setgameproceduredefaultstyle}[1]{%
+\createpseudocodecommand{gameprocedure}
+ {\addtocounter{pcgamecounter}{1}\renewcommand{\@withingame}{true}}
+ {\ensuremath{\pcgamename_{\thepcgamecounter}\gameprocedurearg}}
+ {#1}
+}
+\setgameproceduredefaultstyle{}
+
+\def\@bxgame@pseudocodeA[#1]#2#3{\setkeys*{pcspace}{#1}\renewcommand{\@bxgameheader}{$\pcgamename_{#2}$\gameprocedurearg}%
+\@pseudocode[head=\ensuremath{\pcgamename_{\thepcgamecounter}\gameprocedurearg},#1]{#3}}
+\def\@bxgame@pseudocodeB#1#2{\renewcommand{\@bxgameheader}{$\pcgamename_{#1}$\gameprocedurearg}%
+\@pseudocode[head=\ensuremath{\pcgamename_{\thepcgamecounter}\gameprocedurearg}]{#2}}
+
+\newcommand{\bxgameprocedure}{
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+\renewcommand{\@withingame}{true}%
+\renewcommand{\@withinbxgame}{true}%
+\stepcounter{pcgamecounter}%
+\@ifnextchar[%]
+ {\@bxgame@pseudocodeA}
+ {\@bxgame@pseudocodeB}%
+}
+
+\newcommand{\@pc@secondheader}{}
+
+%tbx top boxed
+\createpseudocodecommand{tbxgameprocedure}
+ {\addtocounter{pcgamecounter}{1}\renewcommand{\@withingame}{true}%%
+\renewcommand{\@pc@secondheader}{true}}
+ {\ensuremath{\pcgamename_{\thepcgamecounter}\gameprocedurearg}}
+{}
+
+
+\newcommand*\@pcgamehopnodestyle{}
+\newcommand*\@pcgamehopedgestyle{bend left}
+\newcommand*\@pcgamehoppathestyle{}
+\newcommand*\@pcgamehophint{}
+\newcommand*\@pcgamehophintbelow{}
+\newcommand*\@pcgamehopinhint{}
+\newcommand*\@pcgamehoplength{1.5cm}
+\define@key{pcgamehop}{nodestyle}[]{\renewcommand*\@pcgamehopnodestyle{#1}}
+\define@key{pcgamehop}{edgestyle}[]{\renewcommand*\@pcgamehopedgestyle{#1}}
+\define@key{pcgamehop}{pathstyle}[]{\renewcommand*\@pcgamehoppathestyle{#1}}
+\define@key{pcgamehop}{hint}[]{\renewcommand*\@pcgamehophint{#1}}
+\define@key{pcgamehop}{belowhint}[]{\renewcommand*\@pcgamehophintbelow{#1}}
+\define@key{pcgamehop}{inhint}[]{\renewcommand*\@pcgamehopinhint{#1}}
+\define@key{pcgamehop}{length}[]{\renewcommand*\@pcgamehoplength{#1}}
+
+
+\newcommand{\@pc@setupgamehop}[1]{
+\begingroup\setkeys{pcgamehop}{#1}%
+\tikzset{GAMEHOP-PATH-STYLE/.style/.expand once=\@pcgamehoppathestyle}%
+\tikzset{GAMEHOP-NODE-STYLE/.style/.expand once=\@pcgamehopnodestyle}%
+\tikzset{GAMEHOP-EDGE-STYLE/.style/.expand once=\@pcgamehopedgestyle}%
+}
+
+\newcommand{\@pc@finalizegamehop}{
+\endgroup
+}
+
+\newcommandx*{\addgamehop}[3]{%
+\begingroup%
+\ifthenelse{#1<#2}%
+ {\ifthenelse{\equal{\@withingamedescription}{true}}%
+ {\renewcommand*\@pcgamehopedgestyle{bend right=20}\renewcommand*\@pcgamehopnodestyle{rotate=90}}{}%
+ }%
+ {\renewcommand*\@pcgamehopedgestyle{bend right}}%
+\@pc@setupgamehop{#3}%
+\begin{tikzpicture}[overlay]%
+\ifthenelse{#1<#2}{%
+ \path[->,GAMEHOP-PATH-STYLE] (gamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (gamenode#2);
+}{%
+ \path[->,GAMEHOP-PATH-STYLE] (bgamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (bgamenode#2);
+}%
+\end{tikzpicture}%
+\@pc@finalizegamehop%
+\endgroup%
+}
+\newcommandx*{\addstartgamehop}[2][1=\thepcstartgamecounter]{%
+\@pc@setupgamehop{#2}
+\begin{tikzpicture}[overlay]
+ \node[left=\@pcgamehoplength of gamenode#1] (tmpgamenode0) {};
+ \path[->,GAMEHOP-PATH-STYLE] (tmpgamenode0) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (gamenode#1);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+\newcommandx*{\addendgamehop}[2][1=\thepcgamecounter]{%
+\@pc@setupgamehop{#2}
+\begin{tikzpicture}[overlay]
+ \node[right=\@pcgamehoplength of gamenode#1] (tmpgamenode#1) {};
+ \path[->,GAMEHOP-PATH-STYLE] (gamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (tmpgamenode#1);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+\newcommandx*{\addbxgamehop}[3]{%
+\@pc@setupgamehop{#3}
+\begin{tikzpicture}[overlay]
+ \path[->,GAMEHOP-PATH-STYLE] (bgamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE]] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (bgamenode#2);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+\newcommandx*{\addloopgamehop}[2][1=\thepcgamecounter]{%
+\@pc@setupgamehop{#2}
+\begin{tikzpicture}[overlay]
+ \node (looptemp1) [right=0.5cm of gamenode#1] {};
+ \draw[->,GAMEHOP-PATH-STYLE] (gamenode#1) -- (looptemp1|-gamenode#1) -- node[right,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[left,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (looptemp1|-bgamenode#1)-- (bgamenode#1);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+
+
+%%%%%%%%
+% game description
+\newenvironment{gamedescription}[1][]{%
+\begingroup%
+\setkeys{pcgameproof}{#1}
+\renewcommand{\@withingamedescription}{true}%
+\@pc@ensureremember%
+\setcounter{pcgamecounter}{\@pcgameproofgamenr}%
+\setcounter{pcstartgamecounter}{\@pcgameproofgamenr}\stepcounter{pcstartgamecounter}%
+\begin{description}%
+}{\end{description}\@pc@releaseremember\endgroup}
+
+\newcommandx*{\describegame}[1][1=]{%
+\addtocounter{pcgamecounter}{1}%
+\item[%
+\pcdraw{
+\gdef\i{\thepcgamecounter}%
+\node[inner sep=0.0em,outer sep=0, xshift=-1ex, yshift=0.5ex] (gamenode\i) {};
+}%
+\ensuremath{\pcgamename_{\thepcgamecounter}\gameprocedurearg}:]%
+\begingroup\setkeys{pcgamehop}{#1}%
+\ifthenelse{\equal{}{\@pcgamehophint}}
+ {}
+ {\hspace{-0.7ex}\pcdraw{%the -0.7ex is a horrible hack to fix a whitespace issue with tikz (see http://tex.stackexchange.com/questions/22873/tikzpicture-with-overlay-takes-up-space
+\tikzset{GAMEHOP-PATH-STYLE/.style/.expand once=\@pcgamehoppathestyle}%
+\tikzset{GAMEHOP-NODE-STYLE/.style/.expand once=\@pcgamehopnodestyle}%
+\draw[->,GAMEHOP-PATH-STYLE] (gamenode\thepcgamecounter) --++ (0,-\@pcgamehoplength) node[midway,above,xshift=-1mm,rotate=90,GAMEHOP-NODE-STYLE] {\@pcgamehophint};
+}}%
+\ifthenelse{\equal{}{\@pcgamehopinhint}}
+ {}
+ {\hspace{-0.7ex}\pcdraw{%the -0.7ex is a horrible hack to fix a whitespace issue with tikz (see http://tex.stackexchange.com/questions/22873/tikzpicture-with-overlay-takes-up-space
+\tikzset{GAMEHOP-PATH-STYLE/.style/.expand once=\@pcgamehoppathestyle}%
+\tikzset{GAMEHOP-NODE-STYLE/.style/.expand once=\@pcgamehopnodestyle}%
+\draw[<-,GAMEHOP-PATH-STYLE] (gamenode\thepcgamecounter) --++ (0,\@pcgamehoplength) node[midway,above,xshift=-1mm,rotate=90,GAMEHOP-NODE-STYLE] {\@pcgamehopinhint};
+}%
+}%
+\endgroup%
+}
+
+
+
+
+
+
+%%%%%%%%
+% basic pseudocode constants
+
+\newcommand{\highlightkeyword}[2][\ ]{\ensuremath{\mathbf{#2}}#1}
+\newcommand{\highlightaltkeyword}[1]{\ensuremath{\mathsf{#1}}}
+
+\newcommand{\pcglobvar}{\highlightkeyword{gbl}}
+\newcommand{\pcnew}{\highlightkeyword{new}}
+\newcommand{\pcwhile}{\@pc@increaseindent\highlightkeyword{while}}
+\newcommand{\pcendwhile}{\@pc@decreaseindent\highlightkeyword{endwhile}}
+\newcommandx*{\pcdo}[2][1=\ ,2=]{#1\highlightkeyword[#2]{do}}
+\newcommandx*{\pcif}[1][1=\ ]{\@pc@increaseindent\highlightkeyword[#1]{if}}
+\newcommandx*{\pcunless}[1][1=\ ]{\@pc@increaseindent\highlightkeyword[#1]{unless}}
+\newcommandx*{\pcelse}[1][1=\ ]{\@pc@tmpdecreaseindent\highlightkeyword[#1]{else}}
+\newcommandx*{\pcelseif}[1][1=\ ]{\@pc@tmpdecreaseindent\highlightkeyword[#1]{else if}}
+\newcommand{\pcfi}{\@pc@decreaseindent\highlightkeyword{fi}}
+\newcommand{\pcendif}{\@pc@decreaseindent\highlightkeyword{endif}}
+\newcommand{\pcendfor}{\@pc@decreaseindent\highlightkeyword{endfor}}
+\newcommandx*{\pcthen}[2][1=\ ,2=\ ]{#1\highlightkeyword[#2]{then}}
+\newcommand{\pcreturn}{\highlightkeyword{return}}
+\newcommandx*{\pcin}[2][1=\ ,2=]{#1\highlightkeyword[#2]{in}}
+\newcommandx*{\pcfor}[1][1=\ ]{\@pc@increaseindent\highlightkeyword[#1]{for}}
+\newcommand{\pcrepeat}[1]{\@pc@increaseindent\ensuremath{\highlightkeyword{repeat} #1\ \highlightkeyword{times}}}
+\newcommand{\pcrepeatuntil}[2]{\ensuremath{\highlightkeyword{repeat}\ #1\ \highlightkeyword{until}\ #2}}
+\newcommand{\pcforeach}{\@pc@increaseindent\highlightkeyword{foreach}}
+\newcommand{\pcendforeach}{\@pc@decreaseindent\highlightkeyword{endforeach}}
+\newcommand{\pcuntil}{\@pc@decreaseindent\highlightkeyword{until}}
+\newcommand{\pccontinue}{\highlightkeyword{continue}}
+\newcommandx*{\pcfalse}[2][1=\ ,2=]{\highlightkeyword[#2]{false}}
+\newcommandx*{\pctrue}[2][1=\ ,2=]{\highlightkeyword[#2]{true}}
+\newcommandx*{\pcnull}[2][1=\ ,2=]{\highlightkeyword[#2]{null}}
+\newcommand{\pccomment}[1]{{\mbox{/\!\!/ } \text{\scriptsize#1}}}
+\newcommand{\pcdone}{\highlightkeyword{done}}
+\newcommand{\pcparse}{\highlightkeyword{parse}}
+\newcommand{\pcfail}{\highlightkeyword{fail}}
+\newcommand{\pcabort}{\highlightkeyword{abort}}
+
+%%%
+% highlighting
+\definecolor{gamechangecolor}{gray}{0.90}
+\newcommand{\gamechange}[2][gamechangecolor]{%
+{\setlength{\fboxsep}{0pt}\colorbox{#1}{\ifmmode$\displaystyle#2$\else#2\fi}}%
+}
+
+%%%
+% boxing
+\newcommand{\pcbox}[1]{%
+{\setlength{\fboxsep}{3pt}\fbox{$\displaystyle#1$}}
+}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/cryptocode/cryptocode.dtx b/macros/latex/contrib/cryptocode/cryptocode.dtx
new file mode 100644
index 0000000000..f2cf2f7a9a
--- /dev/null
+++ b/macros/latex/contrib/cryptocode/cryptocode.dtx
@@ -0,0 +1,9392 @@
+%\iffalse
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\DeclareRelease{v0.30}{2018-11-11}{cryptocode-2018-11-11.sty}
+\DeclareRelease{v0.32}{2020-04-24}{cryptocode-2020-04-24.sty}
+\DeclareCurrentRelease{v0.40}{2020-07-10}
+\ProvidesPackage{cryptocode}
+ [2020/07/10 v0.40 Cryptocode LaTeX package for typesetting pseudocode, algorithms and protocols as well as cryptographic proofs.]
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2020 Arno Mittelbach, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage[usenames]{xcolor}
+\usepackage{hypdoc}
+\usepackage[
+ n,
+ operators,
+ advantage,
+ sets,
+ adversary,
+ landau,
+ probability,
+ notions,
+ logic,
+ ff,
+ mm,
+ primitives,
+ events,
+ complexity,
+ oracles,
+ asymptotics,
+ keys]{cryptocode}
+
+\createpseudocodeblock{pcb}{center,boxed}{}{}{}
+\createprocedureblock{procb}{center,boxed}{}{}{}
+\usepackage{csquotes}
+\usepackage{fullpage}
+\usepackage{dashbox}
+\usepackage{textcomp}
+\usepackage{url}
+\usepackage{xspace}
+
+\usetikzlibrary{shapes.callouts}
+
+\usepackage{listings}
+
+\usepackage{trace}
+
+\usepackage{makeidx}
+\usepackage{mdframed}
+
+\definecolor{mygreen}{rgb}{0,0.6,0}
+\definecolor{mygray}{rgb}{0.1,0.1,0.1}
+\definecolor{verylightgray}{rgb}{0.9,0.9,0.9}
+\definecolor{mymauve}{rgb}{0.58,0,0.82}
+
+\let\amipagebreak\pagebreak
+
+\setlength{\textwidth}{386pt}
+\addtolength\marginparwidth{50pt}
+\addtolength\oddsidemargin{40pt}
+\addtolength\evensidemargin{40pt}
+
+\lstset{language=[LaTeX]TeX,
+ backgroundcolor=\color{verylightgray}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
+ rulecolor=\color{lightgray},
+ basicstyle=\scriptsize, % the size of the fonts that are used for the code
+ breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+ breaklines=true, % sets automatic line breaking
+ captionpos=b, % sets the caption-position to bottom
+ commentstyle=\color{mygreen}, % comment style
+ escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
+ extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
+ frame=single, % adds a frame around the code
+ keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
+ keywordstyle=\color{blue}, % keyword style
+ numbers=left, % where to put the line-numbers; possible values are (none, left, right)
+ numbersep=5pt, % how far the line-numbers are from the code
+ numberstyle=\scriptsize\color{mygray}, % the style that is used for the line-numbers
+ rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
+ showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
+ showstringspaces=false, % underline spaces within strings only
+ showtabs=false, % show tabs within strings adding particular underscores
+ stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
+ stringstyle=\color{mymauve}, % string literal style
+ frameround=ftff,
+ belowskip=-0.8 \baselineskip,
+ aboveskip=1em,
+ tabsize=2, % sets default tabsize to 2 spaces
+ title=\lstname }
+
+ \CodelineIndex
+\CodelineIndex
+\RecordChanges
+\begin{document}
+\DocInput{cryptocode.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \changes{v0.10}{2015/03/30}{Initial version}
+% \changes{v0.11}{2016/11/30}{changed command pckeystyle to ensure that subscripts on $\sk$ and $\pk$ are aligned the same
+% before, $(\sk_R, \pk_R)$ had slightly misaligned subscripts due to Tex treating
+% subscripts on composite objects with descenders differently than without.}
+% ^^A see \url{https://groups.google.com/forum/#!msg/comp.text.tex/IaXu_xBG06Q/CibRPH5GCAAJ}
+%
+% \changes{v0.11}{2016/11/30}{Added \textbackslash{}NAND command.}
+% \changes{v0.11}{2016/11/30}{Added \emph{pcmbox} environment for matrices in pseudocode.}
+%
+% \changes{v0.20}{2016/12/02}{Changed \emph{minheight} for bbrbox environment to actually reflect a minimum height in tikz.
+% The old minheight which added space at the bottom was preserved as \emph{addheight}.}
+% \changes{v0.20}{2016/12/02}{Added namepos middle for bbrbox.}
+% \changes{v0.20}{2016/12/02}{Added \textbackslash{}pcfail.}
+% \changes{v0.20}{2016/12/02}{Added valign to pseudocode to allow minipage vertical alignment.}
+% \changes{v0.20}{2016/12/02}{Ensure line numbers are right aligned to allow for two digit linenumbers having the same width.}
+%
+% \changes{v0.04}{2017/08/26}{added \textbackslash{}pcabort.}
+% \changes{v0.04}{2017/08/26}{better control whitespace for \textbackslash{}pcif, \textbackslash{}pcelse, \textbackslash{}pcelseif.}
+%
+% \changes{v0.05}{2017/10/02}{side and oside support to \textbackslash{}bbroracleqryto and \textbackslash{}bbroracleqryfrom}
+% \changes{v0.05}{2017/10/02}{add bottom to namepos in bbrbox}
+% \changes{v0.05}{2017/10/02}{names for brrinput and bbroutput}
+% \changes{v0.05}{2017/10/02}{angle for bbrloop}
+% \changes{v0.05}{2017/10/02}{fix length for bbrinput}
+% \changes{v0.05}{2017/10/02}{introduce hoffset for bbrinput}
+%
+% \changes{v0.06}{2017/12/21}{added \textbackslash{}pcunless}
+%
+% \changes{v0.30}{2018/11/11}{replace obsolete l3regex}
+%
+% \changes{v0.31}{2018/11/26}{added \textbackslash{}tprob (variants for prob and co for in-text)}
+% \changes{v0.31}{2018/11/26}{added \textbackslash{}prp}
+%
+% \changes{v0.32}{2020/01/11}{allow to control spacing with \textbackslash{}pcfor}
+% \changes{v0.32}{2020/01/11}{allow overwriting rule command in pseudocode via headlinecmd (defaults to \textbackslash{}hrule)}
+%
+% \changes{v0.40}{2020/06/20}{Bigger refactoring. Not completely backwards compatible. In particular, optimized spacing of pseudocode blocks and black box reductions.}
+% \changes{v0.40}{2020/06/20}{Switched to mathtools \emph{DeclarePairedDelimiter} for paired operators.
+% Each paired operator comes in two forms, e.g, \emph{abs} and \emph{tabs} the latter to be used in flowtext
+% which does not scale the outer delimiters.}
+% \changes{v0.40}{2020/06/20}{Adjusted spacing via \textbackslash{}pcaboveskip and \textbackslash{}pcbelowskip which are
+% added to \textbackslash{}pseudocode blocks and \emph{pchstack} environments}
+% \changes{v0.40}{2020/06/20}{Added block forms for pseudocode and procedure commands (\textbackslash{}pseudocodeblock and \textbackslash{}procedureblock).}
+% \changes{v0.40}{2020/06/20}{Added minlineheight option to \textbackslash{}pseudocode.}
+% \changes{v0.40}{2020/06/20}{Added headheight option to \textbackslash{}pseudocode.}
+% \changes{v0.40}{2020/06/20}{Added \textbackslash{}argmax and \textbackslash{}argmin to operators.}
+% \changes{v0.40}{2020/06/20}{Added \textbackslash{}pindist, \textbackslash{}sindist, and \textbackslash{}cindist to operators.}
+% \changes{v0.40}{2020/06/20}{Added aboveskip and belowskip option to \textbackslash{}pchstack and \textbackslash{}pcvstack.}
+% \changes{v0.40}{2020/06/20}{Added boxed, inline, noindent options to \textbackslash{}pchstack and \textbackslash{}pcvstack.}
+% \changes{v0.40}{2020/06/20}{Added space option to \textbackslash{}pchstack and \textbackslash{}pcvstack.}
+% \changes{v0.40}{2020/06/20}{Renamed horizontal spacing commands \textbackslash{}beforepcskip and \textbackslash{}afterpcskip to \textbackslash{}pcbeforeskip and \textbackslash{}pcafterskip.}
+% \changes{v0.40}{2020/06/20}{Added command \textbackslash{}pcsetargs to define default arguments for pseudocode blocks.}
+% \changes{v0.40}{2020/06/20}{Added command \textbackslash{}pcsethstackargs and \textbackslash{}pcsetvstackargs to define default arguments for hstack and vstack environments.}
+% \changes{v0.40}{2020/06/20}{Adapted bbrenv environment to take key value option list. Old format is still supported but deprecated.}
+% \changes{v0.40}{2020/06/20}{Added additional polynomials.}
+% \changes{v0.40}{2020/06/20}{Added additional adversaries.}
+% \changes{v0.40}{2020/06/20}{Added additional complexity classes.}
+% \changes{v0.40}{2020/06/20}{Added oracles package option.}
+% \changes{v0.40}{2020/06/20}{Fixed spacing issues with black box reduction messages.}
+% \changes{v0.40}{2017/10/02}{Added clockwise, leftstyle, centerstyle, rightstyle for bbrloop. Adjusted placing of center.}
+% \changes{v0.40}{2017/10/02}{Added fixedoffset, fixedboffset, islast for reduction messages.}
+%
+%
+%
+%
+%
+% \author{Arno Mittelbach\\
+% \texttt{mail@arno-mittelbach.de}\\
+% \url{https://github.com/arnomi/cryptocode}\thanks{If you use cryptocode in your work, consider starring the repository on GitHub and/or rating it on CTAN.}}
+% \title{\Huge Cryptocode \\ \large\textsc{Typesetting Cryptography}}
+%
+%
+% \maketitle
+%
+%
+%
+%
+% \begin{abstract}
+% \thispagestyle{empty}
+% The cryptocode package provides a set of macros to ease the typesetting of
+% pseudocode, algorithms and protocols (such as the one below). In addition it comes with a wide range of tools to typeset cryptographic papers (hence the name).
+% This includes simple predefined commands for typesetting probabilities and \enquote{commonly encountered math}
+% as well as for concepts such as
+% a security parameter $\secparam$ or advantage terms $\advantage{prf}{\adv,\prf} = \negl$. Furthermore, it includes
+% environments to layout game-based proofs or black-box reductions.
+%
+% \vspace{2em}
+% \begin{center}
+% \fbox{
+% \pseudocode{%
+% \textbf{ Alice} \< \< \textbf{ Bob} \\[0.1\baselineskip][\hline]
+% \<\< \\[-0.5\baselineskip]
+% x \sample \ZZ_q \< \< \\
+% X \gets g^x \<\< \\[-4ex]
+% \< \sendmessageright*{\GG,q,g,X} \< \\[-2ex]
+% \<\< y \sample \ZZ_q \\
+% \<\< Y \gets g^y \\[-4ex]
+% \< \sendmessageleft*{Y} \< \\
+% \key_A \gets Y^x \<\< \key_B \gets X^y }
+% }
+% \end{center}
+%
+%
+% \end{abstract}
+% \newpage
+%
+% \pagenumbering{roman}
+%
+% \tableofcontents
+% \thispagestyle{empty}
+% \newpage
+%
+% \pagenumbering{arabic}
+%
+%
+% \section{Cryptocode by Example}
+%
+% The cryptocode package provides a set of commands to ease the typesetting of
+% pseudocode, protocols, game-based proofs and black-box reductions. In addition it comes
+% with a large number of predefined commands. In this section we present the various features of
+% cryptocode by giving small examples. But first, let's load the package
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\usepackage[
+ n, % or lambda
+ advantage,
+ operators,
+ sets,
+ adversary,
+ landau,
+ probability,
+ notions,
+ logic,
+ ff,
+ mm,
+ primitives,
+ events,
+ complexity,
+ oracles,
+ asymptotics,
+ keys
+]{cryptocode}\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% Note that all the options refer to a set of commands. That is, without any options cryptocode will provide the mechanisms
+% for writing pseudocode, protocols, game-based proofs and black-box reductions but not define additional commands,
+% such as |\pk| or |\sk| (for typesetting public and private/secret keys) which are part of the keys option.
+% We discuss the various options and associated commands in Section~\ref{chap:commands}.
+%
+%
+% \subsection{Pseudocode}
+% The cryptocode package tries to make writing pseudocode easy and enjoyable. The
+% |\pseudocode| command takes a single parameter where you can start writing
+% code in mathmode using \lstinline{\\} as line breaks. Following is an $\indcpa$ game
+% definition using various commands from cryptocode to ease writing keys (\lstinline{\pk,\sk}),
+% sampling (\lstinline{\sample}), and more:
+%
+% \medskip
+% \pseudocode[linenumbering]{
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam) \\
+% (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c, \state) \\
+% \pcreturn b = b' }
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \pseudocode[linenumbering]{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \amipagebreak
+%
+% In many cases, we want to set pseudocode blocks in-between paragraphs with spacing
+% similar to how we would offset equations. For this, and for laying out multiple code
+% blocks, cryptocode offers \enquote{stacking} environments |\pchstack| and |\pcvstack|.
+% For typesetting a code block nicely centered and boxed
+% \begin{pchstack}[center,boxed]
+% \pseudocode[linenumbering]{
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam) \\
+% (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c, \state) \\
+% \pcreturn b = b' }
+% \end{pchstack}
+% you could thus use:
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{pchstack}[center,boxed]
+ \pseudocode[linenumbering]{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \\
+ \pcreturn b = b' }
+\end{pchstack}\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% As this is a common task, cryptocode offers the |\pseudocodeblock| command which
+% is a shorthand for the above (without the frame). In case you want to provide different
+% options or a shorter command (say |\pcb|) you can easily define the command via
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \createpseudocodeblock{pcb}{center,boxed}{}{}{}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The above could now be written, more succinctly as
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\pcb[linenumbering]{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \\
+ \pcreturn b = b'
+}\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% The pseudocode command (and its block variant) takes a single mandatory argument (the code) plus an optional argument
+% which allows you to specify options in a key=value fashion. In the above example we used the linenumbering
+% option.
+%
+% \medskip
+%
+% It is easy to define a heading for your code. Either specify the header using the option \enquote{head} or use
+% the |\procedure| command (or its block variant |\procedureblock|) which takes an additional argument to specify the headline.
+%
+% \procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secpar)$}{
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam) \\
+% (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c, \state) \\
+% \pcreturn b = b' }
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secpar)$}{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% Similarly to before, we can define a shorthand and boxed variant as
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \createprocedureblock{procb}{center,boxed}{}{}{}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% There is a lot more that we will discuss in detail in Section~\ref{chap:pseudocode}. Here, for example,
+% is the same code with an overlay explanation and a division of the pseudocode.
+%
+% \begin{pcimage}
+% \procb[linenumbering]{$\indcpa_\enc^\adv(\secpar)$}{
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam)\pcnode{kgen} \pclb
+% \pcintertext[dotted]{Setup Completed}
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c, \state) \\
+% \pcreturn b = b' }
+%
+% \pcdraw{
+% \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
+% at ([shift={(+3,-1)}]kgen) {
+% \begin{varwidth}{3cm}
+% $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
+% \end{varwidth}
+% };
+% }
+% \end{pcimage}
+%
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \begin{pcimage}
+ \procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secpar)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam)\pcnode{kgen} \pclb
+ \pcintertext[dotted]{Setup Completed}
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \\
+ \pcreturn b = b' }
+
+ \pcdraw{
+ \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
+ at ([shift={(+3,-1)}]kgen) {
+ \begin{varwidth}{3cm}
+ $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
+ \end{varwidth}
+ };
+ }
+ \end{pcimage}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Stacking}
+%
+% To arrange multiple procedures, cryptocode offers horizontal and vertical stacking
+% environments |\pchstack| and |\pcvstack|. In the example below we arrange four
+% code blocks in three columns equispaced with 1cm distance and stack two procedures
+% in the center column.
+%
+% \begin{pchstack}[center,space=1cm]
+% \procedure{A}{
+% a \sample A \\
+% \pcreturn a
+% }
+%
+% \begin{pcvstack}[boxed,space=0.5cm]
+% \procedure{B.1}{
+% b \sample B \\
+% \pcreturn b
+% }
+% \procedure{B.1}{
+% b \sample B \\
+% \pcreturn b
+% }
+% \end{pcvstack}
+%
+% \procedure{C}{
+% c \sample C \\
+% \pcreturn c
+% }
+% \end{pchstack}
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{pchstack}[center,space=1cm]
+ \procedure{A}{
+ a \sample A \\
+ \pcreturn a
+ }
+
+ \begin{pcvstack}[boxed,space=0.5cm]
+ \procedure{B.1}{
+ b \sample B \\
+ \pcreturn b
+ }
+ \procedure{B.1}{
+ b \sample B \\
+ \pcreturn b
+ }
+ \end{pcvstack}
+
+ \procedure{C}{
+ c \sample C \\
+ \pcreturn c
+ }
+\end{pchstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Columns}
+% The |\pseudocode| and |\procedure| commands allow the usage of multiple columns.
+% You switch to a new column by inserting a |\>|. This is similar to using an |align|
+% environment and placing a tabbing \& character.\footnote{In fact, the \emph{pseudocode} command
+% is based on amsmath's flalign environment.}
+% \pcb{
+% \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
+% b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock{%
+ \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
+ b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% As you can see the first column is left aligned the second right, the third left and so forth.
+% In order to get only left aligned columns you could thus always skip a column by
+% using |\>\>| or you can alternatively use |\<| as a shorthand for |\>\>|.
+% \pcb{
+% \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
+% b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
+%
+% \subsection{Protocols}
+% Using columns makes it easy to write even complex protocols. Following is a simple
+% three-party protocol.
+% \pcb{
+% \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\[][\hline]
+% \text{work} \< \< \< \< \\
+% \< \sendmessageright{top=Work result,topstyle=red} \< \< \< \\
+% \< \< \text{work} \< \< \\
+% \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
+% \< \< \< \< \text{work} \\
+% \< \sendmessageleftx{8}{\text{A long message for Alice}} \< \\
+% \text{finalize} \< \< \< \< }
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \pseudocodeblock{
+ \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\[][\hline]
+ \text{work} \< \< \< \< \\
+ \< \sendmessageright{top=Work result,topstyle=red} \< \< \< \\
+ \< \< \text{work} \< \< \\
+ \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
+ \< \< \< \< \text{work} \\
+ \< \sendmessageleftx{8}{\text{A long message for Alice}} \< \\
+ \text{finalize} \< \< \< \< }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The commands |\sendmessageright| and |\sendmessageleft| are very flexible and
+% allow to style the sending of messages in various ways. Also note the |\\[][\hline]| at the end of the
+% first line. Here the first optional argument allows us to specify the lineheight (similarly to the behavior in an
+% align environment) while the second optional argument allows us to, for example, draw a horizontal line.
+%
+% \medskip
+% In multi-player protocols such as the one
+% above the commands |\sendmessagerightx| and |\sendmessageleftx| (note the x at the end)
+% allow to send messages over multiple columns. In the example, as we were using |\<| the
+% final message thus spans 8 columns.
+%
+% \medskip
+% For basic protocols you might also utilize the |\sendmessageright*| and |\sendmessageleft*|
+% commands which simply take a message which is displayed (in math mode) on top.
+% \pcb{
+% \textbf{ Alice} \< \< \textbf{ Bob} \\[0.1\baselineskip][\hline]
+% \<\< \\[-0.5\baselineskip]
+% x \sample \ZZ_q \< \< \\
+% X \gets g^x \<\< \\
+% \< \sendmessageright*{\GG,q,g,X} \< \\
+% \<\< y \sample \ZZ_q \\
+% \<\< Y \gets g^y \\
+% \< \sendmessageleft*{Y} \< \\
+% \key_A \gets Y^x \<\< \key_B \gets X^y
+% }
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\pseudocodeblock{
+ \textbf{ Alice} \< \< \textbf{ Bob} \\[0.1\baselineskip][\hline]
+ \<\< \\[-0.5\baselineskip]
+ x \sample \ZZ_q \< \< \\
+ X \gets g^x \<\< \\
+ \< \sendmessageright*{\GG,q,g,X} \< \\
+ \<\< y \sample \ZZ_q \\
+ \<\< Y \gets g^y \\
+ \< \sendmessageleft*{Y} \< \\
+ \key_A \gets Y^x \<\< \key_B \gets X^y }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% We will discuss protocols in greater detail in Section~\ref{chap:protocols}.
+%
+% \subsection{Game-Based Proofs}
+% Cryptocode supports authors in visualizing game-based proofs. It defines an environment
+% |gameproof| which allows to wrap a number of game procedures displaying helpful
+% information as to what changes from game to game and to what each step is reduced.
+%
+%\begin{gameproof}
+% \begin{pchstack}[center,space=1em]
+% \gameprocedure[linenumbering,minlineheight=1.5em]{%
+% \text{Step 1} \\
+% \\
+% \text{Step 2}
+% }
+%
+% \tbxgameprocedure[minlineheight=1.5em]{%
+% \text{Step 1} \\
+% \pcbox{\text{From game 3 on}} \\
+% \gamechange{\text{Step 3 is different}}
+% }
+%
+% \gameprocedure[minlineheight=1.5em]{%
+% \text{Step 1} \\
+% \text{From game 3 on}\\
+% \text{\gamechange{Step 3 adapted again}}
+% }
+%
+% \end{pchstack}
+%\end{gameproof}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{gameproof}
+ \begin{pchstack}[center,space=1em]
+ \gameprocedure[linenumbering,minlineheight=1.5em]{%
+ \text{Step 1} \\
+ \\
+ \text{Step 3}
+ }
+
+ \tbxgameprocedure[minlineheight=1.5em]{%
+ \text{Step 1} \\
+ \pcbox{\text{From game 3 on}} \\
+ \gamechange{\text{Step 3 is different}}
+ }
+
+ \gameprocedure[minlineheight=1.5em]{%
+ \text{Step 1} \\
+ \text{From game 3 on}\\
+ \text{\gamechange{Step 3 adapted again}}
+ }
+
+ \end{pchstack}
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Note that we made use of the option \enquote{mode=text} in the above example which tells the underlying pseudocode
+% command to not work in math mode but in plain text mode. We will discuss how to visualize game-based proofs in Section~\ref{chap:gbproofs}.
+%
+% \subsection{Black-Box Reductions}
+% Cryptocode provides a strucured syntax to visualize black-box reductions. Basically cryptocode
+% provides an environment to draw boxes that may have oracles and/or challengers and that can be communicated with.
+% Cryptocode makes heavy use of TIKZ (\url{https://www.ctan.org/pkg/pgf}) for this, which gives you
+% quite some control over how things should look like. Additionally, as you can specify node names
+% (for example the outer box in the next example is called \enquote{A}) you can easily extend the pictures
+% by using plain TIKZ commands. Following is an example reduction. We discuss the details in Section~\ref{chap:bbr}.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something} \\
+% \text{Step 2}
+% }
+%
+% \begin{bbrenv}{B}
+% \begin{bbrbox}[name=Adversary,minheight=2.25cm]
+% \end{bbrbox}
+%
+% \bbrmsgto{top=$m$}
+% \bbrmsgfrom{top=$\sigma$}
+% \bbrmsgtxt{\pseudocode{%
+% \text{more work}
+% }}
+% \bbrmsgto{top=$m$}
+% \bbrmsgfrom{top=$\sigma$}
+%
+% \bbrqryto{side=$m$}
+% \bbrqryfrom{side=$b$}
+% \end{bbrenv}
+%
+% \pseudocode{
+% \text{finalize}
+% }
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+%
+% \begin{bbroracle}{OraA}
+% \begin{bbrbox}[name=Oracle 1,minheight=1cm]
+% \end{bbrbox}
+% \end{bbroracle}
+% \bbroracleqryto{top=$m$}
+% \bbroracleqryfrom{top=$b$}
+%
+% \begin{bbroracle}{OraB}
+% \begin{bbrbox}[name=Oracle 2,minheight=1cm]
+% \end{bbrbox}
+% \end{bbroracle}
+% \bbroracleqryto{top=$m$}
+% \bbroracleqryfrom{top=$b$}
+% \end{bbrenv}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something} \\
+ \text{Step 2}
+ }
+
+ \begin{bbrenv}{B}
+ \begin{bbrbox}[name=Adversary,minheight=2.25cm]
+ \end{bbrbox}
+
+ \bbrmsgto{top=$m$}
+ \bbrmsgfrom{top=$\sigma$}
+ \bbrmsgtxt{\pseudocode{%
+ \text{more work}
+ }}
+ \bbrmsgto{top=$m$}
+ \bbrmsgfrom{top=$\sigma$}
+
+ \bbrqryto{side=$m$}
+ \bbrqryfrom{side=$b$}
+ \end{bbrenv}
+
+ \pseudocode{
+ \text{finalize}
+ }
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+
+ \begin{bbroracle}{OraA}
+ \begin{bbrbox}[name=Oracle 1,minheight=1cm]
+ \end{bbrbox}
+ \end{bbroracle}
+ \bbroracleqryto{top=$m$}
+ \bbroracleqryfrom{top=$b$}
+
+ \begin{bbroracle}{OraB}
+ \begin{bbrbox}[name=Oracle 2,minheight=1cm]
+ \end{bbrbox}
+ \end{bbroracle}
+ \bbroracleqryto{top=$m$}
+ \bbroracleqryfrom{top=$b$}
+\end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \amipagebreak
+% \section{Notation Macros}
+% \label{chap:commands}
+% \index{package options}
+% In this section we'll discuss the various commands for notation that can be
+% loaded via package options.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\usepackage[
+ n, % or lambda
+ advantage,
+ operators,
+ sets,
+ adversary,
+ landau,
+ probability,
+ notions,
+ logic,
+ ff,
+ mm,
+ primitives,
+ events,
+ complexity,
+ oracles,
+ asymptotics,
+ keys
+ ]{cryptocode}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \textbf{Remark. }
+% Note that the available command sets are far from complete and
+% reflect my own work (especially once you get to cryptographic notions and primitives).
+% In case you feel that something should be added feel free to drop me an email,
+% or better yet, open an issue and pull request on github (\url{https://github.com/arnomi/cryptocode}).
+%
+% \subsection{Security Parameter}
+% \index{security parameter|see {package options}}
+% \index{package options!security parameter}
+% In cryptography we make use of a security parameter which is usually denoted by $1^n$ or $1^\lambda$. The cryptocode
+% package, when loading either option \enquote{n} or option \enquote{lambda} will define the commands
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \secpar
+ \secparam
+ \SECPAR
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The first command provides the \enquote{letter}, i.e., either $n$ or $\lambda$, whereas |\secparam| prints
+% |\1^\secpar| (i.e., $\secparam$ for option \enquote{n}). Finally, |\SECPAR| yields $N_0$ (resp.~$\Lambda$)
+% and is meant to be used in sentences such as, \enquote{there exists $\SECPAR\in\NN$ such that for all $\secpar \geq \SECPAR$, ...}
+%
+% \subsection{Advantage Terms}
+% Load the package option ``advantage'' in order to define the command |\advantage| used to specify advantage terms such as:
+% \[
+% \advantage{prf}{\adv,\prf}
+% \]
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \advantage{prf}{\adv,\prf}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Specify an optional third parameter to replace the $(\secpar)$.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \advantage{prf}{\adv,\prf}[(arg)]
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% In order to redefine the styles in which superscript and subscript are set, or in case
+% you want to replace the term $\pcadvantagename$, redefine:
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcadvantagename}{\mathsf{Adv}}
+ \renewcommand{\pcadvantagesuperstyle}[1]{\mathrm{\MakeLowercase{#1}}}
+ \renewcommand{\pcadvantagesubstyle}[1]{#1}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Math Operators}
+% \index{operators|see {package options}}
+% \index{package options!operators}
+% \index{math operators|see {package options}}
+% \index{\textbackslash{} sample}
+% \index{\textbackslash{} floor}
+% \index{\textbackslash{} tfloor}
+% \index{\textbackslash{} ceil}
+% \index{\textbackslash{} tceil}
+% \index{\textbackslash{} Angle}
+% \index{\textbackslash{} tAngle}
+% \index{\textbackslash{} abs}
+% \index{\textbackslash{} tabs}
+% \index{\textbackslash{} norm}
+% \index{\textbackslash{} tnorm}
+% \index{\textbackslash{} concat}
+% \index{\textbackslash{} emptystring}
+% \index{\textbackslash{} argmax}
+% \index{\textbackslash{} argmin}
+% \index{\textbackslash{} pindist}
+% \index{\textbackslash{} cindist}
+% \index{\textbackslash{} sindist}
+% The \enquote{operators} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l p{5cm} l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} & \textbf{Example} \\\hline
+% |\sample| & Sampling from a distribution, or running a randomized procedure & $\sample$ & $b \sample \bin$ \\
+% |\floor{42.5}| & Rounding down & $\floor{42.5}$ & \\
+% |\ceil{41.5}| & Rounding up & $\ceil{41.5}$ & \\
+% |\Angle{x,y}| & Vector product & $\Angle{x,y}$ & \\
+% |\abs{\frac{a}{b}}| & Absolute number & $\abs{\frac{a}{b}}$ & \\
+% |\norm{x}| & Norm & $\norm{x}$ & \\
+% |\concat| & Verbose concatenation (I usually prefer simply \verb$\|$) & $\concat$ & $x \gets a\concat b$ \\
+% |\emptystring| & The empty string & $\emptystring$ & $x \gets \emptystring$ \\
+% |\argmax| & arg max & $\argmax$ & $\argmax_{x \in S} f(x)$ \\
+% |\argmin| & arg min & $\argmin$ & $\argmin_{x \in S} f(x)$ \\
+% |\pindist| & Perfect indistinguishability & $\pindist$ & $X \pindist Y$ \\
+% |\sindist| & Statistical indistinguishability & $\sindist$ & $X \sindist Y$ \\
+% |\cindist| & Computational indistinguishability & $\cindist$ & $X \cindist Y$
+% \end{tabular}
+% \end{center}
+%
+% The paired operators |\floor|, |\ceil|, |\Angle|, |\norm|, and |\abs| also
+% come in a form for flow text which does not scale the outer delimter. These
+% are |\tfloor|, |\tceil|, |\tAngle|, |\tnorm|, and |\tabs|.
+%
+% Note that $\argmax$ and $\argmin$ in block formulas will set their subscripts as limits, i.e.,:
+%
+% \[ \argmax_{x \in S} f(x) \]
+%
+% \subsection{Adversaries}
+% \index{adversary|see {package options}}
+% \index{package options!adversary}
+% The \enquote{adversary} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\adv| & Adversary & $\adv$ \\
+% |\bdv| & Adversary & $\bdv$ \\
+% |\cdv| & Adversary & $\cdv$ \\
+% |\ddv| & Adversary & $\ddv$ \\
+% |\edv| & Adversary & $\edv$ \\
+% |\mdv| & Adversary & $\mdv$ \\
+% |\pdv| & Adversary & $\pdv$ \\
+% |\rdv| & Adversary & $\rdv$ \\
+% |\sdv| & Adversary & $\sdv$
+% \end{tabular}
+% \end{center}
+%
+% \noindent The style in which an adversary is rendered is controlled via
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcadvstyle}[1]{\ensuremath{\mathcal{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% \subsection{Landau}
+% \index{Landau|see {package options}}
+% \index{package options!Landau}
+% The \enquote{landau} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\bigO{n^2}| & Big O(micron) notation & $\bigO{n^2}$ \\
+% |\smallO{n^2}| & small o(micron) notation & $\smallO{n^2}$ \\
+% |\bigOmega{n^2}| & Big Omega notation & $\bigOmega{n^2}$ \\
+% |\bigTheta{n^2}| & Big Theta & $\bigTheta{n^2}$ \\
+% |\orderOf| & On the order of & $f(n) \orderOf g(n)$
+% \end{tabular}
+% \end{center}
+%
+%
+% \subsection{Probabilities}
+% \index{probability|see {package options}}
+% \index{package options!probabilities}
+% The \enquote{probability} option provides commands for writing probabilities. Use
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \prob{X=x}
+ \probsub{x\sample{\bin^n}}{x=5}
+ \condprob{X=x}{A=b}
+ \condprobsub{x\sample{\bin^n}}{x=5}{A=b}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% to write basic probabilities, probabilities with explicit probability spaces and conditional probabilities.
+% \begin{align*}
+% & \prob{X=x} \\
+% & \probsub{x\sample{\bin^n}}{X=x} \\
+% & \condprob{X=x}{A=b} \\
+% & \condprobsub{x\sample{\bin^n}}{x=5}{A=b}
+% \end{align*}
+% You can control the probability symbol (Pr) by redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\probname}{Pr}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The probability commands have a flowtext version |\tprob{X=X}| or |\tcondprob{X=x}{Y=y}|
+% which does not scale the delimiters.
+% In case the probability space is more complex, you can use
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \probsublong{x,y\sample\set{1,2,3,4,5,6}, z = x + y}{z = 7}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% which yields
+% \[ \probsublong{x,y\sample\set{1,2,3,4,5,6}, z = x + y}{z = 7}.\]
+%
+%
+% For specifying expectations the following commands are defined
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \expect{X}
+ \expsub{x,y\sample\set{1,\ldots,6}}{x+y}
+ \condexp{X+Y}{Y>3}
+ \condexpsub{x,y\sample\set{1,\ldots,6}}{x+y}{y>3}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% yielding
+% \begin{align*}
+% & \expect{X} \\
+% & \expsub{x,y\sample\set{1,\ldots,6}}{x+y} \\
+% & \condexp{X+Y}{Y>3} \\
+% & \condexpsub{x,y\sample\set{1,\ldots,6}}{x+y}{y>3}
+% \end{align*}
+% Again flowtext versions such as |\texpect{X}| are available.
+% To control the expactation symbol ($\mathbb{E}$), redefine
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\expectationname}{\ensuremath{\mathbb{E}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% The support $\supp{X}$ of a random variable $X$ can be written as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \supp{X}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% where again the name can be controlled via
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\supportname}{Supp}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% For denoting entropy and min-entropy use
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \entropy{X}
+ \minentropy{X}
+ \condentropy{X}{Y=5}
+ \condminentropy{X}{Y=5}
+ \condavgminentropy(X}{Y=5}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% This yields
+% \begin{align*}
+% & \entropy{X} \\
+% & \minentropy{X} \\
+% & \condentropy{X}{Y=5} \\
+% & \condminentropy{X}{Y=5} \\
+% & \condavgminentropy{X}{Y=5}
+% \end{align*}
+%
+% \subsection{Sets}
+% \index{sets|see {package options}}
+% \index{package options!sets}
+% The \enquote{sets} option provides commands for basic mathematical sets.
+% You can write sets and sequences as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \set{1, \ldots, 10}
+ \sequence{1, \ldots, 10}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% which are typeset as
+% \begin{align*}
+% & \set{1, \ldots, 10} \\
+% & \sequence{1, \ldots, 10}
+% \end{align*}
+% In addition, the following commands are provided
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\bin| & The set containing 0 and 1 & $\bin$ \\
+% |\NN| & Natural numbers & $\NN$ \\
+% |\ZZ| & Integers & $\ZZ$ \\
+% |\QQ| & Rational numbers & $\QQ$ \\
+% |\CC| & Complex numbers & $\CC$ \\
+% |\RR| & Reals & $\RR$ \\
+% |\PP| & & $\PP$ \\
+% |\FF| & & $\FF$ \\
+% |\GG| & & $\GG$ \\
+% \end{tabular}
+% \end{center}
+%
+% The style in which sets are being set can be adapted by redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcsetstyle}[1]{\ensuremath{\mathbb{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Cryptographic Notions}
+% \index{notions|see {package options}}
+% \index{package options!notions}
+% \index{Crypto notions|see {package options}}
+% The \enquote{notions} option defines the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l p{8cm} l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\indcpa| & IND-CPA security for encryption schemes & $\indcpa$ \\
+% |\indcca| & IND-CCA security for encryption schemes & $\indcca$ \\
+% |\indccai| & IND-CCA1 security for encryption schemes & $\indccai$ \\
+% |\indccaii| & IND-CCA2 security for encryption schemes & $\indccaii$ \\
+% |\ind| & IND security & $\ind$ \\
+% |\priv| & PRIV security for deterministic public-key encryption schemes & $\priv$ \\
+% |\prvcda| & PRV-CDA security (for deterministic public-key encryption schemes)& $\prvcda$ \\
+% |\prvrcda| & PRV\$-CDA security (for deterministic public-key encryption schemes) & $\prvrcda$ \\
+% |\kiae| & Key independent authenticated encryption & $\kiae$ \\
+% |\kdae| & Key dependent authenticated encryption & $\kdae$ \\
+% |\mle| & Message locked encryption & $\mle$ \\
+% |\uce| & Universal computational extractors & $\uce$ \\
+% |\eufcma| & Existential unforgeability under chosen message attack & $\eufcma$ \\
+% |\eufnacma| & Non-adaptive existential unforgeability under chosen message attack & $\eufnacma$ \\
+% |\seufcma| & Strong existential unforgeability under chosen message attack & $\seufcma$ \\
+% |\eufko| & Existential unforgeability under key only attack & $\eufko$
+% \end{tabular}
+% \end{center}
+%
+% The style in which notions are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcnotionstyle}[1]{\ensuremath{\mathrm{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Logic}
+% \index{logic|see {package options}}
+% \index{package options!logic}
+% The \enquote{logic} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\AND| & Logical AND & $\AND$ \\
+% |\NAND| & Logical NAND & $\NAND$ \\
+% |\OR| & Logical OR & $\OR$ \\
+% |\NOR| & Logical NOR & $\NOR$ \\
+% |\XOR| & Logical XOR & $\XOR$ \\
+% |\XNOR| & Logical XNOR & $\XNOR$ \\
+% |\notimplies| & Negated implication & $\notimplies$ \\
+% |\NOT| & not & $\NOT$ \\
+% |\xor| & exclusive or & $\xor$ \\
+% |\false| & false & $\false$ \\
+% |\true| & true & $\true$
+% \end{tabular}
+% \end{center}
+%
+%
+% \subsection{Function Families}
+% \index{ff|see {package options}}
+% \index{package options!ff}
+% \index{function families|see {package options}}
+% The \enquote{ff} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\kgen| & Key generation & $\kgen$ \\
+% |\pgen| & Parameter generation & $\pgen$ \\
+% |\eval| & Evaluation & $\eval$ \\
+% |\invert| & Inversion & $\invert$ \\
+% |\il| & Input length & $\il$ \\
+% |\ol| & Output length & $\ol$ \\
+% |\kl| & Key length & $\kl$ \\
+% |\nl| & Nonce length & $\nl$ \\
+% |\rl| & Randomness length & $\rl$
+% \end{tabular}
+% \end{center}
+%
+% The style in which these are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcalgostyle}[1]{\ensuremath{\mathsf{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% \subsection{Machine Model}
+% \index{machine model|see {package options}}
+% \index{package options!mm}
+% \index{mm|see {package options}}
+% The \enquote{mm} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\CRKT| & A circuit & $\CRKT$ \\
+% |\TM| & A Turing machine & $\TM$ \\
+% |\PROG| & A program & $\PROG$ \\
+% |\uTM| & A universal Turing machine & $\uTM$ \\
+% |\uC| & A universal Circuit & $\uC$ \\
+% |\uP| & A universal Program & $\uP$ \\
+% |\tmtime| & Time (of a TM) & $\tmtime$ \\
+% |\ppt| & Probabilistic polynomial time & $\ppt$
+% \end{tabular}
+% \end{center}
+%
+% The style in which these are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcmachinemodelstyle}[1]{\ensuremath{\mathsf{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \amipagebreak
+% \subsection{Crypto Primitives}
+% \index{primitives|see {package options}}
+% \index{package options!primitives}
+% \index{Crypto primitives|see {package options}}
+% The \enquote{primitives} option provides the following list of commands:
+%
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\prover| & Proover & $\prover$ \\
+% |\verifier| & Verifier & $\verifier$ \\
+% |\nizk| & Non interactie zero knowledge & $\nizk$ \\
+% |\hash| & A hash function & $\hash$ \\
+% |\gash| & A hash function& $\gash$ \\
+% |\fash| & A hash function & $\fash$ \\
+% |\pad| & A padding function & $\pad$ \\
+% |\enc| & Encryption & $\enc$ \\
+% |\dec| & Decryption & $\dec$ \\
+% |\sig| & Signing & $\sig$ \\
+% |\sign| & Signing & $\sign$ \\
+% |\verify| & Verifying & $\verify$ \\
+% |\owf| & One-way function & $\owf$ \\
+% |\prf| & Pseudorandom function & $\prf$ \\
+% |\prp| & Pseudorandom permutation & $\prp$ \\
+% |\prg| & Pseudorandom generator & $\prg$ \\
+% |\obf| & Obfuscation & $\obf$ \\
+% |\iO| & Indistinguishability obfuscation & $\iO$ \\
+% |\diO| & Differing inputs obfuscation & $\diO$ \\
+% |\mac| & Message authentication & $\mac$ \\
+% |\puncture| & Puncturing & $\puncture$ \\
+% |\source| & A source & $\source$ \\
+% |\predictor| & A predictor & $\predictor$ \\
+% |\sam| & A sampler & $\sam$ \\
+% |\distinguisher| & A distinguisher & $\distinguisher$ \\
+% |\dist| & A distinguisher& $\dist$ \\
+% |\simulator| & A simulator & $\simulator$ \\
+% |\extractor| & An extractor & $\extractor$ \\
+% |\ext| & Shorthand for |\extractor| & $\ext$
+% \end{tabular}
+% \end{center}
+%
+% The style in which these are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcalgostyle}[1]{\ensuremath{\mathsf{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Oracles}
+% \index{oracles|see {package options}}
+% \index{package options!oracles}
+% The \enquote{oracles} option provides the following list of commands:
+%
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\oracle| & Generic oracle & $\oracle$ \\
+% |\oracle[LoR]| & Custom oracle & $\oracle[LoR]$ \\
+% |\ro| & Random oracle & $\ro$ \\
+% |\Oracle{\sign}| & Oracle version of procedure & $\Oracle{\sign}$
+% \end{tabular}
+% \end{center}
+%
+% The style in which these are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcoraclestyle}[1]{\ensuremath{\mathsf{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Events}
+% \index{events|see {package options}}
+% \index{package options!events}
+% The \enquote{events} option provides the following list of commands.
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\event{E}| & Event \event{E} & $\event{E}$ \\
+% |\nevent{E}| & Negated event \event{E} & $\nevent{E}$ \\
+% |\bad| & Bad event & $\bad$ \\
+% |\nbad| & Bad event & $\nbad$
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Complexity}
+% \index{complexity|see {package options}}
+% \index{package options!complexity}
+% The \enquote{complexity} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Result} \\\hline
+% |\complclass{myClass}| & $\complclass{myClass}$ \\
+% |\cocomplclass{myClass}| & $\cocomplclass{myClass}$ \\
+% |\npol| & $\npol$ \\
+% |\conpol| & $\conpol$ \\
+% |\pol| & $\pol$ \\
+% |\bpp| & $\bpp$ \\
+% |\ppoly| & $\ppoly$ \\
+% |\NC{1}| & $\NC1$ \\
+% |\AC{1}| & $\AC1$ \\
+% |\TC{1}| & $\TC1$ \\
+% |\AM| & $\AM$ \\
+% |\coAM| & $\coAM$ \\
+% |\PH| & $\PH$ \\
+% |\csigma{1}| & $\csigma{1}$ \\
+% |\cpi{1}| & $\cpi{1}$ \\
+% |\cosigma{1}| & $\cosigma{1}$ \\
+% |\copi{1}| & $\copi{1}$
+% \end{tabular}
+% \end{center}
+%
+% The style in which these are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pccomplexitystyle}[1]{\ensuremath{\mathsf{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \amipagebreak
+% \subsection{Asymptotics}
+% \index{asymptotics|see {package options}}
+% \index{package options!asymptotics}
+% The \enquote{asymptotics} option provides the following list of commands:
+%
+% \begin{center}
+% \begin{tabular}{l l p{7.5cm}}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |\negl| & A negligible function & $\negl$ (\secpar\ is |\secpar|) \\
+% |\negl[x]| & A negligible function & $\negl[x]$ \\
+% |\negl[]| & A negligible function & $\negl[]$ \\
+% |\poly| & A polynomial & $\poly$ (\secpar\ is |\secpar|) \\
+% |\poly[x]| & A polynomial & $\poly[x]$ \\
+% |\poly[]| & A polynomial & $\poly[]$ \\
+% |\pp| & some polynomial $\pp$ & $\pp$ \\
+% |\pp[t]| & some custom polynomial $\pp[t]$ & $\pp[t]$ \\
+% |\cc| & some polynomial $\cc$ & $\cc$ \\
+% |\ee| & some polynomial $\ee$ & $\ee$ \\
+% |\kk| & some polynomial $\kk$ & $\kk$ \\
+% |\mm| & some polynomial $\mm$ & $\mm$ \\
+% |\nn| & some polynomial $\nn$ & $\nn$ \\
+% |\qq| & some polynomial $\qq$ & $\qq$ \\
+% |\rr| & some polynomial $\rr$ & $\rr$
+% \end{tabular}
+% \end{center}
+%
+% The style in which these are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcpolynomialstyle}[1]{\ensuremath{\mathrm{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Keys}
+% \index{keys|see {package options}}
+% \index{package options!keys}
+% The \enquote{keys} option provides the following list of commands:
+%
+%
+% \begin{center}
+% \begin{tabular}{l l l}
+% \textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
+% |pk| &public key & $\pk$ \\
+% |vk| & verification key& $\vk$ \\
+% |sk| & secret key& $\sk$ \\
+% |key| & a plain key& $\key$ \\
+% |key[xk]| & custom key & $\key[xk]$ \\
+% |hk| & hash key& $\hk$ \\
+% |gk| &gash key & $\gk$ \\
+% |fk| & function key & $\fk$ \\
+% |st| & state & $\st$ \\
+% |state| & state & $\state$ \\
+% |state{myState}| & custom state & $\state{myState}$
+% \end{tabular}
+% \end{center}
+%
+% The style in which these are displayed can be controlled via redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pckeystyle}[1]{\ensuremath{\mathsf{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% \amipagebreak
+% \section{Pseudocode}
+% \label{chap:pseudocode}
+%
+% \subsection{Basics}
+% \index{\textbackslash pseudocode}
+%
+% The cryptocode package provides the command |\pseudocode| for typesetting algorithms.
+% Consider the following definition of an IND-CPA game
+%
+% \begin{pchstack}[center]
+% \pseudocode{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam) \\
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+% \end{pchstack}
+% which is generated by
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{pchstack}[center]
+\pseudocode{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{pchstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% First note that |\pseudocode| on its own does not space itself. For laying out
+% one (or multiple) code blocks cryptocode
+% defines stacking environemnts such as |\pchstack| and |\pcvstack| that we discuss
+% in Section~\ref{chap:stacking}. Wrapping a single pseudocode in a |\pchstack|
+% as in the above example generates a nicely offset code block.
+%
+% \medskip
+% As code blocks are most often not used in flow text, cryptocode offers the shorthand
+% |\pseudocodeblock| which centers and offsets a pseudocode block as above. We thus
+% get the very same by writing
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\pseudocodeblock{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% We can also define custom block commands, for example, the following defines
+% a command |\pcb| that offsets and centers code and draws a tight fitting box around the code block:
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\createpseudocodeblock{pcb}{center,boxed}{}{}{}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% (We discuss creating custom pseudocode commands in detail in Section~\ref{sec:custom:pc:command}).
+% If we now use |\pcb| as just defined in the above example, we obtain the following
+% nicely spaced and boxed result.
+% \pcb{
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam) \\
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+% which is generated as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pcb{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \textbf{Remark. } In the following we will use this boxed representation for the examples, but
+% use |\pseudocodeblock| in the corresponding code listings.
+%
+% \medskip
+% As you can see, the pseudocode command provides a math based environment where you can simply start typing your pseudocode
+% separating lines by |\\|.
+%
+%
+%
+% \subsubsection{Customizing Pseudocode}
+% \index{lnstart}
+% \index{head}
+% \index{lnstartright}
+% \index{linenumbering}
+% \index{syntaxhighlight}
+% \index{keywords}
+% \index{keywordsindent}
+% \index{codesize}
+% \index{keywordsunindent}
+% \index{keywordsuninindent}
+% \index{addkeywords}
+% \index{altkeywords}
+% \index{mode}
+% \index{space}
+% \index{xshift}
+% \index{colsep}
+% \index{addtolength}
+% \index{nodraft}
+% \index{yshift}
+% \index{bodylinesep}
+% \index{headlinesep}
+% \index{jot}
+% \index{beginline}
+% \index{endline}
+% \index{minlineheight}
+% \index{\textbackslash{}pcminlineheight}
+%
+% Besides the mandatory argument the |\pseudocode| command can take an optional argument which consists of a list of key=value pairs
+% separated by commas.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocode[options]{body}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The following parameters are available:
+% \begin{description}
+% \item[head]
+% A header for the code
+% \item[width]
+% An exact width. If no width is specified, cryptocode tries to automatically compute the correct width.
+% \item[lnstart]
+% The starting line number when using line numbering.
+% \item[lnstartright]
+% The starting line number for right aligned line numberswhen using line numbering.
+% \item[linenumbering]
+% Enables line numbering.
+%
+% \item[skipfirstln]
+% Starts line numbering on the second line.
+%
+% \item[minlineheight]
+% Specify a minimum height for each line. Can be globally set by redefining |\pcminlineheight|.
+%
+% \item[syntaxhighlight]
+% When set to \enquote{auto} cryptocode will attempt to automatically hightlight keywords such as \enquote{for}, \enquote{foreach}
+% and \enquote{return}. Note that this feature should be regarded as experimental. In particular, it is rather slow.
+% \item[keywords]
+% Provide a comma separated list of keywords for automatic syntax highlighting. To customize the behavior of automatic spacing
+% you can provide keywords as
+% \begin{description}
+% \item[keywordsindent]
+% After seeing this keyword all following lines will be indented one extra level.
+% \item[keywordsunindent]
+% After seeing this keyword the current and all following lines will be unindented one extra level.
+% \item[keywordsuninindent]
+% After seeing this keyword the current line will be unindented one level.
+% \end{description}
+% \item[addkeywords]
+% Provide additional keywords for automatic syntax highlighting.
+% \item[altkeywords]
+% Provide a second list of keywords for automatic syntax highlighting that are highlighted differently.
+% \item[mode]
+% When set to text pseudocode will not start in math mode but in text mode.
+% \item[space]
+% Allows you to enable automatic spacing mode. If set to \enquote{keep} the spaces in the input are preserved.
+% If set to \enquote{auto} it will try to detect spacing according to keywords such as \enquote{if} and \enquote{fi}.
+% \item[codesize]
+% Allows to specify the fontsize for the pseudocode. Set to |\scriptsize| for a smaller size.
+%
+% \item[colspace]
+% Allows to insert spacing between columns. In particular this allows to also overlap columns by inserting negative space.
+%
+% \item[jot]
+% Allows to specify extra space between each line. Use |jot=1mm|.
+%
+% \item[beginline]
+% Allows to specify a macro that is placed at the beginning of each line.
+%
+% \item[endline]
+% Allows to specify a macro that is placed at the end of each line.
+%
+% \item[xshift]
+% Allows horizontal shifting
+% \item[yshift]
+% Allows horizontal shifting
+%
+% \item[headlinesep]
+% Specifies the distance between header and the line. By default set to 0pt which can be globally overwritten by setting length |\pcheadlinesep|.
+% \item[bodylinesep]
+% Specifies the distance between body and the line. By default set to |0.3\baselineskip| which can be globally overwritten by setting length |\pcbodylinesep|.
+% \item[colsep]
+% Defines the space between columns.
+%
+% \item[headheight]
+% Specifies the height of the header. By default set to 3.25ex which can be globally overwritten by setting length |\pcheadheight|.
+%
+% \item[headlinecmd]
+% Allows to overwrite which command is used to draw the bar below the headline. Defaults to |\hrule|.
+%
+% \item[addtolength]
+% Is added to the automatically computed width of the pseudocode (which does not take colsep into account).
+%
+% \item[valign]
+% Controls the vertical alignment of the pseudocode. Pseudocode is wrapped in a minipage environment and valign value is passed as orientation for the minipage. By default valign is set to \enquote{t}.
+%
+% \item[nodraft]
+% Forces syntax highlighting also in draft mode.
+% \end{description}
+% The following code
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock[linenumbering,syntaxhighlight=auto,head=Header]{ return null }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% creates
+% \begin{center}
+% \pcb[linenumbering,syntaxhighlight=auto,head=Header]{ return null }
+% \end{center}
+%
+% \subsubsection{Customized Pseudocode Commands}\label{sec:custom:pc:command}
+% \index{\textbackslash procedure}
+% \index{\textbackslash createpseudocodecommand}
+% \index{\textbackslash createprocedurecommand}
+%
+% Besides the |\pseudocode| and |\pseudocodeblock| command the command |\procedure|
+% (and its block variant |\procedureblock| provides easy access to generate code with a header.
+% They take the following form
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedure[options]{Header}{Body}
+ \procedureblock[options]{Header}{Body}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection*{Examples}
+% \procb{$\indcpa_\enc^\adv(\secpar)$}{
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+% which is generated as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock{$\indcpa_\enc^\adv(\secpar)$}{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% \medskip
+% You can define customized pseudocode commands which either take one optional argument and two mandatory arguments (as the procedure command)
+% or one optional and one mandatory argument (as the pseudocode command). The following
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\createpseudocodecommand{mypseudocode}{}{}{linenumbering}
+\createprocedurecommand{myprocedure}{}{}{linenumbering}
+\createpseudocodeblock{pcb}{center,boxed}{}{}{linenumbering}
+\createprocedureblock{procb}{center,boxed}{}{}{linenumbering}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% creates the commands |\mypseudocode| and |\myprocedure| with line numbering always enabled as well
+% as the block commands |\pcb| and |\procb| also with line numbering enabled. The created commands
+% have an identical interface as the |\pseudocode| (resp.~|\procedure|) command.
+% The two arguments that we kept empty when generating the commands allows us to specify commands that are executed at the
+% very beginning when the command is called (first empty argument) and a prefix for the header.
+% For example, the command created as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\createprocedureblock{expproc}{center,boxed}{}{$\mathrm{Experiment}$\xspace}{linenumbering}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% could be used as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \expproc{$\indcpa_\enc^\adv(\secpar)$}{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% This results in
+% \createprocedureblock{expproc}{center,boxed}{}{$\mathrm{Experiment}$\xspace}{linenumbering}
+% \expproc{$\indcpa_\enc^\adv(\secpar)$}{%
+% b \sample \bin \\
+%(\pk,\sk) \sample \kgen(\secparam) \\
+%(m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+%c \sample \enc(\pk,m_b) \\
+%b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+%
+%
+% \subsection{Indentation}
+% \index{indentation}
+% \index{\textbackslash pcind}
+% \index{\textbackslash t}
+%
+% In order to indent code use |\pcind| or short |\t|. You can also use customized spacing such as |\quad| or |\hspace|
+% when using the pseudocode command in math mode.
+% \pcb{
+% \pcfor i = 1..10 \pcdo \\
+% \pcind T[i] \sample \bin^n \\
+% \pcfor i = 1..10 \pcdo \\
+% \t T[i] \sample \bin^n }
+% which is generated as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock{
+ \pcfor i = 1..10 \pcdo \\
+ \pcind T[i] \sample \bin^n \\
+ \pcfor i = 1..10 \pcdo \\
+ \t T[i] \sample \bin^n }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% You can specify multiple levels via the optional first argument
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \t[level] % \pcind[level]
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \pcb{
+% \pcfor i = 1..10 \pcdo \\
+% \t T[i] \sample \bin^n \\
+% \t\t T[i] \sample \bin^n \\
+% \t[3] T[i] \sample \bin^n \\
+% \t[4] T[i] \sample \bin^n \\
+% \t[5] T[i] \sample \bin^n }
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock{
+ \pcfor i = 1..10 \pcdo \\
+ \t T[i] \sample \bin^n \\
+ \t\t T[i] \sample \bin^n \\
+ \t[3] T[i] \sample \bin^n \\
+ \t[4] T[i] \sample \bin^n \\
+ \t[5] T[i] \sample \bin^n }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \index{\textbackslash pcindentname}
+% You can customize the indentation shortcut by redefining
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \renewcommand{\pcindentname}{t}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection*{Automatic Indentation}
+% The pseudocode command comes with an option \enquote{space=auto} which tries to detect the correct indentation from the use of
+% keywords. When it sees one of the following keywords
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pcif, \pcfor, \pcwhile, \pcrepeat, \pcforeach
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% it will increase the indentation starting from the next line. It will again remove the indentation on seeing
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pcfi, \pcendif, \pcendfor, \pcendwhile, \pcuntil, \pcendforeach
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Additionally, on seeing
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pcelse, \pcelseif
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% it will remove the indentation for that particular line. Thus the following
+% \pcb[space=auto]{%
+% \pcfor a \in [10] \pcdo \\
+% \pcfor a \in [10] \pcdo \\
+% \pcfor a \in [10] \pcdo \\
+% \pcif a = b \pcthen \\
+% \text{some operation} \\
+% \pcelseif a = c \pcthen \\
+% \text{some operation} \\
+% \pcelse \\
+% \text{some default operation} \\
+% \pcfi \\
+% \pcendfor \\
+% \pcendfor \\
+% \pcendfor \\
+% \pcreturn a}
+% can be obtained by:
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock[space=auto]{%
+ \pcfor a \in [10] \pcdo \\
+ \pcfor a \in [10] \pcdo \\
+ \pcfor a \in [10] \pcdo \\
+ \pcif a = b \pcthen \\
+ \text{some operation} \\
+ \pcelseif a = c \pcthen \\
+ \text{some operation} \\
+ \pcelse \\
+ \text{some default operation} \\
+ \pcfi \\
+ \pcendfor \\
+ \pcendfor \\
+ \pcendfor \\
+ \pcreturn a}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Note that the manual indentation in the above example is not necessary for the outcome. Further note that the same
+% works when using automatic syntax highlighting (see Section~\ref{sec:syntaxhighlight}).
+%
+% \subsubsection*{Keep Input Indentation (experimental)}
+% \label{sec:keepindent}
+% The pseudocode package comes with an \emph{experimental} feature that preserves the spacing in the input. This can be enabled with
+% the option \enquote{space=keep}.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{center}
+ \pseudocode[space=keep]{%
+ \pcfor i = 1..10 \pcdo \\
+ T[i] \sample \bin^n \\
+ T[i] \sample \bin^n \\
+ T[i] \sample \bin^n \\
+ T[i] \sample \bin^n \\
+ T[i] \sample \bin^n }
+ \end{center}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% This yields the following result
+% \begin{center}
+% \pseudocode[space=keep]{%
+% \pcfor i = 1..10 \pcdo \\
+% T[i] \sample \bin^n \\
+% T[i] \sample \bin^n \\
+% T[i] \sample \bin^n \\
+% T[i] \sample \bin^n \\
+% T[i] \sample \bin^n }
+% \end{center}
+%
+% Note that automatic spacing only works when the |\pseudocode| command is not wrapped within another command.
+% Thus in order to get a frame box |\fbox{\pseudocode[space=keep]{code}}| will not work but you would need to use
+% an environment such as one offered by the \emph{mdframed} package ((\url{https://www.ctan.org/pkg/mdframed}). Also see
+% Section~\ref{sec:keepindent-problem}.
+%
+% \subsection{Textmode}
+% \index{text mode}
+%
+% By default pseudocode enables \LaTeX' math mode. You can change this behavior and tell the pseudocode command to interpret the content
+% in text mode by setting the option \enquote{mode=text}.
+% \begin{center}
+% \fbox{\pseudocode[mode=text]{%
+% This is \\
+% \t simply text}}
+% \end{center}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock[mode=text]{%
+ This is \\
+ \t simply text}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Syntax Highlighting}
+% \label{sec:syntaxhighlight}
+%
+% \index{\textbackslash pcabort}
+% \index{\textbackslash pcfail}
+% \index{\textbackslash pccontinue}
+% \index{\textbackslash pccomment}
+% \index{\textbackslash pcdo}
+% \index{\textbackslash pcdone}
+% \index{\textbackslash pcelse}
+% \index{\textbackslash pcelseif}
+% \index{\textbackslash pcfi}
+% \index{\textbackslash pcendif}
+% \index{\textbackslash pcforeach}
+% \index{\textbackslash pcendforeach}
+% \index{\textbackslash pcglobvar}
+% \index{\textbackslash pcif}
+% \index{\textbackslash pcin}
+% \index{\textbackslash pcnew}
+% \index{\textbackslash pcnull}
+% \index{\textbackslash pcparse}
+% \index{\textbackslash pcrepeat}
+% \index{\textbackslash pcuntil}
+% \index{\textbackslash pcreturn}
+% \index{\textbackslash pcthen}
+% \index{\textbackslash pctrue}
+% \index{\textbackslash pcwhile}
+% \index{\textbackslash pcendwhile}
+%
+%
+% In the above examples we have used commands |\pcreturn| and |\pcfor| to highlight certain keywords.
+% Besides the \emph{pcreturn}, \emph{pcfor} and \emph{pcdo} (where the pc stands for pseudocode) that were used in the above
+% examples the package defines the following set of constants:
+%
+% \begin{center}
+% \begin{tabular}{lll}
+% \textbf{command} & \textbf{outcome} \\
+% |\pcabort| & \pcabort\\
+% |\pccontinue| & \pccontinue \\
+% |\pccomment{comment}| & \pccomment{comment} \\
+% |\pccomment[2em]{comment}| & \pccomment[2em]{comment} \\
+% |\pclinecomment{comment}| & \pclinecomment{comment} \\
+% |\pcdo| & \pcdo \\
+% |\pcdone| & \pcdone \\
+% |\pcfail| & \pcfail \\
+% |\pcfalse| & \pcfalse \\
+% |\pcif| & \pcif \\
+% |\pcfi| & \pcfi \\
+% |\pcendif| & \pcendif \\
+% |\pcelse| & \pcelse \\
+% |\pcelseif| & \pcelseif \\
+% |\pcfor| & \pcfor \\
+% |\pcendfor| & \pcendfor \\
+% |\pcforeach| & \pcforeach \\
+% |\pcendforeach| & \pcendforeach \\
+% |\pcglobvar| & \pcglobvar \\
+% |\pcin| & \pcin \\
+% |\pcnew| & \pcnew \\
+% |\pcnull| & \pcnull \\
+% |\pcparse| & \pcparse \\
+% |\pcrepeat{10}| & \pcrepeat{10} \\
+% |\pcreturn| & \pcreturn \\
+% |\pcuntil| & \pcuntil \\
+% |\pcthen| & \pcthen \\
+% |\pctrue| & \pctrue \\
+% |\pcwhile| & \pcwhile \\
+% |\pcendwhile| & \pcendwhile \\
+% \end{tabular}
+% \end{center}
+% Note that |\pcdo|, |\pcin| and |\pcthen| have a leading space. This is due to their usual usage scenarios
+% such as
+% \pseudocodeblock{\pcfor i \pcin \{1,\ldots,10\}}
+% Furthermore all constants have a trailing space. This can be removed by adding the optional parameter [] such as
+% \pseudocodeblock{\pcfor i \pcin[] \{1,\ldots,10\}}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock{\pcfor i \pcin[] \{1,\ldots,10\}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \index{highlight keywords}
+% \index{emphasize|see highlight keywords}
+% \index{\textbackslash highlightkeyword}
+% In order to change the font you can overwrite the command \lstinline{\highlightkeyword} which is defined as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \newcommand{\highlightkeyword}[2][\ ]{\ensuremath{\mathbf{#2}}#1}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Automatic Syntax Highlighting (Experimental)}
+% The pseudocode command comes with an experimental (and rather slow) feature to automatically highlight keywords.
+% This can be activated via
+% the option \enquote{syntaxhighlight=auto}. The preset list of keywords it looks for are
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+for,foreach,{return },return,{ do },{ in },new,if, null, true,{until },{ to }, false,{ then},repeat,else if,elseif,while,else,done
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Note that the keywords are matched with spaces and note the grouping for trailing spaces. That is, the \enquote{ do } keyword won't match within the string \enquote{don't}.
+% Via the option \enquote{keywords} you can provide a custom list of keywords.
+% Thus the following bubblesort variant (taken from \url{http://en.wikipedia.org/wiki/Bubble_sort})
+% \procb[syntaxhighlight=auto]{Bubblesort(A : list of items)}{
+% n \gets \mathsf{length}(A) \\
+% repeat \\
+% \t s \gets false \\
+% \t for i = 1 to n-1 do \\
+% \t\t \pclinecomment{if this pair is out of order} \\
+% \t\t if A[i-1] > A[i] then \\
+% \t\t\t \pclinecomment{swap them and remember something changed} \\
+% \t\t\t \mathsf{swap}( A[i-1], A[i] ) \\
+% \t\t\t s \gets true \\
+% until \neg s }
+% \noindent can be typeset as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[syntaxhighlight=auto]{Bubblesort(A : list of items)}{
+ n \gets \mathsf{length}(A) \\
+ repeat \\
+ \t s \gets false \\
+ \t for i = 1 to n-1 do \\
+ \t\t \pclinecomment{if this pair is out of order} \\
+ \t\t if A[i-1] > A[i] then \\
+ \t\t\t \pclinecomment{swap them and remember something changed} \\
+ \t\t\t \mathsf{swap}( A[i-1], A[i] ) \\
+ \t\t\t s \gets true \\
+ until \neg s }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \index{addkeywords}
+% You can also define additional keywords using the \enquote{addkeywords} option.
+% This would allow us to specify \enquote{length} and \enquote{swap} in the above example.
+% \procb[syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
+% n \gets \mathsf{length}(A) \\
+% repeat \\
+% \t s \gets false \\
+% \t for i = 1 to n-1 do \\
+% \t\t \pclinecomment{if this pair is out of order} \\
+% \t\t if A[i-1] > A[i] then \\
+% \t\t\t \pclinecomment{swap them and remember something changed} \\
+% \t\t\t \mathsf{swap}( A[i-1], A[i] ) \\
+% \t\t\t s \gets true \\
+% until \neg s }
+% can be typeset as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
+ n \gets \mathsf{length}(A) \\
+ repeat \\
+ \t s \gets false \\
+ \t for i = 1 to n-1 do \\
+ \t\t \pclinecomment{if this pair is out of order} \\
+ \t\t if A[i-1] > A[i] then \\
+ \t\t\t \pclinecomment{swap them and remember something changed} \\
+ \t\t\t \mathsf{swap}( A[i-1], A[i] ) \\
+ \t\t\t s \gets true \\
+ until \neg s }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% We can also combine automatic syntax highlighting with automatic spacing in which case we need
+% to insert \enquote{group end} keywords:
+% \procb[space=auto,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
+% n \gets length(A) \\
+% repeat \\
+% s \gets false \\
+% for i=1 to n-1 do \\
+% \pclinecomment{assuming this pair is out of order} \\
+% if A[i-1]>A[i] then \\
+% \pclinecomment{swap them and remember something changed} \\
+% swap(A[i-1], A[i]) \\
+% s \gets true \\
+% endif \\
+% endfor \\
+% until \neg s }
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[space=auto,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
+ n \gets length(A) \\
+ repeat \\
+ s \gets false \\
+ for i=1 to n-1 do \\
+ \pclinecomment{assuming this pair is out of order} \\
+ if A[i-1]>A[i] then \\
+ \pclinecomment{swap them and remember something changed} \\
+ swap(A[i-1], A[i]) \\
+ s \gets true \\
+ endif \\
+ endfor \\
+ until \neg s }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection*{Alternative Keywords}
+% \index{altkeywords}
+% There is a second keyword list that you can add keywords to which are highlighted not via |\highlightkeyword| but via |\highlightaltkeyword|
+% where alt stands for alternate. This allows you to have two different keyword styles which are by default defined as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \newcommand{\highlightkeyword}[2][\ ]{\ensuremath{\mathbf{#2}}#1}
+ \newcommand{\highlightaltkeyword}[1]{\ensuremath{\mathsf{#1}}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% This allows you to rewrite the above example and emphasize the different nature of swap and length.
+% \procb[space=auto,syntaxhighlight=auto,altkeywords={swap,length}]{Bubblesort(A : list of items)}{
+% n \gets length(A) \\
+% repeat \\
+% s \gets false \\
+% for i=1 to n-1 do \\
+% \pclinecomment{assuming this pair is out of order} \\
+% if A[i-1]>A[i] then \\
+% \pclinecomment{swap them and remember something changed} \\
+% swap(A[i-1], A[i]) \\
+% s \gets true \\
+% endif \\
+% endfor \\
+% until \neg s }
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[space=auto,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
+ n \gets length(A) \\
+ repeat \\
+ s \gets false \\
+ for i=1 to n-1 do \\
+ \pclinecomment{assuming this pair is out of order} \\
+ if A[i-1]>A[i] then \\
+ \pclinecomment{swap them and remember something changed} \\
+ swap(A[i-1], A[i]) \\
+ s \gets true \\
+ endif \\
+ endfor \\
+ until \neg s }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection*{Draft Mode}
+% \index{nodraft}
+% \index{performance}
+% \index{draft mode}
+% Automatic syntax highlighting is a somewhat expensive operation as it requires several rounds of regular expression matching.
+% In order to speed up compilation the pseudocode command will not attempt automatic highlighting when the document is in draft mode.
+% When in draft mode and you want to force a specific instance of |\pseudocode| to render the code with automatic syntax
+% highlighting you can use the option |nodraft|.
+%
+%
+% \subsection{Line Numbering}
+% \index{line numbering}
+% \index{\textbackslash pcln}
+% \index{\textbackslash pclnr}
+% \index{\textbackslash pcrln}
+% The pseudocode command allows to insert line numbers into pseudocode.
+% You can either manually control line numbering or simply turn on the option
+% |linenumbering|.
+% \procb[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% \label{my:line:label} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+% is generated by
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ \label{my:line:label} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Note that you can use labels. In the above example |\label{my:line:label}| points to~\ref{my:line:label}.
+%
+% \subsubsection{Skipping Line Numbers}
+% \index{skipfirstln}
+% \index{\textbackslash pcskipln}
+%
+% When using automatic line numbering, you can skip line numbers by inserting a |\pcskipln| command.
+% This causes the line number on the \emph{next line} to be supressed. In order to suppress the first
+% line number use the option |skipfirstln|. Thus the following
+% \pcb[linenumbering,skipfirstln,mode=text]{
+% \pclinecomment{Some comment on first line} \\
+% Some code \pcskipln\\
+% \pclinecomment{Some other comment } \\
+% Some code }
+% is generated by
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock[linenumbering,skipfirstln,mode=text]{
+ \pclinecomment{Some comment on first line} \\
+ Some code \pcskipln\\
+ \pclinecomment{Some other comment } \\
+ Some code }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% \subsubsection{Manually Inserting Line Numbers}
+% In order to manually insert line numbers use the command |\pcln|.
+% \procb{$\indcpa_\enc^\adv(\secparam)$}{%
+% \pcln b \sample \bin \\
+% \pcln (\pk,\sk) \sample \kgen(\secparam) \\
+% \pcln\label{my:line:label2} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% \pcln c \sample \enc(\pk,m_b) \\
+% \pcln b' \sample \adv(\secparam, \pk, c) \\
+% \pcln \pcreturn b = b' }
+% is generated by
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedure{$\indcpa_\enc^\adv(\secparam)$}{
+ \pcln b \sample \bin \\
+ \pcln (\pk,\sk) \sample \kgen(\secparam) \\
+ \pcln\label{my:line:label2} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ \pcln c \sample \enc(\pk,m_b) \\
+ \pcln b' \sample \adv(\secparam, \pk, c) \\
+ \pcln \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Note that labels also work when manually placing line numbers. In the above example
+% label \emph{my:line:label2} points to line number~\ref{my:line:label2}.
+%
+%
+%
+% \subsubsection{Start Values}
+% You can specify the start value (minus one) of the counter by setting the option |lnstart|.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedure[lnstart=10,linenumbering]{Header}{Body}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \procb[lnstart=10,linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+%
+% \subsubsection{Separators}
+% \index{\textbackslash pclnseparator}
+% The command |\pclnseparator| defines the separator between code and line number. By
+% default the left separator is set to (:) colon. Also see Section~\ref{sec:protocol:separator}.
+%
+% \subsubsection{Style}
+% \index{\textbackslash pclnstyle}
+% The style in which line numbers are set can be controlled by redefining |\pclnstyle|.
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\renewcommand\pclnstyle[1]{\text{\scriptsize#1}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% For example, to set line numbers in normal font and dot separated use
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\renewcommand{\pclnstyle}[1]{\text{#1}}
+\renewcommand{\pclnseparator}{.}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% {
+% \renewcommand{\pclnstyle}[1]{\text{#1}}
+% \renewcommand{\pclnseparator}{.}
+% \procb[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }}
+%
+%
+% \subsection{Subprocedures}
+% \index{subprocedure}
+% The pseudocode package allows the typesetting of subprocedures such as
+%
+% \procb[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \begin{subprocedure}%
+% \dbox{\procedure{$\adv(\secparam, \pk, c)$}{%
+% \text{Step 1} \\
+% \text{Step 2} \\
+% \pcreturn m_0, m_1 }}
+% \end{subprocedure} \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+%
+% To create a subprocedure use the |subprocedure| environment. The above example is generated via
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \begin{subprocedure}%
+ \dbox{\procedure{$\adv(\secparam, \pk, c)$}{%
+ \text{Step 1} \\
+ \text{Step 2} \\
+ \pcreturn m_0, m_1 }}
+ \end{subprocedure} \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Here the dbox command (from the dashbox package) is used to generate a dashed box around the sub procedure.
+%
+% \subsubsection{Numbering in Subprocedures}
+% As subprocedures are simply normal pseudocode blocks, you can use easily add line numbers.
+% By default the line numbering starts with 1 in a subprocedure while
+% ensuring that the outer numbering remains intact. Also note that the linenumbering on the outer procedure in the above example is inherited
+% by the subprocedure. For more control, either use manual numbering or set the
+% option \enquote{linenumbering=off} on the |\pseudocode| command within the subprocedure.
+%
+%
+%
+% \subsection{Stacking Procedures}\label{chap:stacking}
+% You can stack procedures horizontally or vertically using the environments \enquote{pchstack} and \enquote{pcvstack}.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{pchstack}[options] body \end{pchstack}
+ \begin{pcvstack}[options] body \end{pcvstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% The following example displays two procedures next to one another. To space two horizontally outlined procedures
+% use the |space| option or manually insert spaces via |\pchspace| which takes an optional length as a parameter.
+%
+% \begin{pchstack}[boxed,center,space=1em]
+% \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+%
+% \procedure[linenumbering,mode=text]{Oracle $O$}{
+% Some code \\
+% Some more code
+% }
+% \end{pchstack}
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{pchstack}[boxed,center,space=1em]
+ \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+
+ % alternatively use \pchspace for spacing
+
+ \procedure[linenumbering,mode=text]{Oracle $O$}{%
+ Some code \\
+ Some more code
+ }
+ \end{pchstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% Similarly you can stack two procedures vertically using the \enquote{pcvstack} environment. As a spacing
+% between two vertically stacked procedures again use either the |space| option or
+% insert space manually via |\pcvspace| which takes an optional length as a parameter.
+%
+% \begin{pcvstack}[boxed,center,space=0.5em]
+% \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+%
+% \procedure[linenumbering,mode=text]{Oracle $O$}{
+% Some code \\
+% Some more code
+% }
+% \end{pcvstack}
+%
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{pcvstack}[boxed,center,space=0.5em]]
+ \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+
+ % alternatively use \pcvspace for spacing
+
+ \procedure[linenumbering,mode=text]{Oracle $O$}{%
+ Some code \\
+ Some more code
+ }
+\end{pcvstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% Horizontal and vertical stacking can be combined
+% \begin{pcvstack}[boxed,center,space=1em]
+%
+% \begin{pchstack}[space=2em,center]
+% \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+%
+% \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+% \end{pchstack}
+%
+% \begin{pchstack}[space=0.25em]
+% \procedure[linenumbering,mode=text]{Oracle $O$}{
+% Some code \\
+% Some more code
+% }
+%
+% \procedure[linenumbering,mode=text]{Oracle $H_1$}{
+% Some code \\
+% Some more code
+% }
+%
+% \procedure[linenumbering,mode=text]{Oracle $H_2$}{
+% Some code \\
+% Some more code
+% }
+% \end{pchstack}
+% \end{pcvstack}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{pcvstack}[boxed,center,space=1em]
+ \begin{pchstack}[center,space=2em]
+
+ \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+
+ % alternatively use \pchspace for spacing
+
+ \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+
+ \end{pchstack}
+
+ % alternatively use \pcvspace for spacing
+
+ \begin{pchstack}[space=0.25em]
+ \procedure[linenumbering,mode=text]{Oracle $O$}{
+ Some code \\
+ Some more code
+ }
+
+ \procedure[linenumbering,mode=text]{Oracle $H_1$}{
+ Some code \\
+ Some more code
+ }
+
+ \procedure[linenumbering,mode=text]{Oracle $H_2$}{
+ Some code \\
+ Some more code
+ }
+ \end{pchstack}
+\end{pcvstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Stacking Options}
+% \index{center}
+% \index{boxed}
+% \index{space}
+% \index{noindent}
+% \index{aboveskip}
+% \index{belowskip}
+%
+% The following keys are available on both |pchstack| and |pcvstack| environments
+% \begin{description}
+% \item[center]
+% Centers the stack.
+%
+% \item[boxed]
+% Draws a box around the stack.
+%
+% \item[space]
+% Controls the space between two pseudocode blocks within a stack. The default is 0pt
+% which can be adapted globally by redefining |\pchstackspace| or |\pcvstackspace|.
+%
+% \item[noindent]
+% Does not indent the stack. Only applies if option |center| is not used.
+%
+% \item[inline]
+% Ensures that no paragraph is added by |pchstack|. This cannot be used together with either |center| or |noindent|.
+%
+% \item[aboveskip]
+% By default the outer most stack adds vertical space above. The default space added
+% is |\abovedisplayskip| and can be adapted by redefining |\pcaboveskip|.
+%
+% \item[belowskip]
+% By default the outer most stack adds vertical space below. The default space added
+% is |\belowdisplayskip| and can be adapted by redefining |\pcbelowskip|. Note that
+% the defualt space below will not be added when used in a floating environment such as a figure.
+% However, when manually setting belowskip it will always be added.
+% \end{description}
+%
+% \subsection{Default Arguments}
+% \index{\textbackslash pcsetargs}
+% \index{\textbackslash pcsethstackargs}
+% \index{\textbackslash pcsetvstackargs}
+%
+% You can set the default arguments to be used with pseudocode blocks via |\pcsetargs|.
+% This is especially handy in stacking environments to add arguments to all enclosed
+% code blocks.
+% \begin{pchstack}[space=1em,center,boxed]
+% \renewcommand\pclnstyle[1]{#1}
+% \pcsetargs{linenumbering,mode=text,minlineheight=1cm,codesize=\Large{}}
+% \procedure{Some Procedue A}{%
+% Step 1\\
+% Step 2 }
+%
+%\procedure{Some Procedue B}{%
+%\text{Step 1}\\
+%\scriptsize$\begin{pcmbox}\begin{pmatrix} A \\ B + C \end{pmatrix}\end{pcmbox}$\\
+%\text{Step 3}}
+%
+%
+%\procedure{Some Procedue C}{
+% Step 1\\
+% Step 2 }
+%
+% \end{pchstack}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{pchstack}[space=1em,center,boxed]
+ % Do not change size to scriptsize for line numbers
+ \renewcommand\pclnstyle[1]{#1}
+
+ % set default arguments for all pseudocode blocks in this hstack
+ \pcsetargs{linenumbering,mode=text,minlineheight=1cm,codesize=\Large{}}
+
+ \procedure{Some Procedue A}{
+ Step 1\\
+ Step 2 }
+
+ \procedure{Some Procedue B}{
+ \text{Step 1}\\
+ \scriptsize$\begin{pcmbox}\begin{pmatrix}A \\ B + C \end{pmatrix}\end{pcmbox}$\\
+ \text{Step 3}}
+
+ \procedure{Some Procedue C}{
+ Step 1\\
+ Step 2 }
+\end{pchstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection*{Default Arguments for Stacking}
+% Similarly to |\pcsetargs| you can define default arguments for |hstack| and |vstack|
+% environments via |\pcsethstackargs| and |\pcsetvstackargs|.
+%
+% \subsection{Divisions and Linebreaks}
+% \index{linebreaks}
+% \index{\textbackslash hline}
+% Within the pseudocode command you generate linebreaks as |\\|. In order to specify the linewidth you can add an optional argument
+% \iffalse
+%<*example>
+% \fi
+% \begin{lstlisting}
+ \\[height]
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Furthermore, you can add horizontal lines by using the second optional argument and write
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \\[][\hline]
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \procb[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{
+% b \sample \bin \\[2\baselineskip][\hline\hline]
+% (\pk,\sk) \sample \kgen(\secparam) \\
+% (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c) \\
+% \pcreturn b = b' }
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\[2\baselineskip][\hline\hline]
+ (\pk,\sk) \sample \kgen(\secparam) \\
+ (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c) \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Optimizing Layout}
+%
+% In case you are laying out multiple procedures horizontally, procedures may be slightly
+% misaligned if the procedure headings are not of the same height. As an example, Consider
+% the following setup
+%
+%\begin{pchstack}[center,space=1ex]
+%\procedure[linenumbering]{Procedure $A$}{
+%\text{do}\\
+%\text{some} \\
+%\text{work}
+%}
+%
+%\procedure[linenumbering]{Procedure $B^{F^{h^*}}_{G_1}$}{
+%\text{do}\\
+%\text{some} \\
+%\text{work}
+%}
+%\end{pchstack}
+%
+% Here the sub and double superscripts in Procedure $B$ make the header slightly larger than
+% the maximum alotted space provided for headers which causes procedure $B$ to be slightly
+% shifted to the bottom. The best way to remedy such a situation is to use a combination
+% of the |headheight| and |headlinesep| properties to increase the header space in both procedures
+% and shift back the headline for a more compact visualization. As we here want to set some
+% arguments for all procedure blocks within the stacking environment we can use |\pcsetargs|.
+%
+%\begin{pchstack}[center,space=1ex]
+%\pcsetargs{headheight=5ex,headlinesep=-1ex}
+%
+%\procedure[linenumbering]{Procedure $A$}{
+%\text{do}\\
+%\text{some} \\
+%\text{work}
+%}
+%
+%\procedure[linenumbering]{Procedure $B^{F^{h^*}}_{G_1}$}{
+%\text{do}\\
+%\text{some} \\
+%\text{work}
+%}
+%\end{pchstack}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{pchstack}[center,space=1ex]
+ \pcsetargs{headheight=5ex,headlinesep=-1ex}
+
+ \procedure[linenumbering]{Procedure $A$}{
+ \text{do}\\
+ \text{some} \\
+ \text{work}
+ }
+
+ \procedure[linenumbering]{Procedure $B^{F^{h^*}}_{G_1}$}{
+ \text{do}\\
+ \text{some} \\
+ \text{work}
+ }
+\end{pchstack}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Matrices and Math Environments within Pseudocode}
+%
+% In order to work its magic, cryptocode (in particular within the \lstinline{\pseudocode} command) mingles with a few low level commands such as
+% \lstinline{\\} or \lstinline{\halign}. The effect of this is, that when you use certain math environments, for example, to create matrices, within pseudocode
+% the result may be unexpected. Consider the following example
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock{
+ \text{compute } P = \begin{pmatrix}
+ A \\ B + C
+ \end{pmatrix}
+ }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% which, somewhat unexpectedly, yields
+% \pcb{
+% \text{compute } P = \begin{pmatrix}
+% A \\ B + C
+% \end{pmatrix}
+% }
+%
+% Here, the alignment is somewhat off. In order, to allow for the \emph{pmatrix} environment
+% to properly work without interference from |\pseudocode|
+% you can wrap it into a |pcmbox| environment (where pcmbox is short for pseudocode math box).
+% This ensures that the low-level changes introduced by |\pseudocode| are not active.
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock{
+ \text{compute } P = \begin{pcmbox}\begin{pmatrix}
+ A \\ B + C
+ \end{pmatrix}\end{pcmbox}
+ }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \begin{center}
+% \fbox{
+% \pseudocode{
+% \text{compute } P = \begin{pcmbox}\begin{pmatrix}
+% A \\ B + C
+% \end{pmatrix}\end{pcmbox}
+% }
+% }
+% \end{center}
+%
+% \subsection{Fancy Code with Overlays}
+%
+% Consider the \indcpa\ game. Here we have a single adversary $\adv$ that is called twice, first to output two messages and
+% which is then given the ciphertext of one of the messages in order to \enquote{guess} which one was encrypted.
+% Often this is not visualized.
+% Sometimes an additional state $\state$ is passed as we have in the following example on the left. On the right,
+% we visualize the same idea in a slightly more fancy way.
+%
+% \begin{pchstack}[center,space=1cm]
+%
+% \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam) \\
+% (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end} \\
+% \pcreturn b = b' }
+%
+% \begin{pcimage}
+% \procedure[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam) \\
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end} \\
+% \pcreturn b = b' }
+%
+% \pcdraw{
+% \path[->] (start) edge[bend left=50] node[right]{$\state$} (start|-end);
+% }
+% \end{pcimage}
+% \end{pchstack}
+%
+% The image on the right is generated by:
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{pcimage}
+ \procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end} \\
+ \pcreturn b = b' }
+
+ \pcdraw{
+ \path[->] (start) edge[bend left=50] node[right]{$\state$} (start|-end);
+ }
+ \end{pcimage}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% In order to achieve the above effect cryptocode utilizes TIKZ underneath. The
+% |\pcnode| command generates TIKZ nodes and additionally we wrapped the
+% pseudocode (or procedure) command in an |\begin{pcimage}\end{pcimage}| environment
+% which allows us to utilize these nodes later, for example using the |\pcdraw|
+% command. We can achieve a similar effect without an additional pcimage environment by
+% using the optional argument of |\pcnode| for the TIKZ code.
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam) \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end}[draw={
+ \path[->] (start) edge[bend left=50] node[right]{$\state$} (start|-end);
+ }] \\
+ \pcreturn b = b' }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection*{Example: Explain your Code}
+% As an exmaple of what you can do with this, let us put an explanation to a line of the code.
+%
+% \begin{pcimage}
+% \procb[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+% b \sample \bin \\
+% (\pk,\sk) \sample \kgen (\secparam)\pcnode{kgen} \\
+% (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+% c \sample \enc(\pk,m_b) \\
+% b' \sample \adv(\secparam, \pk, c, \state) \\
+% \pcreturn b = b' }
+%
+% \pcdraw{
+% \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
+% at ([shift={(+3,+1)}]kgen) {
+% \begin{varwidth}{3cm}
+% $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
+% \end{varwidth}
+% };
+% }
+% \end{pcimage}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{pcimage}
+\procedureblock[linenumbering]{$\indcpa_\enc^\adv(\secparam)$}{%
+ b \sample \bin \\
+ (\pk,\sk) \sample \kgen (\secparam)\pcnode{kgen} \\
+ (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
+ c \sample \enc(\pk,m_b) \\
+ b' \sample \adv(\secparam, \pk, c, \state) \\
+ \pcreturn b = b' }
+
+\pcdraw{
+ \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
+ at ([shift={(+3,+1)}]kgen) {
+ \begin{varwidth}{3cm}
+ $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
+ \end{varwidth}
+ };
+}
+\end{pcimage}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \amipagebreak
+% \section{Tabbing Mode}
+% \label{chap:tabbing}
+% \index{\&}
+% \index{Tabbing Mode}
+% \index{\textbackslash\textlangle{}}
+% \index{\textbackslash\textrangle{}}
+% In the following section we discuss how to create multiple columns within a |\pseudocode| command.
+% Within a |\pseudocode| command you can switch to a new column by inserting a |\>|.
+% This is similar to using an |align| environment and placing a tabbing character (\&). Also,
+% similarly to using |align| you should ensure that the number of |\>| are identical
+% on each line.
+% \pcb{%
+% \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
+% b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\pseudocodeblock{
+ \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
+ b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% As you can see the first column is left aligned the second right, the third left and so forth.
+% In order to get only left aligned columns you could thus simply always skip a column by
+% using |\>\>|. You can also use |\<| a shorthand for |\>\>|.
+% \pcb{%
+% \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
+% b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\pseudocodeblock{
+ \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
+ b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \paragraph{Column Spacing}
+% \index{colsep}
+% \index{addtolength}
+% You can control the space between columns using the option \enquote{colsep=2em}. Note that when doing so you should
+% additionally use \enquote{addtolength=5em} (where 5em depends on the number of columns) in order to avoid having
+% overfull hboxes.
+% \pcb[colsep=1em,addtolength=10em]{%
+% \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
+% b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock[colsep=1em,addtolength=10em]{%
+ \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
+ b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% This is basically all you need to know in order to go on to writing protocols with the
+% cryptocode package. So unless you want to know a bit more about tabbing (switching columns)
+% and learn some of the internals, feel free to proceed to Section~\ref{chap:protocols}.
+%
+% \subsection{Tabbing in Detail}
+% \index{mintabmode}
+% At the heart of the pseudocode package is an align (or rather a flalign*) environment which allows you to use basic math notation.
+% Usually an align (or flalign) environment uses \& as tabbing characters.
+% The pseudocode comes in two modes the first of which changes the default align behavior.
+% That is, it automatically adds a tabbing character to the beginning and end of each line
+% and changes the tabbing character to |\>|. This mode is called \emph{mintabmode} and is active by default.
+%
+% In mintabmode in order to make use of extra columns in the align environment
+% (which we will use shortly in order to write protocols) you can use |\>| as you would use \& normally.
+% But, don't forget that there is an alignment tab already placed at the beginning and end of each line. So the following example
+% \pcb{%
+% \textbf{Alice} \> \> \textbf{Bob} \\
+% b \sample \bin \> \> \\
+% \> \xrightarrow{\text{send over } b} \> \\
+% \> \> \text{do something}}
+% is generated by
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocodeblock{
+ \textbf{Alice} \> \> \textbf{Bob} \\
+ b \sample \bin \> \> \\
+ \> \xrightarrow{\text{send over } b} \> \\
+ \> \> \text{do something}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Overriding The Tabbing Character}
+% \index{\textbackslash pctabname}
+% If you don't like |\>| as the tabbing character you can choose a custom command by overwriting |\pctabname|.
+% For example
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\renewcommand{\pctabname}{\myTab}
+
+\pseudocode{
+ \textbf{Alice} \myTab \myTab \textbf{Bob} \\
+ b \sample \bin \myTab \myTab \\
+ \myTab \xrightarrow{\text{send over } b} \myTab \\
+ \myTab \myTab \text{do something}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Custom Line Spacing and Horizontal Rules}
+% \index{\textbackslash pclb}
+% As explained, underlying the pseudocode command is an flalign environment. This would allow the use
+% of |\\[spacing]| to specifiy the spacing between two lines or of |[\\\hline]|
+% to insert a horizontal rule. In order to achieve the same effect within the pseudocode command you
+% can use |\\[spacing][\hline]|. You can also use |\pclb| to get a line break which
+% does not insert the additional alignment characters.
+%
+% \amipagebreak
+% \section{Protocols}
+% \label{chap:protocols}
+%
+% Using tabbing, we can use |\pseudocode| to also layout protocols such as
+% \procb{My Protocol}{
+% \textbf{Alice} \> \> \textbf{Bob} \\
+% b \sample \bin \> \> \\
+% \> \xrightarrow{\text{send over } b} \> \\
+% \> \> \text{do something} \\
+% \> \xleftarrow{\text{send over sth. else}} \> \\
+% \text{finalize} \> \>}
+% which is generated as
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\procedureblock{My Protocol}{
+ \textbf{Alice} \> \> \textbf{Bob} \\
+ b \sample \bin \> \> \\
+ \> \xrightarrow{\text{send over } b} \> \\
+ \> \> \text{do something} \\
+ \> \xleftarrow{\text{send over sth. else}} \> \\
+ \text{finalize} \> \>}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \index{\textbackslash sendmessage}%
+% \index{\textbackslash sendmessage*}%
+% \index{\textbackslash sendmessageright*}
+% \index{\textbackslash sendmessageright}
+% \index{\textbackslash sendmessageleft*}
+% \index{\textbackslash sendmessageleft}
+% In order to get nicer message arrows use the commands |\sendmessageright*{message}|, |\sendmessageleft*{message}|, and
+% |\sendmessagerightleft*{message}|.
+% All three take an additional optional argument specifying the length of the arrow and all
+% wrap their mandatory argument in an |aligned| environment.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \sendmessageright*[3.5cm]{message}
+ \sendmessageleft*[3.5cm]{message}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \procb{My Protocol}{
+% \textbf{Alice} \> \> \textbf{Bob} \\
+% b \sample \bin \> \> \\
+% \> \sendmessageright*{\text{send over } b} \> \\
+% \> \> \text{do something} \\
+% \> \sendmessageleft*{\text{send over sth. else}} \> \\
+% \text{finalize} \> \> }
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock{My Protocol}{%
+ \textbf{Alice} \> \> \textbf{Bob} \\
+ b \sample \bin \> \> \\
+ \> \sendmessageright*{\text{send over } b} \> \\
+ \> \> \text{do something} \\
+ \> \sendmessageleft*{\text{send over sth. else}} \> \\
+ \text{finalize} \> \> }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% To obtain granular control over how messages are set use the |\sendmessage| and
+% |\sendmessage*| commands. These take two parameters, the first being the message style
+% for the underlying TIKZ path (e.g., |->| for messages to the right) and the second
+% a key value list of arguments. The difference between the starred version and the
+% unstarred version is that the starred version wraps its labels in an |aligned|
+% environment. Following is an example, that showcases various message options.
+% \procedureblock{My Protocol}{
+% \textbf{Alice} \> \> \textbf{Bob} \\
+% b \sample \bin \> \> \\
+% \> \sendmessage{->}{centercol=3,top=send over $b$,bottom=Text below,topstyle={draw,solid,yshift=0.25cm},style={dashed}} \> \\
+% \> \> \text{do something} \\
+% \> \sendmessage{<-}{length=8cm,top=send over sth. else} \> \\
+% \> \sendmessage*{<->}{length=8cm,top={{a,b, c\\c,d, e}},bottom={foo}} \> \\
+% \> \sendmessage{<->}{length=8cm,top=\pseudocode[linenumbering]{\text{you can also}\\\text{use pseudocode}},bottom={foo}} \> \\
+% \text{finalize} \> \> }
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\procedureblock{My Protocol}{
+ \textbf{Alice} \> \> \textbf{Bob} \\
+ b \sample \bin \> \> \\
+ \> \sendmessage{->}{centercol=3,top=send over $b$,bottom=Text below,topstyle={draw,solid,yshift=0.25cm},style={dashed}} \> \\
+ \> \> \text{do something} \\
+ \> \sendmessage{<-}{length=8cm,top=send over sth. else} \> \\
+ \> \sendmessage*{<->}{length=8cm,top={{a,b, c\\c,d, e}},bottom={foo}} \> \\
+ \> \sendmessage{<->}{length=8cm,top=\pseudocode[linenumbering]{\text{you can also}\\\text{use pseudocode}},bottom={foo}} \> \\
+ \text{finalize} \> \> }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% |sendmessage| and |sendmessage*| support the following options:
+% \begin{description}
+% \item[top]
+% The content to display on top of the arrow.
+% \item[bottom]
+% The content to display below the arrow.
+% \item[left]
+% The content to display on the left of the arrow.
+% \item[right]
+% The content to display on the right of the arrow.
+% \item[topstyle]
+% The TIKZ style to be used for the top node.
+% \item[bottomstyle]
+% The TIKZ style to be used for the bottom node.
+% \item[rightstyle]
+% The TIKZ style to be used for the right node.
+% \item[leftstyle]
+% The TIKZ style to be used for the left node.
+% \item[length]
+% The length of the arrow.
+% \item[style]
+% The style of the arrow.
+% \item[width]
+% The width of the column
+% \item[centercol]
+% Can be used to ensure that the message is displayed in the center. This should be set to the
+% column index. In the above example, the message column is the third column (note that there is
+% a column left of alice that is automatically inserted).
+% \end{description}
+%
+% \subsection{Tabbing}
+% When typesetting protocols you might find that using two tabs instead of a single tab usually provides
+% a better result as this ensures that all columns are left aligned.
+% For this you can use |\<| instead of |\>| (see Section~\ref{chap:tabbing}).
+%
+% \medskip
+% Following is once more the example from before but now with double tapping.
+% \procb{My Protocol}{
+% \textbf{Alice} \< \< \textbf{Bob} \\
+% b \sample \bin \< \< \\
+% \< \sendmessageright*{\text{send over } b} \< \\
+% \< \< \text{do something} \\
+% \< \sendmessageleft*{\text{send over sth. else}} \< \\
+% \text{finalize} \< \< }
+%
+% \subsection{Multiline Messages}
+% Using the starred send message commands you can easily generate multiline messages as the command
+% wraps an \emph{aligned} environment around the message.
+% \procb{My Protocol}{%
+% \textbf{Alice} \< \< \textbf{Bob} \\
+% b \sample \bin \< \< \\
+% \< \sendmessageright*{\text{send over } b\\ \text{second line}} \< \\
+% \< \< \text{do something} \\
+% \< \sendmessage*{<-}{top={\>\text{left aligned}\\ \> \text{multiline message}}} \< \\
+% \text{finalize} \< \<}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock{My Protocol}{%
+ \textbf{Alice} \< \< \textbf{Bob} \\
+ b \sample \bin \< \< \\
+ \< \sendmessageright*{\text{send over } b\\ \text{second line}} \< \\
+ \< \< \text{do something} \\
+ \< \sendmessage*{<-}{top={\>\text{left aligned}\\ \> \text{multiline message}}} \< \\
+ \text{finalize} \< \<}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \textbf{Remark. } When using |\sendmessage*| the tabbing character |&| cannot be used.
+% Instead use the |\>| command as defined within |\pseudocode|.
+%
+% \subsubsection{Multiplayer Protocols}
+%
+% You are not limited to two players. In order to send messages skipping players
+% use |\sendmessagerightx| and |\sendmessageleftx|.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \sendmessagerightx[width]{columnspan}{Text}
+ \sendmessageleftx[width]{columnspan}{Text}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \procb{Multiparty Protocol}{
+% \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\
+% \text{work} \< \< \< \< \\
+% \< \sendmessageright{top=Work result} \< \< \< \\
+% \< \< \text{work} \< \< \\
+% \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
+% \< \< \< \< \text{work} \\
+% \< \sendmessageleftx[7cm]{8}{\text{A long message for Alice}} \< \\
+% \text{finalize} \< \< \< \< }
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \procedureblock{Multiparty Protocol}{%
+ \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\
+ \text{work} \< \< \< \< \\
+ \< \sendmessageright{top=Work result} \< \< \< \\
+ \< \< \text{work} \< \< \\
+ \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
+ \< \< \< \< \text{work} \\
+ \< \sendmessageleftx[7cm]{8}{\text{A long message for Alice}} \< \\
+ \text{finalize} \< \< \< \< }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Note that for the last message from Charlie to Alice we needed to specify the number of passed
+% over colums (|\sendmessageleftx[7cm]{8}{message}|). As we were passing
+% 4 |\<| where each creates 2 columns, the total was 8 columns.
+%
+% \subsubsection{Divisions}
+% You can use |\pcintertext| in order to divide protocols (or other pseudocode for that matter).
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pcintertext[dotted|center]{Division Text}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Note that in order to use the |\pcintertext| you need to use |\pclb| as the line break for the line
+% before. Also see Section~\ref{chap:tabbing}.
+%
+% \procb{My Protocol}{
+% \textbf{Alice} \< \< \textbf{Bob} \\
+% b \sample \bin \< \< \pclb
+% \pcintertext[dotted]{Some Division} \\
+% \< \sendmessageright*{\text{send over } b} \< \\
+% \< \< \text{do something} \pclb
+% \pcintertext[dotted]{Another Division} \\
+% \< \sendmessageleft*{\text{message}} \< \\
+% \text{finalize} \< \< }
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\procedureblock{My Protocol}{%
+ \textbf{Alice} \< \< \textbf{Bob} \\
+ b \sample \bin \< \< \pclb
+ \pcintertext[dotted]{Some Division} \\
+ \< \sendmessageright*{\text{send over } b} \< \\
+ \< \< \text{do something} \pclb
+ \pcintertext[dotted]{Another Division} \\
+ \< \sendmessageleft*{\text{message}} \< \\
+ \text{finalize} \< \< }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Line Numbering in Protocols}
+% Protocols can be numbered similarly to plain pseudocode. Additionally to the
+% |\pcln| there are the commands |\pclnr| and |\pcrln|. The first
+% allows you to right align line numbers but uses the same counter as
+% |\pcln|. The second uses a different counter.
+%
+% \procb{My Protocol}{%
+% \pcln \textbf{Alice} \< \< \textbf{Bob} \< \\
+% \pcln b \sample \bin \< \< \< \\
+% \< \sendmessageright*{\text{send over } b} \< \< \pclnr\\
+% \< \< \text{do something} \< \pclnr \\
+% \< \sendmessageleft*{\text{send over sth. else}} \<\< \pclnr \\
+% \pcln \text{finalize} \< \< \<}
+% Which is generated as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\procedureblock{My Protocol}{
+ \pcln \textbf{Alice} \< \< \textbf{Bob} \< \\
+ \pcln b \sample \bin \< \< \< \\
+ \< \sendmessageright*{\text{send over } b} \< \< \pclnr\\
+ \< \< \text{do something} \< \pclnr \\
+ \< \sendmessageleft*{\text{send over sth. else}} \<\< \pclnr \\
+ \pcln \text{finalize} \< \< \<}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% And using |\pcrln| we obtain:
+% \procb{My Protocol}{%
+% \pcln \textbf{Alice} \< \< \textbf{Bob} \< \\
+% \pcln b \sample \bin \< \< \< \\
+% \< \sendmessageright*{\text{send over } b} \<\< \pcrln\\
+% \< \< \text{do something} \< \pcrln \\
+% \< \sendmessageleft*{\text{send over sth. else}} \< \< \pcrln \\
+% \pcln \text{finalize} \< \< \< }
+% This is generated as
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\procedureblock{My Protocol}{%
+ \pcln \textbf{Alice} \< \< \textbf{Bob} \\
+ \pcln b \sample \bin \< \< \\
+ \< \sendmessageright*{\text{send over } b} \< \pcrln\\
+ \< \< \text{do something} \pcrln \\
+ \< \sendmessageleft*{\text{send over sth. else}} \< \pcrln \\
+ \pcln \text{finalize} \< \< }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Separators}
+% \label{sec:protocol:separator}
+% The commands |\pclnseparator| and |\pcrlnseparator| define the separators between code and line number.
+% By default the left separator is set to (:) colon and the right separator is set to an empty string.
+%
+% \subsubsection{Spacing}
+% Spacings after the left separator and in front of the right separator can be controlled by
+% |\pclnspace| and |\pclnrspace| which are set to 1em and 0.5em, respectively.
+%
+% \subsection{Sub Protocols}
+%
+% Use the |subprocedure| environemnt to also create sub protocols.
+%
+% \procb{My Protocol}{
+% \textbf{Alice} \< \< \textbf{Bob} \\
+% b \sample \bin \< \< \\
+% \< \sendmessageright*{\text{send over } b} \< \\
+% \< \< \text{do something} \\
+% \<\< \dbox{\begin{subprocedure}\procedure{Subprotocol}{
+% \< \< \textbf{Charlie} \\
+% \text{something more} \< \< \\
+% \< \sendmessageright*[1.5cm]{\text{message}} \< \\
+% \< \< \text{some processing} \\
+% \< \< \text{more processing} \\
+% \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
+% \< \sendmessageright*[1.5cm]{\text{message}} \< \\
+% \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
+% }\end{subprocedure}} \\
+% \< \sendmessageleft*{\text{send over sth. else}} \< \\
+% \text{finalize} \< \< }
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\procedureblock{My Protocol}{
+ \textbf{Alice} \< \< \textbf{Bob} \\
+ b \sample \bin \< \< \\
+ \< \sendmessageright*{\text{send over } b} \< \\
+ \< \< \text{do something} \\
+ \<\< \dbox{\begin{subprocedure}\procedure{Subprotocol}{
+ \< \< \textbf{Charlie} \\
+ \text{something more} \< \< \\
+ \< \sendmessageright*[1.5cm]{\text{message}} \< \\
+ \< \< \text{some processing} \\
+ \< \< \text{more processing} \\
+ \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
+ \< \sendmessageright*[1.5cm]{\text{message}} \< \\
+ \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
+ }\end{subprocedure}} \\
+ \< \sendmessageleft*{\text{send over sth. else}} \< \\
+ \text{finalize} \< \< }
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \amipagebreak
+% \section{Game-Based Proofs}
+% \label{chap:gbproofs}
+%
+% \subsection{Basics}
+% \index{gameproof}
+% \index{\textbackslash \pcgame}
+% \index{gameprocedure}
+%
+% Besides displaying pseudocode the package also comes with commands to help presetn game-based proofs.
+% The |gameproof| environment wraps the pseudocode block of a game-based proof.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{gameproof}
+ proof goes here
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Within a |gameproof| environment use the command |\gameprocedure| which works similarly to the pseudocode
+% command and produces a heading of the form $\pcgame[\text{counter}](\secpar)$ where counter is a consecutive counter.
+% Thus, we can create the following setup
+% \begin{gameproof}
+% \begin{pchstack}[space=1em,center,boxed]
+% \gameprocedure[linenumbering,mode=text]{%
+% Step 1 \\
+% Step 2
+% }
+% \gameprocedure[mode=text]{%
+% Step 1 \\
+% Step 2
+% }
+% \end{pchstack}
+% \end{gameproof}
+% by using
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{gameproof}
+\begin{pchstack}[space=1em,center,boxed]
+ \gameprocedure[linenumbering,mode=text]{%
+ Step 1 \\
+ Step 2
+ }
+ \gameprocedure[mode=text]{%
+ Step 1 \\
+ Step 2
+ }
+\end{pchstack}
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% For discussing individual games, cryptocode provides the |\pcgame| command which
+% without argument prints \pcgame\ and with (optional) argument |\pcgame[n]| prints \pcgame[n].
+%
+% \subsubsection{Highlight Changes}
+% \index{highlight game change}
+% \index{\textbackslash gamechange}
+% In order to highlight changes from one game to the next use |\gamechange|.
+% \begin{gameproof}
+% \begin{pchstack}[space=1em,center,boxed]
+% \gameprocedure[linenumbering,mode=text]{%
+% Step 1 \\
+% Step 2
+% }
+% \gameprocedure[mode=text]{%
+% Step 1 \\
+% \gamechange{Step 2}
+% }
+% \end{pchstack}
+% \end{gameproof}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{gameproof}
+\begin{pchstack}[space=1em,center,boxed]
+ \gameprocedure[linenumbering,mode=text]{%
+ Step 1 \\
+ Step 2
+ }
+ \gameprocedure[mode=text]{%
+ Step 1 \\
+ \gamechange{Step 2}
+ }
+\end{pchstack}
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The background color can be controlled by redefining |\gamechangecolor| which by default
+% is defined as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \definecolor{gamechangecolor}{gray}{0.90}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \textbf{Remark. } Note that |\gamechange| is always in text mode.
+%
+% \subsubsection{Boxed Games}
+% \index{\textbackslash tbxgameprocedure}
+% \index{\textbackslash pcbox}
+% Use |\tbxgameprocedure| in order to create two consecutive games where the second game is \emph{boxed}. Use
+% |\pcbox| to create boxed statements.
+%\begin{gameproof}
+%\begin{pchstack}[space=1em,boxed,center]
+% \gameprocedure[linenumbering]{
+% \text{Step 1} \\
+% \text{Step 2}
+% }
+% \tbxgameprocedure{
+% \text{Step 1}; \pcbox{\text{Alternative step 1}} \\
+% \gamechange{\text{Step 2 is different}}
+% }
+% \gameprocedure{
+% \text{Step 1} \\
+% \text{\gamechange{Step 2}}
+% }
+%\end{pchstack}
+%\end{gameproof}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{gameproof}
+\begin{pchstack}[space=1em,boxed,center]
+ \gameprocedure[linenumbering]{
+ \text{Step 1} \\
+ \text{Step 2}
+ }
+ \tbxgameprocedure{
+ \text{Step 1}; \pcbox{\text{Alternative step 1}} \\
+ \gamechange{\text{Step 2 is different}}
+ }
+ \gameprocedure{
+ \text{Step 1} \\
+ \text{\gamechange{Step 2}}
+ }
+\end{pchstack}
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Reduction Hints}
+% \index{\textbackslash addgamehop}
+% In a game based proof, in order to go from one game to the next we usually give a reduction, for example, we show that
+% the difference between two games is bound by the security of some pseudorandom generator $\mathsf{PRG}$. To give a hint
+% within the pseudocode that the difference between two games is down to ``something'' you can use the |\addgamehop|
+% command.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \addgamehop{startgame}{endgame}{options}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Here options allows you to specify the hint as well as the style. The following options are available
+% \begin{description}
+% \item[hint]
+% The hint text
+% \item[nodestyle]
+% A TIKZ style to be used for the node.
+% \item[pathstyle]
+% A TIKZ style to be used for the path.
+% \item[edgestyle]
+% A TIKZ style to be used for the edge. This defaults to \enquote{bend left}.
+% \end{description}
+%
+%\begin{gameproof}
+%\begin{pchstack}[center,space=2em,aboveskip=1.5em]
+% \gameprocedure[linenumbering]{
+% \text{Step 1} \\
+% \text{Step 2}
+% }
+% \tbxgameprocedure{
+% \text{Step 1} \\
+% \gamechange{\text{Step 2 is different}}
+% }
+%\end{pchstack}
+%
+%\addgamehop{1}{2}{hint=\footnotesize some hint,nodestyle=red}
+%\addgamehop{2}{3}{hint=\footnotesize some other hint,nodestyle=red}
+%\end{gameproof}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{gameproof}
+\begin{pchstack}[center,space=2em]
+ \gameprocedure[linenumbering]{
+ \text{Step 1} \\
+ \text{Step 2}
+ }
+ \tbxgameprocedure{
+ \text{Step 1} \\
+ \gamechange{\text{Step 2 is different}}
+ }
+\end{pchstack}
+
+\addgamehop{1}{2}{hint=\footnotesize some hint,nodestyle=red}
+\addgamehop{2}{3}{hint=\footnotesize some other hint}
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The edgestyle allows you to specify how the hint is displayed. If you, for example want a straight line, rather than the curved arrow simply
+% use
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \addgamehop{1}{2}{hint=\footnotesize some hint,edgestyle=}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% If game proofs do not fit into a single picture you can specify start and end hints using the commands
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \addstartgamehop[first game]{options}
+ \addendgamehop[last game]{options}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%\begin{gameproof}
+%\begin{pchstack}[center,space=2em,aboveskip=1em]
+% \gameprocedure[linenumbering]{
+% \text{Step 1} \\
+% \text{Step 2}
+% }
+% \gameprocedure{%
+% \text{Step 1} \\
+% \gamechange{\text{Step 2 is different}}
+% }
+%\addstartgamehop{hint=\footnotesize some hint,edgestyle=}
+%\addgamehop{1}{2}{hint=\footnotesize some hint}
+%\addendgamehop{hint=\footnotesize some outgoing hint,edgestyle=}
+%\end{pchstack}
+%\end{gameproof}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{gameproof}
+\begin{pchstack}[center,space=2em]
+ \gameprocedure[linenumbering]{
+ \text{Step 1} \\
+ \text{Step 2}
+ }
+ \gameprocedure{
+ \text{Step 1} \\
+ \gamechange{\text{Step 2 is different}}
+ }
+\end{pchstack}
+
+\addstartgamehop{hint=\footnotesize some hint,edgestyle=}
+\addgamehop{1}{2}{hint=\footnotesize some hint}
+\addendgamehop{hint=\footnotesize some outgoing hint,edgestyle=}
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Numbering and Names}
+% By default the |gameproof| environment starts to count from 1 onwards. Its optional parameters allow you to specify a custom
+% name for the game as well as defining the starting number.
+% \iffalse
+%<*example>
+% \fi
+% \begin{lstlisting}
+ \begin{gameproof}[options]
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% The following parameters are available which, as usual, are provided in a key=value based form.
+% \begin{description}
+% \item[nr]
+% The starting number minus 1. Thus, when setting nr=5, the first game will be \pcgame[6].
+% \item[name]
+% The name for the game
+% \item[arg]
+% The argument to be used for the game.
+% \end{description}
+%
+%\begin{gameproof}[nr=5,name=\mathsf{MyGame},arg=(1^n)]
+%\begin{pchstack}[center,space=2em,aboveskip=2.5em]
+% \gameprocedure[linenumbering]{
+% \text{Step 1} \\
+% \text{Step 2} }
+% \gameprocedure{
+% \text{Step 1} \\
+% \gamechange{\text{Step 2 is different}} }
+%\end{pchstack}
+%
+%\addstartgamehop{hint=\footnotesize some ingoing hint,edgestyle=}
+%\addgamehop{6}{7}{hint=\footnotesize some hint}
+%\addendgamehop{hint=\footnotesize some outgoing hint,edgestyle=}
+%\end{gameproof}
+%
+% \iffalse
+%<*example>
+% \fi
+% \begin{lstlisting}
+\begin{gameproof}[nr=5,name=\mathsf{MyGame},arg=(1^n)]
+\begin{pchstack}[center,space=2em]
+ \gameprocedure[linenumbering]{
+ \text{Step 1} \\
+ \text{Step 2} }
+ \gameprocedure{
+ \text{Step 1} \\
+ \gamechange{\text{Step 2 is different}} }
+\end{pchstack}
+
+\addstartgamehop{hint=\footnotesize some ingoing hint,edgestyle=}
+\addgamehop{6}{7}{hint=\footnotesize some hint}
+\addendgamehop{hint=\footnotesize some outgoing hint,edgestyle=}
+\end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Default Name and Argument}
+% The default name and argument are controlled via the commands |\pcgamename| and |\gameprocedurearg|.
+%
+% \begin{center}
+% \begin{tabular}{ll}
+% \textbf{Command} & \textbf{Default} \\
+% |\pcgamename| & |\mathsf{Game}| \\
+% |\gameprocedurearg| & |\secpar|
+% \end{tabular}
+% \end{center}
+%
+% \subsubsection{Bi-Directional Games}
+% \index{\textbackslash bxgameprocedure}
+% \index{\textbackslash addloopgamehop}
+% You can use the |\bxgameprocedure| to generate games for going in two directions. Use the |\addloopgamehop|
+% to add the gamehop in the middle.
+%
+% \vspace{1cm}
+% \begin{center}
+% \begin{gameproof}
+% \bxgameprocedure{4}{%
+% \pcln \text{Step 1}; \pcbox{Alternative} \\
+% \pcln \text{Step 2}
+% }
+% \bxgameprocedure{3}{%
+% \text{Step 1}; \pcbox{Alternative} \\
+% \gamechange{\text{Step 2 is different}}
+% }
+% \addstartgamehop{hint=\footnotesize some hint,edgestyle=}
+% \addgamehop{1}{2}{hint=\footnotesize some hint,edgestyle=}
+% \addloopgamehop{hint=\footnotesize some loop hint}
+% \addgamehop{2}{1}{hint=\footnotesize some hint}
+% \end{gameproof}
+% \end{center}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{gameproof}
+ \bxgameprocedure{4}{%
+ \pcln \text{Step 1}; \pcbox{Alternative} \\
+ \pcln \text{Step 2}
+ }
+ \bxgameprocedure{3}{%
+ \text{Step 1}; \pcbox{Alternative} \\
+ \gamechange{\text{Step 2 is different}}
+ }
+ \addstartgamehop{hint=\footnotesize some hint,edgestyle=}
+ \addgamehop{1}{2}{hint=\footnotesize some hint,edgestyle=}
+ \addloopgamehop{hint=\footnotesize some loop hint}
+ \addgamehop{2}{1}{hint=\footnotesize some hint}
+ \end{gameproof}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Styling Game Procedures}
+% It may come in handy to define default style arguments for the underlying pseudocode
+% command used by |\gameprocedure|. For this you can
+% define the default arguments by calling \lstinline{\setgameproceduredefaultstyle} to
+% for example:
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \setgameproceduredefaultstyle{beginline=\vphantom{\bin^\prg_\prg}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The default is to not set any options.
+%
+% \subsection{Game Descriptions}
+% Cryptocode also comes with an environment to provide textual descriptions of games such as
+%
+% \begin{gamedescription}[name=MyGame,nr=2]
+% \describegame
+% This is the third game. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis condimentum velit et orci volutpat, sed ultrices lorem lobortis. Nam vehicula, justo eu varius interdum, felis mi consectetur dolor, ac posuere nulla lacus varius diam. Etiam dapibus blandit leo, et porttitor augue lacinia auctor.
+%
+% \describegame[inhint=reduction target]
+% This is the fourt game. The arrow at the side indicates the reduction target.
+% \end{gamedescription}
+%
+% The above example is generated as
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{gamedescription}[name=MyGame,nr=2]
+ \describegame
+ This is the third game. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis condimentum velit et orci volutpat, sed ultrices lorem lobortis. Nam vehicula, justo eu varius interdum, felis mi consectetur dolor, ac posuere nulla lacus varius diam. Etiam dapibus blandit leo, et porttitor augue lacinia auctor.
+
+ \describegame[inhint=reduction target]
+ This is the second game. The arrow at the side indicates the reduction target.
+ \end{gamedescription}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% The |gamedescription| environment takes an optional argument to specify name and counter (defaults to Game and 0). The command
+% |\describegame| starts a new game description and can allows you to provide a reduction hint using the option parameter |inhint|.
+%
+% \begin{description}
+% \item[inhint] Displays an ingoing arrow to denote the reduction target for this game hop.
+% \item[length] Allows to control the length of the arrow. \\
+% \item[nodestyle] Allows to control the style of the node. \\
+% \item[hint] Instead of having an ingoing arrow, this adds an outgoing arrow. \\
+% \end{description}
+%
+% \amipagebreak
+% \section{Black-Box Reductions}
+% \label{chap:bbr}
+% \index{bbrenv}
+% \index{bbrbox}
+% \index{\textbackslash bbrinput}
+% \index{\textbackslash bbroutput}
+%
+% The cryptocode package comes with support for drawing basic black box reductions. A reduction
+% always takes the following form.
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Box Name]
+ % The Box's content
+ \end{bbrbox}
+ % Commands to display communication, input output etc
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% That is, a |bbrenv| environment (where bbr is short for black-box reduction) which takes a single
+% |bbrbox| environment plus some additional commands.
+%
+% \medskip
+% Following is a simple example with a single (black)box and some code plus inputs outputs:
+%
+% \begin{bbrenv}[aboveskip=0.75cm,belowskip=0.75cm]{A}
+% \begin{bbrbox}[name=Box Name]
+% \pseudocode{
+% \text{step 1} \\
+% \text{step 2} \\
+% \pcfor \text{some condition} \pcdo \\
+% \t\text{step 3}
+% }
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \noindent This box is generated as
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}[aboveskip=1cm,belowskip=1cm]{A}
+ \begin{bbrbox}[name=Box Name]
+ \pseudocode{
+ \text{step 1} \\
+ \text{step 2} \\
+ \pcfor \text{some condition} \pcdo \\
+ \t\text{step 3}
+ }
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% The commands |bbrinput| and |bbroutput| allow to specify input and output for the latest
+% |bbrenv| environment. The optional parameter for the |bbrenv| environment allows to specify leading and trailing space (this
+% may become necessary when using inputs and outputs). For this provide |aboveskip| and |belowskip| keys.
+% (Note that in an earlier version of cryptocode you could write |\begin{bbrenv}[1cm]{A}[1cm]|. While this format
+% is still supported it should be regarded deprecated.)
+% The single mandatory argument to the bbrenv environment needs to specify a unique identifier
+% (unique for the current reduction). This id is used as an internal TIKZ node name (\url{https://www.ctan.org/pkg/pgf}).
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{bbrenv}[options]{UNIQUE IDENTIFIER}
+% deprecated version
+\begin{bbrenv}[vspace before]{UNIQUE IDENTIFIER}[vspace after]
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% As we are drawing a TIKZ image, note that we can easily later customize the image using the labels that we
+% have specified on the way.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=1cm]{A}
+% \begin{bbrbox}[name=Box Name]
+% \pseudocode{
+% \text{step 1} \\
+% \text{step 2} \\
+% \pcfor \text{some condition} \pcdo \\
+% \pcind\text{step 3}
+% }
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+%
+% \filldraw[fill=blue] (A.north) circle (4pt);
+% \filldraw[fill=blue] (A.west) circle (4pt);
+% \filldraw[fill=blue] (A.east) circle (4pt);
+% \filldraw[fill=blue] (A.south) circle (4pt);
+% \end{bbrenv}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Box Name]
+ \pseudocode{
+ \text{step 1} \\
+ \text{step 2} \\
+ \pcfor \text{some condition} \pcdo \\
+ \pcind\text{step 3}
+ }
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+
+ \filldraw[fill=blue] (A.north) circle (4pt);
+ \filldraw[fill=blue] (A.west) circle (4pt);
+ \filldraw[fill=blue] (A.east) circle (4pt);
+ \filldraw[fill=blue] (A.south) circle (4pt);
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% The |bbrbox| takes as single argument a comma separated list of key value pairs. In the example we used
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ name=Box Name
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% to specify the label. The following options are available
+%
+% \index{namepos}
+% \index{namestyle}
+% \index{abovesep}
+% \index{minheight}
+% \index{xshift}
+% \index{yshift}
+% \begin{center}
+% \begin{tabular}{ll}
+% \textbf{Option} & \textbf{Description} \\ \hline
+% name & Specifies the box's label \\
+% namepos & Specifies the position (left, center, right, top left, top center, top right, middle) \\
+% namestyle & Specifies the style of the name \\
+% abovesep & Space above box (defaults to |\baselineskip|) \\
+% minheight & The minimal height \\
+% addheight & Additional height at the end of the box \\
+% xshift & Allows horizontal positioning \\
+% yshift & Allows horizontal positioning \\
+% style & allows to customize the node
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Nesting of Boxes}
+% Boxes can be nested. For this simply insert a |bbrenv| (together with a single bbrbox) environment into an
+% existing bbrbox.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Box Name]
+% \pseudocode{
+% \text{step 1} \\
+% \text{step 2} \\
+% \pcfor \text{some condition} \pcdo \\
+% \pcind\text{step 3}
+% }
+%
+% \begin{bbrenv}{B}
+% \begin{bbrbox}[name=Inner Box]
+% \pseudocode{
+% \text{inner step 1} \\
+% \text{inner step 2}
+% }
+% \end{bbrbox}
+% \end{bbrenv}
+%
+% \pseudocode{
+% \text{step 4} \\
+% \text{step 5}
+% }
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Box Name]
+ \pseudocode{
+ \text{step 1} \\
+ \text{step 2} \\
+ \pcfor \text{some condition} \pcdo \\
+ \pcind\text{step 3}
+ }
+
+ \begin{bbrenv}{B}
+ \begin{bbrbox}[name=Inner Box]
+ \pseudocode{
+ \text{inner step 1} \\
+ \text{inner step 2}
+ }
+ \end{bbrbox}
+ \end{bbrenv}
+
+ \pseudocode{
+ \text{step 4} \\
+ \text{step 5}
+ }
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Messages and Queries}
+% \index{\textbackslash bbrmsgto}
+% \index{\textbackslash bbrmsgfrom}
+% \index{\textbackslash bbrmsgtofrom}
+% \index{\textbackslash bbrmsgfromto}
+% \index{\textbackslash bbrqryto}
+% \index{\textbackslash bbrqryfrom}
+% \index{\textbackslash bbrqrytofrom}
+% \index{\textbackslash bbrqryfromto}
+%
+% You can send messages and queries to boxes. For this use the commands
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \bbrmsgto{options}
+ \bbrmsgfrom{options}
+ \bbrmsgtofrom{options}{options}
+ \bbrmsgfromto{options}{options}
+ \bbrqryto{options}
+ \bbrqryfrom{options}
+ \bbrqrytofrom{options}{options}
+ \bbrqryfromto{options}{options}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% By convention messages are on the left of boxes and queries on the right. Commands ending on |to|
+% make an arrow to the right while commands ending on |from| make an arrow to the left. The |options|
+% define how the message is drawn and consists of a key-value list. The |tofrom| and |fromto| variants
+% draw two messages (back and forth) that are more compactly set together. Here usually, the fist message
+% should be drawn on top (|top=Label|) while the second message should be drawn on the bottom (|bottom=Label|).
+%
+% \medskip
+% For example, to draw a message with a label on top and on the side use
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \bbrmsgto{top=Top Label, side=Side Label}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% If your label contains a \enquote{,} (comma), then group the label in $\{\}$ (curly brackets).
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \bbrmsgto{top=Top Label, side={Side, Label}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% Following is a complete example. Notice that cryptocode takes care of the vertical positioning.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Box Name]
+% \pseudocode{
+% \text{step 1} \\
+% \text{step 2} \\
+% \pcfor \text{some condition} \pcdo \\
+% \pcind\text{step 3}
+% }
+%
+% \begin{bbrenv}{B}
+% \begin{bbrbox}[name=Inner Box]
+% \pseudocode{
+% \text{inner step 1} \\
+% \text{inner step 2}
+% }
+% \end{bbrbox}
+%
+% \bbrmsgto{top={$m_0,m_1$}}
+% \bbrmsgfrom{top=$q$}
+%
+% \bbrqrytofrom{top={$m_0,m_1$}}{bottom=$q$}
+%
+% \end{bbrenv}
+%
+% \pseudocode{
+% \text{step 4} \\
+% \text{step 5}
+% }
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Box Name]
+ \pseudocode{
+ \text{step 1} \\
+ \text{step 2} \\
+ \pcfor \text{some condition} \pcdo \\
+ \pcind\text{step 3}
+ }
+
+ \begin{bbrenv}{B}
+ \begin{bbrbox}[name=Inner Box]
+ \pseudocode{
+ \text{inner step 1} \\
+ \text{inner step 2}
+ }
+ \end{bbrbox}
+
+ \bbrmsgto{top={$m_0,m_1$}}
+ \bbrmsgfrom{top=$q$}
+
+ \bbrqrytofrom{top={$m_0,m_1$}}{bottom=$q$}
+
+ \end{bbrenv}
+
+ \pseudocode{
+ \text{step 4} \\
+ \text{step 5}
+ }
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Options}
+% Following is a list of all available options. Remember that underneath the reduction
+% commands is a TIKZ image (\url{https://www.ctan.org/pkg/pgf/}) and for each label
+% position (top, side, bottom) a node is generated which can be further customized
+% via low-level TIKZ.
+%
+% \begin{description}
+% \item[top] Label on top
+% \item[bottom] Label on the bottom
+% \item[side] Label on the far side of the box. For challengers and oracles, on the side of the box.
+% \item[oside] Label on the \enquote{other} side.
+% \item[topstyle] Style for label on top
+% \item[bottomstyle] Style for label on bottom
+% \item[sidestyle] Style for label on side
+% \item[osidestyle] Style for label on other side
+% \item[edgestyle] Style for edge
+% \item[length] Length of arrow
+% \item[topname] Name for node on top
+% \item[bottomname] Name for node on bottom
+% \item[sidename] Name for node on side
+% \item[osidename] Name for node on other side
+% \item[aboveskip] Space before message
+% \item[belowskip] Space after message
+% \item[fixedoffset] Ignores automatic spacing and sets the message at the provided offset from the top.
+% \item[fixedboffset] Ignores automatic spacing and sets the message at the provided offset from the bottom.
+% \item[islast] Places the message at the bottom.
+% \end{description}
+%
+%
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Box Name]
+% \pseudocode{
+% \text{step 1} \\
+% \text{step 2} \\
+% \pcfor \text{some condition} \pcdo \\
+% \pcind\text{step 3}
+% }
+%
+% \begin{bbrenv}{B}
+% \begin{bbrbox}[name=Inner Box]
+% \pseudocode{
+% \text{inner step 1} \\
+% \text{inner step 2} \\
+% }
+% \end{bbrbox}
+%
+% \bbrmsgto{top={$m_0,m_1$},side=Side Label, bottom=$b$, length=2cm,
+% topstyle={draw, solid}, sidestyle={red}, bottomstyle={draw, dashed}}
+%
+% \end{bbrenv}
+%
+% \pseudocode{
+% \text{step 4} \\
+% \text{step 5} \\
+% }
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Box Name]
+ \pseudocode{
+ \text{step 1} \\
+ \text{step 2} \\
+ \pcfor \text{some condition} \pcdo \\
+ \pcind\text{step 3}
+ }
+
+ \begin{bbrenv}{B}
+ \begin{bbrbox}[name=Inner Box]
+ \pseudocode{
+ \text{inner step 1} \\
+ \text{inner step 2} \\
+ }
+ \end{bbrbox}
+
+ \bbrmsgto{top={$m_0,m_1$},side=Side Label, bottom=$b$, length=2cm,
+ topstyle={draw, solid}, sidestyle={red}, bottomstyle={draw, dashed}}
+
+ \end{bbrenv}
+
+ \pseudocode{
+ \text{step 4} \\
+ \text{step 5} \\
+ }
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
+% \subsubsection{First Message}
+% \index{\textbackslash bbrfirstmessageoffset}
+% The first message is offset by |\bbrfirstmessageoffset| which defaults to 1ex.
+%
+% \subsubsection{Add Space}
+% \index{\textbackslash bbrmsgspace}
+% \index{\textbackslash bbrqryspace}
+% If the spacing between messages is not sufficient you can use the |bbrmsgspace| and
+% |bbrqryspace| commands to add additional space.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \begin{bbrenv}{B}
+%
+% \begin{bbrbox}[name=Adversary,minheight=15ex,xshift=4cm]
+%
+% \end{bbrbox}
+%
+% \bbrmsgto{top=$m$}
+% \bbrmsgspace{1.5cm}
+% \bbrmsgfrom{top=$\sigma$}
+%
+% \bbrqryto{top=$m$}
+% \bbrqryspace{1cm}
+% \bbrqryfrom{top=$\sigma$}
+%
+% \end{bbrenv}
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \begin{bbrenv}{B}
+
+ \begin{bbrbox}[name=Adversary,minheight=15ex,xshift=4cm]
+
+ \end{bbrbox}
+
+ \bbrmsgto{top=$m$}
+ \bbrmsgspace{1.5cm}
+ \bbrmsgfrom{top=$\sigma$}
+
+ \bbrqryto{top=$m$}
+ \bbrqryspace{1cm}
+ \bbrqryfrom{top=$\sigma$}
+
+ \end{bbrenv}
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% Note that for placing a message at the bottom, |islast| or fixed offsets often allow
+% obtain more accurate results.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \begin{bbrenv}{B}
+%
+% \begin{bbrbox}[name=Adversary,minheight=15ex,xshift=4cm]
+%
+% \end{bbrbox}
+%
+% \bbrmsgto{top=$m$}
+% \bbrmsgfrom{top=$\sigma$,islast}
+%
+% \bbrqryto{top=$m$,fixedoffset=4ex}
+% \bbrqryfrom{top=$\sigma$,fixedboffset=4ex}
+%
+% \end{bbrenv}
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \begin{bbrenv}{B}
+
+ \begin{bbrbox}[name=Adversary,minheight=15ex,xshift=4cm]
+
+ \end{bbrbox}
+
+ \bbrmsgto{top=$m$}
+ \bbrmsgfrom{top=$\sigma$,islast}
+
+ \bbrqryto{top=$m$,fixedoffset=4ex}
+ \bbrqryfrom{top=$\sigma$,fixedboffset=4ex}
+
+ \end{bbrenv}
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsubsection{Loops}
+% \index{\textbackslash bbrloop}
+% Often an adversary may send poly many queries to an oracle, or a reduction sends many queries to an adversary.
+% Consider the following setting
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \begin{bbrenv}{B}
+%
+% \begin{bbrbox}[name=Adversary,minheight=10ex,xshift=4cm]
+%
+% \end{bbrbox}
+%
+% \bbrmsgto{top=$m$,sidename=BeginLoop}
+% \bbrmsgfrom{top=$\sigma$,sidename=EndLoop}
+%
+% \end{bbrenv}
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \begin{bbrenv}{B}
+
+ \begin{bbrbox}[name=Adversary,minheight=10ex,xshift=4cm]
+
+ \end{bbrbox}
+
+ \bbrmsgto{top=$m$}
+ \bbrmsgfrom{top=$\sigma$}
+
+ \end{bbrenv}
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% First note that by specifying the minheight and xshift option we shifted the adversary box a bit to the right
+% and enlarged its box. Further we specified custom names for the node on the side of the two messages. We
+% can now use the |bbrloop| command to visualize that these two messages are exchanged $q$ many times
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \bbrloop{BeginLoop}{EndLoop}{center=$q$}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% The |bbrloop| command takes two node names and a config which allows you to specify if the label is
+% to be shown on the left, center or right. Here is the result.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \begin{bbrenv}{B}
+%
+% \begin{bbrbox}[name=Adversary,minheight=10ex,xshift=4cm]
+%
+% \end{bbrbox}
+%
+% \bbrmsgto{top=$m$,sidename=BeginLoop}
+% \bbrmsgspace{0.5cm}
+% \bbrmsgfrom{top=$\sigma$,sidename=EndLoop}
+% \bbrloop{BeginLoop}{EndLoop}{center=$q$}
+%
+% \end{bbrenv}
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \begin{bbrenv}{B}
+
+ \begin{bbrbox}[name=Adversary,minheight=10ex,xshift=4cm]
+
+ \end{bbrbox}
+
+ \bbrmsgto{top=$m$,sidename=BeginLoop}
+ \bbrmsgspace{0.5cm}
+ \bbrmsgfrom{top=$\sigma$,sidename=EndLoop}
+ \bbrloop{BeginLoop}{EndLoop}{center=$q$}
+
+ \end{bbrenv}
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% The |\bbrloop| command supports the following parameters:
+% \begin{description}
+% \item[center]
+% Label displayed within the loop
+% \item[left]
+% Label displayed left of the loop
+% \item[right]
+% Label displayed right of the loop
+% \item[centerstyle]
+% Style for center label
+% \item[leftstyle]
+% Style for left label
+% \item[rightstyle]
+% Style for right label
+% \item[clockwise]
+% Loop going in clockwise direction
+% \item[angle]
+% Angle of the arrows
+% \end{description}
+%
+% \subsubsection{Intertext}
+% \index{\textbackslash bbrmsgtxt}
+% \index{\textbackslash bbrqrytxt}
+%
+% If your reduction needs to do some extra work between queries use the |\bbrmsgtxt|
+% and |\bbrqrytxt| commands.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \bbrmsgtxt[options]{Text}
+ \bbrqrytxt[options]{Text}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \begin{bbrenv}{B}
+%
+% \begin{bbrbox}[name=Adversary,minheight=12ex,xshift=4cm]
+%
+% \end{bbrbox}
+%
+% \bbrmsgto{top=$m$}
+% \bbrmsgtxt{\pseudocode{
+% do \\
+% some \\
+% work
+% }}
+% \bbrmsgfrom{top=$\sigma$}
+%
+% \bbrqryto{top=$m$}
+% \bbrqrytxt[nodestyle={draw,dashed},xshift=2cm]{\pseudocode{
+% do \\
+% some \\
+% work
+% }}
+% \bbrqryfrom{top=$\sigma$}
+%
+% \end{bbrenv}
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \begin{bbrenv}{B}
+
+ \begin{bbrbox}[name=Adversary,minheight=12ex,xshift=4cm]
+
+ \end{bbrbox}
+
+ \bbrmsgto{top=$m$}
+ \bbrmsgtxt{\pseudocode{
+ do \\
+ some \\
+ work
+ }}
+ \bbrmsgfrom{top=$\sigma$}
+
+ \bbrqryto{top=$m$}
+ \bbrqrytxt[nodestyle={draw,dashed},xshift=2cm]{\pseudocode{
+ do \\
+ some \\
+ work
+ }}
+ \bbrqryfrom{top=$\sigma$}
+
+ \end{bbrenv}
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Oracles}
+% \index{bbroracle}
+% \index{hdistance}
+% \index{vdistance}
+% Each box can have one or more oracles which are drawn on the right hand side of the box. An oracle
+% is created similarly to a |bbrenv| environment using the |bbroracle| environment. Oracles
+% go behind the single |bbrbox| environment within an |bbrenv| enviornment.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \begin{bbrenv}{B}
+% \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
+% \end{bbrbox}
+%
+% \end{bbrenv}
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+%
+% \begin{bbroracle}{OraA}
+% \begin{bbrbox}[name=Oracle 1]
+% \end{bbrbox}
+% \end{bbroracle}
+%
+% \begin{bbroracle}{OraB}[vdistance=2cm,hdistance=3cm]
+% \begin{bbrbox}[name=Oracle 2]
+% \end{bbrbox}
+% \end{bbroracle}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \begin{bbrenv}{B}
+ \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
+ \end{bbrbox}
+
+ \end{bbrenv}
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+
+ \begin{bbroracle}{OraA}
+ \begin{bbrbox}[name=Oracle 1]
+ \end{bbrbox}
+ \end{bbroracle}
+
+ \begin{bbroracle}{OraB}[vdistance=2cm,hdistance=3cm]
+ \begin{bbrbox}[name=Oracle 2]
+ \end{bbrbox}
+ \end{bbroracle}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Via the option \enquote{hdistance=length} and \enquote{vdistance=length} you can control the horizontal and vertical position of the oracle. By default this value is set to 1.5cm and |\baselineskip|.
+%
+% \subsubsection{Communicating with Oracles}
+% \index{\textbackslash bbroracleqryfrom}
+% \index{\textbackslash bbroracleqryto}
+% \index{\textbackslash bbroracleqrytofrom}
+% \index{\textbackslash bbroracleqryfromto}
+% As oracles use the \emph{bbrbox} environment we can directly use the established ways to send messages and
+% queries to oracles. In addition you can use the |\bbroracleqryfrom| and |\bbroracleqryto|.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \bbroracleqryfrom{options}
+ \bbroracleqryto{options}
+ \bbroracleqrytofrom{options}{options}
+ \bbroracleqryfromto{options}{options}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Here options allow you to specify where the label goes (top, bottom). In addition you can use
+% |\bbroracleqryspace| to generate extra space between oracle messages. Note
+% that oracle messages need to be added after the closing |\end{bbroracle}| command.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Reduction]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \begin{bbrenv}{B}
+% \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=3cm]
+% \end{bbrbox}
+%
+% \end{bbrenv}
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+%
+% \begin{bbroracle}{OraA}
+% \begin{bbrbox}[name=Oracle 1,minheight=1cm]
+% \end{bbrbox}
+% \end{bbroracle}
+% \bbroracleqryto{top=$m$}
+% \bbroracleqryfrom{top=$b$}
+%
+% \begin{bbroracle}{OraB}
+% \begin{bbrbox}[name=Oracle 2,minheight=1cm]
+% \end{bbrbox}
+% \end{bbroracle}
+% \bbroracleqrytofrom{top=$m$}{bottom=$b$}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Reduction]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \begin{bbrenv}{B}
+ \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=3cm]
+ \end{bbrbox}
+
+ \end{bbrenv}
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+
+ \begin{bbroracle}{OraA}
+ \begin{bbrbox}[name=Oracle 1,minheight=1cm]
+ \end{bbrbox}
+ \end{bbroracle}
+ \bbroracleqrytotop=$m$}
+ \bbroracleqryfrom{top=$b$}
+
+ \begin{bbroracle}{OraB}
+ \begin{bbrbox}[name=Oracle 2,minheight=1cm]
+ \end{bbrbox}
+ \end{bbroracle}
+ \bbroracleqrytofrom{top=$m$}{bottom=$b$}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Challengers}
+% \index{bbrchallenger}
+% \index{hdistance}
+% \index{vdistance}
+% Each box can have one or more challengers which are drawn on the left hand side of the box. Challengers
+% behave identically to oracles with the exception that they are to the left of the box. A challenger
+% is created similarly to a \emph{bbrenv} environment using the \emph{bbrchallenger} environment. Challengers
+% go behind the single \emph{bbrbox} environment within an \emph{bbrenv} enviornment.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Adversary,minheight=2cm]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+%
+% \begin{bbrchallenger}{ChaA}
+% \begin{bbrbox}[name=Challenger,minheight=2cm]
+%
+% \end{bbrbox}
+% \end{bbrchallenger}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Adversary,minheight=2cm]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+
+ \begin{bbrchallenger}{ChaA}
+ \begin{bbrbox}[name=Challenger,minheight=2cm]
+
+ \end{bbrbox}
+ \end{bbrchallenger}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Via the option \enquote{hdistance=length} and \enquote{vdistance=length} you can control the horizontal and vertical position of the challenger. By default this value is set to 1.5cm and |\baselineskip|.
+%
+% \subsubsection{Communicating with Challengers}
+% \index{\textbackslash bbrchallengerqryfrom}
+% \index{\textbackslash bbrchallengerqryto}
+% \index{\textbackslash bbrchallengerqrytofrom}
+% \index{\textbackslash bbrchallengerqryfromto}
+% As challengers use the \emph{bbrbox} environment we can directly use the established ways to send messages and
+% queries to oracles. In addition you can use the |\bbrchallengerqryfrom| and |\bbrchallengerqryto|.
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \bbrchallengerqryfrom{options}
+ \bbrchallengerqryto{options}
+ \bbrchallengerqrytofrom{options}{options}
+ \bbrchallengerqryfromto{options}{options}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Here options allow you to specify where the label goes (top, bottom). In addition you can use
+% |\bbrchallengerqryspace| to generate extra space between oracle messages. Note
+% that challenger messages need to be added after the closing |\end{bbrchallenger}| command.
+%
+% \begin{bbrenv}[aboveskip=1cm,belowskip=0.5cm]{A}
+% \begin{bbrbox}[name=Adversary,minheight=2cm]
+% \pseudocode{
+% \text{Do something}
+% }
+%
+% \end{bbrbox}
+% \bbrinput{input}
+% \bbroutput{output}
+%
+% \begin{bbrchallenger}{ChaA}
+% \begin{bbrbox}[name=Challenger,minheight=2cm]
+%
+% \end{bbrbox}
+% \end{bbrchallenger}
+%
+% \bbrchallengerqrytofrom{top=$m$}{bottom=$b$}
+% \end{bbrenv}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \begin{bbrenv}{A}
+ \begin{bbrbox}[name=Adversary,minheight=2cm]
+ \pseudocode{
+ \text{Do something}
+ }
+
+ \end{bbrbox}
+ \bbrinput{input}
+ \bbroutput{output}
+
+ \begin{bbrchallenger}{ChaA}
+ \begin{bbrbox}[name=Challenger,minheight=2cm]
+
+ \end{bbrbox}
+ \end{bbrchallenger}
+
+ \bbrchallengerqryfromto{top=$m$}{bottom=$b$}
+ \end{bbrenv}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Examples}
+% A reduction sketch for full domain hash.
+%
+%\begin{bbrenv}{Red}
+%
+% \begin{bbrbox}[name=\textsc{Reduction }$\bdv$]
+%
+% \pseudocode{
+% j \sample [q]
+% }
+%
+% \vspace{2ex}
+% \emph{/* begin simulation */}
+%
+% \begin{bbrenv}[aboveskip=2em]{Adv}
+% \begin{bbrbox}[name=$\adv$,minheight=8.5cm,style={fill=black},namestyle={color=white},xshift=3cm]
+% \end{bbrbox}
+%
+% \bbrinput{$\fk$}
+% \bbroutput{$\sigma$}
+%
+% \bbrmsgfrom{top=$m_1$,afterskip=-0.5\baselineskip}
+% \bbrmsgto{bottom=$\$$,afterskip=0.5\baselineskip}
+%
+% \bbrmsgvdots
+%
+% \bbrmsgfrom{top=$m_{j-1}$,beforeskip=0.5\baselineskip,afterskip=-0.5\baselineskip}
+% \bbrmsgto{bottom=$\$$,afterskip=1.5\baselineskip}
+%
+% \bbrmsgfrom{top=$m_j$,afterskip=-0.5\baselineskip}
+% \bbrmsgto{bottom=$y$,afterskip=1.5\baselineskip}
+%
+% \bbrmsgfrom{top=$m_{j+1}$,afterskip=-0.5\baselineskip}
+% \bbrmsgto{bottom=$\$$,afterskip=0.5\baselineskip}
+%
+% \bbrmsgvdots
+%
+% \bbrmsgfrom{top=$m_q$,beforeskip=0.5\baselineskip,afterskip=-0.5\baselineskip}
+% \bbrmsgto{bottom=$\$$}
+%
+% \begin{bbroracle}{Sign}
+% \begin{bbrbox}[name=Sign,namepos=center,style={draw},minheight=1cm]
+% \end{bbrbox}
+% \end{bbroracle}
+%
+% \bbroracleqryto{top=$m$}
+% \bbroracleqryfrom{top=$\sigma$}
+%
+% \end{bbrenv}
+%
+% \pcdraw{
+% \node[left=2cm of Adv.north west] (startsim) {};
+% \node[left=2cm of Adv.south west] (endsim) {};
+% \draw[->,thick] (startsim) -- (endsim);
+% \node[rotate=90, left=2.75cm of Adv.west,anchor=center] () {\textsc{Simulation of Random Oracle}};
+% }
+%
+% \emph{/* end simulation */}
+%
+% \pseudocode{
+% y \gets \sigma
+% }
+%
+% \end{bbrbox}
+% \bbrqryfrom{beforeskip=0.25cm,top={$(\fk, y)$},side={\dbox{\pseudocode{
+% \fk \sample \fash.\kgen(\secparam) \\ x \sample \bin^{\fash.\il(\secpar)} \\ y \gets \fash.\eval(\fk, x)}
+% }}}
+% \bbrqryto{beforeskip=11.75cm,side=\pseudocode{y \in \fash^{-1}(\fk, x)}}
+% \end{bbrenv}
+%
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+\begin{bbrenv}{Red}
+
+ \begin{bbrbox}[name=\textsc{Reduction }$\bdv$]
+
+ \pseudocode{
+ j \sample [q]
+ }
+
+ \vspace{2ex}
+ \emph{/* begin simulation */}
+
+ \begin{bbrenv}[aboveskip=2em]{Adv}
+ \begin{bbrbox}[name=$\adv$,minheight=8.5cm,style={fill=black},namestyle={color=white},xshift=3cm]
+ \end{bbrbox}
+
+ \bbrinput{$\fk$}
+ \bbroutput{$\sigma$}
+
+ \bbrmsgfrom{top=$m_1$,afterskip=-0.5\baselineskip}
+ \bbrmsgto{bottom=$\$$,afterskip=0.5\baselineskip}
+
+ \bbrmsgvdots
+
+ \bbrmsgfrom{top=$m_{j-1}$,beforeskip=0.5\baselineskip,afterskip=-0.5\baselineskip}
+ \bbrmsgto{bottom=$\$$,afterskip=1.5\baselineskip}
+
+ \bbrmsgfrom{top=$m_j$,afterskip=-0.5\baselineskip}
+ \bbrmsgto{bottom=$y$,afterskip=1.5\baselineskip}
+
+ \bbrmsgfrom{top=$m_{j+1}$,afterskip=-0.5\baselineskip}
+ \bbrmsgto{bottom=$\$$,afterskip=0.5\baselineskip}
+
+ \bbrmsgvdots
+
+ \bbrmsgfrom{top=$m_q$,beforeskip=0.5\baselineskip,afterskip=-0.5\baselineskip}
+ \bbrmsgto{bottom=$\$$}
+
+ \begin{bbroracle}{Sign}
+ \begin{bbrbox}[name=Sign,namepos=center,style={draw},minheight=1cm]
+ \end{bbrbox}
+ \end{bbroracle}
+
+ \bbroracleqryto{top=$m$}
+ \bbroracleqryfrom{top=$\sigma$}
+
+ \end{bbrenv}
+
+ \pcdraw{
+ \node[left=2cm of Adv.north west] (startsim) {};
+ \node[left=2cm of Adv.south west] (endsim) {};
+ \draw[->,thick] (startsim) -- (endsim);
+ \node[rotate=90, left=2.75cm of Adv.west,anchor=center] () {\textsc{Simulation of Random Oracle}};
+ }
+
+ \emph{/* end simulation */}
+
+ \pseudocode{
+ y \gets \sigma
+ }
+
+ \end{bbrbox}
+ \bbrqryfrom{beforeskip=0.25cm,top={$(\fk, y)$},side={\dbox{\pseudocode{
+ \fk \sample \fash.\kgen(\secparam) \\ x \sample \bin^{\fash.\il(\secpar)} \\ y \gets \fash.\eval(\fk, x)}
+ }}}
+ \bbrqryto{beforeskip=11.75cm,side=\pseudocode{y \in \fash^{-1}(\fk, x)}}
+\end{bbrenv}
+
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \amipagebreak
+% \section{Known Issues}
+%
+% \subsection{Pseudocode KeepSpacing within Commands}
+% \label{sec:keepindent-problem}
+% \index{\textbackslash fbox}
+% \index{framebox}
+% The (experimental) \enquote{space=keep} option of pseudocode which should output spacing identical to that of the input
+% will fail, if the pseudocode command is called from within another command. An example is to
+% wrap the |\pseudocode| command in an |\fbox| or in a stacking environment such as |\pchstack|.
+% As a workaround for generating frame boxes you should hence
+% use a package such as \emph{mdframed} (\url{https://www.ctan.org/pkg/mdframed}) which provides a frame environment.
+%
+% \begin{mdframed}
+% \pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}
+% \end{mdframed}
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% As an alternative you could use a \emph{savebox} (in combination with the |lrbox| environment):
+%
+% \newsavebox{\mypcbox}
+% \begin{lrbox}{\mypcbox}%
+% \pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}%
+% \end{lrbox}
+% \fbox{\usebox{\mypcbox}}
+%
+% \iffalse
+%<*example>
+% \fi
+ \begin{lstlisting}
+ \newsavebox{\mypcbox}
+ \begin{lrbox}{\mypcbox}%
+ \pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}%
+ \end{lrbox}
+ \fbox{\usebox{\mypcbox}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{AMSFonts}
+% \index{amsfonts}
+% \index{noamsfonts|see {package options}}
+% \index{package options!noamsfonts}
+% Some packages are not happy with the \enquote{amsfonts} package. Cryptocode will attempt to load amsfonts if it is loaded
+% with either the \enquote{sets} or the \enquote{probability} option. In order to not load amsfonts you can additionally add the
+% \enquote{noamsfonts} at the very end. Note that in this case you should ensure that the command |\mathbb| is defined
+% as this is used by most of the commands in \enquote{sets} and some of the commands in \enquote{probability}.
+%
+% \subsection{Hyperref}
+% The hyperref package (\url{https://www.ctan.org/pkg/hyperref}) should be loaded before cryptocode. If this is not possible
+% call the |\pcfixhyperref| after |\begin{document}|.
+%
+%
+%\StopEventually{%
+% \PrintChanges
+% \PrintIndex
+%}
+%
+%
+% \amipagebreak
+%\section{Implementation}
+%
+% Following is the implementation of cryptocode. The source code documentation is
+% a work in progress.
+%
+% \begin{macrocode}
+%<*cryptocode.sty>
+% \end{macrocode}
+%
+% Note that most macros are prefixed with \emph{pc}
+% short for pseudocode. This is a general design choice to not conflict
+% with macros defined by other packages. One exception are the macros
+% defined via the various package options.
+%
+%
+% Load amsmath and mathtools early on, before defining various macros.
+% \begin{macrocode}
+\RequirePackage{amsmath}
+\RequirePackage{mathtools}
+% \end{macrocode}
+%
+%
+% \subsection{Package Options}
+%
+%\begin{macro}{\@pc@opt@amsfonts}
+% Definitions of boolean flags used to determin whether or not to load amsfonts.
+% \begin{macrocode}
+\newif\if@pc@opt@amsfonts
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@pc@opt@advantage}
+% Whether or not to define commands for the given option.
+% \begin{macrocode}
+\newif\if@pc@opt@advantage
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@pc@opt@centernot}
+% Whether or not to load centernot
+% \begin{macrocode}
+\newif\if@pc@opt@centernot
+% \end{macrocode}
+%\end{macro}
+%
+%
+% \subsubsection{operators}
+%
+%\begin{macro}{\sample}
+%\begin{macro}{\floor}
+%\begin{macro}{\tfloor}
+%\begin{macro}{\ceil}
+%\begin{macro}{\tceil}
+%\begin{macro}{\Angle}
+%\begin{macro}{\tAngle}
+%\begin{macro}{\abs}
+%\begin{macro}{\tabs}
+%\begin{macro}{\norm}
+%\begin{macro}{\tnorm}
+%\begin{macro}{\concat}
+%\begin{macro}{\emptystring}
+%\begin{macro}{\argmax}
+%\begin{macro}{\argmin}
+%\begin{macro}{\pindist}
+%\begin{macro}{\cindist}
+%\begin{macro}{\sindist}
+% Definitions of macros for the \emph{operators} pacakge option.
+%
+% \begin{macrocode}
+\DeclareOption{operators}{
+\providecommand{\sample}{\hskip2.3pt{\gets\!\!\mbox{\scriptsize${\$}$\normalsize}}\,}
+
+\DeclarePairedDelimiter\pc@floor{\lfloor}{\rfloor}
+\providecommand{\floor}[1]{\pc@floor*{#1}}
+\providecommand{\tfloor}[1]{\pc@floor{#1}}
+
+\DeclarePairedDelimiter\pc@ceil{\lceil}{\rceil}
+\providecommand{\ceil}[1]{\pc@ceil*{#1}}
+\providecommand{\tceil}[1]{\pc@ceil{#1}}
+
+\DeclarePairedDelimiter\pc@Angle{\langle}{\rangle}
+\providecommand{\Angle}[1]{\pc@Angle*{#1}}
+\providecommand{\tAngle}[1]{\pc@Angle{#1}}
+
+\DeclarePairedDelimiter\pc@abs{\lvert}{\rvert}
+\providecommand{\abs}[1]{\pc@abs*{#1}}
+\providecommand{\tabs}[1]{\pc@abs{#1}}
+
+\DeclarePairedDelimiter\pc@norm{\lVert}{\rVert}
+\providecommand{\norm}[1]{\pc@norm*{#1}}
+\providecommand{\tnorm}[1]{\pc@tnorm{#1}}
+
+\providecommand{\concat}{\ensuremath{\|}}
+\providecommand{\emptystring}{\ensuremath{\varepsilon}}
+
+\DeclareMathOperator*{\argmax}{arg\,max}
+\DeclareMathOperator*{\argmin}{arg\,min}
+
+%indistinguishability
+\newcommand{\@pc@oset}[3][0ex]{%
+ \mathrel{\mathop{#3}\limits^{
+ \vbox to#1{\kern-2\ex@
+ \hbox{$\scriptstyle#2$}\vss}}}}
+
+\newcommand{\pindist}{\@pc@oset{\text{p}}{\lower.2ex\hbox{$=$}}}
+\newcommand{\sindist}{\@pc@oset{\text{s}}{\lower.1ex\hbox{$\approx$}}}
+\newcommand{\cindist}{\@pc@oset{\text{c}}{\lower.1ex\hbox{$\approx$}}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{adversary}
+%
+%\begin{macro}{\adversary}
+%\begin{macro}{\adv}
+%\begin{macro}{\bdv}
+%\begin{macro}{\cdv}
+%\begin{macro}{\ddv}
+%\begin{macro}{\edv}
+%\begin{macro}{\mdv}
+%\begin{macro}{\pdv}
+%\begin{macro}{\rdv}
+%\begin{macro}{\sdv}
+% Definitions of adversaries $\adv$ (|\adv|), $\bdv$ (|\bdv|), etc.~together with a style |\pcadvstyle|.
+% \begin{macrocode}
+\DeclareOption{adversary}{
+\providecommand{\adversary}[1]{\pcadvstyle{#1}}
+
+\providecommand{\adv}{\pcadvstyle{A}}
+\providecommand{\bdv}{\pcadvstyle{B}}
+\providecommand{\cdv}{\pcadvstyle{C}}
+\providecommand{\ddv}{\pcadvstyle{D}}
+\providecommand{\edv}{\pcadvstyle{E}}
+\providecommand{\mdv}{\pcadvstyle{M}}
+\providecommand{\pdv}{\pcadvstyle{P}}
+\providecommand{\rdv}{\pcadvstyle{R}}
+\providecommand{\sdv}{\pcadvstyle{S}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{landau}
+%
+%\begin{macro}{\bigO}
+%\begin{macro}{\smallO}
+%\begin{macro}{\bigOmega}
+%\begin{macro}{\smallOmega}
+%\begin{macro}{\bigsmallO}
+%\begin{macro}{\bigTheta}
+%\begin{macro}{\orderOf}
+% Defines several \emph{Landau symbols}.
+% \begin{macrocode}
+\DeclareOption{landau}{
+\providecommand{\bigO}[1]{\ensuremath{\mathcal{O}\pc@olrk*{#1}}}
+\providecommand{\smallO}[1]{\ensuremath{\text{o}\pc@olrk*{#1}}}
+\providecommand{\bigOmega}[1]{\ensuremath{\Omega\pc@olrk*{#1}}}
+\providecommand{\smallOmega}[1]{\ensuremath{\omega\pc@olrk*{#1}}}
+\providecommand{\bigsmallO}[1]{%
+\PackageWarning{cryptocode}{bigsmallO is deprecated. Use bigTheta instead.}%
+\ensuremath{\Theta\pc@olrk*{#1}}}
+\providecommand{\bigTheta}[1]{\ensuremath{\Theta\pc@olrk*{#1}}}
+\providecommand{\orderOf}{\ensuremath{\sim}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{probability}
+%
+%\begin{macro}{\probname}
+%\begin{macro}{\expectationname}
+%\begin{macro}{\supportname}
+%\begin{macro}{\tprob}
+%\begin{macro}{\prob}
+%\begin{macro}{\tprobsub}
+%\begin{macro}{\probsub}
+%\begin{macro}{\probsublong}
+%\begin{macro}{\tcondprob}
+%\begin{macro}{\condprob}
+%\begin{macro}{\tcondprobsub}
+%\begin{macro}{\condprobsub}
+%\begin{macro}{\texpect}
+%\begin{macro}{\expect}
+%\begin{macro}{\texpsub}
+%\begin{macro}{\expsub}
+%\begin{macro}{\tcondexp}
+%\begin{macro}{\condexp}
+%\begin{macro}{\tcondexpsub}
+%\begin{macro}{\condexpsub}
+%\begin{macro}{\supp}
+%\begin{macro}{\entropy}
+%\begin{macro}{\condentropy}
+%\begin{macro}{\minentropy}
+%\begin{macro}{\condminentropy}
+%\begin{macro}{\condavgminentropy}
+% The \emph{probability} package option defines various macros for typesetting
+% probabilities.
+%
+% Sets flags |\@pc@opt@amsfontstrue|.
+% \begin{macrocode}
+\DeclareOption{probability}{
+\@pc@opt@amsfontstrue
+
+\providecommand{\probname}{Pr}
+\providecommand{\expectationname}{\ensuremath{\mathbb{E}}}
+\providecommand{\supportname}{Supp}
+
+\providecommand{\tprob}[1]{\ensuremath{\operatorname{\probname}\pc@elrk{#1}}}
+\providecommand{\prob}[1]{\ensuremath{\operatorname{\probname}\pc@elrk*{#1}}}
+
+\providecommand{\tprobsub}[2]{\ensuremath{\operatorname{\probname}_{#1}\pc@elrk{#2}}}
+\providecommand{\probsub}[2]{\ensuremath{\operatorname{\probname}_{#1}\pc@elrk*{#2}}}
+\providecommand{\probsublong}[2]{\ensuremath{\prob{#2\,:\,#1}}}
+
+\providecommand{\tcondprob}[2]{\ensuremath{\tprob{#1\,\left|\,#2\vphantom{#1}\right.}}}
+\providecommand{\condprob}[2]{\ensuremath{\prob{#1\,\left|\,#2\vphantom{#1}\right.}}}
+
+\providecommand{\tcondprobsub}[3]{\ensuremath{\tprobsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+\providecommand{\condprobsub}[3]{\ensuremath{\probsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+
+\providecommand{\texpect}[1]{\ensuremath{\operatorname{\expectationname}\pc@elrk{#1}}}
+\providecommand{\expect}[1]{\ensuremath{\operatorname{\expectationname}\pc@elrk*{#1}}}
+
+\providecommand{\texpsub}[2]{\ensuremath{\operatorname{\expectationname}_{#1}\pc@elrk{#2}}}
+\providecommand{\expsub}[2]{\ensuremath{\operatorname{\expectationname}_{#1}\pc@elrk*{#2}}}
+
+\providecommand{\tcondexp}[2]{\ensuremath{\texpect{#1\,\left|\,#2\vphantom{#1}\right.}}}
+\providecommand{\condexp}[2]{\ensuremath{\expect{#1\,\left|\,#2\vphantom{#1}\right.}}}
+
+\providecommand{\tcondexpsub}[3]{\ensuremath{\texpsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+\providecommand{\condexpsub}[3]{\ensuremath{\expsub{#1}{#2\,\left|\,#3\vphantom{#1}\right.}}}
+
+\providecommand{\supp}[1]{\ensuremath{\operatorname{Supp}\pc@olrk*{#1}}}
+
+\providecommand{\entropy}[1]{\ensuremath{\operatorname{H}\pc@olrk*{#1}}}
+\providecommand{\condentropy}[2]{%
+\ensuremath{\operatorname{H}\pc@olrk*{#1\,\left|\,#2\vphantom{#1}\right.}}}
+
+\providecommand{\minentropy}[1]{\ensuremath{\operatorname{H_\infty}\pc@olrk*{#1}}}
+\providecommand{\tminentropy}[1]{\ensuremath{\operatorname{H_\infty}\pc@olrk{#1}}}
+\providecommand{\condminentropy}[2]{%
+\ensuremath{\operatorname{H_\infty}\pc@olrk*{#1\,\left|\,#2\vphantom{#1}\right.}}}
+\providecommand{\tcondminentropy}[2]{%
+\ensuremath{\operatorname{H_\infty}\pc@olrk{#1\,\left|\,#2\vphantom{#1}\right.}}}
+\providecommand{\condavgminentropy}[2]{%
+\ensuremath{\operatorname{\tilde{H}_\infty}\pc@olrk*{#1\,\left|\,#2\vphantom{#1}\right.}}}
+\providecommand{\tcondavgminentropy}[2]{%
+\ensuremath{\operatorname{\tilde{H}_\infty}\pc@olrk{#1\,\left|\,#2\vphantom{#1}\right.}}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{sets}
+%
+%\begin{macro}{\NN}
+%\begin{macro}{\ZZ}
+%\begin{macro}{\CC}
+%\begin{macro}{\QQ}
+%\begin{macro}{\RR}
+%\begin{macro}{\PP}
+%\begin{macro}{\FF}
+%\begin{macro}{\GG}
+%\begin{macro}{\set}
+%\begin{macro}{\sequence}
+%\begin{macro}{\bin}
+% The \emph{sets} option defines various macros for standard sets such as
+% natural numbers |\NN| (\NN). The style can be configured via |\pcsetstyle|.
+%
+% As we usually work with bit strings, the macro |\bin| defines the set \bin.
+% Sets the flags |\@pc@opt@amsfontstrue|.
+% \begin{macrocode}
+\DeclareOption{sets}{
+\@pc@opt@amsfontstrue
+
+\providecommand\NN{\pcsetstyle{N}}
+\providecommand\ZZ{\pcsetstyle{Z}}
+\providecommand\CC{\pcsetstyle{C}}
+\providecommand\QQ{\pcsetstyle{Q}}
+\providecommand\RR{\pcsetstyle{R}}
+\providecommand\PP{\pcsetstyle{P}}
+\providecommand\FF{\pcsetstyle{F}}
+\providecommand\GG{\pcsetstyle{G}}
+
+\providecommand{\set}[1]{\ensuremath{\pc@clrk*{#1}}}
+\providecommand{\sequence}[1]{\ensuremath{\pc@olrk*{#1}}}
+\providecommand{\bin}{\ensuremath{\{0,1\}}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsubsection{noamsfonts}
+%
+%\begin{macro}{\@pc@opt@amsfontsfalse}
+% Package option \emph{noamsfonts} ensures that ams fonts are not loaded.
+% For this flag |\@pc@opt@amsfontsfalse| is set to false.
+% \begin{macrocode}
+\DeclareOption{noamsfonts}{
+ \@pc@opt@amsfontsfalse
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% \subsubsection{notions}
+%
+%\begin{macro}{\indcpa}
+%\begin{macro}{\indcca}
+%\begin{macro}{\indccai}
+%\begin{macro}{\indccaii}
+%\begin{macro}{\priv}
+%\begin{macro}{\ind}
+%\begin{macro}{\indcda}
+%\begin{macro}{\prvcda}
+%\begin{macro}{\prvrcda}
+%\begin{macro}{\kiae}
+%\begin{macro}{\kdae}
+%\begin{macro}{\mle}
+%\begin{macro}{\uce}
+%\begin{macro}{\eufcma}
+%\begin{macro}{\eufko}
+%\begin{macro}{\eufnacma}
+%\begin{macro}{\seufcma}
+% The \emph{notion} package option defines various cryptographic security
+% notions.
+% The style to be can be defined via |\pcnotionstyle|.
+% \begin{macrocode}
+\DeclareOption{notions}{
+\providecommand{\indcpa}{\pcnotionstyle{IND\pcmathhyphen{}CPA}}
+\providecommand{\indcca}{\pcnotionstyle{IND\pcmathhyphen{}CCA}}
+\providecommand{\indccai}{\pcnotionstyle{IND\pcmathhyphen{}CCA1}}
+\providecommand{\indccaii}{\pcnotionstyle{IND\pcmathhyphen{}CCA2}}
+\providecommand{\priv}{\pcnotionstyle{PRIV}}
+\providecommand{\ind}{\pcnotionstyle{IND}}
+\providecommand{\indcda}{\pcnotionstyle{IND\pcmathhyphen{}CDA}}
+\providecommand{\prvcda}{\pcnotionstyle{PRV\pcmathhyphen{}CDA}}
+\providecommand{\prvrcda}{\pcnotionstyle{PRV\$\pcmathhyphen{}CDA}}
+\providecommand{\kiae}{\pcnotionstyle{KIAE}}
+\providecommand{\kdae}{\pcnotionstyle{KDAE}}
+\providecommand{\mle}{\pcnotionstyle{MLE}}
+\providecommand{\uce}{\pcnotionstyle{UCE}}
+
+\providecommand{\eufcma}{\pcnotionstyle{EUF\pcmathhyphen{}CMA}}
+\providecommand{\eufnacma}{\pcnotionstyle{EUF\pcmathhyphen{}naCMA}}
+\providecommand{\seufcma}{\pcnotionstyle{SUF\pcmathhyphen{}CMA}}
+
+\providecommand{\eufko}{\pcnotionstyle{EUF\pcmathhyphen{}KO}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsubsection{logic}
+%
+%\begin{macro}{\AND}
+%\begin{macro}{\OR}
+%\begin{macro}{\NOR}
+%\begin{macro}{\NOT}
+%\begin{macro}{\NAND}
+%\begin{macro}{\XOR}
+%\begin{macro}{\XNOR}
+%\begin{macro}{\xor}
+%\begin{macro}{\false}
+%\begin{macro}{\true}
+%\begin{macro}{\notimplies}
+% \begin{macrocode}
+\DeclareOption{logic}{
+% load centernot needed for notimplies
+\@pc@opt@centernottrue
+
+\providecommand{\AND}{\ensuremath{\mathrm{AND}}}
+\providecommand{\OR}{\ensuremath{\mathrm{OR}}}
+\providecommand{\NOR}{\ensuremath{\mathrm{NOR}}}
+\providecommand{\NOT}{\ensuremath{\mathrm{NOT}}}
+\providecommand{\NAND}{\ensuremath{\mathrm{NAND}}}
+\providecommand{\XOR}{\ensuremath{\mathrm{XOR}}}
+\providecommand{\XNOR}{\ensuremath{\mathrm{XNOR}}}
+\providecommand{\xor}{\ensuremath{\oplus}}
+\providecommand{\false}{\mathsf{false}}
+\providecommand{\true}{\mathsf{true}}
+\providecommand{\notimplies}{\centernot\implies}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{ff (function families)}
+%
+%
+%\begin{macro}{\kgen}
+%\begin{macro}{\pgen}
+%\begin{macro}{\eval}
+%\begin{macro}{\invert}
+%\begin{macro}{\il}
+%\begin{macro}{\ol}
+%\begin{macro}{\kl}
+%\begin{macro}{\nl}
+%\begin{macro}{\rl}
+% The \emph{ff} option defines macros for function families.
+% Algorithms are typeset via |\pcalgostyle|.
+% \begin{macrocode}
+\DeclareOption{ff}{
+\providecommand{\kgen}{\pcalgostyle{KGen}}
+\providecommand{\pgen}{\pcalgostyle{Pgen}}
+\providecommand{\eval}{\pcalgostyle{Eval}}
+\providecommand{\invert}{\pcalgostyle{Inv}}
+
+\providecommand{\il}{\pcalgostyle{il}}
+\providecommand{\ol}{\pcalgostyle{ol}}
+\providecommand{\kl}{\pcalgostyle{kl}}
+\providecommand{\nl}{\pcalgostyle{nl}}
+\providecommand{\rl}{\pcalgostyle{rl}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{mm (machine models)}
+%
+%
+%\begin{macro}{\pcmachinemodelstyle}
+%\begin{macro}{\CRKT}
+%\begin{macro}{\TM}
+%\begin{macro}{\PROG}
+%\begin{macro}{\uTM}
+%\begin{macro}{\uC}
+%\begin{macro}{\uP}
+%\begin{macro}{\csize}
+%\begin{macro}{\tmtime}
+%\begin{macro}{\ppt}
+% The \emph{mm} option defines macros for machine models.
+% \begin{macrocode}
+\DeclareOption{mm}{
+\providecommand{\CRKT}{\pcmachinemodelstyle{C}}
+\providecommand{\TM}{\pcmachinemodelstyle{M}}
+\providecommand{\PROG}{\pcmachinemodelstyle{P}}
+
+\providecommand{\uTM}{\pcmachinemodelstyle{UM}}
+\providecommand{\uC}{\pcmachinemodelstyle{UC}}
+\providecommand{\uP}{\pcmachinemodelstyle{UEval}}
+
+\providecommand{\csize}{\pcmachinemodelstyle{size}}
+\providecommand{\tmtime}{\pcmachinemodelstyle{time}}
+\providecommand{\ppt}{\pcalgostyle{PPT}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsubsection{advantage}
+%
+% The \emph{advantage} option defines an |\advantage| command for typesetting
+% advantage declarations of adversaries.
+% \begin{macrocode}
+\DeclareOption{advantage}{
+\@pc@opt@advantagetrue
+}
+% \end{macrocode}
+%
+%
+% \subsubsection{primitives}
+%
+%\begin{macro}{\prover}
+%\begin{macro}{\verifier}
+%\begin{macro}{\nizk}
+%\begin{macro}{\hash}
+%\begin{macro}{\gash}
+%\begin{macro}{\fash}
+%\begin{macro}{\enc}
+%\begin{macro}{\dec}
+%\begin{macro}{\sig}
+%\begin{macro}{\sign}
+%\begin{macro}{\verify}
+%\begin{macro}{\obf}
+%\begin{macro}{\iO}
+%\begin{macro}{\diO}
+%\begin{macro}{\owf}
+%\begin{macro}{\prf}
+%\begin{macro}{\prp}
+%\begin{macro}{\prg}
+%\begin{macro}{\mac}
+%\begin{macro}{\puncture}
+%\begin{macro}{\source}
+%\begin{macro}{\predictor}
+%\begin{macro}{\sam}
+%\begin{macro}{\dist}
+%\begin{macro}{\distinguisher}
+%\begin{macro}{\simulator}
+%\begin{macro}{\ext}
+%\begin{macro}{\extractor}
+% The \emph{primitives} package option defines various cryptographic primitives.
+% \begin{macrocode}
+\DeclareOption{primitives}{
+% \end{macrocode}
+% Zero knowledge
+% \begin{macrocode}
+\providecommand{\prover}{\pcalgostyle{P}}
+\providecommand{\verifier}{\pcalgostyle{V}}
+\providecommand{\nizk}{\pcalgostyle{NIZK}}
+% \end{macrocode}
+% Hash
+% \begin{macrocode}
+\providecommand{\hash}{\pcalgostyle{H}}
+\providecommand{\gash}{\pcalgostyle{G}}
+\providecommand{\fash}{\pcalgostyle{F}}
+\providecommand{\pad}{\pcalgostyle{pad}}
+% \end{macrocode}
+% Encryption
+% \begin{macrocode}
+\providecommand{\enc}{\pcalgostyle{Enc}}
+\providecommand{\dec}{\pcalgostyle{Dec}}
+% \end{macrocode}
+% Signatures
+% \begin{macrocode}
+\providecommand{\sig}{\pcalgostyle{Sig}}
+\providecommand{\sign}{\pcalgostyle{Sign}}
+\providecommand{\verify}{\pcalgostyle{Vf}}
+% \end{macrocode}
+% Obfuscation
+% \begin{macrocode}
+\providecommand{\obf}{\pcalgostyle{O}}
+\providecommand{\iO}{\pcalgostyle{iO}}
+\providecommand{\diO}{\pcalgostyle{diO}}
+% \end{macrocode}
+% One-wayness
+% \begin{macrocode}
+\providecommand{\owf}{\pcalgostyle{OWF}}
+\providecommand{\owp}{\pcalgostyle{OWP}}
+\providecommand{\tdf}{\pcalgostyle{TF}}
+\providecommand{\inv}{\pcalgostyle{Inv}}
+\providecommand{\hcf}{\pcalgostyle{HC}}
+% \end{macrocode}
+% Pseudorandomness
+% \begin{macrocode}
+\providecommand{\prf}{\pcalgostyle{PRF}}
+\providecommand{\prp}{\pcalgostyle{PRP}}
+\providecommand{\prg}{\pcalgostyle{PRG}}
+% \end{macrocode}
+% Message authentication code
+% \begin{macrocode}
+\providecommand{\mac}{\pcalgostyle{MAC}}
+% \end{macrocode}
+% Puncture
+% \begin{macrocode}
+\providecommand{\puncture}{\pcalgostyle{Puncture}}
+% \end{macrocode}
+% Misc
+% \begin{macrocode}
+\providecommand{\source}{\pcalgostyle{S}}
+\providecommand{\predictor}{\pcalgostyle{P}}
+\providecommand{\sam}{\pcalgostyle{Sam}}
+\providecommand{\dist}{\pcalgostyle{D}}
+\providecommand{\distinguisher}{\pcalgostyle{Dist}}
+\providecommand{\simulator}{\pcalgostyle{Sim}}
+\providecommand{\ext}{\pcalgostyle{Ext}}
+\providecommand{\extractor}{\ext}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{oracles}
+%
+%\begin{macro}{\Oracle}
+%\begin{macro}{\oracle}
+%\begin{macro}{\ro}
+% The \emph{oracles} package option defines macros for typesetting oracles.
+% \begin{macrocode}
+\DeclareOption{oracles}{
+\providecommand{\Oracle}[1]{\pcalgostyle{O{#1}}}
+
+\def\oracle{\bgroup\oracle@}
+\newcommand{\oracle@}[1][]{\ifthenelse{\equal{#1}{}}{\oracle@@{O}}{\oracle@@{#1}}}
+\def\oracle@@#1{\pcoraclestyle{#1}\egroup}
+
+\providecommand{\ro}{\pcoraclestyle{RO}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsubsection{events}
+%
+%\begin{macro}{\event}
+%\begin{macro}{\nevent}
+%\begin{macro}{\bad}
+%\begin{macro}{\nbad}
+% The \emph{events} package option defines macros for typesetting
+% events (probabilistic).
+% Also defines |\bad| as a \emph{bad event} often used in game based proofs.
+% \begin{macrocode}
+\DeclareOption{events}{
+\providecommand{\event}[1]{\ensuremath{\mathsf{#1}}}
+\providecommand{\nevent}[1]{\ensuremath{\overline{\event{#1}}}}
+
+\providecommand{\bad}{\ensuremath{\event{bad}}}
+\providecommand{\nbad}{\ensuremath{\nevent{bad}}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsubsection{complexity}
+%
+%\begin{macro}{\complclass}
+%\begin{macro}{\cocomplclass}
+%\begin{macro}{\npol}
+%\begin{macro}{\conpol}
+%\begin{macro}{\pol}
+%\begin{macro}{\bpp}
+%\begin{macro}{\ppoly}
+%\begin{macro}{\AM}
+%\begin{macro}{\coAM}
+%\begin{macro}{\AC}
+%\begin{macro}{\NC}
+%\begin{macro}{\TC}
+%\begin{macro}{\PH}
+%\begin{macro}{\csigma}
+%\begin{macro}{\cpi}
+%\begin{macro}{\cosigma}
+%\begin{macro}{\copi}
+% The \emph{complexity} package option defines various complexity classes.
+% The style can be adjusted via |\pccomplexitystyle|
+% \begin{macrocode}
+\DeclareOption{complexity}{
+\providecommand{\complclass}[1]{\pccomplexitystyle{#1}}
+\providecommand{\cocomplclass}[1]{\pccomplexitystyle{co}\pcmathhyphen{}\pccomplexitystyle{#1}}
+
+\providecommand{\npol}{\pccomplexitystyle{NP}}
+\providecommand{\conpol}{\cocomplclass{NP}}
+\providecommand{\pol}{\pccomplexitystyle{P}}
+\providecommand{\bpp}{\pccomplexitystyle{BPP}}
+\providecommand{\ppoly}{\ensuremath{\pol/\mathrm{poly}}}
+
+\providecommand{\AM}{\pccomplexitystyle{AM}}
+\providecommand{\coAM}{\cocomplclass{AM}}
+
+\providecommand{\AC}[1]{\ensuremath{\ifthenelse{\equal{#1}{}}{\pccomplexitystyle{AC}}{\pccomplexitystyle{AC}^{#1}}}}
+\providecommand{\NC}[1]{\ensuremath{\ifthenelse{\equal{#1}{}}{\pccomplexitystyle{NC}}{\pccomplexitystyle{NC}^{#1}}}}
+\providecommand{\TC}[1]{\ensuremath{\ifthenelse{\equal{#1}{}}{\pccomplexitystyle{TC}}{\pccomplexitystyle{TC}^{#1}}}}
+
+\providecommand{\PH}{\pccomplexitystyle{PH}}
+\providecommand{\csigma}[1]{\pccomplexitystyle{\Sigma}^p_{#1}}
+\providecommand{\cpi}[1]{\pccomplexitystyle{\Pi}^p_{#1}}
+\providecommand{\cosigma}[1]{\cocomplclass{\Sigma}^p_{#1}}
+\providecommand{\copi}[1]{\cocomplclass{\Pi}^p_{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsubsection{asymptotics}
+%
+%\begin{macro}{\negl}
+%\begin{macro}{\poly}
+%\begin{macro}{\cc}
+%\begin{macro}{\ee}
+%\begin{macro}{\kk}
+%\begin{macro}{\mm}
+%\begin{macro}{\nn}
+%\begin{macro}{\pp}
+%\begin{macro}{\qq}
+%\begin{macro}{\rr}
+% The \emph{asymptotics} package option defines \enquote{polynomials} \cc\ (|\cc|),
+% \ee\ (|\ee|), \kk\, (|\kk|), \mm\ (|\mm|), \nn\ (|\nn|), \pp\ (|\pp|), and \qq\ (|\qq|) as well as macros |\negl| and |\poly|.
+% \begin{macrocode}
+\DeclareOption{asymptotics}{
+\providecommand{\negl}[1][\secpar]{%
+\pcpolynomialstyle{negl}\ifthenelse{\equal{#1}{}}{}{\pc@olrk*{#1}}}
+
+\providecommand{\poly}[1][\secpar]{%
+\pcpolynomialstyle{poly}\ifthenelse{\equal{#1}{}}{}{\pc@olrk*{#1}}}
+
+\def\pp{\bgroup\pp@}
+\newcommand{\pp@}[1][]{\ifthenelse{\equal{#1}{}}{\pp@@{p}}{\pp@@{#1}}}
+\def\pp@@#1{\pcpolynomialstyle{#1}\egroup}
+
+
+\providecommand{\cc}{\pcpolynomialstyle{c}}
+\providecommand{\ee}{\pcpolynomialstyle{e}}
+\providecommand{\kk}{\pcpolynomialstyle{k}}
+\providecommand{\mm}{\pcpolynomialstyle{m}}
+\providecommand{\nn}{\pcpolynomialstyle{n}}
+\providecommand{\qq}{\pcpolynomialstyle{q}}
+\providecommand{\rr}{\pcpolynomialstyle{r}}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{keys}
+%
+%\begin{macro}{\pk}
+%\begin{macro}{\vk}
+%\begin{macro}{\sk}
+%\begin{macro}{\key}
+%\begin{macro}{\hk}
+%\begin{macro}{\gk}
+%\begin{macro}{\fk}
+%\begin{macro}{\st}
+%\begin{macro}{\state}
+% The \emph{keys} package option defines various \enquote{keys} such as
+% a symmetric and general purpose \key\ (|\key|) or an asymmetric key pair
+% \pk, \sk\ (|\pk| and |\sk|)
+% \begin{macrocode}
+\DeclareOption{keys}{
+\providecommand{\pk}{\pckeystyle{pk}}
+\providecommand{\vk}{\pckeystyle{vk}}
+\providecommand{\sk}{\pckeystyle{sk}}
+
+\def\key{\bgroup\key@}
+\newcommand{\key@}[1][]{\ifthenelse{\equal{#1}{}}{\key@@{k}}{\key@@{#1}}}
+\def\key@@#1{\pckeystyle{#1}\egroup}
+
+\providecommand{\hk}{\pckeystyle{hk}}
+\providecommand{\gk}{\pckeystyle{gk}}
+\providecommand{\fk}{\pckeystyle{fk}}
+
+\providecommand{\st}{\pckeystyle{st}}
+
+\def\state{\bgroup\state@}
+\newcommand{\state@}[1][]{\ifthenelse{\equal{#1}{}}{\state@@{state}}{\state@@{#1}}}
+\def\state@@#1{\pckeystyle{#1}\egroup}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsubsection{Security parameter}
+%
+%
+%\begin{macro}{\SECPAR}
+%\begin{macro}{\secpar}
+%\begin{macro}{\secparam}
+% The \emph{n} option defines security parameter macros |\secpar| and |\secparam|
+% using $n$.
+% See also \enquote{lambda} package option.
+% \begin{macrocode}
+\DeclareOption{n}{
+ \providecommand{\SECPAR}{\ensuremath{{N_0}}}
+ \providecommand{\secpar}{\ensuremath{n}}
+ \providecommand{\secparam}{\ensuremath{1^\secpar}}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%\begin{macro}{\SECPAR}
+%\begin{macro}{\secpar}
+%\begin{macro}{\secparam}
+% The \emph{n} option defines security parameter macros |\secpar| and |\secparam|
+% using $\lambda$.
+% See also \enquote{n} package option.
+% \begin{macrocode}
+\DeclareOption{lambda}{
+ \renewcommand{\SECPAR}{\ensuremath{\Lambda}}
+ \renewcommand{\secpar}{\ensuremath{\lambda}}
+ \renewcommand{\secparam}{\ensuremath{1^\secpar}}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Preamble and Option Parsing}
+%
+% Print a warning in case an undefined package option is provided.
+% \begin{macrocode}
+\DeclareOption*{%
+ \PackageError{cryptocode}{Unknown option ‘\CurrentOption’}%
+}
+% \end{macrocode}
+%
+% By default, only the \emph{n} option (security parameter as $n$ and $1^n$) is loaded
+% \begin{macrocode}
+\ExecuteOptions{n}
+% \end{macrocode}
+%
+% We are now ready to process all package options
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% The cryptocode package depends on various external packages which are
+% loaded next. Note that the \emph{amsfonts} package is optional and can be
+% disabled via the \emph{noamsfonts} package option.
+%
+% Note that amsmath and mathtools have been loaded already earlier.
+% \begin{macrocode}
+\RequirePackage{etex}
+\if@pc@opt@amsfonts
+ \RequirePackage{amsfonts}
+\fi
+\if@pc@opt@centernot
+ \RequirePackage{centernot}
+\fi
+\RequirePackage{xcolor}
+\RequirePackage{calc}
+\RequirePackage{tikz}
+\usetikzlibrary{positioning,calc}
+\RequirePackage{ifthen}
+\RequirePackage{xargs}
+\RequirePackage{pgf}
+\RequirePackage{forloop}
+\RequirePackage{array}
+\RequirePackage{xparse}
+\RequirePackage{expl3}
+\RequirePackage{pbox}
+\RequirePackage{varwidth}
+\RequirePackage{suffix}
+\RequirePackage{etoolbox}
+\RequirePackage{environ}
+\RequirePackage{xkeyval}
+% \end{macrocode}
+%
+%
+%
+%\begin{macro}{\pcadvantagesuperstyle}
+%\begin{macro}{\pcadvantagename}
+%\begin{macro}{\pcadvantagesubstyle}
+%\begin{macro}{\advantage}
+% The \emph{advantage} option defines an |\advantage| command for typesetting
+% advantage declarations of adversaries.
+% \begin{macrocode}
+\if@pc@opt@advantage
+\providecommand{\pcadvantagesuperstyle}[1]{\mathrm{\MakeLowercase{#1}}}
+\providecommand{\pcadvantagesubstyle}[1]{#1}
+\providecommand{\pcadvantagename}{\mathsf{Adv}}
+
+\newcommandx*{\advantage}[3][3=(\secpar)]{\ensuremath{\pcadvantagename^{\pcadvantagesuperstyle{#1}}_{\pcadvantagesubstyle{#2}}#3}}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Global Macros}
+%
+%
+%
+%
+% \subsubsection{Styles}
+%
+%
+%
+%\begin{macro}{\pcalgostyle}
+%\begin{macro}{\pcsetstyle}
+%\begin{macro}{\pccomplexitystyle}
+%\begin{macro}{\pcpolynomialstyle}
+%\begin{macro}{\pcadvstyle}
+%\begin{macro}{\pcnotionstyle}
+%\begin{macro}{\pckeystyle}
+%\begin{macro}{\pcmachinemodelstyle}
+%\begin{macro}{\pcoraclestyle}
+% Definition of styles for algorithms, sets, complexity classes, polynomials,
+% adversaries, notions, keys, and machine models.
+% \begin{macrocode}
+\providecommand{\pcalgostyle}[1]{\ensuremath{\mathsf{#1}}}
+\providecommand{\pcsetstyle}[1]{\ensuremath{\mathbb{#1}}}
+\providecommand{\pccomplexitystyle}[1]{\ensuremath{\mathsf{#1}}}
+\providecommand{\pcpolynomialstyle}[1]{\ensuremath{\mathsf{#1}}}
+\providecommand{\pcadvstyle}[1]{\ensuremath{\mathcal{#1}}}
+\providecommand{\pcnotionstyle}[1]{\ensuremath{\mathrm{#1}}}
+\providecommand{\pckeystyle}[1]{\ensuremath{\mathsf{\protect\vphantom{p}#1}}}
+\providecommand{\pcmachinemodelstyle}[1]{\ensuremath{\mathsf{#1}}}
+\providecommand{\pcoraclestyle}[1]{\ensuremath{\mathsf{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{Order of Growth}
+%
+%\begin{macro}{\pc@olrk}
+%\begin{macro}{\pc@olrk*}
+%\begin{macro}{\pc@elrk}
+%\begin{macro}{\pc@elrk*}
+%\begin{macro}{\pc@clrk}
+%\begin{macro}{\pc@clrk*}
+% Define order of growth helper macros. These are optionally defined depending
+% on the loaded package options.
+% \begin{macrocode}
+\DeclarePairedDelimiter\pc@olrk{(}{)}
+\DeclarePairedDelimiter\pc@elrk{[}{]}
+\DeclarePairedDelimiter\pc@clrk{\{}{\}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{Spacing}
+%
+%\begin{macro}{\pcaboveskip}
+%\begin{macro}{\pcbelowskip}
+%\begin{macro}{\pcbeforeskip}
+%\begin{macro}{\pcafterskip}
+% Control the spacing before (resp.~after) pseudocode and stacking blocks both
+% vertically and horizontally.
+% \begin{macrocode}
+\newlength\pcaboveskip
+\setlength\pcaboveskip{\abovedisplayskip}
+
+\newlength\pcbelowskip
+\setlength\pcbelowskip{\belowdisplayskip}
+
+\newlength\pcbeforeskip
+\newlength\pcafterskip
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsubsection{Keywords and Highlighting}
+%
+%
+%\begin{macro}{\highlightkeyword}
+%\begin{macro}{\highlightaltkeyword}
+% Commands for highlighting primary and secondary keywords.
+% Both commands take an optional first parameter to control spacing
+% \begin{macrocode}
+\newcommand{\highlightkeyword}[2][\ ]{\ensuremath{\mathbf{#2}}#1}
+\newcommand{\highlightaltkeyword}[2][\ ]{\ensuremath{\mathsf{#2}}#1}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\pcglobvar}
+%\begin{macro}{\pcnew}
+%\begin{macro}{\pcwhile}
+%\begin{macro}{\pcendwhile}
+%\begin{macro}{\pcdo}
+%\begin{macro}{\pcif}
+%\begin{macro}{\pcunless}
+%\begin{macro}{\pcelse}
+%\begin{macro}{\pcelseif}
+%\begin{macro}{\pcfi}
+%\begin{macro}{\pcendif}
+%\begin{macro}{\pcendfor}
+%\begin{macro}{\pcthen}
+%\begin{macro}{\pcreturn}
+%\begin{macro}{\pcin}
+%\begin{macro}{\pcfor}
+%\begin{macro}{\pcrepeat}
+%\begin{macro}{\pcrepeatuntil}
+%\begin{macro}{\pcforeach}
+%\begin{macro}{\pcendforeach}
+%\begin{macro}{\pcuntil}
+%\begin{macro}{\pccontinue}
+%\begin{macro}{\pcfalse}
+%\begin{macro}{\pctrue}
+%\begin{macro}{\pcnull}
+%\begin{macro}{\pcdone}
+%\begin{macro}{\pcparse}
+%\begin{macro}{\pcfail}
+%\begin{macro}{\pcabort}
+% All predefined (highlightable) keywords.
+% \begin{macrocode}
+\newcommand{\pcglobvar}{\highlightkeyword{gbl}}
+\newcommand{\pcnew}{\highlightkeyword{new}}
+\newcommand{\pcwhile}{\@pc@increaseindent\highlightkeyword{while}}
+\newcommand{\pcendwhile}{\@pc@decreaseindent\highlightkeyword{endwhile}}
+\newcommandx*{\pcdo}[2][1=\ ,2=]{#1\highlightkeyword[#2]{do}}
+\newcommandx*{\pcif}[1][1=\ ]{\@pc@increaseindent\highlightkeyword[#1]{if}}
+\newcommandx*{\pcunless}[1][1=\ ]{\@pc@increaseindent\highlightkeyword[#1]{unless}}
+\newcommandx*{\pcelse}[1][1=\ ]{\@pc@tmpdecreaseindent\highlightkeyword[#1]{else}}
+\newcommandx*{\pcelseif}[1][1=\ ]{\@pc@tmpdecreaseindent\highlightkeyword[#1]{else if}}
+\newcommand{\pcfi}{\@pc@decreaseindent\highlightkeyword{fi}}
+\newcommand{\pcendif}{\@pc@decreaseindent\highlightkeyword{endif}}
+\newcommand{\pcendfor}{\@pc@decreaseindent\highlightkeyword{endfor}}
+\newcommandx*{\pcthen}[2][1=\ ,2=\ ]{#1\highlightkeyword[#2]{then}}
+\newcommand{\pcreturn}{\highlightkeyword{return}}
+\newcommandx*{\pcin}[2][1=\ ,2=]{#1\highlightkeyword[#2]{in}}
+\newcommandx*{\pcfor}[1][1=\ ]{\@pc@increaseindent\highlightkeyword[#1]{for}}
+\newcommand{\pcrepeat}[1]{%
+\@pc@increaseindent\ensuremath{%
+\highlightkeyword{repeat} #1\ \highlightkeyword{times}%
+}}
+\newcommand{\pcrepeatuntil}[2]{%
+\ensuremath{\highlightkeyword{repeat}\ #1\ \highlightkeyword{until}\ #2}}
+\newcommand{\pcforeach}{\@pc@increaseindent\highlightkeyword{foreach}}
+\newcommand{\pcendforeach}{\@pc@decreaseindent\highlightkeyword{endforeach}}
+\newcommand{\pcuntil}{\@pc@decreaseindent\highlightkeyword{until}}
+\newcommand{\pccontinue}{\highlightkeyword{continue}}
+\newcommandx*{\pcfalse}[2][1=\ ,2=]{\highlightkeyword[#2]{false}}
+\newcommandx*{\pctrue}[2][1=\ ,2=]{\highlightkeyword[#2]{true}}
+\newcommandx*{\pcnull}[2][1=\ ,2=]{\highlightkeyword[#2]{null}}
+\newcommand{\pcdone}{\highlightkeyword{done}}
+\newcommand{\pcparse}{\highlightkeyword{parse}}
+\newcommand{\pcfail}{\highlightkeyword{fail}}
+\newcommand{\pcabort}{\highlightkeyword{abort}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsubsection{Misc}
+%
+%
+%\begin{macro}{\pcmathhyphen}
+% Definition of a hyphen to be used within math formulas.
+% \begin{macrocode}
+\mathchardef\pcmathhyphen ="2D
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\pccomment}
+%\begin{macro}{\pclinecomment}
+% Programming style line comment prefixing the comment with a double slash.
+% An optional first parameter allows to control the spacing before the comment
+% (defaults to 1em).
+% \begin{macrocode}
+\newcommand{\pccomment}[2][1em]{\hspace{#1}{\mbox{/\!\!/ } \text{\scriptsize#2}}}
+\newcommand{\pclinecomment}[2][0em]{\hspace{#1}{\mbox{/\!\!/ } \text{\scriptsize#2}}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsection{Internal Helper Functions}
+%
+%
+%\begin{macro}{\@expandedsetkeys}
+%^^A https://tex.stackexchange.com/questions/27172/how-can-i-detect-if-im-inside-or-outside-of-a-float-environment
+% \begin{macrocode}
+\newcommand\@pc@ifinfloat[2]{\ifnum\@floatpenalty<0\relax#1\else#2\fi}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@expandedsetkeys}
+% Calls |\setkeys| from the xkeyval package but before exapands argument number 4.
+% Arguments \marg{families} \marg{na} \marg{first set of keys} \marg{keys to be expanded} \marg{final set of keys}
+% \begin{macrocode}
+\newcommand*\@expandedsetkeys[5]{\expandafter\@expandedsetkeys@\expandafter{#4}{#1}{#2}{#3}{#5}}
+\def\@expandedsetkeys@#1#2#3#4#5{\setkeys{#2}[#3]{#4,#1,#5}}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\newenvironment{@pc@withspaces}
+ {\obeyspaces\begingroup\lccode`~=` \lowercase{\endgroup\let~}\ }
+ {}
+% \end{macrocode}
+%
+%\begin{macro}{\@pc@settowidthofalign}
+%\begin{macro}{\@pc@settowidthofaligned}
+% Commands to measure width of an align (resp. aligned) environment. Takes two arguments
+% a length in which to store the resulting width and the content.
+% \begin{macrocode}
+\newcommand{\@pc@settowidthofalign}[2]{%
+ \setbox\z@=\vbox{\@pseudocodecodesize
+ \begin{flalign*}
+ #2
+ \ifmeasuring@\else\global\let\got@maxcolwd\maxcolumn@widths\fi
+ \end{flalign*}
+ }%
+ \begingroup
+ \def\or{+}\edef\x{\endgroup#1=\dimexpr\got@maxcolwd\relax}\x}
+
+\newcommand{\@pc@settowidthofaligned}[2]{%
+\settowidth{#1}{\@pseudocodesubcodesize$\begin{aligned}#2\end{aligned}$}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\@pc@ifdraft}
+% Check for draft mode.
+% \begin{macrocode}
+\def\@pc@ifdraft{\ifdim\overfullrule>\z@
+ \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@pc@executeblindly}
+% Run stuff in an empty box
+% \begin{macrocode}
+\newcommand{\@pc@executeblindly}[1]{%
+ \setbox\z@=\vbox{#1 }}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% We need to fiddle with the label command to use it in |\pseudocode|. To
+% access the original, we store it in
+% \begin{macrocode}
+\AtBeginDocument{
+ \let\@pc@original@label\ltx@label
+}
+% \end{macrocode}
+%
+%
+%\begin{macro}{\@pc@globaladdtolength}
+%\begin{macro}{\@pc@globalsetlength}
+% A helper command to set (resp.~add to) the length to a given value globally
+% even when being within a scoped grouping.
+% \begin{macrocode}
+\newcommand*{\@pc@globaladdtolength}[2]{%
+\addtolength{#1}{#2}%
+\global#1=#1\relax}
+
+\newcommand*{\@pc@globalsetlength}[2]{%
+\setlength{#1}{#2}%
+\global#1=#1\relax}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%
+%
+%\begin{macro}{@pc@global@pc@cnt}
+%\begin{macro}{@pc@global@pc@nestcnt}
+% A global counter storing the number of times the pseudocode command was triggered.
+% \begin{macrocode}
+\newcounter{@pc@global@pc@cnt}
+\newcounter{@pc@global@pc@nestcnt}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%
+%
+% Fix hyperref package.. gnarl http://tex.stackexchange.com/questions/130319/incompatibility-between-etoolbox-and-hyperref
+% \begin{macrocode}
+\providecommand{\pcfixhyperref}{
+\global\let\textlabel\label
+\global\let\@pc@original@label\textlabel
+ %\global\let\@pc@original@label\relax
+ %\global\let\label\relax
+}
+% \end{macrocode}
+%
+%
+%
+%
+%
+% \subsection{Stacking}
+%
+% In the following we define two stacking environments |pchstack| and |pcvstack|
+% to layout multiple pseudocode blocks.
+%
+%
+%
+% \subsubsection{Manual Spacing}
+%
+% \begin{macrocode}
+%
+\newcommand{\pchspace}[1][1em]{\hspace{#1}}
+\newcommand{\pcvspace}[1][\baselineskip]{\par\vspace{#1}}
+%
+% \end{macrocode}
+%
+%
+% \subsubsection{Misc}
+%
+%\begin{macro}{@pc@stackdepth}
+%\begin{macro}{\@pc@incstackdepth}
+%\begin{macro}{\@pc@decstackdepth}
+% Counter to keep track of nesting level of stacks.
+% \begin{macrocode}
+\newcounter{@pc@stackdepth}
+\newcommand{\@pc@incstackdepth}{\addtocounter{@pc@stackdepth}{1}}
+\newcommand{\@pc@decstackdepth}{\addtocounter{@pc@stackdepth}{-1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsubsection{Stacking Options}
+%
+%\begin{macro}{center}
+%\begin{macro}{\@pc@centerstack}
+% Allows to center the stack.
+% \begin{macrocode}
+\newcommand{\@pc@centerstack}{false}
+\define@key{pcstack}{center}[true]{\ifthenelse{\equal{#1}{true}}
+{\renewcommand{\@pc@centerstack}{true}}
+{\renewcommand{\@pc@centerstack}{false}}}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{boxed}
+%\begin{macro}{\@pc@boxedstack}
+% Allows to draw a box around the stack.
+% \begin{macrocode}
+\newcommand{\@pc@boxedstack}{false}
+\define@key{pcstack}{boxed}[true]{\ifthenelse{\equal{#1}{true}}
+{\renewcommand{\@pc@boxedstack}{true}}
+{\renewcommand{\@pc@boxedstack}{false}}}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{noindent}
+%\begin{macro}{\@pc@noindentstack}
+% Allows to draw a box around the stack.
+% \begin{macrocode}
+\newcommand{\@pc@noindentstack}{false}
+\define@key{pcstack}{noindent}[true]{\ifthenelse{\equal{#1}{true}}
+{\renewcommand{\@pc@noindentstack}{true}}
+{\renewcommand{\@pc@noindentstack}{false}}}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{inline}
+%\begin{macro}{\@pc@inlinestack}
+% Allows to keep the pchstack inline and not creating a paragraph.
+% \begin{macrocode}
+\newcommand{\@pc@inlinestack}{false}
+\define@key{pcstack}{inline}[true]{\ifthenelse{\equal{#1}{true}}
+{\renewcommand{\@pc@inlinestack}{true}}
+{\renewcommand{\@pc@inlinestack}{false}}}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{space}
+%\begin{macro}{\pchstackspace}
+%\begin{macro}{\pcvstackspace}
+%\begin{macro}{\@pc@centerstack}
+% Introduces horizontal (resp.~vertical) space in-between pseudocode blocks
+% in stacking environments .
+% \begin{macrocode}
+\providecommand{\pchstackspace}{0pt}
+\providecommand{\pcvstackspace}{0pt}
+\newcommand{\@pc@stackspace@forpseudocode}{}
+\newlength{\@pc@stackspace@len}
+\newcommand*{\@pc@stackspace}{0pt}
+\newcommand*{\@pc@reset@stackspace}{\setlength{\@pc@stackspace@len}{\@pc@stackspace}}
+\define@key{pcstack}{space}[0pt]{\renewcommand*{\@pc@stackspace}{#1}}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{aboveskip}
+%\begin{macro}{\@pc@applyaboveskipinstack}
+%\begin{macro}{\@pc@addabovespaceunlessstacking}
+% By default |\pcaboveskip| is applied on the outer most stacking environment.
+% Can be overriden using |aboveskip|.
+% \begin{macrocode}
+\newcommand{\@pc@addabovespaceunlessstacking}{%
+\ifthenelse{\value{@pc@stackdepth}=0}{\par\addvspace{\pcaboveskip}}{}}
+
+\newcommand{\@pc@applyaboveskipinstack}{\@pc@addabovespaceunlessstacking}
+\let\org@pc@applyaboveskipinstack\@pc@applyaboveskipinstack
+
+\define@key{pcstack}{aboveskip}[default]{\ifthenelse{\equal{#1}{default}}
+{\renewcommand{\@pc@applyaboveskipinstack}{\org@pc@applyaboveskipinstack}}
+{\renewcommand{\@pc@applyaboveskipinstack}{\vspace{#1}}}}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{belowskip}
+%\begin{macro}{\@pc@applybelowskipinstack}
+%\begin{macro}{\@pc@addbelowspaceunlessstacking}
+% By default |\pcbelowskip| is applied on the outer most stacking environment.
+% Can be overriden using |belowskip|.
+% \begin{macrocode}
+\newcommand{\@pc@addbelowspaceunlessstacking}{%
+\ifthenelse{\value{@pc@stackdepth}=0}
+ {\@pc@ifinfloat{}{\par\addvspace{\pcbelowskip}}}
+ {}}
+
+\newcommand{\@pc@applybelowskipinstack}{\@pc@addbelowspaceunlessstacking}
+\let\org@pc@applybelowskipinstack\@pc@addbelowspaceunlessstacking
+
+\define@key{pcstack}{belowskip}[default]{\ifthenelse{\equal{#1}{default}}
+{\renewcommand{\@pc@applybelowskipinstack}{\org@pc@applybelowskipinstack}}
+{\renewcommand{\@pc@applybelowskipinstack}{\par\addvspace{#1}}}}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\pcbeforehstackskip}
+%\begin{macro}{\pcafterhstackskip}
+%Allows adding global skips before and after |\pchstack| blocks.
+% \begin{macrocode}
+\newlength{\pcbeforehstackskip}
+\newlength{\pcafterhstackskip}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\@pc@boxedstack}
+% For |\pchstack| and |\pcvstack| we use a box to store temporary results.
+% \begin{macrocode}
+\newsavebox{\@pc@stackcontentbox}%
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\pcsethstackargs}
+%\begin{macro}{\pcsetvstackargs}
+% \begin{macrocode}
+\newcommand*\@pc@hstack@defaultargs{}
+\newcommand*\pcsethstackargs[1]{\renewcommand*\@pc@hstack@defaultargs{#1}}
+\newcommand*\@pc@vstack@defaultargs{}
+\newcommand*\pcsetvstackargs[1]{\renewcommand*\@pc@vstack@defaultargs{#1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+% \subsubsection{The Stacking Environments}
+%
+%\begin{macro}{pccenter}
+% \begin{macrocode}
+\newenvironment{pccenter}{%
+\setlength\topsep{0pt}\setlength\parskip{0pt}%
+\begin{center}}{\end{center}}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{environment}{pchstack}
+% A stacking environment for horizontally stacked pseudocode blocks.
+% \begin{macrocode}
+\NewEnviron{pchstack}[1][]{%
+%Ensure that the parameters are defaulted
+\begingroup%
+% parse args this is the same as
+% \setkeys{pcstack}{center=false,boxed=false,aboveskip=default,belowskip=default,space=\pchstackspace,#1}%
+% expect that we expand the default args
+\@expandedsetkeys{pcstack}{}{center=false,boxed=false,aboveskip=default,belowskip=default,space=\pchstackspace}{\@pc@hstack@defaultargs}{#1}%
+\@pc@reset@stackspace%
+%add above skip except when in inline mode
+\ifthenelse{\equal{\@pc@inlinestack}{true}}{}{\@pc@applyaboveskipinstack}%
+\@pc@incstackdepth%
+\renewcommand{\@pc@stackspace@forpseudocode}{\hspace{\@pc@stackspace}}%
+%Store main content in a box
+\ifthenelse{\equal{\@pc@boxedstack}{true}}%
+{\sbox{\@pc@stackcontentbox}
+ {\fbox{\mbox{\hspace{\pcbeforehstackskip}\BODY\hspace{\pcafterhstackskip}\hspace{-\@pc@stackspace}}}}}%
+{\sbox{\@pc@stackcontentbox}
+ {\mbox{\hspace{\pcbeforehstackskip}\BODY\hspace{\pcafterhstackskip}\hspace{-\@pc@stackspace}}}}%
+% handle noindent
+\ifthenelse{\equal{\@pc@noindentstack}{true}}{\par\noindent\ignorespaces}{}%
+%set content either centered or directly
+\ifthenelse{\equal{\@pc@centerstack}{true}}%
+{\begin{pccenter}\usebox{\@pc@stackcontentbox}\end{pccenter}}
+{\usebox{\@pc@stackcontentbox}}%
+% cleanup
+\@pc@decstackdepth%
+\ifthenelse{\equal{\@pc@inlinestack}{true}}{}{\@pc@applybelowskipinstack}%
+\endgroup%reset space outside group
+\@pc@reset@stackspace%
+\@pc@stackspace@forpseudocode%
+%ignore any spaces after, to allow staying within paragraph
+\ignorespacesafterend\noindent%
+}
+% \end{macrocode}
+%\end{environment}
+%
+%
+%\begin{environment}{pchstack}
+% A stacking environment for vertically stacked pseudocode blocks.
+% \begin{macrocode}
+\NewEnviron{pcvstack}[1][]{%
+%Ensure that the parameters are defaulted
+\begingroup%
+% parse args this is the same as
+% \setkeys{pcstack}{center=false,boxed=false,aboveskip=default,belowskip=default,space=\pcvstackspace,#1}
+% expect that we expand the default args
+\@expandedsetkeys{pcstack}{}{center=false,boxed=false,aboveskip=default,belowskip=default,space=\pcvstackspace}{\@pc@vstack@defaultargs}{#1}%
+\@pc@reset@stackspace%
+\@pc@applyaboveskipinstack%
+\@pc@incstackdepth%
+\renewcommand{\@pc@stackspace@forpseudocode}{\par\vspace{\@pc@stackspace}}%
+%Store main content in a box
+\sbox{\@pc@stackcontentbox}{%
+\ifthenelse{\equal{\@pc@boxedstack}{true}}%
+{\fbox{\raisebox{\dimexpr\ht\strutbox-\height}{\begin{varwidth}[t]{2\linewidth}\BODY\end{varwidth}}}}%
+{\raisebox{\dimexpr\ht\strutbox-\height}{\begin{varwidth}[t]{2\linewidth}\BODY\end{varwidth}}}%
+\vspace{-\@pc@stackspace}}%
+% handle noindent
+\ifthenelse{\equal{\@pc@noindentstack}{true}}{\par\noindent\ignorespaces}{}%
+% display content
+\ifthenelse{\equal{\@pc@centerstack}{true}}%
+{\begin{pccenter}\usebox{\@pc@stackcontentbox}\end{pccenter}}%
+{\usebox{\@pc@stackcontentbox}}%
+% cleanup
+\@pc@decstackdepth%
+\@pc@applybelowskipinstack%
+\endgroup%reset space outside group
+\@pc@reset@stackspace%
+\@pc@stackspace@forpseudocode%
+%ignore any spaces after, to allow staying within paragraph
+\ignorespacesafterend\noindent%
+}
+% \end{macrocode}
+%\end{environment}
+%
+%
+%
+% \subsection{The pseudocode command}
+%
+%
+%
+% Define internal lengths used for measurements within pseudocode.
+% \begin{macrocode}
+\newlength{\@pc@minipage@length}
+\newlength{\@pc@alt@minipage@length}
+\newlength{\@pc@length@tmp@width@vstack}
+% \end{macrocode}
+%
+%
+% Define flags used in game based proofs.
+% \begin{macrocode}
+\newcommand{\@withingame}{false}
+\newcommand{\@withinbxgame}{false}
+\newcommand{\@withingamedescription}{false}
+% \end{macrocode}
+%
+%
+%\begin{macro}{\@bxgameheader}
+% Define a placeholder command which will take the current game header.
+% \begin{macrocode}
+\newcommand{\@bxgameheader}{}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@pc@beginnewline}
+% An internal helper that is called at the beginning of each new line.
+% \begin{macrocode}
+\newlength\@pseudocodecodeminlineheight@len
+\newcommand{\@pc@beginnewline}{%
+\@pseudocodecodeatbeginline\@pseudocodelinenumber\@pc@and\@pcln@stephiddenlncnt%
+\setlength{\@pseudocodecodeminlineheight@len}{\@pseudocodecodeminlineheight}%
+\vphantom{\rule[0.5ex-0.5\@pseudocodecodeminlineheight@len]{0pt}{\@pseudocodecodeminlineheight@len}}%
+%checkspace
+\ifthenelse{\equal{\@pseudocodespace}{auto}}%
+{\expandafter\pcind\expandafter[\value{@pc@indentationlevel}]}%
+{}%
+%reset column counter
+\setcounter{pccolumncounter}{2}%
+%beginmode
+\@pc@modebegin}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\@pc@and@wrap@end}
+%\begin{macro}{\@pc@and@wrap@start}
+% Every pseudocode line is wrapped in between |\@pc@and@wrap@start| and
+% |\@pc@and@wrap@end|.
+% \begin{macrocode}
+\newcommand{\@pc@and@wrap@start}{\@pc@beginnewline}
+\newcommand{\@pc@and@wrap@end}{\@pc@modeend&\@pseudocodecodeatendline}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\@pc@and}
+% An internal helper to store the ampersand. As this is a special character
+% this is the easiest in order to place custom alignment tags.
+% \begin{macrocode}
+\newcommand{\@pc@and}{&}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\pcind}
+% An indentation macro to be used within pseudocode.
+% As writing |\pcind| is a bit cumbersome, there is a shorthand that can
+% be defined via |\pcindentname| (defaults to t). See below.
+% \begin{macrocode}
+\newlength{\@pcindentwidth}
+\providecommand{\pcind}[1][1]{%
+\setlength{\@pcindentwidth}{\widthof{\ensuremath{\quad}}*#1}%
+\ensuremath{\mathmakebox[\@pcindentwidth]{}}}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\pctabname}
+%\begin{macro}{\pcdbltabname}
+%\begin{macro}{\pcindentname}
+% Shorthands for alignment tabs and indentation. These are defined only within
+% the pseudocode scope.
+% \begin{macrocode}
+\newcommand{\pctabname}{>}
+\newcommand{\pcdbltabname}{<}
+\newcommand{\pcindentname}{t}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+
+%
+% The following commands handle line numbering within the pseudocode command. The
+% pseudocode command itself does need to do some counter magic. We start
+% with a definition of various helper counters.
+% The H version of counters is needed to make hyperref happy
+% \begin{macrocode}
+\newcounter{pclinenumber}
+\newcounter{Hpclinenumber}
+\newcounter{@pclinenumber}
+\newcounter{H@pclinenumber}
+\newcounter{@pclinenumbertmp}
+\newcounter{pcgamecounter}
+\newcounter{Hpcgamecounter}
+\newcounter{pcrlinenumber}
+\newcounter{Hpcrlinenumber}
+\newcounter{@pcrlinenumbertmp}
+% \end{macrocode}
+%
+% The following implements some counter magic. When using automatic linenumbering
+% line numbers are nicely aligned before the first alignment tag. This, however
+% confuses hyperref and we thus have a second counter that is updated after the
+% first tag. This is done with the |\@pcln@stephiddenlncnt|
+% \begin{macrocode}
+\renewcommand{\the@pclinenumber}{\thepclinenumber}
+\providecommand{\@pcln@stephiddenlncnt}{%
+\refstepcounter{@pclinenumber}%
+\stepcounter{H@pclinenumber}%
+}
+% \end{macrocode}
+%
+%
+%\begin{macro}{\pclnseparator}
+%\begin{macro}{\pcrlnseparator}
+% Define separators between line numbers and code (left and right).
+% Note that line numbers can be displayed either to the left or to the right
+% of code.
+% \begin{macrocode}
+\providecommand{\pclnseparator}{:}
+\providecommand{\pcrlnseparator}{}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\pclnspace}
+%\begin{macro}{\pclnrspace}
+% Define spacing between line numbers and code (left and right).
+% \begin{macrocode}
+\providecommand{\pclnspace}{1em}
+\providecommand{\pclnrspace}{0.5em}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\pclnstyle}
+% \begin{macrocode}
+\providecommand\pclnstyle[1]{\text{\scriptsize#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{pcln}
+% Manually place (left aligned) line numbers.
+% This command is also used by the automatic placement of line numbers.
+% \begin{macrocode}
+\providecommand{\pcln}{%
+\ifthenelse{\equal{\@pc@skiplnmarker}{1}}{\ifmeasuring@\else\@pc@resetskipln{}\fi}{%
+\refstepcounter{pclinenumber}%
+\stepcounter{Hpclinenumber}%
+\ifthenelse{\value{pclinenumber}<10}{\hspace{1ex}}{}%
+\pclnstyle{\arabic{pclinenumber}}\pclnseparator\hspace{\pclnspace}%
+}}%
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\pcskipln}
+%\begin{macro}{\@pc@skiplnmarker}
+%\begin{macro}{skipfirstln}
+% allow to skip numbering single lines if linenumbering=on
+% \begin{macrocode}
+\def\@pc@skiplnmarker{}
+\providecommand{\pcskipln}{\ifmeasuring@\else\global\def\@pc@skiplnmarker{1}\fi}
+\newcommand{\@pc@resetskipln}{\global\def\@pc@skiplnmarker{}}
+\define@key{pseudocode}{skipfirstln}[1]{\global\def\@pc@skiplnmarker{1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\pclnr}
+%\begin{macro}{\pcrln}
+% Manual placement of right aligned line numbers using the same counter
+% (|\pclnr|) or a separate counter (|\pcrln|).
+% \begin{macrocode}
+\providecommand{\pclnr}{%
+\refstepcounter{pclinenumber}%
+\stepcounter{Hpclinenumber}%
+\hspace{\pclnrspace}\pcrlnseparator\pclnstyle{\arabic{pclinenumber}}}
+
+\providecommand{\pcrln}{
+\refstepcounter{pcrlinenumber}%
+\stepcounter{Hpcrlinenumber}%
+\hspace{\pclnrspace}\pcrlnseparator\pclnstyle{\arabic{pcrlinenumber}}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{Options}
+%
+%
+% The following commands define a bunch of placeholders (plus their default values)
+% that are defined via the various options of the pseudocode command.
+% \begin{macrocode}
+\newcommand*\@pseudocodehead{}
+\newcommand*\@pseudocodewidth{}
+\newcommand*\@pseudocodexshift{0pt}
+\newcommand*\@pseudocodeyshift{0pt}
+\newcommand*\@pseudocodelinenumber{}
+\newcommand*\@pseudocodebeforeskip{0ex}
+\newcommand*\@pseudocodeafterskip{0ex}
+\newcommand*\@pseudocodelnstart{0}
+\newcommand*\@pseudocodelnstartright{0}
+\newcommand*\@pseudocodesyntaxhighlighting{}
+\newcommand*\@pseudocodenodraft{false}
+\newcommand*\@pseudocodecolspace{} % empty per default, use length,
+
+\newcommand*\@pseudocodeheadlinecmd{\hrule}
+
+% \end{macrocode}
+
+%\begin{macro}{headlinesep}
+%\begin{macro}{\pcheadlinesep}
+%\begin{macro}{\@pseudocodeheadlinesep}
+% Distance between header and line.
+% \begin{macrocode}
+\newlength\pcheadlinesep
+\setlength\pcheadlinesep{0pt}
+\newcommand*\@pseudocodeheadlinesep{0em}
+\define@key{pseudocode}{headlinesep}[0em]{\renewcommand*\@pseudocodeheadlinesep{#1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{bodylinesep}
+%\begin{macro}{\pcbodylinesep}
+%\begin{macro}{\@pseudocodebodylinesep}
+% \begin{macrocode}
+\newlength\pcbodylinesep
+\setlength\pcbodylinesep{0.3\baselineskip}
+\newcommand*\@pseudocodebodylinesep{0em}
+\define@key{pseudocode}{bodylinesep}[0em]{\renewcommand*\@pseudocodebodylinesep{#1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{headheight}
+%\begin{macro}{\pcheadheight}
+%\begin{macro}{\@pc@headheightskip}
+%\begin{macro}{\@pseudocodeheadheight}
+% \begin{macrocode}
+\newlength\@pseudocodeheadheight@len
+\newcommand{\@pc@headheightskip}{%
+\setlength{\@pseudocodeheadheight@len}{\@pseudocodeheadheight}%
+\vphantom{\rule[0.5ex-0.5\@pseudocodeheadheight@len]{0pt}{\@pseudocodeheadheight@len}}%
+}
+\newlength\pcheadheight
+\setlength{\pcheadheight}{3.25ex}
+\newcommand*\@pseudocodeheadheight{\pcheadheight}
+\define@key{pseudocode}{headheight}[0em]{\renewcommand*\@pseudocodeheadheight{#1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+
+
+%
+% \begin{macrocode}
+
+\newcommand*\@pseudocodecolsep{0em}
+\newcommand*\@pseudocodeaddtolength{2pt}
+
+\newcommand*\@pseudocodecodeatbeginline{}
+\newcommand*\@pseudocodecodeatendline{}
+\newcommand*\@pseudocodecodejot{0em}
+\newcommand*\@pseudocodecodesize{\small}
+\newcommand*\@pseudocodesubcodesize{\footnotesize}
+
+\newcommand*\@pseudocodeminipagealign{t}
+
+%
+% Define keywords for the automatic syntax highlighting
+% the accompanying add provides additional keywords.
+% The space version for automatic spacing
+\newcommand*\@pseudocodekeywordsindent{for ,foreach ,if ,repeat ,while }
+\newcommand*\@pseudocodekeywordsunindent{endfor,endforeach,fi,endif,until,endwhile}
+\newcommand*\@pseudocodekeywordsuninindent{else if ,elseif ,else }
+\newcommand*\@pseudocodekeywords{for,foreach,{return },return,{ do },{ in },new,if, null, true,{until },{ to }, false,{ then},repeat,else if,elseif,while,else,done}
+\newcommand*\@pseudocodeaddkeywords{}
+\newcommand*\@pseudocodealtkeywords{}
+\begin{@pc@withspaces}
+\global\def\@pseudocodekeywordsspace{for,endfor,foreach,endforeach,return,do,in,new,if,null,true,until,to,false,then,repeat,else if,elseif,while,endwhile,else,done,fi,endif}
+\end{@pc@withspaces}
+% \end{macrocode}
+%
+%
+% Specification of the various options of the |\pseudocode| command.
+% \begin{macrocode}
+\define@key{pseudocode}{beginline}[]{\renewcommand*\@pseudocodecodeatbeginline{#1}}
+\define@key{pseudocode}{endline}[]{\renewcommand*\@pseudocodecodeatendline{#1}}
+\define@key{pseudocode}{jot}[0em]{\renewcommand*\@pseudocodecodejot{#1}}
+\define@key{pseudocode}{codesize}[\small]{\renewcommand*\@pseudocodecodesize{#1}}
+\define@key{pseudocode}{subcodesize}[\small]{\renewcommand*\@pseudocodesubcodesize{#1}}
+\define@key{pseudocode}{head}[]{\renewcommand*\@pseudocodehead{#1}}
+\define@key{pseudocode}{width}[]{\renewcommand*\@pseudocodewidth{#1}}
+\define@key{pseudocode}{valign}[t]{\renewcommand*\@pseudocodeminipagealign{#1}}
+\define@key{pseudocode}{xshift}[]{\renewcommand*\@pseudocodexshift{#1}}
+\define@key{pseudocode}{yshift}[]{\renewcommand*\@pseudocodeyshift{#1}}
+\define@key{pseudocode}{colspace}[]{\renewcommand*\@pseudocodecolspace{#1}}
+\define@key{pseudocode}{linenumbering}[on]{\ifthenelse{\equal{#1}{on}}{\renewcommand*\@pseudocodelinenumber{\pcln}}{\renewcommand*\@pseudocodelinenumber{}}}
+\define@key{pseudocode}{beforeskip}[]{\renewcommand*\@pseudocodebeforeskip{#1}}
+\define@key{pseudocode}{afterskip}[]{\renewcommand*\@pseudocodeafterskip{#1}}
+\define@key{pseudocode}{lnstart}[0]{\renewcommand*\@pseudocodelnstart{#1}}
+\define@key{pseudocode}{lnstartright}[0]{\renewcommand*\@pseudocodelnstartright{#1}}
+\define@key{pseudocode}{colsep}[0em]{\renewcommand*\@pseudocodecolsep{#1}}
+\define@key{pseudocode}{headlinecmd}[\hrule]{\renewcommand*\@pseudocodeheadlinecmd{#1}}
+\define@key{pseudocode}{addtolength}[2pt]{\renewcommand*\@pseudocodeaddtolength{#1}}
+\define@key{pseudocode}{nodraft}[true]{\renewcommand*\@pseudocodenodraft{#1}}
+\define@key{pseudocode}{keywords}[]{\renewcommand*\@pseudocodekeywords{#1}}
+\define@key{pseudocode}{keywordsindent}[]{\renewcommand*\@pseudocodekeywordsindent{#1}}
+\define@key{pseudocode}{keywordsunindent}[]{\renewcommand*\@pseudocodekeywordsunindent{#1}}
+\define@key{pseudocode}{keywordsuninindent}[]{\renewcommand*\@pseudocodekeywordsuninindent{#1}}
+\define@key{pseudocode}{addkeywords}[]{\renewcommand*\@pseudocodeaddkeywords{#1}}
+\define@key{pseudocode}{altkeywords}[]{\renewcommand*\@pseudocodealtkeywords{#1}}
+\define@key{pseudocode}{syntaxhighlight}[]{\renewcommand*\@pseudocodesyntaxhighlighting{#1}}
+% \end{macrocode}
+%
+%
+%
+%\begin{macro}{mode}
+% The \oarg{mode} key (with values \meta{text} or \meta{math} (default)) specifies
+% whether within a pseudocode block input is by default typeset in text mode or in
+% math mode.
+% The |\@pc...| variables are variables that help typesetting each line in a pseudocode block.
+% \begin{macrocode}
+\newcommand{\@pc@modebegin}{}
+\newcommand{\@pc@modeend}{}
+\define@key{pseudocode}{mode}[math]{%
+\ifthenelse{\equal{#1}{text}}{%
+\renewcommand*\@pc@modebegin{\begin{varwidth}{\textwidth}%
+%introduce line magic for text mode
+\let\@pc@lb\\%
+\renewcommandx*{\\}[2][1=,2=]{\@pc@modeend\@pc@and \@pseudocodecodeatendline\ifthenelse{\equal{####1}{}}{\@pc@lb}{\@pc@lb[####1]}####2 \@pc@beginnewline}%
+\def\pclb{\let\\\@pc@lb\relax\@pc@modeend\\}%
+\def\pcolb{\let\\\@pc@lb\relax\@pc@modeend\\}%
+}%
+\renewcommand*\@pc@modeend{\end{varwidth}}%
+}{\renewcommand{\@pc@modebegin}{}\renewcommand{\@pc@modeend}{}}}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{minlineheight}
+%\begin{macro}{\pcminlineheight}
+%\begin{macro}{\@pseudocodecodeminlineheight}
+% Control the minimal line height of pseudocode blocks.
+% \begin{macrocode}
+\providecommand{\pcminlineheight}{0pt}
+\newcommand*\@pseudocodecodeminlineheight{\pcminlineheight}
+\define@key{pseudocode}{minlineheight}[0pt]{\renewcommand*\@pseudocodecodeminlineheight{#1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%
+% \subsubsection{Automatic Syntax Highlighting and Spacing (Experimental)}
+%
+%
+%
+%
+% Experimental LaTex3 string substitution helpers for automatic keyword
+% highlighting. The regex parsing is (regrettably) super slow.
+% \begin{macrocode}
+\ExplSyntaxOn
+\tl_new:N \l_pc_strsub_input_tl
+\tl_new:N \l_pc_strsub_search_tl
+\tl_new:N \l_pc_strsub_replace_tl
+
+\NewDocumentCommand{\@pc@stringsubstitution}{mmm}
+ {
+ \tl_set:Nn \l_pc_strsub_input_tl { #1 }
+ \tl_set:Nn \l_pc_strsub_search_tl { #2 }
+ \tl_set:Nn \l_pc_strsub_replace_tl { #3 }
+ % \tl_show_analysis:N \l_pc_strsub_input_tl % uncomment for debugging
+ % \tl_show_analysis:N \l_pc_strsub_search_tl % uncomment for debugging
+ % \tl_show_analysis:N \l_pc_strsub_replace_tl % uncomment for debugging
+ \regex_replace_all:nnN
+ { \u{l_pc_strsub_search_tl} } %only match if keyword does not have a word character preceding
+ { \u{l_pc_strsub_replace_tl} }
+ \l_pc_strsub_input_tl
+ % \tl_show_analysis:N \l_tmpa_tl % uncomment for debugging
+ \tl_use:N \l_pc_strsub_input_tl
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+%
+%
+%
+%\begin{macro}{\@pc@syntaxhighlight}
+%\begin{macro}{\@pc@highlight}
+%\begin{macro}{\@pc@highlightindent}
+%\begin{macro}{\@pc@highlightunindent}
+%\begin{macro}{\@pc@highlightuninindent}
+%\begin{macro}{\@pc@althighlight}
+% This is the core of the (experimental) automatic syntax highlighting and
+% automatic spacing. The code is ugly, and very slow.
+% It is not really recommended to be used in larger projects.
+% \begin{macrocode}
+\newcommand{\@pc@syntaxhighlight}[1]{%
+%don't highlight during measuring runs for performance improvements.
+\ifmeasuring@#1\else%
+\ifthenelse{\equal{\@pseudocodesyntaxhighlighting}{auto}}{%
+\def\@shtmp{#1}% first step
+% Depending on space mode, we might later run the indent/unindent/... lists
+% if not, we add them now to tmp lists in order to have a complete list.
+\ifthenelse{\equal{\@pseudocodespace}{keep}}
+ {\edef\@tmpkeywords{\@pseudocodekeywordsspace,\@pseudocodeaddkeywords}}
+ {\ifthenelse{\equal{\@pseudocodespace}{auto}}
+ {\edef\@tmpkeywords{\@pseudocodekeywords,\@pseudocodeaddkeywords}}
+ {\edef\@tmpkeywords{\@pseudocodekeywords,\@pseudocodekeywordsindent,\@pseudocodekeywordsunindent,\@pseudocodekeywordsuninindent,\@pseudocodeaddkeywords}}}
+\foreach \@pckw in \@tmpkeywords{%
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlight\expandafter{\@pckw}}}%
+}}% alt keywords
+\foreach \@pckw in \@pseudocodealtkeywords{%
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@althighlight\expandafter{\@pckw}}}%
+}}%
+% if automatic spacing
+\ifthenelse{\equal{\@pseudocodespace}{auto}}
+{%
+\foreach \@pckw in \@pseudocodekeywordsindent{% indentation keywords
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlightindent\expandafter{\@pckw}}}%
+}}%
+\foreach \@pckw in \@pseudocodekeywordsunindent{% unindentation keywords
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlightunindent\expandafter{\@pckw}}}%
+}}%
+\foreach \@pckw in \@pseudocodekeywordsuninindent{% uninindentation keywords
+\ifthenelse{\equal{\@pckw}{}}{}{%
+% we are doing a simple strsub and storing the result (globally) in @shtmp
+\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \gdef\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@shtmp\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ \@pc@stringsubstitution\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter
+ {\expandafter\expandafter\expandafter\@shtmp\expandafter\expandafter\expandafter
+ }\expandafter\expandafter\expandafter{\expandafter\@pckw\expandafter}\expandafter{\expandafter\@pc@highlightuninindent\expandafter{\@pckw}}}%
+}}%
+}{}%
+% return result
+\@shtmp%
+}{#1}% nothing to highlight
+\fi}
+
+\newcommand{\@pc@highlight}[1]{%
+\ifthenelse{\equal{\@pseudocodespace}{keep}}
+ {\highlightkeyword[]{#1}}%
+ {\highlightkeyword[]{\@pc@stringsubstitution{#1}{ }{~}}}%
+}
+
+\newcommand{\@pc@highlightindent}[1]{%
+\@pc@increaseindent\@pc@highlight{#1}%
+}
+
+\newcommand{\@pc@highlightunindent}[1]{%
+\@pc@decreaseindent\@pc@highlight{#1}%
+}
+
+\newcommand{\@pc@highlightuninindent}[1]{%
+\@pc@tmpdecreaseindent\@pc@highlight{#1}%
+}
+
+\newcommand{\@pc@althighlight}[1]{%
+\ifthenelse{\equal{\@pseudocodespace}{keep}}
+ {\highlightaltkeyword{#1}}%
+ {\highlightaltkeyword{\@pc@stringsubstitution{#1}{ }{~}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsubsection{Helper Variables}
+%
+%\begin{macro}{\@pc@thecontent}
+%\begin{macro}{\@pc@colspace}
+% Helper variables used within pseudocode
+% \begin{macrocode}
+\newcommand{\@pc@thecontent}{}
+\newcommand{\@pc@colspace}{}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%
+%\begin{macro}{\@withinspaces}
+%\begin{macro}{\@keepspaces}
+% Helper variables for controlling automatic spacing
+% \begin{macrocode}
+\newcommand{\@withinspaces}{false}%
+\newcommand{\@keepspaces}{%
+\renewcommand{\@withinspaces}{true}\@pc@withspaces%
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+% \begin{macrocode}
+\newcommand*\@pseudocodespace{}
+\define@key{pcspace}{space}[]{\ifthenelse{\equal{#1}{keep}}{\@keepspaces}{}\renewcommand*\@pseudocodespace{#1}}
+
+
+\newcommand*\@pc@defaultargs{}
+\newcommand*\pcsetargs[1]{\renewcommand*\@pc@defaultargs{#1}}
+
+% automatic indentation
+\newcounter{@pc@indentationlevel}
+\newcommand{\@pc@increaseindent}{\addtocounter{@pc@indentationlevel}{1}}
+\newcommand{\@pc@decreaseindent}{\ifthenelse{\equal{\@pseudocodespace}{auto}}{\pcind[-1]}{}\addtocounter{@pc@indentationlevel}{-1}}
+\newcommand{\@pc@tmpdecreaseindent}{\ifthenelse{\equal{\@pseudocodespace}{auto}}{\pcind[-1]}{}}
+
+\newcounter{pccolumncounter}
+\setcounter{pccolumncounter}{2}
+
+% store original halign
+\let\@pc@halign\halign%
+% \end{macrocode}
+%
+% \subsubsection{The Actual Pseudocode Command}
+%
+% \begin{macrocode}
+% Check if the pseudocode command is called with an optional argument
+\providecommand{\pseudocode}{%
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+\@ifnextchar[%]
+ {\@pseudocodeA}%
+ {\@pseudocode[]}%
+}
+
+\def\@pseudocodeA[#1]{%
+\setkeys*{pcspace}{#1}%test if there is a space assignment within the keys .. make the necessary arrangements and call the actual method
+\@pseudocode[#1]%
+}
+
+\def\@pseudocode[#1]#2{%
+\begingroup%
+% reset skip marker before parsing options, as this might set it
+\@pc@resetskipln%
+% parse options
+% this is the same as %\setkeys{pseudocode}[space]{\@pc@defaultargs,#1}%ignore the space key.
+% expect that we expand the default args
+\@expandedsetkeys{pseudocode}{space}{head=}{\@pc@defaultargs}{#1}%
+% check draft mode and disable syntax highlighting
+\@pc@ifdraft{\ifthenelse{\equal{\@pseudocodenodraft}{true}}{}{\renewcommand\@pseudocodesyntaxhighlighting{}}}{}%
+%
+%
+\addtocounter{@pc@global@pc@nestcnt}{1}%
+% allow for tikz usage
+\@pc@ensureremember%
+%
+% create tabbing command
+\ifcsname \pctabname\endcsname%
+\expandafter\renewcommand\csname \pctabname\endcsname{\@pc@modeend&\@pc@colspace\@pc@modebegin}%
+\else%
+\expandafter\newcommand\csname \pctabname\endcsname{\@pc@modeend&\@pc@colspace\@pc@modebegin}%
+\fi%
+\ifcsname \pcdbltabname\endcsname%
+\expandafter\renewcommand\csname \pcdbltabname\endcsname{\@pc@modeend&&\@pc@colspace\@pc@modebegin}%
+\else%
+\expandafter\newcommand\csname \pcdbltabname\endcsname{\@pc@modeend&&\@pc@colspace\@pc@modebegin}%
+\fi%
+% create colspace command if necessary (must be empty for multicolumns
+\ifthenelse{\equal{\@pseudocodecolspace}{}}
+ {}
+ {\renewcommand{\@pc@colspace}{\hspace{\@pseudocodecolspace}}}%
+%
+%adjust row width
+\addtolength{\jot}{\@pseudocodecodejot}%
+% create indent command
+\expandafter\let\csname \pcindentname\endcsname\pcind%
+%
+%store and wrap (do syntax highlighting) argument
+\renewcommand{\@pc@thecontent}{\@pc@and@wrap@start\@pc@syntaxhighlight{#2}\@pc@and@wrap@end}%
+%
+%take care of counters
+\stepcounter{@pc@global@pc@cnt}%
+\setcounter{pclinenumber}{\@pseudocodelnstart}%
+\setcounter{pcrlinenumber}{\@pseudocodelnstartright}%
+\setlength{\@pc@minipage@length}{0pt}%
+\setlength{\@pc@alt@minipage@length}{0pt}%
+\setcounter{@pclinenumbertmp}{\value{pclinenumber}}%
+\setcounter{@pcrlinenumbertmp}{\value{pcrlinenumber}}%
+%reset column counter
+\setcounter{pccolumncounter}{2}%
+%
+% vertical space
+\vspace{\@pseudocodeyshift}%
+%
+%
+%
+% line magic
+\ifthenelse{\value{@pc@global@pc@nestcnt}=1}{%
+\let\@pc@halign\halign%
+\newenvironment{pcmbox}{\let\halign\@pc@halign}{}%
+\def\halign{%
+\renewcommand{\label}[1]{\ifmeasuring@\else\@pc@original@label{####1}\fi}%
+\let\@pc@lb\\%
+\renewcommandx*{\\}[2][1=,2=]{\@pc@modeend\@pc@and\@pseudocodecodeatendline \ifthenelse{\equal{####1}{}}{\@pc@lb}{\@pc@lb[####1]}####2 \@pc@beginnewline}%
+\def\pclb{\let\\\@pc@lb\relax\@pc@modeend\\}%
+\@pc@halign}%
+}{}%
+%
+%align column separation
+\renewcommand*{\minalignsep}{\@pseudocodecolsep}%
+%
+%as the following block will execute the pseudocode we need to store the skip command
+\edef\@pc@org@skiplnmarker{\@pc@skiplnmarker}%
+% if no width is set compute width and store in circuitlength
+\ifthenelse{\equal{\@pseudocodewidth}{}}{%
+% compute length of pseudocode
+\ifthenelse{\value{@pcsubprogstep}=0}{%
+\@pc@settowidthofalign{\@pc@minipage@length}{\@pc@thecontent}%
+}{%
+\@pc@settowidthofaligned{\@pc@minipage@length}{\@pc@thecontent}%
+}%
+%compute length of header
+\ifthenelse{\equal{\@withingame}{true}}%
+{\ifthenelse{\equal{\@pc@secondheader}{true}}%
+ {\addtolength{\@pc@alt@minipage@length}{\widthof{x\ensuremath{\@pc@gametitle[1]\@pc@gametitle[1]}}}}
+ {\addtolength{\@pc@alt@minipage@length}{\widthof{\ensuremath{\@pc@gametitle[1]}}}}}%
+{\addtolength{\@pc@alt@minipage@length}{\widthof{\@pseudocodehead}}}%
+% use header length if longer and add some points for good measure
+\ifdim\@pc@alt@minipage@length>\@pc@minipage@length%
+\setlength{\@pc@minipage@length}{\@pc@alt@minipage@length}%
+\fi%
+\addtolength{\@pc@minipage@length}{\@pseudocodeaddtolength}%
+}{\addtolength{\@pc@minipage@length}{\@pseudocodewidth}}%
+% reset counter and skip command
+\setcounter{pclinenumber}{\value{@pclinenumbertmp}}%
+\setcounter{pcrlinenumber}{\value{@pcrlinenumbertmp}}%
+\setcounter{@pc@indentationlevel}{0}%
+\edef\@pc@skiplnmarker{\@pc@org@skiplnmarker}%
+% begin actual output
+%
+%
+%do the actual mini page
+\hspace{\pcbeforeskip}\hspace{\@pseudocodexshift}%
+\ifthenelse{\equal{\@pseudocodeminipagealign}{t}}{%
+\raisebox{\dimexpr\ht\strutbox-\height}{\@pc@pseudocodeminipage{t}}%
+}{%
+\@pc@pseudocodeminipage{\@pseudocodeminipagealign}%
+}%
+\hspace{\pcafterskip}%
+% tikz usage
+\@pc@releaseremember%
+\addtocounter{@pc@global@pc@nestcnt}{-1}%
+\endgroup%
+% close spacing and potentially a single group generated by the space tester
+\ifthenelse{\equal{\@withinspaces}{true}}{\end@pc@withspaces}{}%
+\endgroup%
+%insert space from stacking
+\@pc@stackspace@forpseudocode%
+}
+
+\newcommand{\@pc@pseudocodeminipage}[1]{%
+\begin{minipage}[#1]{\@pc@minipage@length}%
+\ifthenelse{\value{@pcsubprogstep}=0}{%
+\pc@display@pseudocode{\@pseudocodehead}{\@pc@thecontent}%
+}{% if sub procedure
+\pc@display@subcode{\@pseudocodehead}{\@pc@thecontent}%
+}%
+\end{minipage}%
+}
+
+
+\newcommand{\@pc@display@gameheader}[1]{%
+\tikz{\gdef\i{\thepcgamecounter}%
+\node[anchor=base,text depth=0pt, inner sep=0.05em,outer sep=0pt] (gamenode\i) {#1};
+\ifthenelse{\equal{\@withinbxgame}{true}}
+ {\node[draw,anchor=base, above=2ex of gamenode\i] (bgamenode\i) {\@bxgameheader};}
+ {}%
+}%
+}
+
+\let\pclb\relax
+%
+\newcommand{\pc@display@pseudocode}[2]{%
+\ifthenelse{\equal{#1}{}}{\vspace{-\baselineskip}\@pseudocodecodesize{}}{%
+\ifthenelse{\equal{\@withingame}{true}}
+ {\ifthenelse{\equal{\@pc@secondheader}{true}}
+ {\@pc@display@gameheader{#1}\addtocounter{pcgamecounter}{1}\fboxsep=1pt\fbox{\vphantom{#1}\@pc@display@gameheader{#1}}}
+ {\@pc@display@gameheader{#1}}}
+ {#1}%
+\@pc@headheightskip\vspace{\pcheadlinesep}\vspace{\@pseudocodeheadlinesep}\@pseudocodeheadlinecmd%
+\vspace{-\baselineskip}\vspace{\pcbodylinesep}\vspace{\@pseudocodebodylinesep}\@pseudocodecodesize}%
+\begin{flalign*}#2\end{flalign*}%
+}
+
+
+\newcommand{\pc@display@subcode}[2]{%
+\begingroup%
+\ifthenelse{\equal{#1}{}}{}{#1\@pc@headheightskip%
+\vspace{\pcheadlinesep}\vspace{\@pseudocodeheadlinesep}\@pseudocodeheadlinecmd{}%
+\vspace{\pcbodylinesep}\vspace{\@pseudocodebodylinesep}}%
+\@pseudocodesubcodesize%
+$\begin{aligned}#2\end{aligned}$%
+\endgroup%
+}
+
+
+\newcommand{\@pc@gettikzwidth}[2]{ % #1 = width, #2 = height
+ \pgfextractx{\@tempdima}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}
+ {\pgfpointanchor{current bounding box}{north east}}}
+ \global#1=\@tempdima
+ \pgfextracty{\@tempdima}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}
+ {\pgfpointanchor{current bounding box}{north east}}}
+ \global#2=\@tempdima
+}
+
+
+% \end{macrocode}
+%
+% \subsection{Create Pseudocode/Procedure Commands}
+%
+% \begin{macrocode}
+%
+% parameter reordering
+\def\@pseudocodeB#1#2[#3]#4{\setkeys*{pcspace}{#2,#3}\@pseudocode[head={#1#4},#2,#3]}
+\def\@pseudocodeC#1#2#3{\setkeys*{pcspace}{#2}\@pseudocode[head={#1#3},#2]}
+%for no headers
+\def\@pseudocodeE#1#2[#3]{\setkeys*{pcspace}{#2,#3}\@pseudocode[head={#1},#2,#3]}
+\def\@pseudocodeF#1#2{\setkeys*{pcspace}{#2}\@pseudocode[head={#1},#2]}
+%
+% \end{macrocode}
+%
+%\begin{macro}{\createprocedurecommand}
+% Define pseudocode command with parameters:
+% \begin{enumerate}
+% \item name
+% \item code to execute after begingroup
+% \item head prefix
+% \item other config
+% \end{enumerate}
+% \begin{macrocode}
+\newcommand*{\@pc@createproc@headmode}{text}
+\newcommand{\createprocedurecommand}[4]{
+ \expandafter\gdef\csname #1\endcsname{%
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+#2%
+\@ifnextchar[%]
+ {\@pseudocodeB{#3}{#4}}
+ {\@pseudocodeC{#3}{#4}}%
+}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\createpseudocodecommand}
+% \begin{macrocode}
+\newcommand{\createpseudocodecommand}[4]{
+ \expandafter\gdef\csname #1\endcsname{%
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+#2%
+\@ifnextchar[%]
+ {\@pseudocodeE{#3}{#4}}
+ {\@pseudocodeF{#3}{#4}}%
+}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%
+%
+%\begin{macro}{\createpseudocodeblock}
+% Creates a command that has pseudocode wrapped in an |\pchstack|.
+% \item name
+% \item options for |\pchstack|
+% \item code to execute after begingroup
+% \item head prefix
+% \item other config
+% \begin{macrocode}
+\newcommand{\createpseudocodeblock}[5]{
+\createpseudocodecommand{#1@pc}{#3}{#4}{#5}
+\expandafter\gdef\csname #1\endcsname{%
+\@ifnextchar[%]
+ {\csname #1@@\endcsname}
+ {\csname #1@\endcsname}
+}%
+\expandafter\gdef\csname #1@\endcsname##1{%
+\begin{pchstack}[#2]
+\csname #1@pc\endcsname{##1}
+\end{pchstack}
+}
+\expandafter\gdef\csname #1@@\endcsname[##1]##2{%
+\begin{pchstack}[#2]
+\csname #1@pc\endcsname[##1]{##2}
+\end{pchstack}
+}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\createprocedureblock}
+% Creates a command that has procedure wrapped in an |\pchstack|.
+% \item name
+% \item options for |\pchstack|
+% \item code to execute after begingroup
+% \item head prefix
+% \item other config
+% \begin{macrocode}
+\newcommand{\createprocedureblock}[5]{
+\createprocedurecommand{#1@pc}{#3}{#4}{#5}
+\expandafter\gdef\csname #1\endcsname{%
+\@ifnextchar[%]
+ {\csname #1@@\endcsname}
+ {\csname #1@\endcsname}
+}%
+\expandafter\gdef\csname #1@\endcsname##1##2{%
+\begin{pchstack}[#2]
+\csname #1@pc\endcsname{##1}{##2}
+\end{pchstack}
+}
+\expandafter\gdef\csname #1@@\endcsname[##1]##2##3{%
+\begin{pchstack}[#2]
+\csname #1@pc\endcsname[##1]{##2}{##3}
+\end{pchstack}
+}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\procedure}
+%\begin{macro}{\pseudocodeblock}
+%\begin{macro}{\procedureblock}
+% Create |\procedure| command.
+% \begin{macrocode}
+\createprocedurecommand{procedure}{}{}{}
+\createpseudocodeblock{pseudocodeblock}{center}{}{}{}
+\createprocedureblock{procedureblock}{center}{}{}{}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+% \subsection{Subprocedures}
+%
+% \begin{macrocode}
+
+%
+% subprocedures
+\newcounter{@pcsubprogcnt1}
+\newcounter{@pcrsubprogcnt1}
+\newcounter{@pcsubprogcnt2}
+\newcounter{@pcrsubprogcnt2}
+\newcounter{@pcsubprogcnt3}
+\newcounter{@pcrsubprogcnt3}
+\newcounter{@pcsubprogcnt4}
+\newcounter{@pcrsubprogcnt4}
+\newcounter{@pcsubprogcnt5}
+\newcounter{@pcrsubprogcnt5}
+\newcounter{@pcsubprogcnt6}
+\newcounter{@pcrsubprogcnt6}
+\newcounter{@pcsubprogcnt7}
+\newcounter{@pcrsubprogcnt7}
+\newcounter{@pcsubprogcnt8}
+\newcounter{@pcrsubprogcnt8}
+\newcounter{@pcsubprogcnt9}
+\newcounter{@pcrsubprogcnt9}
+\newcounter{@pcsubprogstep}
+
+\newenvironment{subprocedure}{%
+\addtocounter{@pcsubprogstep}{1}%
+% store old counter values
+\setcounter{@pcsubprogcnt\the@pcsubprogstep}{\value{pclinenumber}}%
+\setcounter{@pcrsubprogcnt\the@pcsubprogstep}{\value{pcrlinenumber}}%
+}{%
+\setcounter{pclinenumber}{\value{@pcsubprogcnt\the@pcsubprogstep}}%
+\setcounter{pcrlinenumber}{\value{@pcrsubprogcnt\the@pcsubprogstep}}%
+\addtocounter{@pcsubprogstep}{-1}}
+
+
+% \end{macrocode}
+%
+% \subsection{Protocols}
+%
+% \begin{macrocode}
+
+%
+% send message
+\newcommand{\pcshortmessageoffset}{0.5cm}
+\newcommand{\pcdefaultmessagelength}{3.5cm}
+\newcommand{\pcdefaultlongmessagelength}{6cm}
+\newcommand{\pcbeforemessageskip}{0pt}
+\newcommand{\pcaftermessageskip}{10pt}
+\newlength{\pcmessagearrow}
+
+\newcommand*\@pcsendmessagelength{\pcdefaultmessagelength}
+\newcommand*\@pcsendmessagecol{}
+\newcommand*\@pcsendmessagewidth{}
+\newcommand*\@pcsendmessagestyle{}
+\newcommand*\@pcsendmessagetop{}
+\newcommand*\@pcsendmessagebottom{}
+\newcommand*\@pcsendmessageright{}
+\newcommand*\@pcsendmessageleft{}
+\newcommand*\@pcsendmessagetopname{t}
+\newcommand*\@pcsendmessagebottomname{b}
+\newcommand*\@pcsendmessagerightname{r}
+\newcommand*\@pcsendmessageleftname{l}
+\newcommand*\@pcsendmessagetopstyle{}
+\newcommand*\@pcsendmessagebottomstyle{}
+\newcommand*\@pcsendmessagerightstyle{}
+\newcommand*\@pcsendmessageleftstyle{}
+\newcommand*\@pcsendmessagebeforeskip{\pcbeforemessageskip}
+\newcommand*\@pcsendmessageafterskip{\pcaftermessageskip}
+
+\define@key{pcsendmessage}{centercol}[]{\renewcommand*\@pcsendmessagecol{#1}}
+\define@key{pcsendmessage}{width}[]{\renewcommand*\@pcsendmessagewidth{#1}}
+\define@key{pcsendmessage}{style}[]{\renewcommand*\@pcsendmessagestyle{#1}}
+\define@key{pcsendmessage}{length}[]{\renewcommand*\@pcsendmessagelength{#1}}
+\define@key{pcsendmessage}{top}[]{\renewcommand*\@pcsendmessagetop{#1}}
+\define@key{pcsendmessage}{bottom}[]{\renewcommand*\@pcsendmessagebottom{#1}}
+\define@key{pcsendmessage}{right}[]{\renewcommand*\@pcsendmessageright{#1}}
+\define@key{pcsendmessage}{left}[]{\renewcommand*\@pcsendmessageleft{#1}}
+\define@key{pcsendmessage}{topname}[]{\renewcommand*\@pcsendmessagetopname{#1}}
+\define@key{pcsendmessage}{bottomname}[]{\renewcommand*\@pcsendmessagebottomname{#1}}
+\define@key{pcsendmessage}{rightname}[]{\renewcommand*\@pcsendmessagerightname{#1}}
+\define@key{pcsendmessage}{leftname}[]{\renewcommand*\@pcsendmessageleftname{#1}}
+\define@key{pcsendmessage}{topstyle}[]{\renewcommand*\@pcsendmessagetopstyle{#1}}
+\define@key{pcsendmessage}{bottomstyle}[]{\renewcommand*\@pcsendmessagebottomstyle{#1}}
+\define@key{pcsendmessage}{rightstyle}[]{\renewcommand*\@pcsendmessagerightstyle{#1}}
+\define@key{pcsendmessage}{leftstyle}[]{\renewcommand*\@pcsendmessageleftstyle{#1}}
+\define@key{pcsendmessage}{beforeskip}[]{\renewcommand*\@pcsendmessagebeforeskip{#1}}
+\define@key{pcsendmessage}{afterskip}[]{\renewcommand*\@pcsendmessageafterskip{#1}}
+
+\newcommand*\@pcsendmessagealignedtop{false}
+\define@key{pcsendmessage}{topaligned}[true]{\renewcommand*\@pcsendmessagealignedtop{#1}}
+\newcommand*\@pcsendmessagealignedbottom{false}
+\define@key{pcsendmessage}{bottomaligned}[true]{\renewcommand*\@pcsendmessagealignedbottom{#1}}
+\newcommand*\@pcsendmessagealignedleft{false}
+\define@key{pcsendmessage}{leftaligned}[true]{\renewcommand*\@pcsendmessagealignedleft{#1}}
+\newcommand*\@pcsendmessagealignedright{false}
+\define@key{pcsendmessage}{rightaligned}[true]{\renewcommand*\@pcsendmessagealignedright{#1}}
+
+
+\newcommand{\@pc@centerincol}[2]{%
+\ifmeasuring@%
+#2%
+\else%
+\makebox[\ifcase\expandafter #1\maxcolumn@widths\fi]{$\displaystyle#2$}%
+\fi%
+}
+
+\newcommand{\centerincol}[1]{\@pc@centerincol{\thepccolumncounter}{#1}}
+
+\newcommand{\@do@sendmessage}[1]{%
+\ifthenelse{\equal{\@pcsendmessagecol}{}}{%
+\ifthenelse{\equal{\@pcsendmessagewidth}{}}{#1}{% we have some width
+\makebox[\@pcsendmessagewidth]{$\displaystyle#1$}%
+}}{%we know the column to center on
+\@pc@centerincol{\@pcsendmessagecol}{#1}%
+}%
+}
+
+\newcommand*{\sendmessage}[2]{%
+\begingroup\setkeys{pcsendmessage}{#2}%
+\tikzset{PCSENDMSG-PATH-STYLE/.style/.expand once=\@pcsendmessagestyle}%
+\tikzset{PCSENDMSG-TOP-STYLE/.style/.expand once=\@pcsendmessagetopstyle}%
+\tikzset{PCSENDMSG-BOTTOM-STYLE/.style/.expand once=\@pcsendmessagebottomstyle}%
+\tikzset{PCSENDMSG-LEFT-STYLE/.style/.expand once=\@pcsendmessageleftstyle}%
+\tikzset{PCSENDMSG-RIGHT-STYLE/.style/.expand once=\@pcsendmessagerightstyle}%
+%
+%
+\ifthenelse{\equal{\@pcsendmessagealignedtop}{true}}
+{\ifthenelse{\equal{\@pcsendmessagetop}{}}
+ {\let\@pc@fin@sendmessagetop\@pcsendmessagetop}%
+ {\newcommand{\@pc@fin@sendmessagetop}{\let\halign\@pc@halign$\begin{aligned}\@pcsendmessagetop\end{aligned}$}}}
+ {\let\@pc@fin@sendmessagetop\@pcsendmessagetop}%
+%
+\ifthenelse{\equal{\@pcsendmessagealignedbottom}{true}}
+{\ifthenelse{\equal{\@pcsendmessagebottom}{}}
+ {\let\@pc@fin@sendmessagebottom\@pcsendmessagebottom}%
+ {\newcommand{\@pc@fin@sendmessagebottom}{\let\halign\@pc@halign$\begin{aligned}\@pcsendmessagebottom\end{aligned}$}}}
+ {\let\@pc@fin@sendmessagebottom\@pcsendmessagebottom}%
+%
+\ifthenelse{\equal{\@pcsendmessagealignedright}{true}}
+{\ifthenelse{\equal{\@pcsendmessageright}{}}
+ {\let\@pc@fin@sendmessageright\@pcsendmessageright}
+ {\newcommand{\@pc@finsendmessageright}{\let\halign\@pc@halign$\begin{aligned}\@pcsendmessageright\end{aligned}$}}}
+ {\let\@pc@fin@sendmessageright\@pcsendmessageright}%
+%
+\ifthenelse{\equal{\@pcsendmessagealignedleft}{true}}
+{\ifthenelse{\equal{\@pcsendmessageleft}{}}
+ {\let\@pc@fin@sendmessageleft\@pcsendmessageleft}
+ {\newcommand{\@pc@fin@sendmessageleft}{\let\halign\@pc@halign$\begin{aligned}\@pcsendmessageleft\end{aligned}$}}}
+ {\let\@pc@fin@sendmessageleft\@pcsendmessageleft}%
+%restore halign
+%
+\addtocounter{@pcsubprogstep}{1}%
+\hspace{\@pcsendmessagebeforeskip}%
+\begin{varwidth}{\linewidth}
+\@do@sendmessage{
+ \begin{tikzpicture}%
+ \node[PCSENDMSG-LEFT-STYLE] (\@pcsendmessageleftname) {\@pc@fin@sendmessageleft};
+ \node[right=\@pcsendmessagelength of \@pcsendmessageleftname,PCSENDMSG-RIGHT-STYLE] (\@pcsendmessagerightname) {\@pc@fin@sendmessageright};
+ \path[#1,PCSENDMSG-PATH-STYLE] (\@pcsendmessageleftname) edge[] node[above,PCSENDMSG-TOP-STYLE] (\@pcsendmessagetopname) {\@pc@fin@sendmessagetop} node[below,PCSENDMSG-BOTTOM-STYLE] (\@pcsendmessagebottomname) {\@pc@fin@sendmessagebottom} (\@pcsendmessagerightname);
+ \end{tikzpicture}%
+}%
+\end{varwidth}
+\addtocounter{@pcsubprogstep}{-1}%
+\hspace{\@pcsendmessageafterskip}%
+\endgroup%
+}
+
+\WithSuffix\newcommand\sendmessage*[2]{%
+\sendmessage{#1}{topaligned,leftaligned,bottomaligned,rightaligned,#2}%
+}
+
+\newcommandx*{\sendmessageright}[2][1=->]{%
+\sendmessage{#1}{#2}%
+}
+
+\newcommandx*{\sendmessageleft}[2][1=<-]{%
+\sendmessage{#1}{#2}%
+}
+
+\WithSuffix\newcommand\sendmessageleft*[2][\pcdefaultmessagelength]{%
+\begingroup%
+\renewcommand{\@pcsendmessagetop}{\let\halign\@pc@halign$\begin{aligned}#2\end{aligned}$}%
+\sendmessage{<-}{length=#1}%
+\endgroup%
+}
+
+
+\WithSuffix\newcommand\sendmessageright*[2][\pcdefaultmessagelength]{%
+\begingroup%
+\renewcommand{\@pcsendmessagetop}{\let\halign\@pc@halign$\begin{aligned}#2\end{aligned}$}%
+\sendmessage{->}{length=#1}%
+\endgroup%
+}
+
+\WithSuffix\newcommand\sendmessagerightleft*[2][\pcdefaultmessagelength]{%
+\begingroup%
+\renewcommand{\@pcsendmessagetop}{\let\halign\@pc@halign$\begin{aligned}#2\end{aligned}$}%
+\sendmessage{<->}{length=#1}%
+\endgroup%
+}
+
+\DeclareExpandableDocumentCommand{\sendmessagerightx}{O{\pcdefaultlongmessagelength}mO{}m}{%
+\multicolumn{#2}{c}{\ensuremath{\hspace{\pcbeforemessageskip}\xrightarrow[\begin{aligned}#3\end{aligned}]{\mathmakebox[#1]{\begin{aligned}#4\end{aligned}}}\hspace{\pcaftermessageskip}}}
+}
+
+\DeclareExpandableDocumentCommand{\sendmessageleftx}{O{\pcdefaultlongmessagelength}mO{}m}{%
+\multicolumn{#2}{c}{\ensuremath{\hspace{\pcbeforemessageskip}\xleftarrow[\begin{aligned}#3\end{aligned}]{\mathmakebox[#1]{\begin{aligned}#4\end{aligned}}}\hspace{\pcaftermessageskip}}}
+}
+
+%
+% Division
+\DeclareExpandableDocumentCommand{\pcintertext}{O{}m}{\intertext{%
+\ifthenelse{\equal{#1}{center}}{\makebox[\linewidth][c]{#2}}{}%
+\ifthenelse{\equal{#1}{dotted}}{\dotfill#2\dotfill}{}%
+\ifthenelse{\equal{#1}{}}{#2}{}%
+}\@pc@beginnewline}
+
+
+
+% \end{macrocode}
+%
+% \subsection{Tikz within Pseudocode}
+%
+% \begin{macrocode}
+
+%
+% remember pictues
+\newcounter{@pc@remember}
+
+\newcommand{\@pc@ensureremember}{%
+\ifthenelse{\value{@pc@remember}=0}{\tikzstyle{every picture}+=[remember picture]}{}%
+\addtocounter{@pc@remember}{1}}
+
+\newcommand{\@pc@releaseremember}{%
+\addtocounter{@pc@remember}{-1}%
+\ifthenelse{\value{@pc@remember}=0}{\tikzstyle{every picture}-=[remember picture]}{}%
+}
+
+
+%
+% pcimage
+\newenvironment{pcimage}{%
+\begingroup\@pc@ensureremember%
+}{%
+\@pc@releaseremember\endgroup%
+}
+
+\newcommand*\@pcnodecontent{}
+\newcommand*\@pcnodestyle{}
+\newcommand*\@pcnodedraw{}
+\define@key{pcnode}{content}[]{\renewcommand*\@pcnodecontent{#1}}
+\define@key{pcnode}{style}[]{\renewcommand*\@pcnodestyle{#1}}
+\define@key{pcnode}{draw}[]{\renewcommand*\@pcnodedraw{#1}}
+
+\newcommandx*{\pcnode}[2][2=]{%
+\begingroup\setkeys{pcnode}{#2}%
+\tikzset{PCNODE-STYLE/.style/.expand once=\@pcnodestyle}%
+\begin{tikzpicture}[inner sep=0ex,baseline=0pt]%
+\node[PCNODE-STYLE] (#1) {\@pcnodecontent}; %
+\end{tikzpicture}%
+\ifdefempty{\@pcnodedraw}{}{%
+\begin{tikzpicture}[overlay,inner sep=0ex,baseline=0pt]\@pcnodedraw\end{tikzpicture}
+}%
+\endgroup}
+
+\newcommandx*{\pcdraw}[2][2=]{%
+\begin{tikzpicture}[overlay,inner sep=0ex,baseline=0pt,#2]
+#1
+\end{tikzpicture}}
+
+% \end{macrocode}
+%
+% \subsection{Black Box Reductions}
+%
+% \begin{macrocode}
+
+%
+% Reductions
+\newcommand{\@bb@lastbox}{}
+\newcommand{\@bb@lastoracle}{}
+\newcommand{\@bb@lastchallenger}{}
+
+\newlength{\@bb@message@voffset}
+\newlength{\@bb@query@voffset}
+\newlength{\@bb@oraclequery@voffset}
+\newlength{\@bb@challengerquery@voffset}
+
+\newcounter{@bb@oracle@cnt}
+\newcounter{@bb@oracle@nestcnt}
+\newcounter{@bb@challenger@cnt}
+\newcounter{@bb@challenger@nestcnt}
+
+\newcounter{@bb@env@nestcnt}
+
+\newcommand{\bbroraclenodenameprefix}{ora-}
+\newcommand{\bbrchallengernodenameprefix}{challenger-}
+\newcommand{\bbrenvnodenameprefix}{env-}
+% \end{macrocode}
+
+
+
+%\begin{macro}{aboveskip}
+%\begin{macro}{\@pc@bbrenvaboveskip}
+% \begin{macrocode}
+\newcommand*\@pc@bbrenvaboveskip{0pt}
+\define@key{pcbbrenv}{aboveskip}[0pt]{\renewcommand*\@pc@bbrenvaboveskip{#1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{belowskip}
+%\begin{macro}{\@pc@bbrenvbelowskip}
+% \begin{macrocode}
+\newcommand*\@pc@bbrenvbelowskip{0pt}
+\define@key{pcbbrenv}{belowskip}[0pt]{\renewcommand*\@pc@bbrenvbelowskip{#1}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+
+%\begin{macro}{\@pc@bbrenv@legacyargcheck}
+%\begin{macro}{\@pc@bbrenv@argstring}
+% ensures that first command can still be 5cm which is rewritten as aboveskip=5cm
+% \begin{macrocode}
+\newcommand*\@pc@bbrenv@argstring{}
+\def\@pc@bbrenv@remfinalequals#1=#2=\relax{\renewcommand*\@pc@bbrenv@argstring{#1=#2}}
+\def\@pc@bbrenv@legacyargcheck#1=#2\relax{%
+\ifthenelse{\equal{#2}{}}
+ {\PackageWarning{cryptocode}{Deprecated option for bbrenv. Please use key value list as first parameter with keys aboveskip and/or belowskip.}%
+\renewcommand*\@pc@bbrenv@argstring{aboveskip=#1}}
+ {\@pc@bbrenv@remfinalequals#1=#2\relax}%
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\bbrfirstmessageoffset}
+% offset of the first message from top
+% \begin{macrocode}
+\providecommand{\bbrfirstmessageoffset}{1ex}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{environment}{bbrenv}
+% Black Box Reduction Environment
+% \begin{macrocode}
+\newenvironmentx{bbrenv}[3][1={aboveskip=0pt,belowskip=0pt},3=0pt]{%
+\addtocounter{@bb@env@nestcnt}{1}%
+\renewcommand{\@bb@lastbox}{#2}%
+% parse args and allow old style #1=0pt
+\@pc@bbrenv@legacyargcheck#1=\relax%
+\@expandedsetkeys{pcbbrenv}{}{belowskip=#3}{\@pc@bbrenv@argstring}{}%
+%
+% reset lengths
+\@pc@globalsetlength{\@bb@message@voffset}{\bbrfirstmessageoffset}%
+\@pc@globalsetlength{\@bb@query@voffset}{\bbrfirstmessageoffset}%
+\@pc@globalsetlength{\@bb@oraclequery@voffset}{\bbrfirstmessageoffset}%
+\@pc@globalsetlength{\@bb@challengerquery@voffset}{\bbrfirstmessageoffset}%
+%
+%reset oracle counter and oracle query offset
+\ifthenelse{\value{@bb@oracle@nestcnt}=0}
+ {\setcounter{@bb@oracle@cnt}{0}}{}%
+\ifthenelse{\value{@bb@challenger@nestcnt}=0}
+ {\setcounter{@bb@challenger@cnt}{0}}{}%
+%
+\vspace{\@pc@bbrenvaboveskip}%
+\ifthenelse{\value{@bb@env@nestcnt}=1}
+ {\@pc@ensureremember%
+\begin{tikzpicture}
+}{\tikz\bgroup}
+}{%
+\ifthenelse{\value{@bb@env@nestcnt}=1}
+{\end{tikzpicture}%
+\@pc@releaseremember%
+}{\egroup}%
+\vspace{\@pc@bbrenvbelowskip}%
+\addtocounter{@bb@env@nestcnt}{-1}%
+% reset lengths
+\@pc@globalsetlength{\@bb@message@voffset}{\bbrfirstmessageoffset}%
+\@pc@globalsetlength{\@bb@query@voffset}{\bbrfirstmessageoffset}%
+\@pc@globalsetlength{\@bb@oraclequery@voffset}{\bbrfirstmessageoffset}%
+\@pc@globalsetlength{\@bb@challengerquery@voffset}{\bbrfirstmessageoffset}%
+}
+% \end{macrocode}
+%\end{environment}
+
+%
+%
+
+%
+% black box reduction box
+% option keys
+% \begin{macrocode}
+\newcommand*\bbrboxname{}
+\newcommand*\bbrboxnamepos{right}
+\newcommand*\bbrboxnamestyle{}
+\newcommand*\@bbrboxnamepos{below right=0.5ex and -0.5ex of \@bb@lastbox.north east,anchor=north east}
+\newcommand*\bbrboxabovesep{\baselineskip}
+\newcommand*\@bbrboxnameposoffset{below left=\bbrboxabovesep of phantomname.south west}
+\newcommand*\bbrboxstyle{draw}
+\newcommand*\bbrboxafterskip{}
+\newcommand*\bbrboxminheight{0cm}
+\newcommand*\bbrboxminwidth{2cm}
+\newcommand*\bbrboxxshift{0cm}
+\newcommand*\bbrboxyshift{0cm}
+\define@key{bbrbox}{abovesep}[]{\renewcommand*\bbrboxabovesep{#1}}
+\define@key{bbrbox}{name}[]{\renewcommand*\bbrboxname{#1}}
+\define@key{bbrbox}{namestyle}[]{\renewcommand*\bbrboxnamestyle{#1}}
+\define@key{bbrbox}{namepos}[]{\renewcommand*\bbrboxnamepos{#1}}
+\define@key{bbrbox}{style}[draw]{\renewcommand*\bbrboxstyle{#1}}
+\define@key{bbrbox}{minwidth}[]{\renewcommand*\bbrboxminwidth{#1}}
+\define@key{bbrbox}{addheight}[]{\renewcommand*\bbrboxafterskip{#1}}
+\define@key{bbrbox}{minheight}[]{\renewcommand*\bbrboxminheight{#1}}
+\define@key{bbrbox}{xshift}[]{\renewcommand*\bbrboxxshift{#1}}
+\define@key{bbrbox}{yshift}[]{\renewcommand*\bbrboxyshift{#1}}
+
+
+\NewEnviron{bbrbox}[1][]{%
+\setkeys{bbrbox}{#1}%
+
+\ifthenelse{\equal{\bbrboxnamepos}{center}}
+ {\renewcommand{\@bbrboxnamepos}{below=0.5ex of \@bb@lastbox.north,anchor=north}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{left}}
+ {\renewcommand{\@bbrboxnamepos}{below=0.5ex of \@bb@lastbox.north west,anchor=north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{top right}}
+ {\renewcommand{\@bbrboxnamepos}{above=0cm of \@bb@lastbox.north east,anchor=south east}\renewcommand{\@bbrboxnameposoffset}{below left=0cm of phantomname.north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{top center}}
+ {\renewcommand{\@bbrboxnamepos}{above=0cm of \@bb@lastbox.north,anchor=south}\renewcommand{\@bbrboxnameposoffset}{below left=0cm of phantomname.north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{top left}}
+ {\renewcommand{\@bbrboxnamepos}{above=0cm of \@bb@lastbox.north west,anchor=south west}\renewcommand{\@bbrboxnameposoffset}{below left=0cm of phantomname.north west}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{middle}}
+ {\renewcommand{\@bbrboxnamepos}{above=0.5ex of \@bb@lastbox.base,anchor=south}}{}
+\ifthenelse{\equal{\bbrboxnamepos}{bottom}}
+ {\renewcommand{\@bbrboxnamepos}{above=0.5ex of \@bb@lastbox.base,anchor=north}}{}
+
+
+\tikzset{BBRBOXSTYLE/.style/.expand once=\bbrboxstyle}%
+\tikzset{BBRBOXNAMEPOS/.style/.expand once=\@bbrboxnamepos}%
+\tikzset{BBRBOXNAMESTYLE/.style/.expand once=\bbrboxnamestyle}%
+\tikzset{BBRBOXNAMEPOSOFFSET/.style/.expand once=\@bbrboxnameposoffset}%
+
+\coordinate[inner sep=0pt,outer sep=0pt] (\@bb@lastbox-tmpouter) {};
+\node at (\@bb@lastbox-tmpouter) {}; %this empty node seems needed to get the xyshift right.
+\node[inner sep=.3333em,anchor=north,BBRBOXSTYLE,minimum height=\bbrboxminheight,below right=\bbrboxyshift and \bbrboxxshift of \@bb@lastbox-tmpouter] (\@bb@lastbox) \bgroup
+ \tikz{
+ \node[inner sep=0pt,outer sep=0pt,minimum height=0cm] (phantomname) {}; %minimum width
+ \node[BBRBOXNAMEPOSOFFSET,minimum height=0cm] (\@bb@lastbox-inner) {\begin{varwidth}{2\linewidth}\BODY\end{varwidth}};
+ \ifthenelse{\equal{\bbrboxafterskip}{}}{}{
+ \node[below=0cm of \@bb@lastbox-inner,minimum height=\bbrboxafterskip] {};
+ }
+ \node[inner sep=0pt,outer sep=0pt,at=(\@bb@lastbox-inner.south west),minimum height=0cm] () {\phantom{\hspace{\bbrboxminwidth}}}; %minimum width
+ }
+\egroup;
+\ifthenelse{\equal{\bbrboxnamepos}{none}}
+{}{\node[BBRBOXNAMEPOS,BBRBOXNAMESTYLE, inner sep=0.2ex, outer sep=0pt, overlay] () {\bbrboxname};}
+}
+
+
+\newcommand*\bbroraclevdistance{\baselineskip}
+\newcommand*\bbroraclehdistance{1.5cm}
+\define@key{bbroracle}{distance}[]{\renewcommand*\bbroraclehdistance{#1}}
+\define@key{bbroracle}{hdistance}[]{\renewcommand*\bbroraclehdistance{#1}}
+\define@key{bbroracle}{vdistance}[]{\renewcommand*\bbroraclevdistance{#1}}
+
+
+% ORACLES
+\newenvironmentx{bbroracle}[2][2=]{%
+ \begingroup
+ \setkeys{bbroracle}{#2}
+ %reset query boolean. This is a bit crude and does not allow nesting oracles
+ %in oracles but should be good enough
+ \gdef\@bbr@first@oraclequery{true}
+ %add to nesting cout
+ \addtocounter{@bb@oracle@nestcnt}{1}
+ %if first oracle, then put it to the right, else stack them vertically
+ \addtocounter{@bb@oracle@cnt}{1}
+ \ifthenelse{\value{@bb@oracle@cnt}=1}{
+ \setlength{\@bb@tmplength@b}{\bbroraclevdistance-\baselineskip}
+ \node[inner sep=0pt,below right=\@bb@tmplength@b and \bbroraclehdistance of \@bb@lastbox.north east,anchor=north west] (\bbroraclenodenameprefix#1) \bgroup
+ }{
+% compute distance of top of last box to bottom of last oracle
+ \coordinate (@bbtmpcoord) at (\@bb@lastbox.north east);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordA}
+ \coordinate (@bbtmpcoord) at (\bbroraclenodenameprefix \@bb@lastoracle.south west);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordB}
+ \setlength{\@bb@tmplength@b}{\YCoordA-\YCoordB+\bbroraclevdistance}
+ \node[inner sep=0pt,below right=\@bb@tmplength@b and \bbroraclehdistance of \@bb@lastbox.north east,anchor=north west] (\bbroraclenodenameprefix#1) \bgroup
+ }
+ \global\def\@bb@lastoracle{#1}
+ \begin{bbrenv}{#1}
+}{
+ \end{bbrenv}
+ \egroup;
+
+ \addtocounter{@bb@oracle@nestcnt}{-1}
+ \endgroup
+}
+
+
+\newcommand*\bbrchallengerhdistance{1.5cm}
+\newcommand*\bbrchallengervdistance{\baselineskip}
+\define@key{bbrchallenger}{distance}[]{\renewcommand*\bbrchallengerhdistance{#1}}
+\define@key{bbrchallenger}{hdistance}[]{\renewcommand*\bbrchallengerhdistance{#1}}
+\define@key{bbrchallenger}{vdistance}[]{\renewcommand*\bbrchallengervdistance{#1}}
+
+
+% Challenger
+\newenvironmentx{bbrchallenger}[2][2=]{%
+\begingroup%
+\setkeys{bbrchallenger}{#2}%
+%reset query boolean. This is a bit crude and does not allow nesting oracles
+%in oracles but should be good enough
+\gdef\@bbr@first@challengerquery{true}%
+%add to nesting cout
+\addtocounter{@bb@challenger@nestcnt}{1}%
+%if first oracle, then put it to the right, else stack them vertically
+\addtocounter{@bb@challenger@cnt}{1}%
+\ifthenelse{\value{@bb@challenger@cnt}=1}{%
+\setlength{\@bb@tmplength@b}{\bbrchallengervdistance-\baselineskip}%
+\node[inner sep=0pt,outer sep=0pt,below left=\@bb@tmplength@b and \bbrchallengerhdistance of \@bb@lastbox.north west,anchor=north east] (\bbrchallengernodenameprefix#1) \bgroup%
+}{%
+\coordinate (@bbtmpcoord) at (\@bb@lastbox.north west);%
+\path (@bbtmpcoord);%
+\pgfgetlastxy{\XCoord}{\YCoordA}%
+\coordinate (@bbtmpcoord) at (\bbrchallengernodenameprefix \@bb@lastchallenger.south east);%
+\path (@bbtmpcoord);%
+\pgfgetlastxy{\XCoord}{\YCoordB}%
+\setlength{\@bb@tmplength@b}{\YCoordA-\YCoordB+\bbrchallengervdistance}%
+\node[inner sep=0pt,below left=\@bb@tmplength@b and \bbrchallengerhdistance of \@bb@lastbox.north west,anchor=north east] (\bbrchallengernodenameprefix#1) \bgroup%
+}%
+\global\def\@bb@lastchallenger{#1}
+\begin{bbrenv}{#1}%
+}{
+\end{bbrenv}%
+\egroup;%
+\addtocounter{@bb@challenger@nestcnt}{-1}%
+\endgroup%
+\let\msgfrom\bbrchallengerqueryto%
+}
+
+
+\newcommand*\bbrinputlength{0.5cm}
+\newcommand*\bbrinputhoffset{0.5cm}
+\newcommand*\bbrinputbottom{}
+\newcommand*\bbrinputtop{}
+\newcommand*\bbrinputedgestyle{}
+\newcommand*\bbrinputtopstyle{}
+\newcommand*\bbrinputbottomstyle{}
+\newcommand*\bbrinputnodestyle{}
+\newcommand*\bbrinputnodename{}
+\define@key{bbrinput}{length}[]{\renewcommand*\bbrinputlength{#1}}
+\define@key{bbrinput}{hoffset}[]{\renewcommand*\bbrinputhoffset{#1}}
+\define@key{bbrinput}{name}[]{\renewcommand*\bbrinputnodename{#1}}
+\define@key{bbrinput}{top}[]{\renewcommand*\bbrinputtop{#1}}
+\define@key{bbrinput}{bottom}[]{\renewcommand*\bbrinputbottom{#1}}
+
+
+\newcommand{\@bb@inputsetup}[1]{
+ %load keys
+ \begingroup % for local keys
+
+ \setkeys{bbrinput}{#1}%
+
+ \tikzset{BBRINPUT-NODESTYLE/.style/.expand once=\bbrinputedgestyle}%
+ \tikzset{BBRINPUT-TOPSTYLE/.style/.expand once=\bbrinputtopstyle}%
+ \tikzset{BBRINPUT-BOTTOMSTYLE/.style/.expand once=\bbrinputbottomstyle}%
+ \tikzset{BBRINPUT-EDGESTYLE/.style/.expand once=\bbrinputedgestyle}%
+
+}
+
+\newcommand{\@bb@inputfinalize}{
+ \endgroup
+}
+
+\newcommandx*{\bbrinput}[2][2=]{%
+\@bb@inputsetup{#2}
+\ifthenelse{\equal{\bbrinputnodename}{}}
+ {\renewcommand{\bbrinputnodename}{\@bb@lastbox-input}}{}
+
+\node[overlay,above right={\bbrinputlength} and {\bbrinputhoffset} of \@bb@lastbox.north west, anchor=south,BBRINPUT-NODESTYLE] (\bbrinputnodename) {#1};
+\path[->] (\bbrinputnodename.south) edge[BBRINPUT-EDGESTYLE] node[above,anchor=east,BBRINPUT-TOPSTYLE] () {\bbrinputtop} node[below,anchor=west,BBRINPUT-BOTTOMSTYLE] () {\bbrinputbottom} (\bbrinputnodename.south|-\@bb@lastbox.north);
+\@bb@inputfinalize
+}
+
+\newcommandx*{\bbroutput}[2][2=]{%
+\@bb@inputsetup{#2}
+\ifthenelse{\equal{\bbrinputnodename}{}}
+ {\renewcommand{\bbrinputnodename}{\@bb@lastbox-output}}{}
+
+\node[overlay,below right={\bbrinputlength} and {\bbrinputhoffset} of \@bb@lastbox.south west, anchor=north] (\bbrinputnodename) {#1};
+\draw[->] (\bbrinputnodename.north|-\@bb@lastbox.south) -- (\bbrinputnodename.north|-\bbrinputnodename.north);
+\@bb@inputfinalize
+}
+
+\newenvironment{bbrpic}[1][]{%
+\begin{tikzpicture}[overlay,inner sep=0ex,baseline=0pt,#1]%
+}{%
+\end{tikzpicture}}
+
+%
+% communication
+%temporary lengths
+\newlength{\@bb@com@tmpoffset}
+\newlength{\@bb@tmplength@b}
+
+%keys
+\newcommand*\@bbrcomsidestyle{}
+\newcommand*\@bbrcomosidestyle{}
+\newcommand*\@bbrcomtopstyle{}
+\newcommand*\@bbrcombottomstyle{}
+\newcommand*\@bbrcomside{}
+\newcommand*\@bbrcomoside{}
+\newcommand*\@bbrcomtop{}
+\newcommand*\@bbrcombottom{}
+\newcommand*\@bbrcomedgestyle{}
+\newcommand*\@bbrcomlength{1.25cm}
+\newcommand*\@bbrcomtopname{bbrcomtop}
+\newcommand*\@bbrcombottomname{bbrcombottom}
+\newcommand*\@bbrcomsidename{bbrcomside}
+\newcommand*\@bbrcomosidename{bbrcomoside}
+\newcommand*\@bbrcombeforeskip{0pt}
+\newcommand*\@bbrcomafterskip{0ex}
+\define@key{bbrcom}{sidestyle}[]{\renewcommand*\@bbrcomsidestyle{#1}}
+\define@key{bbrcom}{osidestyle}[]{\renewcommand*\@bbrcomosidestyle{#1}}
+\define@key{bbrcom}{topstyle}[]{\renewcommand*\@bbrcomtopstyle{#1}}
+\define@key{bbrcom}{bottomstyle}[]{\renewcommand*\@bbrcombottomstyle{#1}}
+\define@key{bbrcom}{side}[]{\renewcommand*\@bbrcomside{#1}}
+\define@key{bbrcom}{oside}[]{\renewcommand*\@bbrcomoside{#1}}
+\define@key{bbrcom}{top}[]{\renewcommand*\@bbrcomtop{#1}}
+\define@key{bbrcom}{bottom}[]{\renewcommand*\@bbrcombottom{#1}}
+\define@key{bbrcom}{edgestyle}[]{\renewcommand*\@bbrcomedgestyle{#1}}
+\define@key{bbrcom}{length}[]{\renewcommand*\@bbrcomlength{#1}}
+\define@key{bbrcom}{topname}[]{\renewcommand*\@bbrcomtopname{#1}}
+\define@key{bbrcom}{bottomname}[]{\renewcommand*\@bbrcombottomname{#1}}
+\define@key{bbrcom}{sidename}[]{\renewcommand*\@bbrcomsidename{#1}}
+\define@key{bbrcom}{osidename}[]{\renewcommand*\@bbrcomosidename{#1}}
+\define@key{bbrcom}{beforeskip}[]{\renewcommand*\@bbrcombeforeskip{#1}}
+\define@key{bbrcom}{aboveskip}[]{\renewcommand*\@bbrcombeforeskip{#1}}
+\define@key{bbrcom}{afterskip}[]{\renewcommand*\@bbrcomafterskip{#1}}
+\define@key{bbrcom}{belowskip}[]{\renewcommand*\@bbrcomafterskip{#1}}
+% \end{macrocode}
+
+
+%\begin{macro}{\@bbrcomfixedoffset}
+%\begin{macro}{\@bbrcomfixedboffset}
+%\begin{macro}{fixedoffset}
+%\begin{macro}{fixedboffset}
+% Provide means for fixed message offset from top or bottom
+% \begin{macrocode}
+\newcommand*\@bbrcomfixedoffset{}
+\newcommand*\@bbrcomfixedboffset{false}
+\define@key{bbrcom}{fixedoffset}[]{\renewcommand*\@bbrcomfixedoffset{#1}}
+\define@key{bbrcom}{fixedboffset}[]{\renewcommand*\@bbrcomfixedoffset{#1}\renewcommand*\@bbrcomfixedboffset{true}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \begin{macrocode}
+%
+%
+\newcommand*\@bbrbasenodestyle{}
+\newcommand*\@bbrbasenodename{bbrtmpname}
+\define@key{bbrabase}{nodestyle}[]{\renewcommand*\@bbrbasenodestyle{#1}}
+\define@key{bbrabase}{nodename}[]{\renewcommand*\@bbrbasenodename{#1}}
+
+\newcommand*\@bbr@first@msg{true}
+\newcommand*\@bbr@first@query{true}
+\newcommand*\@bbr@first@oraclequery{true}
+\newcommand*\@bbr@first@challengerquery{true}
+
+% \end{macrocode}
+%
+%
+%\begin{macro}{\@bbr@intermessage@skip}
+%\begin{macro}{\@bbr@intermessage@medskip}
+%\begin{macro}{\@bbr@intermessage@shortskip}
+%\begin{macro}{\@bbr@intermessage@veryshortskip}
+% Skip between two messages.
+% \begin{macrocode}
+\newcommand*\@bbr@intermessage@skip{4ex}
+\newcommand*\@bbr@intermessage@veryshortskip{1ex}
+\newcommand*\@bbr@intermessage@shortskip{1.5ex}
+\newcommand*\@bbr@intermessage@medskip{2.5ex}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{islast}
+%\begin{macro}{\@bbrcomislast}
+% Sets the message from the bottom of the box with the same distance as the first message.
+% \begin{macrocode}
+\newcommand*\@bbrcomislast{false}
+\define@key{bbrcom}{islast}[true]{\renewcommand*\@bbrcomislast{#1}}
+
+\newcommand*\@bbrcom@check@islast{%
+\ifthenelse{\equal{\@bbrcomislast}{true}}
+ {\renewcommand*\@bbrcomfixedoffset{\bbrfirstmessageoffset}\renewcommand*\@bbrcomfixedboffset{true}}
+ {}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\@bbr@lastskip}
+% marker to set whether next skip is a short or a long one
+% \begin{macrocode}
+\def\@bbr@lastskip{0pt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@bb@comsetup}
+% Sets up communication parameters for message/query commands. Parameters are
+% \marg{key value list}, \marg{length}, \marg{command for adding space}
+% \marg{true if first message}
+% \begin{macrocode}
+\newcommand{\@bb@comsetup}[4]{
+ % check if is first message and mark as false
+ \edef\@tmp@bbr@isfirst{#4}
+ \renewcommand#4{false}
+
+ %load keys
+ \begingroup % for local keys
+
+ \setkeys{bbrcom}{#1}%
+
+ %set styles
+ \tikzset{BBRCOM-SIDESTYLE/.style/.expand once=\@bbrcomsidestyle}%
+ \tikzset{BBRCOM-OSIDESTYLE/.style/.expand once=\@bbrcomosidestyle}%
+ \tikzset{BBRCOM-TOPSTYLE/.style/.expand once=\@bbrcomtopstyle}%
+ \tikzset{BBRCOM-BOTTOMSTYLE/.style/.expand once=\@bbrcombottomstyle}%
+ \tikzset{BBRCOM-EDGESTYLE/.style/.expand once=\@bbrcomedgestyle}%
+
+ \@bbrcom@check@islast{}
+
+ % increase space
+ #3{\@bbrcombeforeskip}
+ \ifthenelse{\equal{\@bbrcomfixedoffset}{}}
+ {
+ \ifthenelse{\equal{\@tmp@bbr@isfirst}{true}}
+ {}{#3{\@bbr@lastskip}}
+
+ \setlength{\@bb@com@tmpoffset}{#2}%
+ }
+ {
+ \setlength{\@bb@com@tmpoffset}{\@bbrcomfixedoffset}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@bb@comfinalize}
+% \begin{macrocode}
+\newcommand{\@bb@comfinalize}[1]{
+ #1{\@bbrcomafterskip}
+ \endgroup
+ \def\@bbr@lastskip{\@bbr@intermessage@skip}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\@bbrmsg}
+% 9 -> true if first message
+% 10 -> anchor from bottom
+% \begin{macrocode}
+\newcommand{\@bbrmsg}[9]{
+ \@bb@comsetup{#1}{#7}{#8}{#9}
+ %
+ \ifthenelse{\equal{\@bbrcomfixedboffset}{true}}
+ {
+ % from bottom
+ \ifthenelse{\equal{#4}{north east}}{\def\@bbr@tmp@bottomanchor{south east}}{}
+ \ifthenelse{\equal{#4}{north west}}{\def\@bbr@tmp@bottomanchor{south west}}{}
+ \node[#3=-\@bb@com@tmpoffset and \@bbrcomlength of \@bb@lastbox.\@bbr@tmp@bottomanchor,anchor=#6,BBRCOM-SIDESTYLE] (\@bbrcomsidename) {\@bbrcomside};
+ }
+ {
+ % from top
+ \node[#3=\@bb@com@tmpoffset and \@bbrcomlength of \@bb@lastbox.#4,anchor=#6,BBRCOM-SIDESTYLE] (\@bbrcomsidename) {\@bbrcomside};
+ }
+ \path[#2] (\@bbrcomsidename.#6) edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\@bbrcomtopname) {\@bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\@bbrcombottomname) {\@bbrcombottom} (\@bb@lastbox.#5|-\@bbrcomsidename) -- (\@bb@lastbox.#5|-\@bbrcomsidename) node[inner sep=0pt,outer sep=0pt,BBRCOM-OSIDESTYLE] (\@bbrcomosidename) {};
+ %
+ \@bb@comfinalize{#8}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\bbrmsgto}
+%\begin{macro}{\bbrmsgfrom}
+%\begin{macro}{\bbrmsgtofrom}
+%\begin{macro}{\bbrmsgfromto}
+% \begin{macrocode}
+\newcommandx{\bbrmsgto}[1]{%
+\@bbrmsg{#1}{->}{below left}{north west}{west}{east}{\@bb@message@voffset}{\bbrmsgspace}{\@bbr@first@msg}
+}
+\newcommandx{\bbrmsgfrom}[1]{%
+\@bbrmsg{#1}{<-}{below left}{north west}{west}{east}{\@bb@message@voffset}{\bbrmsgspace}{\@bbr@first@msg}
+}
+
+\newcommandx{\bbrmsgtofrom}[2]{%
+\bbrmsgto{#1}
+\bbrmsgspace{-\@bbr@intermessage@skip}
+\bbrmsgspace{\@bbr@intermessage@shortskip}
+\bbrmsgfrom{#2}
+\bbrmsgspace{\@bbr@intermessage@medskip}
+}
+
+\newcommandx{\bbrmsgfromto}[2]{%
+\bbrmsgfrom{#1}
+\bbrmsgspace{-\@bbr@intermessage@skip}
+\bbrmsgspace{\@bbr@intermessage@shortskip}
+\bbrmsgto{#2}
+\bbrmsgspace{\@bbr@intermessage@medskip}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\bbrmsgvdots}
+% \begin{macrocode}
+\newcommandx{\bbrmsgvdots}{%
+ \bbrmsgtxt[xshift=\@bbrcomlength/2,afterskip=\@bbr@intermessage@skip]{$\vdots$}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\bbrqryto}
+%\begin{macro}{\bbrqryfrom}
+%\begin{macro}{\bbrqrytofrom}
+%\begin{macro}{\bbrqryfromto}
+% \begin{macrocode}
+\newcommandx{\bbrqryto}[1]{%
+\@bbrmsg{#1}{<-}{below right}{north east}{east}{west}{\@bb@query@voffset}{\bbrqryspace}{\@bbr@first@query}
+}
+\newcommandx{\bbrqryfrom}[1]{%
+\@bbrmsg{#1}{->}{below right}{north east}{east}{west}{\@bb@query@voffset}{\bbrqryspace}{\@bbr@first@query}
+}
+
+\newcommand*{\bbrqrytofrom}[2]{%
+\bbrqryto{#1}
+\bbrqryspace{-\@bbr@intermessage@skip}
+\bbrqryspace{\@bbr@intermessage@shortskip}
+\bbrqryfrom{#2}
+\bbrqryspace{\@bbr@intermessage@medskip}
+}
+
+\newcommand*{\bbrqryfromto}[2]{%
+\bbrqryfrom{#1}
+\bbrqryspace{-\@bbr@intermessage@skip}
+\bbrqryspace{\@bbr@intermessage@shortskip}
+\bbrqryto{#2}
+\bbrqryspace{\@bbr@intermessage@medskip}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\@bbroracleqry}
+% \begin{macrocode}
+\newcommand{\@bbroracleqry}[4]{
+ \@bb@comsetup{#1}{#3}{#4}{\@bbr@first@oraclequery}
+ %
+ \ifthenelse{\equal{\@bbrcomfixedboffset}{true}}
+ {
+ % from bottom
+ \path[#2] (\@bb@lastoracle.south west) -- ++ (0,\@bb@com@tmpoffset) node[inner sep=0pt,outer sep=0pt,anchor=west,BBRCOM-SIDESTYLE] (\@bbrcomsidename){\@bbrcomside} edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\@bbrcomtopname) {\@bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\@bbrcombottomname) {\@bbrcombottom} (\@bb@lastbox.east|-\@bbrcomsidename) -- (\@bb@lastbox.east|-\@bbrcomsidename) node[inner sep=0pt,outer sep=0pt,anchor=east,BBRCOM-OSIDESTYLE] (\@bbrcomosidename) {\@bbrcomoside};
+ }
+ {
+ \path[#2] (\@bb@lastoracle.north west) -- ++ (0,-\@bb@com@tmpoffset) node[inner sep=0pt,outer sep=0pt,anchor=west,BBRCOM-SIDESTYLE] (\@bbrcomsidename){\@bbrcomside} edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\@bbrcomtopname) {\@bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\@bbrcombottomname) {\@bbrcombottom} (\@bb@lastbox.east|-\@bbrcomsidename) -- (\@bb@lastbox.east|-\@bbrcomsidename) node[inner sep=0pt,outer sep=0pt,anchor=east,BBRCOM-OSIDESTYLE] (\@bbrcomosidename) {\@bbrcomoside};
+ }
+ %
+ \@bb@comfinalize{#4}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\bbroracleqryto}
+%\begin{macro}{\bbroracleqryfrom}
+%\begin{macro}{\bbroracleqrytofrom}
+%\begin{macro}{\bbroracleqryfromto}
+% \begin{macrocode}
+\newcommand{\bbroracleqryfrom}[1]{
+ \@bbroracleqry{#1}{->}{\@bb@oraclequery@voffset}{\bbroracleqryspace}
+}
+
+\newcommand{\bbroracleqryto}[1]{
+ \@bbroracleqry{#1}{<-}{\@bb@oraclequery@voffset}{\bbroracleqryspace}
+}
+
+\newcommand*{\bbroracleqrytofrom}[2]{%
+\bbroracleqryto{#1}
+\bbroracleqryspace{-\@bbr@intermessage@skip}
+\bbroracleqryspace{\@bbr@intermessage@shortskip}
+\bbroracleqryfrom{#2}
+\bbroracleqryspace{\@bbr@intermessage@medskip}
+}
+
+\newcommand*{\bbroracleqryfromto}[2]{%
+\bbroracleqryfrom{#1}
+\bbroracleqryspace{-\@bbr@intermessage@skip}
+\bbroracleqryspace{\@bbr@intermessage@shortskip}
+\bbroracleqryto{#2}
+\bbroracleqryspace{\@bbr@intermessage@medskip}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\@bbrchallengerqry}
+% \begin{macrocode}
+\newcommand{\@bbrchallengerqry}[4]{
+ \@bb@comsetup{#1}{#3}{#4}{\@bbr@first@challengerquery}
+ %
+ \ifthenelse{\equal{\@bbrcomfixedboffset}{true}}
+ {
+ \path[#2] (\@bb@lastchallenger.south east) -- ++ (0,\@bb@com@tmpoffset) node[inner sep=0pt,outer sep=0pt,anchor=east,BBRCOM-SIDESTYLE] (\@bbrcomsidename){\@bbrcomside} edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\@bbrcomtopname) {\@bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\@bbrcombottomname) {\@bbrcombottom} (\@bb@lastbox.west|-\@bbrcomsidename) -- (\@bb@lastbox.west|-\@bbrcomsidename) node[inner sep=0pt,outer sep=0pt,anchor=west,BBRCOM-OSIDESTYLE] (\@bbrcomosidename) {\@bbrcomoside};
+ }
+ {
+ \path[#2] (\@bb@lastchallenger.north east) -- ++ (0,-\@bb@com@tmpoffset) node[inner sep=0pt,outer sep=0pt,anchor=east,BBRCOM-SIDESTYLE] (\@bbrcomsidename){\@bbrcomside} edge[BBRCOM-EDGESTYLE] node[above,BBRCOM-TOPSTYLE] (\@bbrcomtopname) {\@bbrcomtop} node[below,BBRCOM-BOTTOMSTYLE] (\@bbrcombottomname) {\@bbrcombottom} (\@bb@lastbox.west|-\@bbrcomsidename) -- (\@bb@lastbox.west|-\@bbrcomsidename) node[inner sep=0pt,outer sep=0pt,anchor=west,BBRCOM-OSIDESTYLE] (\@bbrcomosidename) {\@bbrcomoside};
+ }
+ %
+ \@bb@comfinalize{#4}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\bbroracleqryto}
+%\begin{macro}{\bbroracleqryfrom}
+%\begin{macro}{\bbroracleqrytofrom}
+%\begin{macro}{\bbroracleqryfromto}
+% \begin{macrocode}
+\newcommand{\bbrchallengerqryfrom}[1]{
+ \@bbrchallengerqry{#1}{<-}{\@bb@challengerquery@voffset}{\bbrchallengerqryspace}
+}
+
+\newcommand{\bbrchallengerqryto}[1]{
+ \@bbrchallengerqry{#1}{->}{\@bb@challengerquery@voffset}{\bbrchallengerqryspace}
+}
+
+\newcommand*{\bbrchallengerqrytofrom}[2]{%
+\bbrchallengerqryto{#1}
+\bbrchallengerqryspace{-\@bbr@intermessage@skip}
+\bbrchallengerqryspace{\@bbr@intermessage@shortskip}
+\bbrchallengerqryfrom{#2}
+\bbrchallengerqryspace{\@bbr@intermessage@medskip}
+}
+
+\newcommand*{\bbrchallengerqryfromto}[2]{%
+\bbrchallengerqryfrom{#1}
+\bbrchallengerqryspace{-\@bbr@intermessage@skip}
+\bbrchallengerqryspace{\@bbr@intermessage@shortskip}
+\bbrchallengerqryto{#2}
+\bbrchallengerqryspace{\@bbr@intermessage@medskip}
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \begin{macrocode}
+
+
+\newcommand*\bbrcomloopleft{}
+\newcommand*\bbrcomloopleftstyle{}
+\newcommand*\bbrcomloopright{}
+\newcommand*\bbrcomlooprightstyle{}
+\newcommand*\bbrcomloopcenter{}
+\newcommand*\bbrcomloopcenterstyle{}
+\newcommand*\bbrcomloopclockwise{false}
+\newcommand*\bbrcomloopangle{50}
+\define@key{bbrcomloop}{left}[]{\renewcommand*\bbrcomloopleft{#1}}
+\define@key{bbrcomloop}{leftstyle}[]{\renewcommand*\bbrcomloopleftstyle{#1}}
+\define@key{bbrcomloop}{right}[]{\renewcommand*\bbrcomloopright{#1}}
+\define@key{bbrcomloop}{rightstyle}[]{\renewcommand*\bbrcomlooprightstyle{#1}}
+\define@key{bbrcomloop}{center}[]{\renewcommand*\bbrcomloopcenter{#1}}
+\define@key{bbrcomloop}{centerstyle}[]{\renewcommand*\bbrcomloopcenterstyle{#1}}
+\define@key{bbrcomloop}{angle}[]{\renewcommand*\bbrcomloopangle{#1}}
+\define@key{bbrcomloop}{clockwise}[true]{\renewcommand*\bbrcomloopclockwise{#1}}
+
+\newcommand{\bbrloop}[3]{
+ \begingroup % for local keys
+ \setkeys{bbrcomloop}{#3}%
+
+ \tikzset{BBRLOOP-LEFTSTYLE/.style/.expand once=\bbrcomloopleftstyle}%
+ \tikzset{BBRLOOP-RIGHTSTYLE/.style/.expand once=\bbrcomlooprightstyle}%
+ \tikzset{BBRLOOP-CENTERSTYLE/.style/.expand once=\bbrcomloopcenterstyle}%
+
+
+ \ifthenelse{\equal{\bbrcomloopclockwise}{true}}
+ {
+ \path[->] (#1) edge[bend left=\bbrcomloopangle] node[midway,left,inner sep=0,outer sep=0,BBRLOOP-LEFTSTYLE] (bbrleft) {\bbrcomloopleft} (#2);
+ \path[->] (#2) edge[bend left=\bbrcomloopangle] node[midway,right,inner sep=0,outer sep=0,BBRLOOP-RIGHTSTYLE] (bbrright) {\bbrcomloopright} (#1);
+ }
+ {
+ \path[->] (#1) edge[bend right=\bbrcomloopangle] node[midway,left,inner sep=0,outer sep=0,] (bbrleft) {\bbrcomloopleft} (#2);
+ \path[->] (#2) edge[bend right=\bbrcomloopangle] node[midway,right,inner sep=0,outer sep=0,] (bbrright) {\bbrcomloopright} (#1);
+ }
+ \node[at=($(bbrleft.west)!0.5!(bbrright.east)$),anchor=center,BBRLOOP-CENTERSTYLE]() {\bbrcomloopcenter};
+
+ \endgroup
+}
+
+\newcommand*\bbrintertexthoffset{1.5cm}
+\define@key{bbrintertext}{xshift}[]{\renewcommand*\bbrintertexthoffset{#1}}
+
+\newcommand{\@bb@intertextsetup}[1]{
+ %load keys
+ \begingroup % for local keys
+
+ % fix align environment (e.g. for use of pseudocode)
+ % ^^A https://tex.stackexchange.com/questions/36954/spurious-space-above-align-environment-at-top-of-page-minipage
+ %\pretocmd\start@align{%
+ %\if@minipage\kern-0.5\abovedisplayskip\fi
+ %}{}{}
+
+ \setkeys{bbrcom,bbrabase,bbrintertext}{#1}%
+ \@bbrcom@check@islast{}
+
+ \tikzset{BBRBASE-NODESTYLE/.style/.expand once=\@bbrbasenodestyle}%
+}
+
+\newcommand{\@bb@intertextfinalize}[1]{
+ #1{\@bbrcomafterskip}
+ \endgroup
+ \def\@bbr@lastskip{\@bbr@intermessage@veryshortskip}
+}
+% \end{macrocode}
+
+%\begin{macro}{\@bbrintertext}
+% 7 -> whether or not this is the first msg/query
+% \begin{macrocode}
+\newcommand{\@bbrintertext}[7]{
+ \edef\@tmp@bbr@isfirst{#7}
+ \renewcommand#7{false}
+
+ \@bb@intertextsetup{#1}
+
+ % increase space
+ #5{\@bbrcombeforeskip}
+ \ifthenelse{\equal{\@bbrcomfixedoffset}{}}
+ {
+ \ifthenelse{\equal{\@tmp@bbr@isfirst}{true}}
+ {}{#5{\@bbr@intermessage@veryshortskip}}
+
+ \setlength{\@bb@com@tmpoffset}{#4}%
+ }
+ {
+ \setlength{\@bb@com@tmpoffset}{\@bbrcomfixedoffset}%
+ }
+
+ %
+ \ifthenelse{\equal{\@bbrcomfixedboffset}{true}}
+ {
+ % from bottom
+ \ifthenelse{\equal{#3}{north east}}{\def\@bbr@tmp@bottomanchor{south east}}{}
+ \ifthenelse{\equal{#3}{north west}}{\def\@bbr@tmp@bottomanchor{south west}}{}
+
+ \node[#2=-\@bb@com@tmpoffset and \bbrintertexthoffset of \@bb@lastbox.\@bbr@tmp@bottomanchor, inner sep=0, outer sep=0, BBRBASE-NODESTYLE] (\@bbrbasenodename) {#6};
+ }
+ {
+ \node[#2=\@bb@com@tmpoffset and \bbrintertexthoffset of \@bb@lastbox.#3, inner sep=0, outer sep=0, BBRBASE-NODESTYLE] (\@bbrbasenodename) {#6};
+ }
+ %
+ % compute height of node
+ \coordinate (@bbtmpcoord) at (\@bbrbasenodename.north);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordA}
+ \coordinate (@bbtmpcoord) at (\@bbrbasenodename.south);
+ \path (@bbtmpcoord);
+ \pgfgetlastxy{\XCoord}{\YCoordB}
+
+ % update voffset
+ \setlength{\@bb@tmplength@b}{\YCoordA-\YCoordB}
+ #5{\the\@bb@tmplength@b}
+
+ \@bb@intertextfinalize{#5}
+}
+% \end{macrocode}
+%\end{macro}
+
+% \begin{macrocode}
+\newcommand{\bbrmsgtxt}[2][]{
+ \@bbrintertext{#1}{below left}{north west}{\@bb@message@voffset}{\bbrmsgspace}{#2}{\@bbr@first@msg}
+}
+
+\newcommand{\bbrqrytxt}[2][]{
+ \@bbrintertext{#1}{below right}{north east}{\@bb@query@voffset}{\bbrqryspace}{#2}{\@bbr@first@query}
+}
+
+\newcommand{\bbrchallengertxt}[2][]{
+\begingroup
+\setlength{\@bb@tmplength@b}{\bbrchallengerhdistance/2}%
+\renewcommand{\bbrintertexthoffset}{\the\@bb@tmplength@b}%
+\@bbrintertext{#1}{below left}{north west}{\@bb@challengerquery@voffset}{\bbrchallengerqryspace}{#2}{\@bbr@first@challengerquery}
+\endgroup
+}
+
+\newcommand{\bbroracletxt}[2][]{
+\begingroup
+\setlength{\@bb@tmplength@b}{\bbroraclehdistance/2}%
+\renewcommand{\bbrintertexthoffset}{\the\@bb@tmplength@b}%
+\@bbrintertext{#1}{below left}{north west}{\@bb@oraclequery@voffset}{\bbroracleqryspace}{#2}{\@bbr@first@oraclequery}
+\endgroup
+}
+
+\newcommand{\bbrmsgspace}[1]{
+\@pc@globaladdtolength{\@bb@message@voffset}{#1}
+}
+
+\newcommand{\bbrqryspace}[1]{
+\@pc@globaladdtolength{\@bb@query@voffset}{#1}
+}
+
+\newcommand{\bbroracleqryspace}[1]{
+\@pc@globaladdtolength{\@bb@oraclequery@voffset}{#1}
+}
+
+\newcommand{\bbrchallengerqryspace}[1]{
+\@pc@globaladdtolength{\@bb@challengerquery@voffset}{#1}
+}
+
+
+% \end{macrocode}
+%
+% \subsection{Game-Based Proofs}
+%
+% \begin{macrocode}
+
+\newcounter{pcstartgamecounter}
+%
+%
+% \end{macrocode}
+%
+%
+%\begin{macro}{gamechange}
+% Highlighting of changes between games. Highlight color can be set via
+% |\gamechangecolor|
+% \begin{macrocode}
+\definecolor{gamechangecolor}{gray}{0.90}
+\newcommand{\gamechange}[2][gamechangecolor]{%
+{\setlength{\fboxsep}{0pt}\colorbox{#1}{\ifmmode$\displaystyle#2$\else#2\fi}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\pcbox}
+% A simple box for conditional (ie., boxed) lines.
+% \begin{macrocode}
+\newcommand{\pcbox}[1]{%
+{\setlength{\fboxsep}{3pt}\fbox{$\displaystyle#1$}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%
+%\begin{macro}{\pcgame}
+%\begin{macro}{\pcgamename}
+%\begin{macro}{\pcgameprocedurestyle}
+% \begin{macrocode}
+\newcommand*{\pcgamename}{Game}
+\newcommand*{\pcgameprocedurestyle}[1]{\ensuremath{\mathsf{#1}}}
+
+\def\pcgame{\bgroup\pcgame@}
+\newcommand{\pcgame@}[1][]{\ifthenelse{\equal{#1}{}}{\pcgame@@}{\pcgame@@@{#1}}}
+\def\pcgame@@{\pcgameprocedurestyle{\pcgamename}\egroup}
+\def\pcgame@@@#1{\ensuremath{\pcgameprocedurestyle{\pcgamename_{\normalfont{#1}}}}\egroup}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\@pc@gametitle}
+% Creates the header/title of a game
+% \begin{macrocode}
+\newcommand\@pc@gametitle[1][]{\ifthenelse{\equal{#1}{}}
+{\ensuremath{\pcgame[\thepcgamecounter]\gameprocedurearg}}
+{\ensuremath{\pcgame[#1]\gameprocedurearg}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gameprocedurearg}
+% \begin{macrocode}
+\newcommand*{\gameprocedurearg}{\ensuremath{(\secpar)}}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{environment}{gameproof}
+% \begin{macrocode}
+\newcommand*\@pcgameproofgamenr{0}
+\define@key{pcgameproof}{nr}[]{\renewcommand*\@pcgameproofgamenr{#1}}
+\define@key{pcgameproof}{name}[]{\renewcommand*\pcgamename{\ensuremath{#1}}}
+\define@key{pcgameproof}{arg}[]{\renewcommand*\gameprocedurearg{\ensuremath{#1}}}
+
+\newenvironment{gameproof}[1][]{%
+\begingroup%
+\setkeys{pcgameproof}{#1}%
+\@pc@ensureremember%
+\setcounter{pcgamecounter}{\@pcgameproofgamenr}%
+\setcounter{pcstartgamecounter}{\@pcgameproofgamenr}\stepcounter{pcstartgamecounter}%
+}{\@pc@releaseremember\endgroup}
+% \end{macrocode}
+%\end{environment}
+%
+%
+%
+% \begin{macrocode}
+\newcommand{\setgameproceduredefaultstyle}[1]{%
+\PackageWarning{cryptocode}{Deprecated command setgameproceduredefaultstyle. Use pcsetargs instead.}%
+\pcsetargs{#1}}
+
+\createpseudocodecommand{gameprocedure}
+ {\addtocounter{pcgamecounter}{1}\renewcommand{\@withingame}{true}}
+ {\@pc@gametitle}
+ {}
+
+\def\@bxgame@pseudocodeA[#1]#2#3{\setkeys*{pcspace}{#1}\renewcommand{\@bxgameheader}{\@pc@gametitle[#2]}%
+\@pseudocode[head=\@pc@gametitle,#1]{#3}}
+\def\@bxgame@pseudocodeB#1#2{\renewcommand{\@bxgameheader}{\@pc@gametitle[#1]}%
+\@pseudocode[head=\@pc@gametitle]{#2}}
+
+\newcommand{\bxgameprocedure}{
+\begingroup%
+\renewcommand{\@withinspaces}{false}%
+\renewcommand{\@withingame}{true}%
+\renewcommand{\@withinbxgame}{true}%
+\stepcounter{pcgamecounter}%
+\@ifnextchar[%]
+ {\@bxgame@pseudocodeA}
+ {\@bxgame@pseudocodeB}%
+}
+
+\newcommand{\@pc@secondheader}{}
+
+%tbx top boxed
+\createpseudocodecommand{tbxgameprocedure}
+ {\addtocounter{pcgamecounter}{1}\renewcommand{\@withingame}{true}%
+\renewcommand{\@pc@secondheader}{true}}
+{\@pc@gametitle}
+{}
+
+
+\newcommand*\@pcgamehopnodestyle{}
+\newcommand*\@pcgamehopedgestyle{bend left}
+\newcommand*\@pcgamehoppathestyle{}
+\newcommand*\@pcgamehophint{}
+\newcommand*\@pcgamehophintbelow{}
+\newcommand*\@pcgamehopinhint{}
+\newcommand*\@pcgamehoplength{1.5cm}
+\define@key{pcgamehop}{nodestyle}[]{\renewcommand*\@pcgamehopnodestyle{#1}}
+\define@key{pcgamehop}{edgestyle}[]{\renewcommand*\@pcgamehopedgestyle{#1}}
+\define@key{pcgamehop}{pathstyle}[]{\renewcommand*\@pcgamehoppathestyle{#1}}
+\define@key{pcgamehop}{hint}[]{\renewcommand*\@pcgamehophint{#1}}
+\define@key{pcgamehop}{belowhint}[]{\renewcommand*\@pcgamehophintbelow{#1}}
+\define@key{pcgamehop}{inhint}[]{\renewcommand*\@pcgamehopinhint{#1}}
+\define@key{pcgamehop}{length}[]{\renewcommand*\@pcgamehoplength{#1}}
+
+
+\newcommand{\@pc@setupgamehop}[1]{
+\begingroup\setkeys{pcgamehop}{#1}%
+\tikzset{GAMEHOP-PATH-STYLE/.style/.expand once=\@pcgamehoppathestyle}%
+\tikzset{GAMEHOP-NODE-STYLE/.style/.expand once=\@pcgamehopnodestyle}%
+\tikzset{GAMEHOP-EDGE-STYLE/.style/.expand once=\@pcgamehopedgestyle}%
+}
+
+\newcommand{\@pc@finalizegamehop}{
+\endgroup
+}
+
+\newcommandx*{\addgamehop}[3]{%
+\begingroup%
+\ifthenelse{#1<#2}%
+ {\ifthenelse{\equal{\@withingamedescription}{true}}%
+ {\renewcommand*\@pcgamehopedgestyle{bend right=20}\renewcommand*\@pcgamehopnodestyle{rotate=90}}{}%
+ }%
+ {\renewcommand*\@pcgamehopedgestyle{bend right}}%
+\@pc@setupgamehop{#3}%
+\begin{tikzpicture}[overlay]%
+\ifthenelse{#1<#2}{%
+ \path[->,GAMEHOP-PATH-STYLE] (gamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (gamenode#2);
+}{%
+ \path[->,GAMEHOP-PATH-STYLE] (bgamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (bgamenode#2);
+}%
+\end{tikzpicture}%
+\@pc@finalizegamehop%
+\endgroup%
+}
+\newcommandx*{\addstartgamehop}[2][1=\thepcstartgamecounter]{%
+\@pc@setupgamehop{#2}
+\begin{tikzpicture}[overlay]
+ \node[left=\@pcgamehoplength of gamenode#1] (tmpgamenode0) {};
+ \path[->,GAMEHOP-PATH-STYLE] (tmpgamenode0) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (gamenode#1);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+\newcommandx*{\addendgamehop}[2][1=\thepcgamecounter]{%
+\@pc@setupgamehop{#2}
+\begin{tikzpicture}[overlay]
+ \node[right=\@pcgamehoplength of gamenode#1] (tmpgamenode#1) {};
+ \path[->,GAMEHOP-PATH-STYLE] (gamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (tmpgamenode#1);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+\newcommandx*{\addbxgamehop}[3]{%
+\@pc@setupgamehop{#3}
+\begin{tikzpicture}[overlay]
+ \path[->,GAMEHOP-PATH-STYLE] (bgamenode#1) edge[GAMEHOP-EDGE-STYLE] node[above,GAMEHOP-NODE-STYLE]] {\@pcgamehophint}
+ node[below,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (bgamenode#2);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+\newcommandx*{\addloopgamehop}[2][1=\thepcgamecounter]{%
+\@pc@setupgamehop{#2}
+\begin{tikzpicture}[overlay]
+ \node (looptemp1) [right=0.5cm of gamenode#1] {};
+ \draw[->,GAMEHOP-PATH-STYLE] (gamenode#1) -- (looptemp1|-gamenode#1) -- node[right,GAMEHOP-NODE-STYLE] {\@pcgamehophint}
+ node[left,GAMEHOP-NODE-STYLE] {\@pcgamehophintbelow} (looptemp1|-bgamenode#1)-- (bgamenode#1);
+\end{tikzpicture}
+\@pc@finalizegamehop
+}
+
+
+% \end{macrocode}
+%
+% \subsubsection{Game Descriptions}
+%
+% \begin{macrocode}
+
+\newenvironment{gamedescription}[1][]{%
+\begingroup%
+\setkeys{pcgameproof}{#1}
+\renewcommand{\@withingamedescription}{true}%
+\@pc@ensureremember%
+\setcounter{pcgamecounter}{\@pcgameproofgamenr}%
+\setcounter{pcstartgamecounter}{\@pcgameproofgamenr}\stepcounter{pcstartgamecounter}%
+\begin{description}%
+}{\end{description}\@pc@releaseremember\endgroup}
+
+\newcommandx*{\describegame}[1][1=]{%
+\addtocounter{pcgamecounter}{1}%
+\item[%
+\pcdraw{
+\gdef\i{\thepcgamecounter}%
+\node[inner sep=0.0em,outer sep=0, xshift=-1ex, yshift=0.5ex] (gamenode\i) {};
+}%
+\@pc@gametitle:]%
+\begingroup\setkeys{pcgamehop}{#1}%
+\ifthenelse{\equal{}{\@pcgamehophint}}
+ {}
+ {\hspace{-0.7ex}\pcdraw{%the -0.7ex is a horrible hack to fix a whitespace issue with tikz (see http://tex.stackexchange.com/questions/22873/tikzpicture-with-overlay-takes-up-space
+\tikzset{GAMEHOP-PATH-STYLE/.style/.expand once=\@pcgamehoppathestyle}%
+\tikzset{GAMEHOP-NODE-STYLE/.style/.expand once=\@pcgamehopnodestyle}%
+\draw[->,GAMEHOP-PATH-STYLE] (gamenode\thepcgamecounter) --++ (0,-\@pcgamehoplength) node[midway,above,xshift=-1mm,rotate=90,GAMEHOP-NODE-STYLE] {\@pcgamehophint};
+}}%
+\ifthenelse{\equal{}{\@pcgamehopinhint}}
+ {}
+ {\hspace{-0.7ex}\pcdraw{%the -0.7ex is a horrible hack to fix a whitespace issue with tikz (see http://tex.stackexchange.com/questions/22873/tikzpicture-with-overlay-takes-up-space
+\tikzset{GAMEHOP-PATH-STYLE/.style/.expand once=\@pcgamehoppathestyle}%
+\tikzset{GAMEHOP-NODE-STYLE/.style/.expand once=\@pcgamehopnodestyle}%
+\draw[<-,GAMEHOP-PATH-STYLE] (gamenode\thepcgamecounter) --++ (0,\@pcgamehoplength) node[midway,above,xshift=-1mm,rotate=90,GAMEHOP-NODE-STYLE] {\@pcgamehopinhint};
+}%
+}%
+\endgroup%
+}
+%
+% \end{macrocode}
+%
+%
+%
+% \begin{macrocode}
+%</cryptocode.sty>
+% \end{macrocode}
+%\Finale \ No newline at end of file
diff --git a/macros/latex/contrib/cryptocode/cryptocode.ins b/macros/latex/contrib/cryptocode/cryptocode.ins
new file mode 100644
index 0000000000..381b5eebb3
--- /dev/null
+++ b/macros/latex/contrib/cryptocode/cryptocode.ins
@@ -0,0 +1,32 @@
+% cryptocode.ins generated using makedtx version 1.2 2020/6/20 20:14
+\input docstrip
+
+\preamble
+
+ cryptocode.dtx
+ Copyright 2020 Mittelbach, Arno
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license or (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Mittelbach, Arno.
+
+ This work consists of the files cryptocode.dtx and cryptocode.ins and the derived files
+ cryptocode.sty and cryptocode.pdf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate{\file{cryptocode.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{cryptocode.dtx}{cryptocode.sty,package}}
+}
+
+\endbatchfile
diff --git a/macros/latex/contrib/cryptocode/cryptocode.pdf b/macros/latex/contrib/cryptocode/cryptocode.pdf
index e2817d214a..b84314ac25 100644
--- a/macros/latex/contrib/cryptocode/cryptocode.pdf
+++ b/macros/latex/contrib/cryptocode/cryptocode.pdf
Binary files differ
diff --git a/macros/latex/contrib/cryptocode/cryptocode.tex b/macros/latex/contrib/cryptocode/cryptocode.tex
deleted file mode 100644
index 3abe7f40b4..0000000000
--- a/macros/latex/contrib/cryptocode/cryptocode.tex
+++ /dev/null
@@ -1,3981 +0,0 @@
-%% Copyright 2018 Arno Mittelbach
- %
- % This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
- % of this license or (at your option) any later version.
- % The latest version of this license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of LaTeX
- % version 2005/12/01 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is Arno Mittelbach.
- %
- % This work consists of the files cryptocode.tex and cryptocode.sty
-
-\documentclass[a4paper]{report}
-
-% more than one optional parameter
-\usepackage[usenames]{xcolor}
-\usepackage{hyperref}
-\usepackage[
- n,
- operators,
- advantage,
- sets,
- adversary,
- landau,
- probability,
- notions,
- logic,
- ff,
- mm,
- primitives,
- events,
- complexity,
- asymptotics,
- keys]{cryptocode}
-
-
-\usepackage{csquotes}
-\usepackage{fullpage}
-\usepackage{dashbox}
-\usepackage{todonotes}
-
-\usepackage{url}
-
-\usetikzlibrary{shapes.callouts}
-
-\usepackage{listings}
-
-\usepackage{trace}
-
-\usepackage{makeidx}
-\usepackage{mdframed}
-
-\makeindex
-
-
-
-
-
-
-\author{Arno Mittelbach\\
-\texttt{mail@arno-mittelbach.de}}
-\title{\Huge Cryptocode \\ \large\textsc{Typesetting Cryptography}}
-
-\definecolor{mygreen}{rgb}{0,0.6,0}
-\definecolor{mygray}{rgb}{0.1,0.1,0.1}
-\definecolor{mymauve}{rgb}{0.58,0,0.82}
-
-\lstset{language=[LaTeX]TeX,
- backgroundcolor=\color{lightgray}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
- rulecolor=\color{lightgray},
- basicstyle=\scriptsize, % the size of the fonts that are used for the code
- breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
- breaklines=true, % sets automatic line breaking
- captionpos=b, % sets the caption-position to bottom
- commentstyle=\color{mygreen}, % comment style
- escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
- extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
- frame=single, % adds a frame around the code
- keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
- keywordstyle=\color{blue}, % keyword style
- numbers=left, % where to put the line-numbers; possible values are (none, left, right)
- numbersep=5pt, % how far the line-numbers are from the code
- numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers
- rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
- showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
- showstringspaces=false, % underline spaces within strings only
- showtabs=false, % show tabs within strings adding particular underscores
- stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
- stringstyle=\color{mymauve}, % string literal style
- frameround=ftff,
- belowskip=0em,
- aboveskip=1em,
- tabsize=2, % sets default tabsize to 2 spaces
- title=\lstname }
-
-\begin{document}
-
-\maketitle
-
-
-
-
-\begin{abstract}
-\thispagestyle{empty}
-The cryptocode package provides a set of macros to ease the typesetting of
-pseudocode, algorithms and protocols (such as the one below). In addition it comes with a wide range of tools to typeset cryptographic papers (hence the name).
-This includes simple predefined commands for concepts such as
-a security parameter $\secparam$ or advantage terms $\advantage{prf}{\adv,\prf} = \negl$ but also flexible and powerful
-environments to layout game-based proofs or black-box reductions.
-
-\vspace{2em}
-\begin{center}
-\fbox{
-\pseudocode{%
-\textbf{ Alice} \< \< \textbf{ Bob} \\[0.1\baselineskip][\hline]
- \<\< \\[-0.5\baselineskip]
-x \sample \ZZ_q \< \< \\
- X \gets g^x \<\< \\
- \< \sendmessageright*{\GG,q,g,X} \< \\
- \<\< y \sample \ZZ_q \\
- \<\< Y \gets g^y \\
- \< \sendmessageleft*{Y} \< \\
- \key_A \gets Y^x \<\< \key_B \gets X^y }
-}
-\end{center}
-
-
-\end{abstract}
-\newpage
-
-\pagenumbering{roman}
-
-\tableofcontents
-\thispagestyle{empty}
-\newpage
-
-\pagenumbering{arabic}
-
-
-\chapter{Cryptocode by Example}
-
-The cryptocode package provides a set of commands to ease the typesetting of
-pseudocode, protocols, game-based proofs and black-box reductions. In addition it comes
-with a large number of predefined commands. In this chapter we present the various features of
-cryptocode by giving small examples. But first, let's load the package
-
-\begin{lstlisting}
-\usepackage[
- n,
- advantage,
- operators,
- sets,
- adversary,
- landau,
- probability,
- notions,
- logic,
- ff,
- mm,
- primitives,
- events,
- complexity,
- asymptotics,
- keys
- ]{cryptocode}
-\end{lstlisting}
-
-Note that all the options refer to a set of commands. That is, without any options cryptocode will provide the mechanisms
-for writing pseudocode, protocols, game-based proofs and black-box reductions but not define additional commands,
-such as \lstinline$\pk$ or \lstinline$\sk$ (for typesetting public and private/secret keys) which are part of the keys option.
-We discuss the various options and associated commands in Chapter~\ref{chap:commands}.
-
-
-\section{Pseudocode}
-The cryptocode package tries to make writing pseudocode easy and enjoyable. The
-\lstinline$\pseudocode$ command takes a single parameter where you can start writing
-code in mathmode using \lstinline{\\} as line breaks. Following is an $\indcpa$ game
-definition using various commands from cryptocode to ease writing keys (\lstinline{\pk,\sk}),
-sampling (\lstinline{\sample}), and more:
-\begin{center}
-\fbox{\pseudocode[linenumbering,syntaxhighlight=auto]{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam) \\
- (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c, \state) \\
- return b = b' }}
-\end{center}
-
-
-The above code is generated by (the code is actually wrapped in an \lstinline$fbox$).
-\begin{lstlisting}
-\pseudocode[linenumbering,syntaxhighlight=auto]{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam) \\
- (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c, \state) \\
- return b = b' }
-\end{lstlisting}
-The pseudocode command thus takes a single mandatory argument (the code) plus an optional argument
-which allows you to specify options in a key=value fashion. In the above example we used the linenumbering
-option (which not surprisingly adds line numbers to the code) as well as the syntaxhighlighting option which
-highlights certain keywords (in the example it is responsible for setting \enquote{return} as \highlightkeyword[]{return}).
-
-It is easy to define a heading for your code. Either specify the header using the option \enquote{head} or use
-the \lstinline$\procedure$ command which takes an additional argument to specify the headline.
-\begin{center}
-\fbox{\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam) \\
- (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c, \state) \\
- \pcreturn b = b' }}
-\end{center}
-
-\begin{lstlisting}
-\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam) \\
- (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c, \state) \\
- \pcreturn b = b' }
-\end{lstlisting}
-Here in the example we have not turned on the automatic syntax highlighting but used the command \lstinline$\pcreturn$
-to highlight the return statement. Besides \lstinline$\pcreturn$ there are a variant of predefined \enquote{keywords}
-such as \lstinline$\pcfor$, \lstinline$\pcif$, etc. (all prefixed with pc)
-
-There is a lot more that we will discuss in detail in Chapter~\ref{chap:pseudocode}. Here, for example
-is the same code with an overlay explanation and a division of the pseudocode.
-\begin{center}
-\fbox{
-\begin{pcimage}
-\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam)\pcnode{kgen} \pclb
- \pcintertext[dotted]{Setup Completed}
- (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c, \state) \\
- \pcreturn b = b' }
-
-\pcdraw{
- \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
- at ([shift={(+3,-1)}]kgen) {
- \begin{varwidth}{3cm}
- $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
- \end{varwidth}
- };
-}
-\end{pcimage}
-}
-\end{center}
-
-\begin{lstlisting}
-\begin{pcimage}
-\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam)\pcnode{kgen} \pclb
- \pcintertext[dotted]{Setup Completed}
- (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c, \state) \\
- \pcreturn b = b' }
-
-\pcdraw{
- \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
- at ([shift={(+3,-1)}]kgen) {
- \begin{varwidth}{3cm}
- $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
- \end{varwidth}
- };
-}
-\end{pcimage}
-\end{lstlisting}
-
-
-
-\section{Columns}
-The \lstinline$\pseudocode$ and \lstinline$\procedure$ commands allow the usage of multiple columns.
-You switch to a new column by inserting a \lstinline$\>$. This is similar to using an \lstinline$align$
-environment and placing a tabbing \& character.\footnote{In fact, the \emph{pseudocode} command
-is based on amsmath's flalign environment.}
-\begin{center}
-\fbox{%
-\pseudocode{%
- \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
- b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
-}
-\end{center}
-\begin{lstlisting}
-\pseudocode{%
- \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
- b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
-\end{lstlisting}
-As you can see the first column is left aligned the second right, the third left and so forth.
-In order to get only left aligned columns you could thus simply always skip a column by
-using \lstinline$\>\>$. You can also use \lstinline$\<$ a shorthand for \lstinline$\>\>$.
-\begin{center}
-\fbox{%
-\pseudocode{%
- \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
- b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
-}
-\end{center}
-
-\section{Protocols}
-Using columns makes it easy to write even complex protocols. Following is a simple
-three party protocol
-\begin{center}
-\fbox{%
-\pseudocode{%
- \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\[][\hline]
- \text{work} \< \< \< \< \\
- \< \sendmessageright{top=Work result,topstyle=red} \< \< \< \\
- \< \< \text{work} \< \< \\
- \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
- \< \< \< \< \text{work} \\
- \< \sendmessageleftx{8}{\text{A long message for Alice}} \< \\
- \text{finalize} \< \< \< \< }
-}
-\end{center}
-\begin{lstlisting}
-\pseudocode{%
- \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\[][\hline]
- \text{work} \< \< \< \< \\
- \< \sendmessageright{top=Work result,topstyle=red} \< \< \< \\
- \< \< \text{work} \< \< \\
- \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
- \< \< \< \< \text{work} \\
- \< \sendmessageleftx{8}{\text{A long message for Alice}} \< \\
- \text{finalize} \< \< \< \< }
-\end{lstlisting}
-The commands \lstinline$\sendmessageright$ and \lstinline$\sendmessageleft$ are very flexible and
-allow to style the sending of messages in various ways. Also note the \lstinline$\\[][\hline]$ at the end of the
-first line. Here the first optional argument allows us to specify the lineheight (similarly to the behavior in an
-align environment). The second optional argument allows us to, for example, draw a horizontal line.
-
-In multi player protocols such as the one
-above the commands \lstinline$\sendmessagerightx$ and \lstinline$\sendmessageleftx$ (note the x at the end)
-allow to send messages over multiple columns. In the example, as we were using \lstinline$\<$ the
-final message thus spans 8 columns.
-
-For basic protocols you might also utilize the \lstinline$\sendmessageright*$ and \lstinline$\sendmessageleft*$
-commands which simply take a message which is displayed.
-\begin{center}
-\fbox{%
-\pseudocode{%
-\textbf{ Alice} \< \< \textbf{ Bob} \\[0.1\baselineskip][\hline]
- \<\< \\[-0.5\baselineskip]
-x \sample \ZZ_q \< \< \\
- X \gets g^x \<\< \\
- \< \sendmessageright*{\GG,q,g,X} \< \\
- \<\< y \sample \ZZ_q \\
- \<\< Y \gets g^y \\
- \< \sendmessageleft*{Y} \< \\
- \key_A \gets Y^x \<\< \key_B \gets X^y
-}
-}
-\end{center}
-\begin{lstlisting}
-\pseudocode{%
-\textbf{ Alice} \< \< \textbf{ Bob} \\[0.1\baselineskip][\hline]
- \<\< \\[-0.5\baselineskip]
-x \sample \ZZ_q \< \< \\
- X \gets g^x \<\< \\
- \< \sendmessageright*{\GG,q,g,X} \< \\
- \<\< y \sample \ZZ_q \\
- \<\< Y \gets g^y \\
- \< \sendmessageleft*{Y} \< \\
- \key_A \gets Y^x \<\< \key_B \gets X^y }
-\end{lstlisting}
-We will discuss protocols in greater detail in Chapter~\ref{chap:protocols}.
-
-\section{Game-based Proofs}
-Cryptocode supports authors in visualizing game-based proofs. It defines an environment
-\lstinline$gameproof$ which allows to wrap a number of game procedures displaying helpful
-information as to what changes from game to game, and to what each step is reduced.
-
-\vspace{2\baselineskip}
-\begin{center}
-\begin{gameproof}
-\gameprocedure[linenumbering,mode=text]{%
- Step 1 \\
- Step 2 \\
- Step 3
- }
-\gameprocedure[mode=text]{%
- Step 1 \\
- \gamechange{Step 2 is different} \\
- Step 3
- }
-\addgamehop{1}{2}{hint={\footnotesize some hint}}
-\end{gameproof}
-\end{center}
-\begin{lstlisting}
-\begin{gameproof}
-\gameprocedure[linenumbering,mode=text]{%
- Step 1 \\
- Step 2 \\
- Step 3
- }
-\gameprocedure[mode=text]{%
- Step 1 \\
- \gamechange{Step 2 is different} \\
- Step 3
- }
-\addgamehop{1}{2}{hint={\footnotesize some hint}}
-\end{gameproof}
-\end{lstlisting}
-Note that we made use of the option \enquote{mode=text} in the above example which tells the underlying pseudocode
-command to not work in math mode but in plain text mode. We'll discuss how to visualize game-based proofs in Chapter~\ref{chap:gbproofs}.
-
-\section{Black-box Reductions}
-Cryptocode provides a strucured syntax to visualize black-box reductions. Basically cryptocode
-provides an environment to draw boxes that may have oracles and that can be communicated with.
-Cryptocode makes heavy use of TIKZ (\url{https://www.ctan.org/pkg/pgf}) for this, which gives you
-quite some control over how things should look like. Additionally, as you can specify node names
-(for example the outer box in the next example is called \enquote{A}) you can easily extend the pictures
-by using plain TIKZ commands.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something} \\
- \text{Step 2}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Adversary,minheight=4cm]
- \end{bbrbox}
-
- \bbrmsgto{top=$m$}
- \bbrmsgfrom{top=$\sigma$}
- \bbrmsgtxt{\pseudocode{%
- \text{more work}
- }}
- \bbrmsgto{top=$m$}
- \bbrmsgfrom{top=$\sigma$}
-
- \bbrqryto{side=$m$}
- \bbrqryfrom{side=$b$}
- \end{bbrenv}
-
- \pseudocode{
- \text{finalize}
- }
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbroracle}{OraA}
- \begin{bbrbox}[name=Oracle 1,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryto{top=$m$}
- \bbroracleqryfrom{top=$b$}
-
- \begin{bbroracle}{OraB}
- \begin{bbrbox}[name=Oracle 2,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryto{top=$m$}
- \bbroracleqryfrom{top=$b$}
-\end{bbrenv}
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something} \\
- \text{Step 2}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Adversary,minheight=4cm]
- \end{bbrbox}
-
- \bbrmsgto{top=$m$}
- \bbrmsgfrom{top=$\sigma$}
- \bbrmsgtxt{\pseudocode{%
- \text{more work}
- }}
- \bbrmsgto{top=$m$}
- \bbrmsgfrom{top=$\sigma$}
-
- \bbrqryto{side=$m$}
- \bbrqryfrom{side=$b$}
- \end{bbrenv}
-
- \pseudocode{
- \text{finalize}
- }
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbroracle}{OraA}
- \begin{bbrbox}[name=Oracle 1,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryto{top=$m$}
- \bbroracleqryfrom{top=$b$}
-
- \begin{bbroracle}{OraB}
- \begin{bbrbox}[name=Oracle 2,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryto{top=$m$}
- \bbroracleqryfrom{top=$b$}
-\end{bbrenv}
-\end{lstlisting}
-We'll discuss the details in Chapter~\ref{chap:bbr}.
-
-\chapter{Cryptographic Notation}
-\label{chap:commands}
-\index{package options}
-In this section we'll discuss the various commands for notation that can be loaded via package options.
-\begin{lstlisting}
-\usepackage[
- n,
- advantage,
- operators,
- sets,
- adversary,
- landau,
- probability,
- notions,
- logic,
- ff,
- mm,
- primitives,
- events,
- complexity,
- asymptotics,
- keys
- ]{cryptocode}
-\end{lstlisting}
-
-\textbf{Remark. } The commands defined so far are far from complete and are currently mostly targeted at what I needed in my
-papers (especially once you get to cryptographic notions and primitives). So please if you feel that something should be added
-drop me an email.
-
-\section{Security Parameter}
-\index{security parameter|see {package options}}
-\index{package options!security parameter}
-In cryptography we make use of a security parameter which is usually written as $1^n$ or $1^\lambda$. The cryptocode
-package, when loading either option \enquote{n} or option \enquote{lambda} will define the commands
-\begin{lstlisting}
- \secpar
- \secparam
-\end{lstlisting}
-The first command provides the \enquote{letter}, i.e., either $n$ or $\lambda$, whereas \lstinline$\secparam$ points
-to $1^\secpar$.
-
-\section{Advantage Terms}
-Load the package option ``advantage'' in order to define the command \lstinline$\advantage$ used to specify advantage terms such as:
-\[
-\advantage{prf}{\adv,\prf} = \negl
-\]
-\begin{lstlisting}
- \advantage{prf}{\adv,\prf} = \negl
-\end{lstlisting}
-Specify an optional third parameter to replace the $(\secpar)$.
-\begin{lstlisting}
- \advantage{prf}{\adv,\prf}[(arg)]
-\end{lstlisting}
-In order to redefine the styles in which superscript and subscript are set redefine
-\begin{lstlisting}
- \renewcommand{\pcadvantagesuperstyle}[1]{\mathrm{\MakeLowercase{#1}}}
- \renewcommand{\pcadvantagesubstyle}[1]{#1}
-\end{lstlisting}
-
-\section{Math Operators}
-\index{operators|see {package options}}
-\index{package options!operators}
-\index{math operators|see {package options}}
-The \enquote{operators} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l p{6cm} l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} & \textbf{Example} \\\hline
-\lstinline$\sample$ & Sampling from a distribution, or running a randomized procedure & $\sample$ & $b \sample \bin$ \\
-\lstinline$\floor{42.5}$ & Rounding down & $\floor{42.5}$ & \\
-\lstinline$\ceil{41.5}$ & Rounding up & $\ceil{41.5}$ & \\
-\lstinline$\Angle{x,y}$ & Vector product & $\Angle{x,y}$ & \\
-\lstinline$\abs{42.9}$ & Absolute number & $\abs{42.9}$ & \\
-\lstinline$\norm{x}$ & Norm & $\norm{x}$ & \\
-\lstinline$\concat$ & Verbose concatenation (I usually prefer simply \lstinline$\|$) & $\concat$ & $x \gets a\concat b$ \\
-\lstinline$\emptystring$ & The empty string & $\emptystring$ & $x \gets \emptystring$
-\end{tabular}
-\end{center}
-
-\section{Adversaries}
-\index{adversary|see {package options}}
-\index{package options!adversary}
-The \enquote{adversary} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\adv$ & Adversary & $\adv$ \\
-\lstinline$\bdv$ & Adversary & $\bdv$ \\
-\lstinline$\cdv$ & Adversary & $\cdv$ \\
-\lstinline$\ddv$ & Adversary & $\ddv$ \\
-\lstinline$\mdv$ & Adversary & $\mdv$ \\
-\lstinline$\pdv$ & Adversary & $\pdv$ \\
-\lstinline$\sdv$ & Adversary & $\sdv$
-\end{tabular}
-\end{center}
-
-The style in which an adversary is rendered is controlled via
-\begin{lstlisting}
-\renewcommand{\pcadvstyle}[1]{\mathcal{#1}}
-\end{lstlisting}
-
-
-\section{Landau}
-\index{Landau|see {package options}}
-\index{package options!Landau}
-The \enquote{landau} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\bigO{n^2}$ & Big O notation & $\bigO{n^2}$ \\
-\lstinline$\smallO{n^2}$ & small o notation & $\smallO{n^2}$ \\
-\lstinline$\bigOmega{n^2}$ & Big Omega notation & $\bigOmega{n^2}$ \\
-\lstinline$\bigsmallO{n^2}$ & Big and small O notation & $\bigsmallO{n^2}$
-\end{tabular}
-\end{center}
-
-
-\section{Probabilities}
-\index{probability|see {package options}}
-\index{package options!probabilities}
-The \enquote{probability} option provides commands for writing probabilities. Use
-\begin{lstlisting}
-\prob{X=x}
-\probsub{x\sample{\bin^n}}{x=5}
-\condprob{X=x}{A=b}
-\condprobsub{x\sample{\bin^n}}{x=5}{A=b}
-\end{lstlisting}
-to write basic probabilities, probabilities with explicit probability spaces and conditional probabilities.
-\begin{align*}
-& \prob{X=x} \\
-& \probsub{x\sample{\bin^n}}{X=x} \\
-& \condprob{X=x}{A=b} \\
-& \condprobsub{x\sample{\bin^n}}{x=5}{A=b}
-\end{align*}
-You can control the probability symbol (Pr) by redefining
-\begin{lstlisting}
-\renewcommand{\probname}{Pr}
-\end{lstlisting}
-
-For expectations you can use
-\begin{lstlisting}
-\expect{X}
-\expsub{x,y\sample\set{1,\ldots,6}}{x+y}
-\condexp{X+Y}{Y>3}
-\condexpsub{x,y\sample\set{1,\ldots,6}}{x+y}{y>3}
-\end{lstlisting}
-yielding
-\begin{align*}
-& \expect{X} \\
-& \expsub{x,y\sample\set{1,\ldots,6}}{x+y} \\
-& \condexp{X+Y}{Y>3} \\
-& \condexpsub{x,y\sample\set{1,\ldots,6}}{x+y}{y>3}
-\end{align*}
-You can control the expactation symbol ($\mathbb{E}$) by redefining
-\begin{lstlisting}
-\renewcommand{\expectationname}{\ensuremath{\mathbb{E}}}
-\end{lstlisting}
-
-The support $\supp{X}$ of a random variable $X$ can be written as
-\begin{lstlisting}
-\supp{X}
-\end{lstlisting}
-where again the name can be controlled via
-\begin{lstlisting}
-\renewcommand{\supportname}{Supp}
-\end{lstlisting}
-
-For denoting entropy and min-entropy use
-\begin{lstlisting}
-\entropy{X}
-\minentropy{X}
-\condentropy{X}{Y=5}
-\condminentropy{X}{Y=5}
-\condavgminentropy(X}{Y=5}
-\end{lstlisting}
-This yields
-\begin{align*}
-& \entropy{X} \\
-& \minentropy{X} \\
-& \condentropy{X}{Y=5} \\
-& \condminentropy{X}{Y=5} \\
-& \condavgminentropy{X}{Y=5}
-\end{align*}
-
-\section{Sets}
-\index{sets|see {package options}}
-\index{package options!sets}
-The \enquote{sets} option provides commands for basic mathematical sets.
-You can write sets and sequences as
-\begin{lstlisting}
-\set{1, \ldots, 10}
-\sequence{1, \ldots, 10}
-\end{lstlisting}
-which is typeset as
-\begin{align*}
-& \set{1, \ldots, 10} \\
-& \sequence{1, \ldots, 10}
-\end{align*}
-
-In addation the following commands are provided
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\bin$ & The set containing 0 and 1 & $\bin$ \\
-\lstinline$\NN$ & Natural numbers & $\NN$ \\
-\lstinline$\ZZ$ & Integers & $\ZZ$ \\
-\lstinline$\QQ$ & Rational numbers & $\QQ$ \\
-\lstinline$\CC$ & Complex numbers & $\CC$ \\
-\lstinline$\RR$ & Reals & $\RR$ \\
-\lstinline$\PP$ & & $\PP$ \\
-\lstinline$\FF$ & & $\FF$ \\
-\end{tabular}
-\end{center}
-
-\section{Crypto Notions}
-\index{notions|see {package options}}
-\index{package options!notions}
-\index{Crypto notions|see {package options}}
-The \enquote{notions} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\indcpa$ & IND-CPA security for encryption schemes & $\indcpa$ \\
-\lstinline$\indcca$ & IND-CCA security for encryption schemes & $\indcca$ \\
-\lstinline$\indccai$ & IND-CCA1 security for encryption schemes & $\indccai$ \\
-\lstinline$\indccaii$ & IND-CCA2 security for encryption schemes & $\indccaii$ \\
-\lstinline$\priv$ & PRIV security for deterministic public-key encryption schemes & $\priv$ \\
-\lstinline$\ind$ & IND security (for deterministic public-key encryption schemes) & $\ind$ \\
-\lstinline$\prvcda$ & PRV-CDA security (for deterministic public-key encryption schemes)& $\prvcda$ \\
-\lstinline$\prvrcda$ & PRV\$-CDA security (for deterministic public-key encryption schemes) & $\prvrcda$ \\
-\lstinline$\kiae$ & Key independent authenticated encryption & $\kiae$ \\
-\lstinline$\kdae$ & Key dependent authenticated encryption & $\kdae$ \\
-\lstinline$\mle$ & Message locked encryption & $\mle$ \\
-\lstinline$\uce$ & Universal computational extractors & $\uce$ \\
-\end{tabular}
-\end{center}
-
-The style in which notions are displayed can be controlled via redefining
-\begin{lstlisting}
-\renewcommand{\pcnotionstyle}[1]{\ensuremath{\mathrm{#1}}}
-\end{lstlisting}
-
-\section{Logic}
-\index{logic|see {package options}}
-\index{package options!logic}
-The \enquote{logic} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\AND$ & Logical AND & $\AND$ \\
-\lstinline$\NAND$ & Logical NAND & $\NAND$ \\
-\lstinline$\OR$ & Logical OR & $\OR$ \\
-\lstinline$\NOR$ & Logical NOR & $\NOR$ \\
-\lstinline$\XOR$ & Logical XOR & $\XOR$ \\
-\lstinline$\XNOR$ & Logical XNOR & $\XNOR$ \\
-\lstinline$\NOT$ & not & $\NOT$ \\
-\lstinline$\xor$ & exclusive or & $\xor$ \\
-\lstinline$\false$ & false & $\false$ \\
-\lstinline$\true$ & true & $\true$
-\end{tabular}
-\end{center}
-
-
-% Function Families
-\section{Function Families}
-\index{ff|see {package options}}
-\index{package options!ff}
-\index{function families|see {package options}}
-The \enquote{ff} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\kgen$ & Key generation & $\kgen$ \\
-\lstinline$\pgen$ & Parameter generation & $\pgen$ \\
-\lstinline$\eval$ & Evaluation & $\eval$ \\
-\lstinline$\invert$ & Inversion & $\invert$ \\
-\lstinline$\il$ & Input length & $\il$ \\
-\lstinline$\ol$ & Output length & $\ol$ \\
-\lstinline$\kl$ & Key length & $\kl$ \\
-\lstinline$\nl$ & Nonce length & $\nl$ \\
-\lstinline$\rl$ & Randomness length & $\rl$
-\end{tabular}
-\end{center}
-
-The style in which these are displayed can be controlled via redefining
-\begin{lstlisting}
-\renewcommand{\pcalgostyle}[1]{\ensuremath{\mathsf{#1}}}
-\end{lstlisting}
-
-
-% Machine Model
-\section{Machine Model}
-\index{machine model|see {package options}}
-\index{package options!mm}
-\index{mm|see {package options}}
-The \enquote{mm} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\CRKT$ & A circuit & $\CRKT$ \\
-\lstinline$\TM$ & A Turing machine & $\TM$ \\
-\lstinline$\PROG$ & A program & $\PROG$ \\
-\lstinline$\uTM$ & A universal Turing machine & $\uTM$ \\
-\lstinline$\uC$ & A universal Circuit & $\uC$ \\
-\lstinline$\uP$ & A universal Program & $\uP$ \\
-\lstinline$\tmtime$ & Time (of a TM) & $\tmtime$ \\
-\lstinline$\ppt$ & Probabilistic polynomial time & $\ppt$
-\end{tabular}
-\end{center}
-
-The style in which these are displayed can be controlled via redefining
-\begin{lstlisting}
-\renewcommand{\pcmachinemodelstyle}[1]{\ensuremath{\mathsf{#1}}}
-\end{lstlisting}
-
-\section{Crypto Primitives}
-\index{primitives|see {package options}}
-\index{package options!primitives}
-\index{Crypto primitives|see {package options}}
-The \enquote{primitives} option provides the following list of commands:
-
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\prover$ & Proover & $\prover$ \\
-\lstinline$\verifier$ & Verifier & $\verifier$ \\
-\lstinline$\nizk$ & Non interactie zero knowledge & $\nizk$ \\
-\lstinline$\hash$ & A hash function & $\hash$ \\
-\lstinline$\gash$ & A hash function& $\gash$ \\
-\lstinline$\fash$ & A hash function & $\fash$ \\
-\lstinline$\enc$ & Encryption & $\enc$ \\
-\lstinline$\dec$ & Decryption & $\dec$ \\
-\lstinline$\sig$ & Signing & $\sig$ \\
-\lstinline$\verify$ & Verifying & $\verify$ \\
-\lstinline$\obf$ & Obfuscation & $\obf$ \\
-\lstinline$\iO$ & Indistinguishability obfuscation & $\iO$ \\
-\lstinline$\diO$ & Differing inputs obfuscation & $\diO$ \\
-\lstinline$\mac$ & Message authentication & $\mac$ \\
-\lstinline$\puncture$ & Puncturing & $\puncture$ \\
-\lstinline$\source$ & A source & $\source$ \\
-\lstinline$\predictor$ & A predictor & $\predictor$ \\
-\lstinline$\sam$ & A sampler & $\sam$ \\
-\lstinline$\distinguisher$ & A distinguisher & $\distinguisher$ \\
-\lstinline$\dist$ & A distinguisher& $\dist$ \\
-\lstinline$\simulator$ & A simulator & $\simulator$ \\
-\lstinline$\ext$ & An extractor & $\ext$
-\end{tabular}
-\end{center}
-
-The style in which these are displayed can be controlled via redefining
-\begin{lstlisting}
-\renewcommand{\pcalgostyle}[1]{\ensuremath{\mathsf{#1}}}
-\end{lstlisting}
-
-\section{Events}
-\index{events|see {package options}}
-\index{package options!events}
-The \enquote{events} option provides the following list of commands.
-
-To classify an event use
-\begin{lstlisting}
-\event{Event}
-\nevent{Event}
-\end{lstlisting}
-where the second is meant as the negation. These are typset as
-\begin{align*}
-&\event{Event}\\
-&\nevent{Event}
-\end{align*}
-
-For bad events, use \lstinline$\bad$ ($\bad$).
-
-\section{Complexity}
-\index{complexity|see {package options}}
-\index{package options!complexity}
-The \enquote{complexity} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Result} \\\hline
-\lstinline$\npol$ & $\npol$ \\
-\lstinline$\conpol$ & $\conpol$ \\
-\lstinline$\pol$ & $\pol$ \\
-\lstinline$\bpp$ & $\bpp$ \\
-\lstinline$\ppoly$ & $\ppoly$ \\
-\lstinline$\NC{1}$ & $\NC1$ \\
-\lstinline$\AC{1}$ & $\AC1$ \\
-\lstinline$\TC{1}$ & $\TC1$ \\
-\lstinline$\AM$ & $\AM$ \\
-\lstinline$\coAM$ & $\coAM$
-\end{tabular}
-\end{center}
-
-The style in which these are displayed can be controlled via redefining
-\begin{lstlisting}
-\renewcommand{\pccomplexitystyle}[1]{\ensuremath{\mathsf{#1}}}
-\end{lstlisting}
-
-\section{Asymptotics}
-\index{asymptotics|see {package options}}
-\index{package options!asymptotics}
-The \enquote{asymptotics} option provides the following list of commands:
-
-\begin{center}
-\begin{tabular}{l l p{7.5cm}}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\negl$ & A negligible function & $\negl$ (takes an optional argument \lstinline$\negl[a]$ ($\negl[a]$). Write \lstinline$\negl[]$ for $\negl[]$.) \\
-\lstinline$\poly$ & A polynomial & $\poly$ (takes an optional argument \lstinline$\poly[a]$ ($\poly[a]$). Write \lstinline$\poly[]$ for $\poly[]$.) \\
-\lstinline$\pp$ & some polynomial $\pp$ & $\pp$ \\
-\lstinline$\qq$ & some polynomial $\qq$ & $\qq$ \\
-\end{tabular}
-\end{center}
-
-The style in which these are displayed can be controlled via redefining
-\begin{lstlisting}
-\renewcommand{\pcpolynomialstyle}[1]{\ensuremath{\mathrm{#1}}}
-\end{lstlisting}
-
-\section{Keys}
-\index{keys|see {package options}}
-\index{package options!keys}
-The \enquote{keys} option provides the following list of commands:
-
-
-\begin{center}
-\begin{tabular}{l l l}
-\textbf{Command} & \textbf{Description} & \textbf{Result} \\\hline
-\lstinline$\pk$ &public key & $\pk$ \\
-\lstinline$\vk$ & verification key& $\vk$ \\
-\lstinline$\sk$ & secret key& $\sk$ \\
-\lstinline$\key$ & a plain key& $\key$ \\
-\lstinline$\hk$ & hash key& $\hk$ \\
-\lstinline$\gk$ &gash key & $\gk$ \\
-\lstinline$\fk$ & function key & $\fk$
-\end{tabular}
-\end{center}
-
-The style in which these are displayed can be controlled via redefining
-\begin{lstlisting}
-\renewcommand{\pckeystyle}[1]{\ensuremath{\mathsf{#1}}}
-\end{lstlisting}
-
-
-\chapter{Pseudocode}
-\label{chap:pseudocode}
-
-In this chapter we discuss how to write pseudocode with the cryptocode library.
-
-\section{Basics}
-\index{\textbackslash pseudocode}
-
-The cryptocode package provides the command \emph{pseudocode} for typesetting algorithms.
-Consider the following definition of an IND-CPA game
-\begin{center}
-\fbox{%
-\pseudocode{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam) \\
- (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-}
-\end{center}
-which is generated as
-\begin{lstlisting}
-\pseudocode{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen (\secparam) \\
- (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-\end{lstlisting}
-As you can see the pseudocode command provides a math based environment where you can simply start typing your pseudocode
-separating lines by \lstinline$\\$.
-
-
-\paragraph{Boxed appearance}
-Although most examples here appear centered and boxed this is not directly part of the pseudocode package but due to the examples being
-typeset as
-\begin{lstlisting}
-\begin{center}
-\fbox{%
-Code
-}
-\end{center}
-\end{lstlisting}
-
-
-\subsection{Customizing Pseudocode}
-\index{lnstart}
-\index{head}
-\index{lnstartright}
-\index{linenumbering}
-\index{syntaxhighlight}
-\index{keywords}
-\index{keywordsindent}
-\index{codesize}
-\index{keywordsunindent}
-\index{keywordsuninindent}
-\index{addkeywords}
-\index{altkeywords}
-\index{mode}
-\index{space}
-\index{xshift}
-\index{colsep}
-\index{addtolength}
-\index{nodraft}
-\index{yshift}
-\index{bodylinesep}
-\index{headlinesep}
-\index{jot}
-\index{beginline}
-\index{endline}
-
-Besides the mandatory argument the \lstinline{\pseudocode} command can take an optional argument which consists of a list of key=value pairs
-separated by commas (,).
-\begin{lstlisting}
-\pseudocode[options]{body}
-\end{lstlisting}
-The following keys are available:
-\begin{description}
-\item[head]
-A header for the code
-\item[width]
-An exact width. If no width is specified, cryptocode tries to automatically compute the correct width.
-\item[lnstart]
-The starting line number when using line numbering.
-\item[lnstartright]
-The starting line number for right aligned line numberswhen using line numbering.
-\item[linenumbering]
-Enables line numbering.
-\item[syntaxhighlight]
-When set to \enquote{auto} cryptocode will attempt to automatically hightlight keywords such as \enquote{for}, \enquote{foreach}
-and \enquote{return}
-\item[keywords]
-Provide a comma separated list of keywords for automatic syntax highlighting. To customize the behavior of automatic spacing
-you can provide keywords as
-\begin{description}
-\item[keywordsindent]
-After seeing this keyword all following lines will be indented one extra level.
-\item[keywordsunindent]
-After seeing this keyword the current and all following lines will be unindented one extra level.
-\item[keywordsuninindent]
-After seeing this keyword the current line will be unindented one level.
-\end{description}
-\item[addkeywords]
-Provide additional keywords for automatic syntax highlighting.
-\item[altkeywords]
-Provide a second list of keywords for automatic syntax highlighting that are highlighted differently.
-\item[mode]
-When set to text pseudocode will not start in math mode but in text mode.
-\item[space]
-Allows you to enable automatic spacing mode. If set to \enquote{keep} the spaces in the input are preserved.
-If set to \enquote{auto} it will try to detect spacing according to keywords such as \enquote{if} and \enquote{fi}.
-\item[codesize]
-Allows to specify the fontsize for the pseudocode. Set to \lstinline$\scriptsize$ for a smaller size.
-
-\item[colspace]
-Allows to insert spacing between columns. In particular this allows to also overlap columns by inserting negative space.
-
-\item[jot]
-Allows to specify extra space between each line. Use \lstinline$jot=1mm$.
-
-\item[beginline]
-Allows to specify a macro that is placed at the beginning of each line.
-
-\item[endline]
-Allows to specify a macro that is placed at the end of each line.
-
-\item[xshift]
-Allows horizontal shifting
-\item[yshift]
-Allows horizontal shifting
-
-\item[headlinesep]
-Specifies the distance between header and the line.
-\item[bodylinesep]
-Specifies the distance between body and the line.
-\item[colsep]
-Defines the space between columns.
-\item[addtolength]
-Is added to the automatically computed width of the pseudocode (which does not take colsep into account).
-
-\item[valign]
-Controls the vertical alignment of the pseudocode. Pseudocode is wrapped in a minipage environment and valign value is passed as orientation for the minipage. By default valign is set to \enquote{t}.
-
-\item[nodraft]
-Forces syntax highlighting also in draft mode.
-\end{description}
-The following code
-\begin{lstlisting}
-\pseudocode[linenumbering,syntaxhighlight=auto,head=Header]{ return null }
-\end{lstlisting}
-creates
-\begin{center}
-\fbox{\pseudocode[linenumbering,syntaxhighlight=auto,head=Header]{ return null }}
-\end{center}
-
-\subsection{Customized Pseudocode Commands}
-\index{\textbackslash procedure}
-\index{\textbackslash createpseudocodecommand}
-\index{\textbackslash createprocedurecommand}
-
-Besides the \lstinline{\pseudocode} command the command \lstinline{\procedure}
-provides easy access to generate code with a header. It takes the following form
-\begin{lstlisting}
-\procedure[options]{Header}{Body}
-\end{lstlisting}
-
-\subsubsection{Examples}
-\begin{center}
-\fbox{%
-\procedure{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen(\secparam) \\
- (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-}
-\end{center}
-which is generated as
-\begin{lstlisting}
-\procedure{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen(\secparam) \\
- (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-\end{lstlisting}
-
-You can define customized pseudocode commands which either take one optional argument and two mandatory arguments (as the procedure command)
-or one optional and one mandatory argument (as the pseudocode command). The following
-\begin{lstlisting}
-\createprocedurecommand{mypseudocode}{}{}{linenumbering}
-\createpseudocodecommand{myheadlesscmd}{}{}{linenumbering}
-\end{lstlisting}
-creates the commands \lstinline$\mypseudocode$ and \lstinline$\myheadlesscmd$ with line numbering always enabled. The first command
-has an identical interface as the \lstinline$\pseudocode$ command, the second has an interface as the \lstinline$\procedure$ command.
-The second and third argument that we kept empty when generating the commands allows us to specify commands that are executed at the
-very beginning when the command is called (argument 2) and a prefix for the header.
-
-
-\section{Indentation}
-\index{indentation}
-\index{\textbackslash pcind}
-\index{\textbackslash t}
-
-In order to indent code use \lstinline$\pcind$ or short \lstinline$\t$. You can also usecustomized spacing such as \lstinline$\quad$ or \lstinline$\hspace$
-when using the pseudocode command in math mode.
-\begin{center}
-\fbox{%
-\pseudocode{%
- \pcfor i = 1..10 \pcdo \\
- \pcind T[i] \sample \bin^n \\
- \pcfor i = 1..10 \pcdo \\
- \t T[i] \sample \bin^n }
-}
-\end{center}
-which is generated as
-\begin{lstlisting}
-\pseudocode{%
- \pcfor i = 1..10 \pcdo \\
- \pcind T[i] \sample \bin^n \\
- \pcfor i = 1..10 \pcdo \\
- \t T[i] \sample \bin^n }
-\end{lstlisting}
-You can specify multiple levels via the optional first argument
-\begin{lstlisting}
-\pcind[level]
-\end{lstlisting}
-\begin{center}
-\fbox{%
-\pseudocode{%
- \pcfor i = 1..10 \pcdo \\
- \pcind T[i] \sample \bin^n \\
- \pcind\pcind T[i] \sample \bin^n \\
- \pcind[3] T[i] \sample \bin^n \\
- \pcind[4] T[i] \sample \bin^n \\
- \pcind[5] T[i] \sample \bin^n }
-}
-\end{center}
-\begin{lstlisting}
-\pseudocode{%
- \pcfor i = 1..10 \pcdo \\
- \pcind T[i] \sample \bin^n \\
- \pcind\pcind T[i] \sample \bin^n \\
- \pcind[3] T[i] \sample \bin^n \\
- \pcind[4] T[i] \sample \bin^n \\
- \pcind[5] T[i] \sample \bin^n }
-\end{lstlisting}
-
-\index{\textbackslash pcindentname}
-You can customize the indentation shortcut by redefining
-\begin{lstlisting}
-\renewcommand{\pcindentname}{t}
-\end{lstlisting}
-
-\subsubsection{Automatic Indentation}
-The pseudocode command comes with an option \enquote{space=auto} which tries to detect the correct indentation from the use of
-keywords. When it sees one of the following keywords
-\begin{lstlisting}
-\pcif, \pcfor, \pcwhile, \pcrepeat, \pcforeach
-\end{lstlisting}
-it will increase the indentation starting from the next line. It will again remove the indentation on seeing
-\begin{lstlisting}
-\pcfi, \pcendif, \pcendfor, \pcendwhile, \pcuntil, \pcendforeach
-\end{lstlisting}
-Additionally, on seeing
-\begin{lstlisting}
-\pcelse, \pcelseif
-\end{lstlisting}
-it will remove the indentation for that particular line. Thus the following
-\begin{center}
-\fbox{\pseudocode[space=auto]{%
-\pcfor a \in [10] \pcdo \\
- \pcfor a \in [10] \pcdo \\
- \pcfor a \in [10] \pcdo \\
- \pcif a = b \pcthen \\
- \text{some operation} \\
- \pcelseif a = c \pcthen \\
- \text{some operation} \\
- \pcelse \\
- \text{some default operation} \\
- \pcfi \\
- \pcendfor \\
- \pcendfor \\
-\pcendfor \\
-\pcreturn a}}
-\end{center}
-can be obtained by:
-\begin{lstlisting}
-\pseudocode[space=auto]{%
-\pcfor a \in [10] \pcdo \\
- \pcfor a \in [10] \pcdo \\
- \pcfor a \in [10] \pcdo \\
- \pcif a = b \pcthen \\
- \text{some operation} \\
- \pcelseif a = c \pcthen \\
- \text{some operation} \\
- \pcelse \\
- \text{some default operation} \\
- \pcfi \\
- \pcendfor \\
- \pcendfor \\
-\pcendfor \\
-\pcreturn a}
-\end{lstlisting}
-Note that the manual indentation in the above example is not necessary for the outcome. Further note that the same
-works when using automatic syntax highlighting (see Section~\ref{sec:syntaxhighlight}).
-
-\subsubsection{Keep Input Indentation}
-\label{sec:keepindent}
-The pseudocode package comes with an experimental feature that preserves the spacing in the input. This can be enabled with
-the option \enquote{space=keep}. Thus the above can also be written as
-\begin{center}
-\pseudocode[space=keep]{%
-\pcfor i = 1..10 \pcdo \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n }
-\end{center}
-\begin{lstlisting}
-\pseudocode[space=keep]{%
-\pcfor i = 1..10 \pcdo \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n \\
- T[i] \sample \bin^n }
-\end{lstlisting}
-Note that automatic spacing only works when the \lstinline$\pseudocode$ command is not wrapped within another command.
-Thus in order to get a frame box \lstinline$\fbox{\pseudocode[space=keep]{code}}$ will not work but you would need to use
-an environment such as one offered by the \emph{mdframed} package ((\url{https://www.ctan.org/pkg/mdframed}). Also see
-Section~\ref{sec:keepindent-problem}.
-
-
-\section{Textmode}
-\index{text mode}
-
-By default pseudocode enables \LaTeX' math mode. You can change this behavior and tell the pseudocode command to interpret the content
-in text mode by setting the option \enquote{mode=text}.
-\begin{center}
-\fbox{\pseudocode[mode=text]{%
-This is \\
-\t simply text}}
-\end{center}
-\begin{lstlisting}
-\pseudocode[mode=text]{%
-This is \\
-\t simply text}
-\end{lstlisting}
-
-\section{Syntax Highlighting}
-\label{sec:syntaxhighlight}
-
-\index{\textbackslash pcabort}
-\index{\textbackslash pcfail}
-\index{\textbackslash pccontinue}
-\index{\textbackslash pccomment}
-\index{\textbackslash pcdo}
-\index{\textbackslash pcdone}
-\index{\textbackslash pcelse}
-\index{\textbackslash pcelseif}
-\index{\textbackslash pcfi}
-\index{\textbackslash pcendif}
-\index{\textbackslash pcforeach}
-\index{\textbackslash pcendforeach}
-\index{\textbackslash pcglobvar}
-\index{\textbackslash pcif}
-\index{\textbackslash pcin}
-\index{\textbackslash pcnew}
-\index{\textbackslash pcnull}
-\index{\textbackslash pcparse}
-\index{\textbackslash pcrepeat}
-\index{\textbackslash pcuntil}
-\index{\textbackslash pcreturn}
-\index{\textbackslash pcthen}
-\index{\textbackslash pctrue}
-\index{\textbackslash pcwhile}
-\index{\textbackslash pcendwhile}
-
-
-In the above examples we have used commands \lstinline$\pcreturn$ and \lstinline$\pcfor$ to highlight certain keywords.
-Besides the \emph{pcreturn}, \emph{pcfor} and \emph{pcdo} (where the pc stands for pseudocode) that were used in the above
-examples the package defines the following set of constants:
-
-\begin{center}
-\begin{tabular}{lll}
- \textbf{name} & \textbf{usage} & \textbf{outcome} \\
- pcabort & \lstinline$\pcabort$ & \pcabort\\
- pccontinue & \lstinline$\pccontinue$ & \pccontinue \\
- pccomment & \lstinline$\pccomment{comment}$ & \pccomment{comment} \\
- pcdo & \lstinline$\pcdo$ & \pcdo \\
- pcdone & \lstinline$\pcdone$ & \pcdone \\
- pcfail & \lstinline$\pcfail$ & \pcfail \\
- pcfalse & \lstinline$\pcfalse$ & \pcfalse \\
- pcif & \lstinline$\pcif$ & \pcif \\
- pcfi & \lstinline$\pcfi$ & \pcfi \\
- pcendif & \lstinline$\pcendif$ & \pcendif \\
- pcelse & \lstinline$\pcelse$ & \pcelse \\
- pcelseif & \lstinline$\pcelseif$ & \pcelseif \\
- pcfor & \lstinline$\pcfor$ & \pcfor \\
- pcendfor & \lstinline$\pcendfor$ & \pcendfor \\
- pcforeach & \lstinline$\pcforeach$ & \pcforeach \\
- pcendforeach & \lstinline$\pcendforeach$ & \pcendforeach \\
- pcglobvar & \lstinline$\pcglobvar$ & \pcglobvar \\
- pcin & \lstinline$\pcin$ & \pcin \\
- pcnew & \lstinline$\pcnew$ & \pcnew \\
- pcnull & \lstinline$\pcnull$ & \pcnull \\
- pcparse & \lstinline$\pcparse$ & \pcparse \\
- pcrepeat & \lstinline$\pcrepeat{10}$ & \pcrepeat{10} \\
- pcreturn & \lstinline$\pcreturn$ & \pcreturn \\
- pcuntil & \lstinline$\pcuntil$ & \pcuntil \\
- pcthen & \lstinline$\pcthen$ & \pcthen \\
- pctrue & \lstinline$\pctrue$ & \pctrue \\
- pcwhile & \lstinline$\pcwhile$ & \pcwhile \\
- pcendwhile & \lstinline$\pcendwhile$ & \pcendwhile \\
-\end{tabular}
-\end{center}
-Note that \lstinline{\pcdo}, \lstinline{\pcin} and \lstinline{\pcthen} have a leading space. This is due to their usual usage scenarios
-such as
-\begin{center}
-\pseudocode{\pcfor i \pcin \{1,\ldots,10\}}
-\end{center}
-Furthermore all constants have a trailing space. This can be removed by adding the optional parameter [] such as
-\begin{center}
-\pseudocode{\pcfor i \pcin[] \{1,\ldots,10\}}
-\end{center}
-\begin{lstlisting}
-\pseudocode{\pcfor i \pcin[] \{1,\ldots,10\}}
-\end{lstlisting}
-
-\index{highlight keywords}
-\index{emphasize|see highlight keywords}
-\index{\textbackslash highlightkeyword}
-In order to change the font you can overwrite the command \lstinline{\highlightkeyword} which is defined as
-\begin{lstlisting}
-\newcommand{\highlightkeyword}[2][\ ]{\ensuremath{\mathbf{#2}}#1}
-\end{lstlisting}
-
-\subsubsection{Automatic Syntax Highlighting}
-The pseudocode command comes with an experimental feature to automatically highlight keywords. This can be activated via
-the option \enquote{syntaxhighlight=auto}. The preset list of keywords it looks for are
-\begin{lstlisting}
-for ,foreach ,return ,{ do }, in ,new ,if ,null ,null,true ,true,until ,{ to },false ,false,{ then },repeat ,else ,done ,done,fi
-\end{lstlisting}
-Note that the keywords are matched with spaces and note the grouping for trailing spaces. That is, the \enquote{ do } keyword won't match within the string \enquote{don't}.
-Via the option \enquote{keywords} you can provide a custom list of keywords.
-Thus the following bubblesort variant (taken from \url{http://en.wikipedia.org/wiki/Bubble_sort})
-\begin{center}
-\fbox{\procedure[syntaxhighlight=auto]{Bubblesort(A : list of items)}{
- n \gets \mathsf{length}(A) \\
- repeat \\
- \t s \gets false \\
- \t for i = 1 to n-1 do \\
- \t\t \pccomment{if this pair is out of order} \\
- \t\t if A[i-1] > A[i] then \\
- \t\t\t \pccomment{swap them and remember something changed} \\
- \t\t\t \mathsf{swap}( A[i-1], A[i] ) \\
- \t\t\t s \gets true \\
- until \neg s }
-}
-\end{center}
-can be typeset as
-\begin{lstlisting}
-\procedure[syntaxhighlight=auto]{Bubblesort(A : list of items)}{
- n \gets \mathsf{length}(A) \\
- repeat \\
- \t s \gets false \\
- \t for i = 1 to n-1 do \\
- \t\t \pccomment{if this pair is out of order} \\
- \t\t if A[i-1] > A[i] then \\
- \t\t\t \pccomment{swap them and remember something changed} \\
- \t\t\t \mathsf{swap}( A[i-1], A[i] ) \\
- \t\t\t s \gets true \\
- until \neg s }
-\end{lstlisting}
-
-\index{addkeywords}
-You can also define additional keywords using the \enquote{addkeywords} option. This would allow us to specify \enquote{length} and \enquote{swap} in the above example. Combined with automatic spacing we could thus get
-\begin{center}
-\procedure[space=keep,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
-n \gets length(A) \\
-repeat \\
- s \gets false \\
- for i=1 to n-1 do \\
- \pccomment{if this pair is out of order} \\
- if A[i-1]>A[i] then \\
- \pccomment{swap them and remember something changed} \\
- swap(A[i-1], A[i]) \\
- s \gets true \\
-until \neg{}s }
-\end{center}
-Simply by writing (note the \lstinline$\neg{}$ in order to not have a space before $s$):
-\begin{lstlisting}
-\procedure[space=keep,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
-n \gets length(A) \\
-repeat \\
- s \gets false \\
- for i=1 to n-1 do \\
- \pccomment{if this pair is out of order} \\
- if A[i-1]>A[i] then \\
- \pccomment{swap them and remember something changed} \\
- swap(A[i-1], A[i]) \\
- s \gets true \\
-until \neg{}s }
-\end{lstlisting}
-Also note that a simple \lstinline$\fbox$ around the above \lstinline$\procedure$ command has the effect that the automatic spacing fails.
-For this also see Section~\ref{sec:keepindent-problem}. As an alternative we could use automatic spacing and insert \enquote{group end}
-keywords such as \enquote{fi}:
-\begin{center}
-\fbox{\procedure[space=auto,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
-n \gets length(A) \\
-repeat \\
- s \gets false \\
- for i=1 to n-1 do \\
- \pccomment{assuming this pair is out of order} \\
- if A[i-1]>A[i] then \\
- \pccomment{swap them and remember something changed} \\
- swap(A[i-1], A[i]) \\
- s \gets true \\
- endif \\
- endfor \\
-until \neg s }}
-\end{center}
-The last example is generated as (note that here fbox is fine.)
-\begin{lstlisting}
-\fbox{\procedure[space=auto,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
-n \gets length(A) \\
-repeat \\
- s \gets false \\
- for i=1 to n-1 do \\
- \pccomment{assuming this pair is out of order} \\
- if A[i-1]>A[i] then \\
- \pccomment{swap them and remember something changed} \\
- swap(A[i-1], A[i]) \\
- s \gets true \\
- endif \\
- endfor \\
-until \neg s }}
-\end{lstlisting}
-
-\subsection{Alternative Keywords}
-\index{altkeywords}
-There is a second keyword list that you can add keywords to which are highlighted not via \lstinline$\highlightkeyword$ but via \lstinline$\highlightaltkeyword$
-where alt stands for alternate. This allows you to have two different keyword styles which are by default defined as
-\begin{lstlisting}
-\newcommand{\highlightkeyword}[2][\ ]{\ensuremath{\mathbf{#2}}#1}
-\newcommand{\highlightaltkeyword}[1]{\ensuremath{\mathsf{#1}}}
-\end{lstlisting}
-This allows you to rewrite the above example and highlight the different nature of swap and length.
-\begin{center}
-\fbox{\procedure[space=auto,syntaxhighlight=auto,altkeywords={swap,length}]{Bubblesort(A : list of items)}{
-n \gets length(A) \\
-repeat \\
- s \gets false \\
- for i=1 to n-1 do \\
- \pccomment{assuming this pair is out of order} \\
- if A[i-1]>A[i] then \\
- \pccomment{swap them and remember something changed} \\
- swap(A[i-1], A[i]) \\
- s \gets true \\
- endif \\
- endfor \\
-until \neg s }}
-\end{center}
-\begin{lstlisting}
-\procedure[space=auto,syntaxhighlight=auto,addkeywords={swap,length}]{Bubblesort(A : list of items)}{
-n \gets length(A) \\
-repeat \\
- s \gets false \\
- for i=1 to n-1 do \\
- \pccomment{assuming this pair is out of order} \\
- if A[i-1]>A[i] then \\
- \pccomment{swap them and remember something changed} \\
- swap(A[i-1], A[i]) \\
- s \gets true \\
- endif \\
- endfor \\
-until \neg s }
-\end{lstlisting}
-
-\subsection{Draft Mode}
-\index{nodraft}
-\index{performance}
-\index{draft mode}
-Automatic syntax highlighting is a somewhat expensive operation as it requires several rounds of regular expression matching.
-In order to speed up compilation the pseudocode command will not attempt automatic highlighting when the document is in draft mode.
-When in draft mode and you want to force a specific instance of \lstinline$\pseudocode$ to render the code with automatic syntax
-highlighting you can use the option \lstinline$nodraft$.
-
-
-\section{Line Numbering}
-\index{line numbering}
-\index{\textbackslash pcln}
-\index{\textbackslash pclnr}
-\index{\textbackslash pcrln}
-The pseudocode command allows to insert line numbers into pseudocode. You can either manually control line numbering or simply turn on the option
-\enquote{linenumbering}.
-\begin{center}
-\fbox{%
-\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen\secparam) \\
- \label{tmp:line:label} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-}
-\end{center}
-is generated by
-\begin{lstlisting}
-\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen\secparam) \\
- \label{tmp:line:label} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-\end{lstlisting}
-Note how you can use labels such as \lstinline$\label{tmp:line:label}$ which now points to \ref{tmp:line:label}.
-
-\subsection{Manually Inserting Line Numbers}
-In order to manually insert line numbers use the command \lstinline$\pcln$.
-\begin{center}
-\fbox{%
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen\secparam) \\
- \pcln\label{tmp:line:label2} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-}
-\end{center}
-is generated by
-\begin{lstlisting}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen\secparam) \\
- \pcln\label{tmp:line:label2} (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-\end{lstlisting}
-Note that the label \emph{tmp:line:label2} now points to line number \ref{tmp:line:label2}.
-
-
-
-\subsection{Start Values}
-You can specify the start value (-1) of the counter by setting the option \enquote{lnstart}.
-\begin{lstlisting}
-\procedure[lnstart=10,linenumbering]{Header}{Body}
-\end{lstlisting}
-\begin{center}
-\fbox{%
-\procedure[lnstart=10,linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen\secparam) \\
- (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-}
-\end{center}
-
-\subsection{Separators}
-\index{\textbackslash pclnseparator}
-The commands \lstinline$\pclnseparator$ defines the separator between the pseudocode and the line numbering. By
-default the left separator is set to (:) colon. Also see Section~\ref{sec:protocol:separator}.
-
-
-\section{Subprocedures}
-\index{subprocedure}
-The pseudocode package allows the typesetting of sub procedures such as
-
-\begin{center}
-\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen(\secparam) \\
- (m_0,m_1) \sample \begin{subprocedure}%
- \dbox{\procedure{$\adv(\secparam, \pk, c)$}{%
- \text{Step 1} \\
- \text{Step 2} \\
- \pcreturn m_0, m_1 }}
- \end{subprocedure} \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
- \end{center}
-
-To create a subprocedure use the \emph{subprocedure} environment. The above example is generated via
- \begin{lstlisting}
-\procedure[linenumbering]{$\indcpa_\enc^\adv$}{%
- b \sample \bin \\
- (\pk,\sk) \sample \kgen(\secparam) \\
- (m_0,m_1) \sample \begin{subprocedure}%
- \dbox{\procedure{$\adv(\secparam, \pk, c)$}{%
- \text{Step 1} \\
- \text{Step 2} \\
- \pcreturn m_0, m_1 }}
- \end{subprocedure} \\
- c \sample \enc(\pk,m_b) \\
- b' \sample \adv(\secparam, \pk, c) \\
- \pcreturn b = b' }
-\end{lstlisting}
-Here the dbox command (from the dashbox package) is used to generate a dashed box around the sub procedure.
-
-\subsection{Numbering in Subprocedures}
-Subprocedures as normal pseudocode allow you to create line numbers. By default the line numbering starts with 1 in a subprocedure while
-ensuring that the outer numbering remains intact. Also note that the linenumbering on the outer procedure in the above example is inherited
-by the subprocedure. For more control, either use manual numbering or set the option \enquote{linenumbering=off} on the subprocedure.
-
-\begin{center}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \begin{subprocedure}%
- \dbox{\procedure{$\adv(\secparam, \pk, c)$}{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2} \\
- \pcln \pcreturn m_0, m_1 }}
- \end{subprocedure} \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
- \end{center}
- \begin{lstlisting}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \begin{subprocedure}%
- \dbox{\procedure{$\adv(\secparam, \pk, c)$}{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2} \\
- \pcln \pcreturn m_0, m_1 }}
- \end{subprocedure} \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-\end{lstlisting}
-
-
-\section{Stacking Procedures}
-You can stack procedures horizontally or vertically using the environments \enquote{pchstack} and \enquote{pcvstack}.
-\begin{lstlisting}
-\begin{pchstack}[center] body \end{pchstack}
-\begin{pcvstack}[center] body \end{pcvstack}
-\end{lstlisting}
-
-The following example displays two procedures next to one another. As a spacing between two horizontally outlined procedures
-use \lstinline{\pchspace} which takes an optional length as a parameter.
-
-\begin{pchstack}[center]
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\pchspace
-
- \procedure{Oracle $O$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-\end{pchstack}
-
-\begin{lstlisting}
-\begin{pchstack}[center]
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\pchspace
-
- \procedure{Oracle $O$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-\end{pchstack}
-\end{lstlisting}
-
-
-Similarly you can stack two procedures vertically using the \enquote{pcvstack} environment. As a spacing between two vertically stacked procedures
-use \lstinline{\pcvspace} which takes an optional length as a parameter.
-
-
-\begin{pcvstack}[center]
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\pcvspace
-
- \procedure{Oracle $O$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-\end{pcvstack}
-
-
-\begin{lstlisting}
-\begin{pcvstack}[center]
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\pcvspace
-
- \procedure{Oracle $O$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-\end{pcvstack}
-\end{lstlisting}
-
-
-Horizontal and vertical stacking can be combined
-\begin{pchstack}[center]
-
-\begin{pcvstack}%
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^{O,H_1,H_2}(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\pcvspace
-
-\begin{pchstack}
- \procedure{Oracle $O$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-
- \procedure{Oracle $H_1$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-
- \procedure{Oracle $H_2$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-\end{pchstack}
-\end{pcvstack}
-
-\pchspace
-
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\end{pchstack}
-
-
-\begin{lstlisting}
-\begin{pchstack}[center]
-\begin{pcvstack}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^{O,H_1,H_2}(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\pcvspace
-
-\begin{pchstack}
- \procedure{Oracle $O$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-
- \procedure{Oracle $H_1$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-
- \procedure{Oracle $H_2$}{%
- \pcln \text{line 1} \\
- \pcln \text{line 2}
-}
-\end{pchstack}
-\end{pcvstack}
-
-\pchspace
-
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-
-\end{pchstack}
-\end{lstlisting}
-
-\section{Divisions and Linebreaks}
-\index{linebreaks}
-\index{\textbackslash hline}
-Within the pseudocode command you generate linebreaks as \lstinline$\\$. In order to specify the linewidth you can add an optional argument
-\begin{lstlisting}
-\\[height]
-\end{lstlisting}
-Furthermore, you can add, for example a horizontal line by using the second optional argument and write
-\begin{lstlisting}
-\\[][\hline]
-\end{lstlisting}
-
-\begin{center}
-\fbox{
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\[2\baselineskip][\hline\hline]
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-}
-\end{center}
-
-\begin{lstlisting}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\[2\baselineskip][\hline\hline]
- \pcln (\pk,\sk) \sample \kgen(\secparam) \\
- \pcln (m_0,m_1) \sample \adv^O(\secparam, \pk) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c) \\
- \pcln \pcreturn b = b' }
-\end{lstlisting}
-
-\section{Matrices and Math Environments within pseudocode}
-
-In order to work its magic, cryptocode (in particular within the \lstinline{\pseudocode} command) mingles with a few low level commands such as
-\lstinline{\\} or \lstinline{\halign}. The effect of this is, that when you use certain math environments, for example, to create matrices, within pseudocode
-the result may be unexpected. Consider the following example
-
-\begin{lstlisting}
-\pseudocode{
-\text{compute } P = \begin{pmatrix}
- A \\ B + C
-\end{pmatrix}
-}
-\end{lstlisting}
-
-which, somewhat unexpectedly, yields
-
-\begin{center}
-\fbox{
-\pseudocode{
-\text{compute } P = \begin{pmatrix}
- A \\ B + C
-\end{pmatrix}
-}
-}
-\end{center}
-
-That is, the alignment is somewhat off. In order, to allow for the \emph{pmatrix} environment to properly work without interference from \lstinline{\pseudocode}
-you can wrap it into a \emph{pcmbox} environment (where pcmbox is short for pseudocode math box). This ensures that the low-level changes introduced by \lstinline{\pseudocode} are not active.
-
-\begin{lstlisting}
-\pseudocode{
-\text{compute } P = \begin{pcmbox}\begin{pmatrix}
- A \\ B + C
-\end{pmatrix}\end{pcmbox}
-}
-\end{lstlisting}
-
-\begin{center}
-\fbox{
-\pseudocode{
-\text{compute } P = \begin{pcmbox}\begin{pmatrix}
- A \\ B + C
-\end{pmatrix}\end{pcmbox}
-}
-}
-\end{center}
-
-
-\section{Fancy Code with Overlays}
-
-Consider the \indcpa\ game. Here we have a single adversary $\adv$ that is called twice, first to output two messages then
-given the ciphertext of one of the messages to \enquote{guess} which one was encrypted. Often this is not visualized.
-Sometimes an additional state $\state$ is passed as we have in the following example on the left. On the right,
-we visualize the same thing in a bit more fancy way.
-
-\begin{center}
-
-\pchstack{
-
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen (\secparam) \\
- \pcln (\state,m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end} \\
- \pcln \pcreturn b = b' }
-
-
-\pchspace[1cm]
-
-\begin{pcimage}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen (\secparam) \\
- \pcln (m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end} \\
- \pcln \pcreturn b = b' }
-
-\pcdraw{
- \path[->] (start) edge[bend left=50] node[right]{$\state$} (start|-end);
-}
-\end{pcimage}
-
-}
-\end{center}
-
-The image on the right is generated by:
-\begin{lstlisting}
-\begin{pcimage}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen (\secparam) \\
- \pcln (m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end} \\
- \pcln \pcreturn b = b' }
-
-\pcdraw{
- \path[->] (start) edge[bend left=50] node[right]{$\state$} (start|-end);
-}
-\end{pcimage}
-\end{lstlisting}
-
-In order to achieve the above effect cryptocode utilizes TIKZ underneath. The
-\lstinline$pcnode$ command generates TIKZ nodes and additionally we wrapped the
-pseudocode (or procedure) command in an \lstinline$\begin{pcimage}\end{pcimage}$ environment
-which allows us to utilize these nodes later, for example using the \lstinline$\pcdraw$
-command. We can achieve a similar effect without an additional pcimage environment as
-
-\begin{lstlisting}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen (\secparam) \\
- \pcln (m_0,m_1) \sample \adv(\secparam, \pk, c) \pcnode{start} \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c, \state) \pcnode{end}[draw={
- \path[->] (start) edge[bend left=50] node[right]{$\state$} (start|-end);
- }] \\
- \pcln \pcreturn b = b' }
-\end{lstlisting}
-
-\pagebreak
-\subsection{Example: Explain your Code}
-As an exmaple of what you can do with this, let us put an explanation to a line of the code.
-
-\begin{center}
-\begin{pcimage}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen (\secparam)\pcnode{kgen} \\
- \pcln (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c, \state) \\
- \pcln \pcreturn b = b' }
-
-\pcdraw{
- \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
- at ([shift={(+3,+1)}]kgen) {
- \begin{varwidth}{3cm}
- $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
- \end{varwidth}
- };
-}
-\end{pcimage}
-\end{center}
-
-\begin{lstlisting}
-\begin{center}
-\begin{pcimage}
-\procedure{$\indcpa_\enc^\adv$}{%
- \pcln b \sample \bin \\
- \pcln (\pk,\sk) \sample \kgen (\secparam)\pcnode{kgen} \\
- \pcln (m_0,m_1) \sample \adv(\secparam, \pk, c) \\
- \pcln c \sample \enc(\pk,m_b) \\
- \pcln b' \sample \adv(\secparam, \pk, c, \state) \\
- \pcln \pcreturn b = b' }
-
-\pcdraw{
- \node[rectangle callout,callout absolute pointer=(kgen),fill=orange]
- at ([shift={(+3,+1)}]kgen) {
- \begin{varwidth}{3cm}
- $\kgen(\secparam)$ samples a public key $\pk$ and a private key $\sk$.
- \end{varwidth}
- };
-}
-\end{pcimage}
-\end{center}
-\end{lstlisting}
-
-
-\chapter{Tabbing Mode}
-\label{chap:tabbing}
-\index{\&}
-\index{Tabbing Mode}
-\index{\textbackslash $"<$}
-\index{\textbackslash $">$}
-In the following chapter we discuss how to create multiple columns within a \lstinline$pseudocode$ command.
-Within a \lstinline$pseudocode$ command you can switch to a new column by inserting a \lstinline$\>$.
-This is similar to using an \lstinline$align$ environment and placing a tabbing character (\&). Also,
-similarly to using \lstinline$align$ you should ensure that the number of \lstinline$\>$ are identical
-on each line.
-\begin{center}
-\fbox{%
-\pseudocode{%
- \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
- b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
-}
-\end{center}
-\begin{lstlisting}
-\pseudocode{%
- \textbf{First} \> \textbf{Second} \> \textbf{Third} \> \textbf{Fourth} \\
- b \sample \bin \> b \sample \bin \> b \sample \bin \> b \sample \bin}
-\end{lstlisting}
-As you can see the first column is left aligned the second right, the third left and so forth.
-In order to get only left aligned columns you could thus simply always skip a column by
-using \lstinline$\>\>$. You can also use \lstinline$\<$ a shorthand for \lstinline$\>\>$.
-\begin{center}
-\fbox{%
-\pseudocode{%
- \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
- b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
-}
-\end{center}
-\begin{lstlisting}
-\pseudocode{%
- \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
- b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
-\end{lstlisting}
-
-\paragraph{Column Spacing}
-\index{colsep}
-\index{addtolength}
-You can control the space between columns using the option \enquote{colsep=2em}. Note that when doing so you should
-additionally use \enquote{addtolength=5em} (where 5em depends on the number of columns) in order to avoid having
-overfull hboxes.
-\begin{center}
-\fbox{%
-\pseudocode[colsep=1em,addtolength=10em]{%
- \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
- b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
-}
-\end{center}
-\begin{lstlisting}
-\pseudocode{%
-\pseudocode[colsep=1em,addtolength=10em]{%
- \textbf{First} \< \textbf{Second} \< \textbf{Third} \< \textbf{Fourth} \\
- b \sample \bin \< b \sample \bin \< b \sample \bin \< b \sample \bin}
-\end{lstlisting}
-
-This is basically all you need to know in order to go on to writing protocols with the
-cryptocode package. So unless you want to know a bit more about tabbing (switching columns)
-and learn some of the internals, feel free to proceed to Chapter~\ref{chap:protocols}.
-
-
-\section{Tabbing in Detail}
-At the heart of the pseudocode package is an align (or rather a flalign*) environment which allows you to use basic math writing. Usually an align (or flalign) environment uses \& as tabbing characters. The pseudocode comes in two modes the first of which changes the default align behavior. That is, it automatically adds a tabbing character to the beginning and end of each line and changes the tabbing character to \lstinline$\>$. This mode is called mintabmode and is active by default.
-
-In mintabmode in order to make use of extra columns in the align environment (which we will use shortly in order to write protocols) you can use \lstinline$\>$ as you would use \& normally. But, don't forget that there is an alignment tab already placed at the beginning and end of each line. So the following example
-\begin{center}
-\fbox{%
-\pseudocode{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \xrightarrow{\text{send over } b} \> \\
- \> \> \text{do something}}
-}
-\end{center}
-is generated by
-\begin{lstlisting}
-\pseudocode{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \xrightarrow{\text{send over } b} \> \\
- \> \> \text{do something}}
-\end{lstlisting}
-
-In Chapter~\ref{chap:protocols} we'll discuss how to write protocols in detail.
-The next two sections are rather technical, so feel free to skip them.
-
-
-\subsection{Overriding The Tabbing Character}
-\index{\textbackslash pctabname}
-If you don't like \lstinline$\>$ as the tabbing character you can choose a custom command by overwriting \lstinline$\pctabname$.
-For example
-\begin{lstlisting}
-\renewcommand{\pctabname}{\myTab}
-
-\pseudocode{%
- \textbf{Alice} \myTab \myTab \textbf{Bob} \\
- b \sample \bin \myTab \myTab \\
- \myTab \xrightarrow{\text{send over } b} \myTab \\
- \myTab \myTab \text{do something}}
-\end{lstlisting}
-
-\subsection{Custom Line Spacing and Horizontal Rules}
-\index{\textbackslash pclb}
-As explained underlying the pseudocode command is an flalign environment. This would allow the use
-of \lstinline$\\[spacing]$ to specifiy the spacing between two lines or of \lstinline$[\\\hline]$
-to insert a horizontal rule. In order to achieve the same effect within the pseudocode command you
-can use \lstinline$\\[spacing][\hline]$. You can also use \lstinline$\pclb$ to get a line break which
-does not insert the additional alignment characters.
-
-\chapter{Protocols}
-\label{chap:protocols}
-
-The pseudocode package can also be used to write protocols such as
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \xrightarrow{\text{send over } b} \> \\
- \> \> \text{do something} \\
- \> \xleftarrow{\text{send over sth. else}} \> \\
- \text{finalize} \> \>}
- }
-\end{center}
-which uses the tabbing feature of align and is generated as
-\begin{lstlisting}
-\procedure{My Protocol}{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \xrightarrow{\text{send over } b} \> \\
- \> \> \text{do something} \\
- \> \xleftarrow{\text{send over sth. else}} \> \\
- \text{finalize} \> \>}
-}
-\end{lstlisting}
-
-\index{\textbackslash sendmessageright*}
-\index{\textbackslash sendmessageright}
-\index{\textbackslash sendmessageleft*}
-\index{\textbackslash sendmessageleft}
-In order to get nicer message arrows use the commands \lstinline$\sendmessageright*{message}$ and \lstinline$\sendmessageleft*{message}$.
-Both take an additional optional argument specifying the length of the arrow and both are run
-in math mode.
-\begin{lstlisting}
-\sendmessageright*[3.5cm]{message}
-\sendmessageleft*[3.5cm]{message}
-\end{lstlisting}
-
-
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \sendmessageright*{\text{send over } b} \> \\
- \> \> \text{do something} \\
- \> \sendmessageleft*{\text{send over sth. else}} \> \\
- \text{finalize} \> \> }
- }
-\end{center}
-\begin{lstlisting}
-\procedure{My Protocol}{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \sendmessageright*{\text{send over } b} \> \\
- \> \> \text{do something} \\
- \> \sendmessageleft*{\text{send over sth. else}} \> \\
- \text{finalize} \> \> }
-\end{lstlisting}
-
-Besides the starred version there is also the unstarred version which allows more flexibility. Note that a crucial difference between
-the starred and unstarred versions are that \lstinline$\sendmessageleft*{message}$ wraps an aligned environment around the message.
-\begin{center}
-\procedure{My Protocol}{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \sendmessageright{centercol=3,top=send over $b$,bottom=Text below,topstyle={draw,solid,yshift=0.25cm},style={dashed}} \> \\
- \> \> \text{do something} \\
- \> \sendmessageleft{length=8cm,top=send over sth. else} \> \\
- \text{finalize} \> \> }
-\end{center}
-\begin{lstlisting}
-\procedure{My Protocol}{%
- \textbf{Alice} \> \> \textbf{Bob} \\
- b \sample \bin \> \> \\
- \> \sendmessageright{centercol=3,top=send over $b$,bottom=Text below,topstyle={draw,solid,yshift=0.25cm},style={dashed}} \> \\
- \> \> \text{do something} \\
- \> \sendmessageleft{length=8cm,top=send over sth. else} \> \\
- \text{finalize} \> \> }
-\end{lstlisting}
-The unstarred commands take key-value pairs. The following keys are available:
-\begin{description}
-\item[top]
-The content to display on top of the arrow.
-\item[bottom]
-The content to display below the arrow.
-\item[left]
-The content to display on the left of the arrow.
-\item[right]
-The content to display on the right of the arrow.
-\item[topstyle]
-The TIKZ style to be used for the top node.
-\item[bottomstyle]
-The TIKZ style to be used for the bottom node.
-\item[rightstyle]
-The TIKZ style to be used for the right node.
-\item[leftstyle]
-The TIKZ style to be used for the left node.
-\item[length]
-The length of the arrow.
-\item[style]
-The style of the arrow.
-\item[width]
-The width of the column
-\item[centercol]
-Can be used to ensure that the message is displayed in the center. This should be set to the
-column index. In the above example, the message column is the third column (note that there is
-a column left of alice that is automatically inserted.).
-\end{description}
-
-
-\section{Tabbing}
-When typesetting protocols you might find that using two tabs instead of a single tab usually provides
-a better result as this ensures that all columns are left aligned.
-For this you can use \lstinline$\<$ instead of \lstinline$\>$ (see Chapter~\ref{chap:tabbing}).
-
-Following is once more the example from before but now with double tapping.
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
- \textbf{Alice} \< \< \textbf{Bob} \\
- b \sample \bin \< \< \\
- \< \sendmessageright*{\text{send over } b} \< \\
- \< \< \text{do something} \\
- \< \sendmessageleft*{\text{send over sth. else}} \< \\
- \text{finalize} \< \< }
- }
-\end{center}
-
-\section{Multiline Messages}
-Using the send message commands you can easily generate multiline messages as the command
-wraps an \emph{aligned} environment around the message.
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
- \textbf{Alice} \< \< \textbf{Bob} \\
- b \sample \bin \< \< \\
- \< \sendmessageright*{\text{send over } b\\ \text{second line}} \< \\
- \< \< \text{do something} \\
- \< \sendmessageleft*{&\text{left aligned}\\ &\text{multiline message}} \< \\
- \text{finalize} \< \<}
- }
-\end{center}
-\begin{lstlisting}
-\procedure{My Protocol}{%
- \textbf{Alice} \< \< \textbf{Bob} \\
- b \sample \bin \< \< \\
- \< \sendmessageright*{\text{send over } b\\ \text{second line}} \< \\
- \< \< \text{do something} \\
- \< \sendmessageleft*{&\text{left aligned}\\ &\text{multiline message}} \< \\
- \text{finalize} \< \<}
-\end{lstlisting}
-
-
-
-\subsection{Multiplayer Protocols}
-
-You are not limited to two players. In order to send messages skipping players use \lstinline$\sendmessagerightx$ and \lstinline$\sendmessageleftx$.
-\begin{lstlisting}
-\sendmessagerightx[width]{columnspan}{Text}
-\sendmessageleftx[width]{columnspan}{Text}
-\end{lstlisting}
-
-\begin{center}
-\fbox{%
-\procedure{Multiparty Protocol}{%
- \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\
- \text{work} \< \< \< \< \\
- \< \sendmessageright{top=Work result} \< \< \< \\
- \< \< \text{work} \< \< \\
- \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
- \< \< \< \< \text{work} \\
- \< \sendmessageleftx[7cm]{8}{\text{A long message for Alice}} \< \\
- \text{finalize} \< \< \< \< }
-}
-\end{center}
-
-\begin{lstlisting}
-\begin{center}
-\procedure{Multiparty Protocol}{%
- \textbf{Alice} \< \< \textbf{Bob} \< \< \textbf{Charlie} \\
- \text{work} \< \< \< \< \\
- \< \sendmessageright{top=Work result} \< \< \< \\
- \< \< \text{work} \< \< \\
- \< \< \< \sendmessageright{top=Work result,bottom=Bottom message} \< \\
- \< \< \< \< \text{work} \\
- \< \sendmessageleftx[7cm]{8}{\text{A long message for Alice}} \< \\
- \text{finalize} \< \< \< \< }
-\end{lstlisting}
-Note that for the last message from Charlie to Alice we needed to specify the number of passed
-over colums (\lstinline$\sendmessageleftx[7cm]{8}{message}$). As we were passing
-4 \lstinline$\<$ where each creates 2 columns, the total was 8 columns.
-
-
-\subsection{Divisions}
-You can use \lstinline$\pcintertext$ in order to divide protocols (or other pseudocode for that matter).
-\begin{lstlisting}
-\pcintertext[dotted|center]{Division Text}
-\end{lstlisting}
-Note that in order to use the \lstinline$\pcintertext$ you need to use \lstinline$\pclb$ as the line break for the line
-before. Also see Chapter~\ref{chap:tabbing}.
-
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
-\textbf{Alice} \< \< \textbf{Bob} \\
- b \sample \bin \< \< \pclb
- \pcintertext[dotted]{Some Division} \\
- \< \sendmessageright*{\text{send over } b} \< \\
- \< \< \text{do something} \pclb
- \pcintertext[dotted]{Another Division} \\
- \< \sendmessageleft*{\text{message}} \< \\
- \text{finalize} \< \< }
-}
-\end{center}
-
-\begin{lstlisting}
-\procedure{My Protocol}{%
-\textbf{Alice} \< \< \textbf{Bob} \\
- b \sample \bin \< \< \pclb
- \pcintertext[dotted]{Some Division} \\
- \< \sendmessageright*{\text{send over } b} \< \\
- \< \< \text{do something} \pclb
- \pcintertext[dotted]{Another Division} \\
- \< \sendmessageleft*{\text{message}} \< \\
- \text{finalize} \< \< }
-\end{lstlisting}
-
-
-
-\section{Line Numbering in Protocols}
-Protocols can be numbered similarly to plain pseudocode. Additionally to the \lstinline$\pcln$ there are the commands \lstinline$\pclnr$ and \lstinline$\pcrln$. The first
-allows you to right align line numbers but uses the same counter as \lstinline$\pcln$. The second uses a different counter.
-
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
-\pcln \textbf{Alice} \< \< \textbf{Bob} \< \\
-\pcln b \sample \bin \< \< \< \\
- \< \sendmessageright*{\text{send over } b} \< \< \pclnr\\
- \< \< \text{do something} \< \pclnr \\
- \< \sendmessageleft*{\text{send over sth. else}} \<\< \pclnr \\
-\pcln \text{finalize} \< \< \<}
-}
-\end{center}
-Which is generated as
-\begin{lstlisting}
-\procedure{My Protocol}{%
-\pcln \textbf{Alice} \< \< \textbf{Bob} \< \\
-\pcln b \sample \bin \< \< \< \\
- \< \sendmessageright*{\text{send over } b} \< \< \pclnr\\
- \< \< \text{do something} \< \pclnr \\
- \< \sendmessageleft*{\text{send over sth. else}} \<\< \pclnr \\
-\pcln \text{finalize} \< \< \<}
-\end{lstlisting}
-
-
-
-And using \lstinline$\pcrln$:
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
-\pcln \textbf{Alice} \< \< \textbf{Bob} \< \\
-\pcln b \sample \bin \< \< \< \\
- \< \sendmessageright*{\text{send over } b} \<\< \pcrln\\
- \< \< \text{do something} \< \pcrln \\
- \< \sendmessageleft*{\text{send over sth. else}} \< \< \pcrln \\
-\pcln \text{finalize} \< \< \< }
-}
-\end{center}
-Which is generated as
-\begin{lstlisting}
-\procedure{My Protocol}{%
-\pcln \textbf{Alice} \< \< \textbf{Bob} \\
-\pcln b \sample \bin \< \< \\
-\< \sendmessageright*{\text{send over } b} \< \pcrln\\
-\< \< \text{do something} \pcrln \\
-\< \sendmessageleft*{\text{send over sth. else}} \< \pcrln \\
-\pcln \text{finalize} \< \< }
-\end{lstlisting}
-
-
-
-
-\subsection{Separators}
-\label{sec:protocol:separator}
-The commands \lstinline$\pclnseparator$ and \lstinline$\pcrlnseparator$ define the separators between the pseudocode and line numbering. By default the left separator is set to (:) colon and the right separator is set to a space of 3 pt.
-
-
-\section{Sub Protocols}
-
-Use the \enquote{subprocedure} function also to create sub protocols.
-
-\begin{center}
-\fbox{%
-\procedure{My Protocol}{%
- \textbf{Alice} \< \< \textbf{Bob} \\
- b \sample \bin \< \< \\
- \< \sendmessageright*{\text{send over } b} \< \\
- \< \< \text{do something} \\
- \<\< \dbox{\begin{subprocedure}\procedure{Subprotocol}{
- \< \< \textbf{Charlie} \\
-\text{something more} \< \< \\
- \< \sendmessageright*[1.5cm]{\text{message}} \< \\
- \< \< \text{some processing} \\
- \< \< \text{more processing} \\
- \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
- \< \sendmessageright*[1.5cm]{\text{message}} \< \\
- \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
-}\end{subprocedure}} \\
- \< \sendmessageleft*{\text{send over sth. else}} \< \\
- \text{finalize} \< \< }
-}
-\end{center}
-
-
-\begin{lstlisting}
-\procedure{My Protocol}{%
- \textbf{Alice} \< \< \textbf{Bob} \\
- b \sample \bin \< \< \\
- \< \sendmessageright*{\text{send over } b} \< \\
- \< \< \text{do something} \\
- \<\< \dbox{\begin{subprocedure}\procedure{Subprotocol}{
- \< \< \textbf{Charlie} \\
-\text{something more} \< \< \\
- \< \sendmessageright*[1.5cm]{\text{message}} \< \\
- \< \< \text{some processing} \\
- \< \< \text{more processing} \\
- \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
- \< \sendmessageright*[1.5cm]{\text{message}} \< \\
- \< \sendmessageleft*[1.5cm]{\text{message}} \< \\
-}\end{subprocedure}} \\
- \< \sendmessageleft*{\text{send over sth. else}} \< \\
- \text{finalize} \< \< }
-\end{lstlisting}
-
-
-
-
-
-
-\chapter{Game Based Proofs}
-\label{chap:gbproofs}
-
-\section{Basics}
-\index{gameproof}
-\index{gameprocedure}
-
-Besides displaying pseudocode the package also comes with commands to display game based proofs. A proof
-is wrapped in the \emph{gameproof} environment.
-\begin{lstlisting}
-\begin{gameproof}
-proof goes here
-\end{gameproof}
-\end{lstlisting}
-Within the proof environment you can use the command \lstinline$\gameprocedure$ which works similarly to the pseudocode
-command and produces a heading of the form $\pcgamename_{\text{counter}}$ where counter is a consecutive counter.
-Thus, we can create the following setup
-\begin{center}
-\begin{gameproof}
-\gameprocedure[linenumbering,mode=text]{%
- Step 1 \\
- Step 2
- }
-\gameprocedure[mode=text]{%
- Step 1 \\
- Step 2
- }
-\end{gameproof}
-\end{center}
-by using
-\begin{lstlisting}
-\begin{gameproof}
-\gameprocedure[linenumbering,mode=text]{%
- Step 1 \\
- Step 2
- }
-\gameprocedure[mode=text]{%
- Step 1 \\
- Step 2
- }
-\end{gameproof}
-\end{lstlisting}
-
-
-
-\subsection{Highlight Changes}
-\index{highlight game change}
-\index{\textbackslash gamechange}
-In order to highlight changes from one game to the next use \lstinline$\gamechange$.
-\begin{center}
-\begin{gameproof}
-\gameprocedure[linenumbering,mode=text]{%
- Step 1 \\
- Step 2
- }
-\gameprocedure[mode=text]{%
- Step 1 \\
- \gamechange{Step 2}
- }
-\end{gameproof}
-\end{center}
-\begin{lstlisting}
-\begin{gameproof}
-\gameprocedure[linenumbering,mode=text]{%
- Step 1 \\
- Step 2
- }
-\gameprocedure[mode=text]{%
- Step 1 \\
- \gamechange{Step 2}
- }
-\end{gameproof}
-\end{lstlisting}
-
-\subsection{Boxed games}
-\index{\textbackslash tbxgameprocedure}
-Use \lstinline$\tbxgameprocedure$ in order to create two consecutive games where the second game is \emph{boxed}. Use
-\lstinline$\pcbox$ to create boxed statements.
-\begin{center}
-\begin{gameproof}
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\tbxgameprocedure{%
- \text{Step 1}; \pcbox{\text{Alternative step 1}} \\
- \gamechange{\text{Step 2 is different}}
- }
-\gameprocedure{%
- \text{Step 1} \\
- \text{\gamechange{Step 2}}
- }
-\end{gameproof}
-\end{center}
-
-\begin{lstlisting}
-\begin{gameproof}
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\tbxgameprocedure{%
- \text{Step 1}; \pcbox{\text{Alternative step 1}} \\
- \gamechange{\text{Step 2 is different}}
- }
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{\gamechange{Step 2}}
- }
-\end{gameproof}
-\end{lstlisting}
-
-\subsection{Reduction Hints}
-\index{\textbackslash addgamehop}
-In a game based proof in order to go from one game to the next we usually give a reduction, for example, we show that
-the difference between two games is bound by the security of some pseudorandom generator $\mathsf{PRG}$. To give a hint
-within the pseudocode that the difference between two games is down to ``something'' you can use the \lstinline$\addgamehop$
-command.
-\begin{lstlisting}
-\addgamehop{startgame}{endgame}{options}
-\end{lstlisting}
-Here options allows you to specify the hint as well as the style. The following options are available
-\begin{description}
-\item[hint]
-The hint text
-\item[nodestyle]
-A TIKZ style to be used for the node.
-\item[pathstyle]
-A TIKZ style to be used for the path.
-\item[edgestyle]
-A TIKZ style to be used for the edge. This defaults to \enquote{bend left}.
-\end{description}
-
-\vspace{1ex}
-\begin{center}
-\begin{gameproof}
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\gameprocedure{%
- \text{Step 1} \\
- \gamechange{\text{Step 2 is different}}
- }
-\addgamehop{1}{2}{hint=\footnotesize some hint,nodestyle=red}
-\end{gameproof}
-\end{center}
-\begin{lstlisting}
-\begin{gameproof}
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\gameprocedure{%
- \text{Step 1} \\
- \gamechange{\text{Step 2 is different}}
- }
-\addgamehop{1}{2}{hint=\footnotesize some hint,nodestyle=red}
-\end{gameproof}
-\end{lstlisting}
-The edgestyle allows you to specify how the hint is displayed. If you, for example want a straight line, rather than the curved arrow simply
-use
-\begin{lstlisting}
-\addgamehop{1}{2}{hint=\footnotesize some hint,edgestyle=}
-\end{lstlisting}
-
-
-
-If game proofs do not fit into a single picture you can specify start and end hints using the commands
-\begin{lstlisting}
-\addstartgamehop[first game]{options}
-\addendgamehop[last game]{options}
-\end{lstlisting}
-
-\begin{center}
-\begin{gameproof}
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\gameprocedure{%
- \text{Step 1} \\
- \gamechange{\text{Step 2 is different}}
- }
- \addstartgamehop{hint=\footnotesize some hint,edgestyle=}
-\addgamehop{1}{2}{hint=\footnotesize some hint}
- \addendgamehop{hint=\footnotesize some outgoing hint,edgestyle=}
-\end{gameproof}
-\end{center}
-
-
-\begin{lstlisting}
-\begin{gameproof}
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\gameprocedure{%
- \text{Step 1} \\
- \gamechange{\text{Step 2 is different}}
- }
- \addstartgamehop{hint=\footnotesize some hint,edgestyle=}
-\addgamehop{1}{2}{hint=\footnotesize some hint}
- \addendgamehop{hint=\footnotesize some outgoing hint,edgestyle=}
-\end{gameproof}
-\end{lstlisting}
-
-\subsection{Numbering and Names}
-By default the \emph{gameproof} environment starts to count from 1 onwards. Its optional parameters allow you to specify a custom
-name for your game and the starting number.
-\begin{lstlisting}
-\begin{gameproof}[options]
-\end{lstlisting}
-
-\begin{center}
-\begin{gameproof}[nr=5,name=\mathsf{MyGame},arg=(1^n)]
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\gameprocedure{%
- \text{Step 1} \\
- \gamechange{\text{Step 2 is different}}
- }
-\addstartgamehop{hint=\footnotesize some ingoing hint}
-\addgamehop{6}{7}{hint=\footnotesize some hint}
- \addendgamehop{hint=\footnotesize some outgoing hint}
-\end{gameproof}
-\end{center}
-
-\begin{lstlisting}
-\begin{gameproof}[nr=5,name=$\mathsf{MyGame}$,arg=$(1^n)$]
-\gameprocedure{%
- \pcln \text{Step 1} \\
- \pcln \text{Step 2}
- }
-\gameprocedure{%
- \text{Step 1} \\
- \gamechange{\text{Step 2 is different}}
- }
-\addstartgamehop{hint=\footnotesize some ingoing hint}
-\addgamehop{6}{7}{hint=\footnotesize some hint}
- \addendgamehop{hint=\footnotesize some outgoing hint}
-\end{gameproof}
-\end{lstlisting}
-
-
-\subsection{Default Name and Argument}
-The default name and argument are controlled via the commands \lstinline$\pcgamename$ and \lstinline$\gameprocedurearg$.
-
-\begin{center}
-\begin{tabular}{ll}
-\textbf{Command} & \textbf{Default} \\
-\lstinline$\pcgamename$ & \lstinline$\mathsf{Game}$ \\
-\lstinline$\gameprocedurearg$ & \lstinline$(\secpar)$
-\end{tabular}
-\end{center}
-
-
-\subsection{Two Directional Games}
-\index{\textbackslash bxgameprocedure}
-\index{\textbackslash addloopgamehop}
-You can use the \lstinline$\bxgameprocedure$ to generate games for going in two directions. Use the \lstinline$\addloopgamehop$
-to add the gamehop in the middle.
-
-\vspace{1cm}
-\begin{center}
-\begin{gameproof}
-\bxgameprocedure{4}{%
- \pcln \text{Step 1}; \pcbox{Alternative} \\
- \pcln \text{Step 2}
- }
-\bxgameprocedure{3}{%
- \text{Step 1}; \pcbox{Alternative} \\
- \gamechange{\text{Step 2 is different}}
- }
- \addstartgamehop{hint=\footnotesize some hint,edgestyle=}
-\addgamehop{1}{2}{hint=\footnotesize some hint,edgestyle=}
- \addloopgamehop{hint=\footnotesize some loop hint}
- \addgamehop{2}{1}{hint=\footnotesize some hint}
-\end{gameproof}
-\end{center}
-
-
-\begin{lstlisting}
-\begin{gameproof}
-\bxgameprocedure{4}{%
- \pcln \text{Step 1}; \pcbox{Alternative} \\
- \pcln \text{Step 2}
- }
-\bxgameprocedure{3}{%
- \text{Step 1}; \pcbox{Alternative} \\
- \gamechange{\text{Step 2 is different}}
- }
- \addstartgamehop{hint=\footnotesize some hint,edgestyle=}
-\addgamehop{1}{2}{hint=\footnotesize some hint,edgestyle=}
- \addloopgamehop{hint=\footnotesize some loop hint}
- \addgamehop{2}{1}{hint=\footnotesize some hint}
-\end{gameproof}
-\end{lstlisting}
-
-\subsection{Styling game procedures}
-It may come in handy to define default style arguments for the underlying pseudocode
-command used by \lstinline$\gameprocedure$. For this you can
-define the default arguments by calling \lstinline{\setgameproceduredefaultstyle} to
-for example:
-
-\begin{lstlisting}
-\setgameproceduredefaultstyle{beginline=\vphantom{\bin^\prg_\prg}
-\end{lstlisting}
-
-The default is to not set any options.
-
-\section{Game Descriptions}
-Cryptocode also comes with an environment to provide textual descriptions of games such as
-
-
- \begin{gamedescription}[name=MyGame,nr=2]
-\describegame
- This is the third game. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis condimentum velit et orci volutpat, sed ultrices lorem lobortis. Nam vehicula, justo eu varius interdum, felis mi consectetur dolor, ac posuere nulla lacus varius diam. Etiam dapibus blandit leo, et porttitor augue lacinia auctor.
-
-\describegame[inhint=reduction target]
- This is the second game. The arrow at the side indicates the reduction target.
- \end{gamedescription}
-
- The above example is generated as
-
-\begin{lstlisting}
-\begin{gamedescription}[name=MyGame,nr=2]
-\describegame
-This is the third game. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis condimentum velit et orci volutpat, sed ultrices lorem lobortis. Nam vehicula, justo eu varius interdum, felis mi consectetur dolor, ac posuere nulla lacus varius diam. Etiam dapibus blandit leo, et porttitor augue lacinia auctor.
-
-\describegame[inhint=reduction target]
-This is the second game. The arrow at the side indicates the reduction target.
-\end{gamedescription}
-\end{lstlisting}
-
-The \emph{gamedescription} environment takes an optional argument to specify name and counter (defaults to Game and 0). The command
-\lstinline$\describegame$ starts a new game description and can allows you to provide a reduction hint using the option parameter \emph{inhint}.
-
-\begin{center}
-\begin{tabular}{ll}
-\textbf{Parameter} & \textbf{Description} \\
-\lstinline$inhint$ & Displays an ingoing arrow to denote the reduction target for this game hop.\\
-\lstinline$length$ & Allows to control the length of the arrow. \\
-\lstinline$nodestyle$ & Allows to control the style of the node. \\
-\lstinline$hint$ & Instead of having an ingoing arrow, this adds an outgoing arrow. \\
-\end{tabular}
-\end{center}
-
-
-\chapter{Black-box Reductions}
-\label{chap:bbr}
-\index{bbrenv}
-\index{bbrbox}
-\index{\textbackslash bbrinput}
-\index{\textbackslash bbroutput}
-
-The cryptocode package comes with support for drawing basic black box reductions. A reduction is
-always of the following form.
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
-\begin{bbrbox}[name=Box Name]
-% The Box's content
-\end{bbrbox}
-% Commands to display communication, input output etc
-\end{bbrenv}
-\end{lstlisting}
-That is, a \enquote{bbrenv} (where bbr is short for black-box reduction) environment which takes a single
-\enquote{bbrbox} environment and some additional commands.
-
-The following is a simple example drawing one (black)box with some code and input output:
-
-\begin{bbrenv}[1cm]{A}[1cm]
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-This box is generated as
-\begin{lstlisting}
-\begin{bbrenv}[1cm]{A}[1cm]
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-The commands \lstinline$bbrinput$ and \lstinline$bbroutput$ allow to specify input and output for the latest
-\enquote{bbrenv} environment. The optional parameters for the \lstinline$bbrenv$ environment allow to specify leading and trailing space (this
-may become necessary when using inputs and outputs).
-The single argument to the bbrenv environment needs to specify a unique identifier
-(unique for the current reduction). This id is used as an internal TIKZ node name (\url{https://www.ctan.org/pkg/pgf}).
-\begin{lstlisting}
-\begin{bbrenv}[vspace before]{UNIQUE IDENTIFIER}[vspace after]
-\end{lstlisting}
-As we are drawing a TIKZ image, note that we can easily later customize the image using the labels that we
-have specified on the way.
-
-\begin{bbrenv}[1cm]{A}[1cm]
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \filldraw[fill=blue] (A.north) circle (4pt);
- \filldraw[fill=blue] (A.west) circle (4pt);
- \filldraw[fill=blue] (A.east) circle (4pt);
- \filldraw[fill=blue] (A.south) circle (4pt);
-\end{bbrenv}
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \filldraw[fill=blue] (A.north) circle (4pt);
- \filldraw[fill=blue] (A.west) circle (4pt);
- \filldraw[fill=blue] (A.east) circle (4pt);
- \filldraw[fill=blue] (A.south) circle (4pt);
-\end{bbrenv}
-\end{lstlisting}
-
-The \enquote{bbrbox} takes as single argument a comma separated list of key value pairs. In the example we have used
-\begin{lstlisting}
-name=Box Name
-\end{lstlisting}
-to specify the label. The following options are available
-
-\index{namepos}
-\index{namestyle}
-\index{abovesep}
-\index{minheight}
-\index{xshift}
-\index{yshift}
-\begin{center}
-\begin{tabular}{ll}
-\textbf{Option} & \textbf{Description} \\ \hline
-name & Specifies the box's label \\
-namepos & Specifies the position (left, center, right, top left, top center, top right, middle) \\
-namestyle & Specifies the style of the name \\
-abovesep & Space above box (defaults to \lstinline$\baselineskip$) \\
-minheight & The minimal height \\
-addheight & Additional height at the end of the box \\
-xshift & Allows horizontal positioning \\
-yshift & Allows horizontal positioning \\
-style & allows to customize the node
-\end{tabular}
-\end{center}
-
-
-\section{Nesting of Boxes}
-Boxes can be nested. For this simply insert a bbrenv (together with a single bbrbox) environment into an
-existing bbrbox.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Inner Box]
- \pseudocode{
- \text{inner step 1} \\
- \text{inner step 2}
- }
- \end{bbrbox}
- \end{bbrenv}
-
- \pseudocode{
- \text{step 4} \\
- \text{step 5}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Inner Box]
- \pseudocode{
- \text{inner step 1} \\
- \text{inner step 2}
- }
- \end{bbrbox}
- \end{bbrenv}
-
- \pseudocode{
- \text{step 4} \\
- \text{step 5}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-\section{Messages and Queries}
-\index{\textbackslash bbrmsgto}
-\index{\textbackslash bbrmsgfrom}
-\index{\textbackslash bbrqryto}
-\index{\textbackslash bbrqryfrom}
-
-You can send messages and queries to boxes. For this use the commands
-\begin{lstlisting}
-\bbrmsgto{options}
-\bbrmsgfrom{options}
-\bbrqryto{options}
-\bbrqryfrom{options}
-\end{lstlisting}
-By convention messages are on the left of boxes and queries on the right. Commands ending on to
-make an arrow to the right while commands ending on from make an arrow to the left. The \emph{options}
-define how the message is drawn and consists of a key-value pairs separated by \enquote{,}.
-
-For example, to draw a message with a label on top and on the side use
-\begin{lstlisting}
-\bbrmsgto{top=Top Label, side=Side Label}
-\end{lstlisting}
-If your label contains a \enquote{,} (comma), then group the label in $\{\}$ (curly brackets).
-\begin{lstlisting}
-\bbrmsgto{top=Top Label, side={Side, Label}}
-\end{lstlisting}
-
-Following is a complete example. Notice that cryptocode takes care of the vertical positioning.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Inner Box]
- \pseudocode{
- \text{inner step 1} \\
- \text{inner step 2}
- }
- \end{bbrbox}
-
- \bbrmsgto{top={$m_0,m_1$}}
- \bbrmsgfrom{top=$q$}
-
-
- \bbrqryto{top={$m_0,m_1$}}
- \bbrqryfrom{top=$q$}
-
- \end{bbrenv}
-
- \pseudocode{
- \text{step 4} \\
- \text{step 5}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Inner Box]
- \pseudocode{
- \text{inner step 1} \\
- \text{inner step 2}
- }
- \end{bbrbox}
-
- \bbrmsgto{top={$m_0,m_1$}}
- \bbrmsgfrom{top=$q$}
-
-
- \bbrqryto{top={$m_0,m_1$}}
- \bbrqryfrom{top=$q$}
-
- \end{bbrenv}
-
- \pseudocode{
- \text{step 4} \\
- \text{step 5}
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-\subsection{Options}
-Besides specifying labels for top, side and bottom you can further specify how cryptocode renders the message.
-Remember that underneath the reduction commands is a TIKZ image (\url{https://www.ctan.org/pkg/pgf/}).
-For each label position (top, side, bottom) a node is generated. You can provide additional properties for
-this node using the options:
-\begin{itemize}
-\item topstyle
-\item sidestyle
-\item bottomstyle
-\end{itemize}
-You can additionally provide custom names for the nodes for later reference using
-\begin{itemize}
-\item topname
-\item sidename
-\item osidename
-\item bottomname
-\end{itemize}
-The \enquote{osidename} allows you to provide a name for the \enquote{other side}.
-Via the option \enquote{length} you can specify the length of the arrow.
-
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Inner Box]
- \pseudocode{
- \text{inner step 1} \\
- \text{inner step 2} \\
- }
- \end{bbrbox}
-
- \bbrmsgto{top={$m_0,m_1$},side=Side Label, bottom=$b$, length=2cm,
- topstyle={draw, solid}, sidestyle={red}, bottomstyle={draw, dashed}}
-
- \end{bbrenv}
-
- \pseudocode{
- \text{step 4} \\
- \text{step 5} \\
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Box Name]
- \pseudocode{
- \text{step 1} \\
- \text{step 2} \\
- \pcfor \text{some condition} \pcdo \\
- \pcind\text{step 3}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Inner Box]
- \pseudocode{
- \text{inner step 1} \\
- \text{inner step 2} \\
- }
- \end{bbrbox}
-
- \bbrmsgto{top={$m_0,m_1$},side=Side Label, bottom=$b$, length=2cm,
- topstyle={draw, solid}, sidestyle={red}, bottomstyle={draw, dashed}}
-
- \end{bbrenv}
-
- \pseudocode{
- \text{step 4} \\
- \text{step 5} \\
- }
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-
-\subsection{Add Space}
-\index{\textbackslash bbrmsgspace}
-\index{\textbackslash bbrqryspace}
-If the spacing between messages is not sufficient you can use the \lstinline$bbrmsgspace$ and
-\lstinline$bbrqryspace$ commands to add additional space.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$}
- \bbrmsgspace{1.5cm}
- \bbrmsgfrom{top=$\sigma$}
-
- \bbrqryto{top=$m$}
- \bbrqryspace{1cm}
- \bbrqryfrom{top=$\sigma$}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$}
- \bbrmsgspace{1.5cm}
- \bbrmsgfrom{top=$\sigma$}
-
- \bbrqryto{top=$m$}
- \bbrqryspace{1cm}
- \bbrqryfrom{top=$\sigma$}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-
-\subsection{Loops}
-\index{\textbackslash bbrloop}
-Often an adversary may send poly many queries to an oracle, or a reduction sends many queries to an adversary.
-Consider the following setting
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$,sidename=BeginLoop}
- \bbrmsgfrom{top=$\sigma$,sidename=EndLoop}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$}
- \bbrmsgfrom{top=$\sigma$}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-First note that by specifying the minheight and xshift option we shifted the adversary box a bit to the right
-and enlarged its box. Further we specified custom names for the node on the side of the two messages. We
-can now use the \lstinline$bbrloop$ command to visualize that these two messages are exchanged $q$ many times
-\begin{lstlisting}
-\bbrloop{BeginLoop}{EndLoop}{center=$q$}
-\end{lstlisting}
-The \lstinline$bbrloop$ command takes two node names and a config which allows you to specify if the label is
-to be shown on the left, center or right. Here is the result.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$,sidename=BeginLoop}
- \bbrmsgspace{0.5cm}
- \bbrmsgfrom{top=$\sigma$,sidename=EndLoop}
- \bbrloop{BeginLoop}{EndLoop}{center=$q$}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$,sidename=BeginLoop}
- \bbrmsgspace{0.5cm}
- \bbrmsgfrom{top=$\sigma$,sidename=EndLoop}
- \bbrloop{BeginLoop}{EndLoop}{center=$q$}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-\subsection{Intertext}
-\index{\textbackslash bbrmsgtxt}
-\index{\textbackslash bbrqrytxt}
-
-If your reduction needs to do some extra work between queries use the \lstinline$\bbrmsgtxt$
-and \lstinline$\bbrqrytxt$ commands.
-\begin{lstlisting}
-\bbrmsgtxt[options]{Text}
-\bbrqrytxt[options]{Text}
-\end{lstlisting}
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$}
- \bbrmsgtxt{\pseudocode{
- do \\
- some \\
- work
- }}
- \bbrmsgfrom{top=$\sigma$}
-
- \bbrqryto{top=$m$}
- \bbrqrytxt[beforeskip=0.5cm,nodestyle={draw,dashed},xshift=2cm]{\pseudocode{
- do \\
- some \\
- work
- }}
- \bbrqryfrom{top=$\sigma$}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
-
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
-
- \end{bbrbox}
-
- \bbrmsgto{top=$m$}
- \bbrmsgtxt{\pseudocode{
- do \\
- some \\
- work
- }}
- \bbrmsgfrom{top=$\sigma$}
-
- \bbrqryto{top=$m$}
- \bbrqrytxt[beforeskip=0.5cm,nodestyle={draw,dashed},xshift=2cm]{\pseudocode{
- do \\
- some \\
- work
- }}
- \bbrqryfrom{top=$\sigma$}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-\end{bbrenv}
-\end{lstlisting}
-
-\section{Oracles}
-\index{bbroracle}
-\index{hdistance}
-\index{vdistance}
-Each box can have one or more oracles which are drawn on the right hand side of the box. An oracle
-is created similarly to a \emph{bbrenv} environment using the \emph{bbroracle} environment. Oracles
-go behind the single \emph{bbrbox} environment within an \emph{bbrenv} enviornment.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
- \end{bbrbox}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbroracle}{OraA}
- \begin{bbrbox}[name=Oracle 1]
- \end{bbrbox}
- \end{bbroracle}
-
- \begin{bbroracle}{OraB}[vdistance=2cm,hdistance=3cm]
- \begin{bbrbox}[name=Oracle 2]
- \end{bbrbox}
- \end{bbroracle}
-\end{bbrenv}
-
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=4cm]
- \end{bbrbox}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbroracle}{OraA}
- \begin{bbrbox}[name=Oracle 1]
- \end{bbrbox}
- \end{bbroracle}
-
- \begin{bbroracle}{OraB}[vdistance=2cm,hdistance=3cm]
- \begin{bbrbox}[name=Oracle 2]
- \end{bbrbox}
- \end{bbroracle}
-\end{bbrenv}
-\end{lstlisting}
-Via the option \enquote{hdistance=length} and \enquote{vdistance=length} you can control the horizontal and vertical position of the oracle. By default this value is set to 1.5cm and \lstinline$\baselineskip$.
-
-
-\subsection{Communicating with Oracles}
-\index{\textbackslash bbroracleqryfrom}
-\index{\textbackslash bbroracleqryto}
-As oracles use the \emph{bbrbox} environment we can directly use the established ways to send messages and
-queries to oracles. In addition you can use the \lstinline$\bbroracleqryfrom$ and \lstinline$\bbroracleqryto$.
-\begin{lstlisting}
-\bbroracleqryfrom{options}
-\bbroracleqryto{options}
-\end{lstlisting}
-Here options allow you to specify where the label goes (top, bottom). In addition you can use
-\lstinline$\bbroracleqryspace$ to generate extra space between oracle messages. Note
-that oracle messages need to be added after the closing \lstinline$\end{bbroracle}$ command.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=3cm]
- \end{bbrbox}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbroracle}{OraA}
- \begin{bbrbox}[name=Oracle 1,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryfrom{top=$m$}
- \bbroracleqryto{top=$b$}
-
- \begin{bbroracle}{OraB}
- \begin{bbrbox}[name=Oracle 2,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryfrom{bottom=$m$}
- \bbroracleqryto{bottom=$b$}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Reduction]
- \pseudocode{
- \text{Do something}
- }
-
- \begin{bbrenv}{B}
- \begin{bbrbox}[name=Adversary,minheight=3cm,xshift=3cm]
- \end{bbrbox}
-
- \end{bbrenv}
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbroracle}{OraA}
- \begin{bbrbox}[name=Oracle 1,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryfrom{top=$m$}
- \bbroracleqryto{top=$b$}
-
- \begin{bbroracle}{OraB}
- \begin{bbrbox}[name=Oracle 2,minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
- \bbroracleqryfrom{bottom=$m$}
- \bbroracleqryto{bottom=$b$}
-\end{bbrenv}
-\end{lstlisting}
-
-\section{Challengers}
-\index{bbrchallenger}
-\index{hdistance}
-\index{vdistance}
-Each box can have one or more challengers which are drawn on the left hand side of the box. Challengers
-behave identically to oracles with the exception that they are to the left of the box. A challenger
-is created similarly to a \emph{bbrenv} environment using the \emph{bbrchallenger} environment. Challengers
-go behind the single \emph{bbrbox} environment within an \emph{bbrenv} enviornment.
-
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Adversary,minheight=2cm]
- \pseudocode{
- \text{Do something}
- }
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbrchallenger}{ChaA}
- \begin{bbrbox}[name=Challenger,minheight=2cm]
-
- \end{bbrbox}
- \end{bbrchallenger}
-\end{bbrenv}
-
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Adversary,minheight=2cm]
- \pseudocode{
- \text{Do something}
- }
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbrchallenger}{ChaA}
- \begin{bbrbox}[name=Challenger,minheight=2cm]
-
- \end{bbrbox}
- \end{bbrchallenger}
-\end{bbrenv}
-\end{lstlisting}
-Via the option \enquote{hdistance=length} and \enquote{vdistance=length} you can control the horizontal and vertical position of the challenger. By default this value is set to 1.5cm and \lstinline$\baselineskip$.
-
-
-\subsection{Communicating with Challengers}
-\index{\textbackslash bbrchallengerqryfrom}
-\index{\textbackslash bbrchallengerqryto}
-As challengers use the \emph{bbrbox} environment we can directly use the established ways to send messages and
-queries to oracles. In addition you can use the \lstinline$\bbrchallengerqryfrom$ and \lstinline$\bbrchallengerqryto$.
-\begin{lstlisting}
-\bbrchallengerqryfrom{options}
-\bbrchallengerqryto{options}
-\end{lstlisting}
-Here options allow you to specify where the label goes (top, bottom). In addition you can use
-\lstinline$\bbrchallengerqryspace$ to generate extra space between oracle messages. Note
-that challenger messages need to be added after the closing \lstinline$\end{bbrchallenger}$ command.
-
-\vspace{2em}
-\begin{bbrenv}[1cm]{A}[0.5cm]
- \begin{bbrbox}[name=Adversary,minheight=2cm]
- \pseudocode{
- \text{Do something}
- }
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbrchallenger}{ChaA}
- \begin{bbrbox}[name=Challenger,minheight=2cm]
-
- \end{bbrbox}
- \end{bbrchallenger}
-
- \bbrchallengerqryfrom{top=$m$}
- \bbrchallengerqryto{bottom=$b$}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{A}
- \begin{bbrbox}[name=Adversary,minheight=2cm]
- \pseudocode{
- \text{Do something}
- }
-
- \end{bbrbox}
- \bbrinput{input}
- \bbroutput{output}
-
- \begin{bbrchallenger}{ChaA}
- \begin{bbrbox}[name=Challenger,minheight=2cm]
-
- \end{bbrbox}
- \end{bbrchallenger}
-
- \bbrchallengerqryfrom{top=$m$}
- \bbrchallengerqryto{bottom=$b$}
-\end{bbrenv}
-\end{lstlisting}
-
-\section{Examples}
-A reduction for full domain hash.
-
-
-\begin{bbrenv}{Red}
-
- \begin{bbrbox}[name=\textsc{Reduction }$\bdv$]
-
- \pseudocode{
- j \sample [q]
- }
-
- \vspace{2ex}
- \emph{/* begin simulation */}
-
- \begin{bbrenv}{Adv}
- \begin{bbrbox}[name=$\adv$,minheight=7.5cm,style={fill=black},namestyle={color=white},xshift=3cm,yshift=0.75cm]
- \end{bbrbox}
-
- \bbrinput{$\fk$}
- \bbroutput{$\sigma$}
-
- \bbrmsgfrom{top=$m_1$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgvdots
-
- \bbrmsgfrom{top=$m_{j-1}$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgfrom{top=$m_j$}
- \bbrmsgto{bottom=$y$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgfrom{top=$m_{j+1}$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgvdots
-
- \bbrmsgfrom{top=$m_q$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \begin{bbroracle}{Sign}
- \begin{bbrbox}[name=Sign,namepos=center,style={draw},minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
-
- \bbroracleqryto{top=$m$}
- \bbroracleqryfrom{top=$\sigma$}
-
- \end{bbrenv}
-
-
- \pcdraw{
- \node[left=2cm of Adv.north west] (startsim) {};
- \node[left=2cm of Adv.south west] (endsim) {};
- \draw[->,thick] (startsim) -- (endsim);
- \node[rotate=90, left=2.75cm of Adv.west,anchor=center] () {\textsc{Simulation of Random Oracle}};
- }
-
- \vspace{-3ex}
- \emph{/* end simulation */}
-
- \pseudocode{
- y \gets \sigma
- }
-
- \end{bbrbox}
- \bbrqryfrom{beforeskip=0.25cm,top={$(\fk, y)$},side={\dbox{\pseudocode{
- \fk \sample \fash.\kgen(\secparam) \\ x \sample \bin^{\fash.\il(\secpar)} \\ y \gets \fash.\eval(\fk, x)}
- }}}
- \bbrqryto{beforeskip=10.75cm,side=\pseudocode{y \in \fash^{-1}(\fk, x)}}
-\end{bbrenv}
-
-\begin{lstlisting}
-\begin{bbrenv}{Red}
-
- \begin{bbrbox}[name=\textsc{Reduction }$\bdv$]
-
- \pseudocode{
- j \sample [q]
- }
-
- \vspace{2ex}
- \emph{/* begin simulation */}
-
- \begin{bbrenv}{Adv}
- \begin{bbrbox}[name=$\adv$,minheight=7.5cm,style={fill=black},namestyle={color=white},xshift=3cm,yshift=0.75cm]
- \end{bbrbox}
-
- \bbrinput{$\fk$}
- \bbroutput{$\sigma$}
-
- \bbrmsgfrom{top=$m_1$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgvdots
-
- \bbrmsgfrom{top=$m_{j-1}$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgfrom{top=$m_j$}
- \bbrmsgto{bottom=$y$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgfrom{top=$m_{j+1}$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \bbrmsgvdots
-
- \bbrmsgfrom{top=$m_q$}
- \bbrmsgto{bottom=$\$$,beforeskip=-0.5\baselineskip,afterskip=-0.5\baselineskip}
-
- \begin{bbroracle}{Sign}
- \begin{bbrbox}[name=Sign,namepos=center,style={draw},minheight=1cm]
- \end{bbrbox}
- \end{bbroracle}
-
- \bbroracleqryto{top=$m$}
- \bbroracleqryfrom{top=$\sigma$}
-
- \end{bbrenv}
-
-
- \pcdraw{
- \node[left=2cm of Adv.north west] (startsim) {};
- \node[left=2cm of Adv.south west] (endsim) {};
- \draw[->,thick] (startsim) -- (endsim);
- \node[rotate=90, left=2.75cm of Adv.west,anchor=center] () {\textsc{Simulation of Random Oracle}};
- }
-
- \vspace{-3ex}
- \emph{/* end simulation */}
-
- \pseudocode{
- y \gets \sigma
- }
-
- \end{bbrbox}
- \bbrqryfrom{beforeskip=0.25cm,top={$(\fk, y)$},side={\dbox{\pseudocode{
- \fk \sample \fash.\kgen(\secparam) \\ x \sample \bin^{\fash.\il(\secpar)} \\ y \gets \fash.\eval(\fk, x)}
- }}}
- \bbrqryto{beforeskip=10.75cm,side=\pseudocode{y \in \fash^{-1}(\fk, x)}}
-\end{bbrenv}
-\end{lstlisting}
-
-
-\chapter{Known Issues}
-
-\section{Pseudocode KeepSpacing within Commands}
-\label{sec:keepindent-problem}
-\index{\textbackslash fbox}
-\index{framebox}
-The \enquote{space=keep} option of pseudocode which should output spacing identical to that of the input
-will fail, if the pseudocode command is called from within another command. An example is to
-wrap the \lstinline$\pseudocode$ command with an \lstinline$\fbox$. As a workaround for generating frame boxes you should hence
-use a package such as \emph{mdframed} (\url{https://www.ctan.org/pkg/mdframed}) which provides a frame environment.
-
-\begin{mdframed}
-\pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}
-\end{mdframed}
-\begin{lstlisting}
-\pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}
-\end{lstlisting}
-
-As an alternative you could use a \emph{savebox} (in combination with the \lstinline$lrbox$ environment):
-
-\newsavebox{\mypcbox}
-\begin{lrbox}{\mypcbox}%
-\pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}%
-\end{lrbox}
-\fbox{\usebox{\mypcbox}}
-
-\begin{lstlisting}
-\newsavebox{\mypcbox}
-\begin{lrbox}{\mypcbox}%
-\pseudocode[space=keep,mode=text]{ Pseudocode with - spaces -}%
-\end{lrbox}
-\fbox{\usebox{\mypcbox}}
-\end{lstlisting}
-
-\section{AMSFonts}
-\index{amsfonts}
-\index{noamsfonts|see {package options}}
-\index{package options!noamsfonts}
-Some packages are not happy with the \enquote{amsfonts} package. Cryptocode will attempt to load amsfonts if it is loaded
-with either the \enquote{sets} or the \enquote{probability} option. In order to not load amsfonts you can additionally add the
-\enquote{noamsfonts} at the very end. Note that in this case you should ensure that the command \lstinline$\mathbb$ is defined
-as this is used by most of the commands in \enquote{sets} and some of the commands in \enquote{probability}.
-
-\section{Hyperref}
-The hyperref package (\url{https://www.ctan.org/pkg/hyperref}) should be loaded before cryptocode. If this is not possible
-call the \lstinline$\pcfixhyperref$ after \lstinline$\begin{document}$.
-
-\printindex
-
-
-
-\end{document}
-
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 5cd2b72c58..9b97c75ae9 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2020
-depend revision/55795
+depend revision/55804
name 00texlive.image
category TLCore
-revision 55788
+revision 55798
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -36499,7 +36499,7 @@ catalogue-version 1.1b
name biblatex-publist
category Package
-revision 50989
+revision 55801
shortdesc BibLaTeX bibliography support for publication lists
relocated 1
longdesc The package provides a BibLaTeX bibliography style file (*.bbx)
@@ -36508,15 +36508,15 @@ longdesc authoryear style, but provides some extra features often
longdesc desired for publication lists, such as the omission of the
longdesc author's own name from author or editor data. At least version
longdesc 3.4 of biblatex is required.
-containersize 6932
-containerchecksum 9f73dd60d22adc1af2cc87c7fe3cf38b50fcc173a66cd1511a08a37938a0bcacef20ab27995ccc2cf4912d2b74948e417d0209bef93be8bcf49f51a6883778a4
-doccontainersize 327812
-doccontainerchecksum 1899ddf6edeb2ed11417cd90957bd9567041d6c06b43a56d08d618a734d7700e5092dc1e350ed03a08e82f3b2e8759ef8fed8f8933996d1d8a5b7ed5c8becb17
-docfiles size=88
+containersize 7344
+containerchecksum bbc4044abfe98b0f135e341c2244ac7cf14872fb486a183b542d320fe33c8db2a4207dc3c752e6aa977ccfa81c5e161770ffb7a50928bb7b311ef3946ee0a51d
+doccontainersize 366956
+doccontainerchecksum a6cea8bf5a6339dbe4ce47204917de1aec86d4d1c6a4bda042c773b796edc5f7edb181e0016119bc4887e1b365118eab043457dda13063a24c866c86d16bc268
+docfiles size=98
RELOC/doc/latex/biblatex-publist/README details="Readme"
RELOC/doc/latex/biblatex-publist/biblatex-publist.pdf details="Package documentation"
RELOC/doc/latex/biblatex-publist/biblatex-publist.tex
-runfiles size=9
+runfiles size=10
RELOC/tex/latex/biblatex-publist/publist.bbx
RELOC/tex/latex/biblatex-publist/publist.cbx
catalogue-contact-bugs https://github.com/jspitz/biblatex-publist/issues
@@ -36524,7 +36524,7 @@ catalogue-contact-repository https://github.com/jspitz/biblatex-publist
catalogue-ctan /macros/latex/contrib/biblatex-contrib/biblatex-publist
catalogue-license lppl1.3
catalogue-topics biblatex
-catalogue-version 1.16
+catalogue-version 1.17
name biblatex-realauthor
category Package
@@ -78491,7 +78491,7 @@ catalogue-version 3.0
name cryptocode
category Package
-revision 49131
+revision 55800
shortdesc Typesetting pseudocode, protocols, game-based proofs and black-box reductions in cryptography
relocated 1
longdesc The cryptocode package provides a set of macros to ease the
@@ -78501,15 +78501,21 @@ longdesc cryptographic papers. This includes simple predefined commands
longdesc for concepts such as a security parameter or advantage terms
longdesc but also flexible and powerful environments to layout
longdesc game-based proofs or black-box reductions.
-containersize 14516
-containerchecksum b15b76169656d91a366e17fc832f0b661e0bd31e2d8f61e2431d3e7adab66b24c145c2e84e4c9f9aa8dfbe27655b37c657765e549e04f9de447c5c6cefe38480
-doccontainersize 662880
-doccontainerchecksum 0245804ad3761368a634d7b062a02e5a073ed91499c3792f82670ea6ed18f6790f74d23e5ff4770c1c3af64b3a90d9f3d59ebe88828496ae19fb517dfca1e0f4
-docfiles size=272
- RELOC/doc/latex/cryptocode/README details="Readme"
+containersize 21324
+containerchecksum 7cbb44061efde9be1c992bf167dc87a55a9e27b9bcdb12b09f51a12ed045fad35a188ef7eee678506d2597a37208128e6969004c37b68d9dae97248fec07790c
+doccontainersize 1029036
+doccontainerchecksum 8ca9764083a2e63b9b0a2bec03c964b22aa78e7a8998594ffa32f9bd475268c92abc375943967156142e046ba04f03be787b1f687222dd8d26ad7c73a57aa3d5
+docfiles size=256
+ RELOC/doc/latex/cryptocode/README.md
RELOC/doc/latex/cryptocode/cryptocode.pdf details="Package documentation"
- RELOC/doc/latex/cryptocode/cryptocode.tex
-runfiles size=19
+srccontainersize 49504
+srccontainerchecksum 71fcfc179744c97c5945ec61e016b31832b72fa7c8f75446df4843c797ef7c660193d1a810f5a699d4e431def5a0b47f04d429c72c609d0e696315fec7ca1677
+srcfiles size=72
+ RELOC/source/latex/cryptocode/cryptocode.dtx
+ RELOC/source/latex/cryptocode/cryptocode.ins
+runfiles size=61
+ RELOC/tex/latex/cryptocode/cryptocode-2018-11-11.sty
+ RELOC/tex/latex/cryptocode/cryptocode-2020-04-24.sty
RELOC/tex/latex/cryptocode/cryptocode.sty
catalogue-ctan /macros/latex/contrib/cryptocode
catalogue-license lppl1.3
@@ -222606,7 +222612,7 @@ catalogue-version 2.10
name overlock
category Package
-revision 55791
+revision 55799
shortdesc Overlook sans fonts with LaTeX support
relocated 1
longdesc The package provides the Overlock and OverlockSC families of
@@ -222616,16 +222622,16 @@ longdesc three weights (Regular, Bold, Black) with italic variants for
longdesc each of them. There are also small-caps and old-style figures
longdesc in the Regular weight.
execute addMap overlock.map
-containersize 569396
-containerchecksum 95060b35bc19faaef769af66c2435618fdacd5c6d8cf3aa837bf2a5ad5a9ad9499caecc92f850227d1d0d568f4888b641633a02c891a3f03f1d8313a9f3e6123
-doccontainersize 121736
-doccontainerchecksum 604122a631332d553a242bd818cb0580a2ac86a6f3fae37bc276ee59669796937777ef331f5b010228b6a336808772a3d721def0ef54390a12568e86be325712
+containersize 590544
+containerchecksum 57bea0c1f2ad1a77f4aba4e0ed5821589e7939234966b457cc0f87b85b4d5e70ca1aa66a2a0bdb693a5f2544f6c8671194b83713f9cdfd91ac422a654e38c08e
+doccontainersize 121756
+doccontainerchecksum ef1846a11e3ec01169d1b215b69fe88a86fc1a7a4ce8ecfeae19493dba9b828031be57f66557c9d60be1fc726fe934f4baa5a0b805ffa950a03207bca8ce9c71
docfiles size=33
RELOC/doc/fonts/overlock/License.txt
RELOC/doc/fonts/overlock/README details="Readme"
RELOC/doc/fonts/overlock/overlock-samples.pdf details="Package documentation"
RELOC/doc/fonts/overlock/overlock-samples.tex
-runfiles size=403
+runfiles size=408
RELOC/fonts/enc/dvips/overlock/ovlk_2sdgnb.enc
RELOC/fonts/enc/dvips/overlock/ovlk_325tkf.enc
RELOC/fonts/enc/dvips/overlock/ovlk_7l4e47.enc
@@ -222652,7 +222658,6 @@ runfiles size=403
RELOC/fonts/opentype/muhafara/overlock/Overlock-BoldItalic.otf
RELOC/fonts/opentype/muhafara/overlock/Overlock-Italic.otf
RELOC/fonts/opentype/muhafara/overlock/Overlock-Regular.otf
- RELOC/fonts/opentype/muhafara/overlock/OverlockSC-Regular.otf
RELOC/fonts/tfm/muhafara/overlock/Overlock-Black-lf-ly1--base.tfm
RELOC/fonts/tfm/muhafara/overlock/Overlock-Black-lf-ly1--lcdfj.tfm
RELOC/fonts/tfm/muhafara/overlock/Overlock-Black-lf-ly1.tfm
@@ -222805,10 +222810,16 @@ runfiles size=403
RELOC/fonts/tfm/muhafara/overlock/Overlock-Regular-osf-ts1.tfm
RELOC/fonts/type1/muhafara/overlock/Overlock-Black.pfb
RELOC/fonts/type1/muhafara/overlock/Overlock-BlackItalic.pfb
+ RELOC/fonts/type1/muhafara/overlock/Overlock-BlackItalicLCDFJ.pfb
+ RELOC/fonts/type1/muhafara/overlock/Overlock-BlackLCDFJ.pfb
RELOC/fonts/type1/muhafara/overlock/Overlock-Bold.pfb
RELOC/fonts/type1/muhafara/overlock/Overlock-BoldItalic.pfb
+ RELOC/fonts/type1/muhafara/overlock/Overlock-BoldItalicLCDFJ.pfb
+ RELOC/fonts/type1/muhafara/overlock/Overlock-BoldLCDFJ.pfb
RELOC/fonts/type1/muhafara/overlock/Overlock-Italic.pfb
+ RELOC/fonts/type1/muhafara/overlock/Overlock-ItalicLCDFJ.pfb
RELOC/fonts/type1/muhafara/overlock/Overlock-Regular.pfb
+ RELOC/fonts/type1/muhafara/overlock/Overlock-RegularLCDFJ.pfb
RELOC/fonts/vf/muhafara/overlock/Overlock-Black-lf-ly1.vf
RELOC/fonts/vf/muhafara/overlock/Overlock-Black-lf-ot1.vf
RELOC/fonts/vf/muhafara/overlock/Overlock-Black-lf-t1.vf
@@ -277918,7 +277929,7 @@ binfiles arch=x86_64-solaris size=1
name tex4ht
category Package
-revision 55795
+revision 55803
shortdesc Convert (La)TeX to HTML/XML
longdesc A converter from TeX and LaTeX to SGML-based formats such as
longdesc (X)HTML, MathML, OpenDocument, and DocBook, providing a
@@ -277933,10 +277944,10 @@ longdesc restricted-syntax systems such as hyperlatex and gellmu. Note
longdesc that CTAN no longer holds the definitive sources of the
longdesc package: see the 'Readme' file.
depend tex4ht.ARCH
-containersize 860700
-containerchecksum 05b8506a571b4da8bc1c8e3f6b0cf0b9a74d1d6db180645fcb13ce952c357ea17999234688e0c3778bdcbd67c78b98fba80df278aae1ed8e6c12e210fa7c580b
+containersize 865764
+containerchecksum 8315eaceb40969cf93bf3c3e85f30f626fa0c64e62b253fa7642acf1c522df2e97ad0441013e2dce9e73438001691eadc370c956cda899a17396b9b6d8f95794
doccontainersize 135724
-doccontainerchecksum fa7b6a33dad45f2a98dc3570fd682b75c816d7f8e691dce2ee35f6d3dffeedc051dd86c87f6b8a972dc80940f56f9809b88c6ea6309b3f4e703beb7203f5ede7
+doccontainerchecksum 1c855c36699cb09408a0bca339e18cb2da63fe7134f0ea6d307974424b4690061587eec06db5f9d2f8bf2e1ed0554f21c2160b50706c15f83a2763db7190ed3f
docfiles size=258
texmf-dist/doc/generic/tex4ht/Makefile
texmf-dist/doc/generic/tex4ht/TeX4ht-doc.tex
@@ -316163,23 +316174,29 @@ catalogue-topics biblatex
name wintools.win32
category TLCore
-revision 54074
+revision 55798
shortdesc utilities provided only for Windows
longdesc Common utilities, mainly from the w32tex distribution.
+postaction filetype name="TL.PSViewer.view" cmd='"TEXDIR/bin/win32/psviewer.exe" "%1"'
postaction filetype name="TL.bitmap2eps.convert" cmd='"TEXDIR/bin/win32/bitmap2eps.exe" "%1"'
postaction progid extension=.bmp filetype="TL.bitmap2eps.convert"
+postaction progid extension=.eps filetype="TL.PSViewer.view"
postaction progid extension=.gif filetype="TL.bitmap2eps.convert"
postaction progid extension=.jpe filetype="TL.bitmap2eps.convert"
postaction progid extension=.jpeg filetype="TL.bitmap2eps.convert"
postaction progid extension=.jpg filetype="TL.bitmap2eps.convert"
postaction progid extension=.png filetype="TL.bitmap2eps.convert"
+postaction progid extension=.ps filetype="TL.PSViewer.view"
postaction progid extension=.tif filetype="TL.bitmap2eps.convert"
postaction progid extension=.tiff filetype="TL.bitmap2eps.convert"
-containersize 4981948
-containerchecksum 83f3dfcf9512f2f4130c658cfb0c44e19f9c3566870e23964bca217e0d881ea93d4b798f5666e17e97001e1c56556aec7f3c7091052199680fecc5219f77e18c
-doccontainersize 973264
-doccontainerchecksum 600b32199451dab5a56167854a188b9e1db48b6e128a5a83f74a141ae315528cc80cf626957eb1ad2f87815f23bd2aaabfbdf756435f7626f8905969be29737e
-docfiles size=332
+containersize 4987420
+containerchecksum 56fbdb388b3b16ccc975ee618c083e01811a49c5ccb7971527b6fd74c8b11f587abb126dd72bcbbada2428780001f3ced0853f16fe1ecd33c7fc1408c4f66b48
+doccontainersize 977368
+doccontainerchecksum 9b99d5c311838367af106242dbbb90e216058ba28162c679e205f1a720738536c05a40ee5326977fb2441e5e40fa9adb69f84876874fb3c5b6434fab885122be
+docfiles size=337
+ texmf-dist/doc/psviewer/psviewer.README
+ texmf-dist/doc/psviewer/psviewer.ico
+ texmf-dist/doc/psviewer/psviewer.svg
texmf-dist/doc/support/tlaunch/COPYING
texmf-dist/doc/support/tlaunch/Changes
texmf-dist/doc/support/tlaunch/README
@@ -316213,11 +316230,12 @@ docfiles size=332
texmf-dist/doc/support/wintools/pdfunite.pdf
texmf-dist/doc/support/wintools/unzip.pdf
texmf-dist/doc/support/wintools/zip.pdf
-runfiles size=3
+runfiles size=4
texmf-dist/scripts/bitmap2eps/bitmap2eps.vbs
+ texmf-dist/scripts/psviewer/psviewer.vbs
texmf-dist/scripts/tlaunch/tlaunchmode.pl
texmf-dist/web2c/tlaunch.ini
-binfiles arch=win32 size=7865
+binfiles arch=win32 size=7870
bin/win32/aftopl.exe
bin/win32/bitmap2eps.exe
bin/win32/bmeps.exe
@@ -316242,6 +316260,7 @@ binfiles arch=win32 size=7865
bin/win32/pdfunite.exe
bin/win32/png22pnm.exe
bin/win32/png2bmp.exe
+ bin/win32/psviewer.exe
bin/win32/sam2p.exe
bin/win32/texview.exe
bin/win32/tif22pnm.exe
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index c7a9042d55..9a2ef4dc32 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-59d7847fb52c83205071c8ddac1e6696 texlive.tlpdb
+1d58aad7014102bcf4adcc3909d65711 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 207edc8589..e7817621e7 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-2e8bb16297c7992cf03f64827a3364ac06029e6ed2e39e8ae4de45700a623db36b429aa10ce140cb2f431680879de5ab0652bd2f16c9f0cfd0ee3beec61d8860 texlive.tlpdb
+bc43b387126afe33aff5082d797c2b2d4aeeb2840dbff190602a9b66ef6559b059499b6f4bbdb842d1961b702827bbdcfa802f7b63fa9229772c587426b216f8 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 3ce2a16558..667b06bd79 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJfB666AAoJEEzhh34ZQ4xwhvAIAL2UjJuGyF9HMKGwXRET/Yld
-aSyr150gmB+mWlxiqegP9wVe7W075ifIaaqJZzjkjtkjAH+w3qN1aweM1zrxSiT6
-qcO/JajaXWWj8+dRTq0TW4vZ80DnEdStqBYUfXwqdzpz89NStgtuN2XT3HEqAjfs
-jkV3JSpbHRYgYrPQOB7mtZN90EQZ29WyjU6VLO3cDNrYRYD6OhkvBcGqpctkL60V
-lh3RjE6NEa/Aioy2407THiRwBXFQB2/7aGW0u+rUdNUT7JYerK6ACinFKLzMeNZz
-RRAmsbrxFuEkzQxqTECXZvrV9oedLBRSF04ySdPDV197frM2t75BeG8ht5rmUbQ=
-=8dFd
+iQEcBAEBCgAGBQJfCQBBAAoJEEzhh34ZQ4xwkLoIAIZm2HWn34cYtWVGgR3lak86
+TpzV9MYxn8/Sitbxh3ZzhUozGG531V1kDWwVDSAEtGAX1SYWymd2oua7wrhlUMkY
+1yNfX2gV+AldjyN8IBadCzEWusjzTTtf089An6ye1o4RCIEqsb4DiTuAKeP9NCLp
+U40taGLV5fXiaA1GxIC0Sw9aa0fSc38dTAsQ//o/jTYvUcX6HwWGQVcpkO53aEBZ
+KPXLoo22/0tHg8PGd/GDO7+m+IP3f2baEoNmmErSaCGs9gA2DUrBcM0o6gS28ii9
+1hmcSWfC+caEDHnG+/NWZEEUMrU+I2nCxO7uPtgwbrirznKCFjl3i0dDvmdXEoc=
+=22Vg
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 890cf25d85..bd4f05f4d0 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index aa1fa63c8d..2757057aa1 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1594325813
+date=1594412144
lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9
-lstdigest=7e13fe8610b5841bb88d0c7e74e1211e
+lstdigest=feced15b4d33639aacf634f4f5dec59c
numpkg=3949
relstate=next
-version=7495
+version=7496
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: B72C2zmVyYaFn++GKdUQ3N6Gl4uORb8iyYxXrV30B8KOVSxbfKQiDSRH4cEuGK1SST3vlGeit/hUAxGTWopGaCSql3EaBDFY4lLGXn7+K5xPz+aqGVtTD72oupGPScEvqk6RDDBu4gruw5XSIF3tCyB6NWswgfrhSEVraPQ/8iJM6zKpGOialc3yofd/AXsaCLa3WjGPjtvPxFHzZHdpUWXHh4TWcJlrT6xZjGRO244h6tk7/puVww++E3exsFZDiY9STnpInhHRL9nC4SDH9zvo6yMqj7HYaBAZCW19uptWiQytTTrccx1AZ3DbaE9lmxGdXuL71LDAtwV6pq+faw==
+;;;; signature/miktex: XSsfpg+qmJBTNdKAzBZW6BLQSfhHYBWC8ZxxBJdY2H8KL/tiR8hdmlyj1RdavjHSVsoCk+TdlgSJ2FRLw97+5PzXiw804dXWRKJ+fWeK8m8IEy1PhLtqKnVkl7QbIPhoznifMY+GU7hGcSun7aMWrKJ03lhDIDhRWo2jr9bm8I2im+Fd5pUQ1uV8fS2V4ftP9B0fjB2aEpfk3rDR5+LZtlNzJv82Hx+PzE2kd97zLXqPmIBMU+L8W8rzBcmlwUnozYfjggZpp/7JV8/gKwKGoxLSKPNmubzJC5Z8KoRDP6i2IJyn/rg5iAepOSFWSGYm97mnbxluynyTSY19PZ9Pig==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index 24c2615ed0..95c12fd0dc 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1594325522
+date=1594411914
lastupd=babel babel-french beamerthemenord cascade circuitikz de-macro ekdosis eplain expkv expkv-def guitlogo mcf2graph media9 miktex-misc nanicolle overlock reledmac semantex beamerappendixnote bubblesort
-lstdigest=f280bc3cc2da3e6fa9cc442ed186d5a0
+lstdigest=2a09a3f7cbb2137a05867aba825bfdd0
numpkg=3944
relstate=stable
-version=7495
+version=7496
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: TcxNoSYu9HxK1bayCAb7faRTQPfJoPaxJnEGXzrNd4u2C2ed24g/XQV4qsC9cRfPuIUDdbn/PCPcnJyySh9/xV5Ag8hDr+FT0fu+Z4KBX3rxeOTheLKY366Cuc6LQC1tpUURVVwSCz9yqoiCEl759ofXAmlrGvTqiAGZaDROGoao1JOaw1XXcDytG2tin8gF6hDphNr2UAsB6bmuT1lyGz2jq47zjmlRag5RZWGuRkQ0x/655/WqY+oxuXRiRm/Z5VmlUN6wit2T2frPv89f5lwHYWSge8gpOjrKi3+BuCGNNSXoqDC+tn8Rw6vFsjSdPGa7G3S8G1OlEFeGdkZtFA==
+;;;; signature/miktex: bEx10TDdMYD39lpf+INlH8tgpt1XwaSGPQz4vaoeNR+uHgrFvX4gQofKrC+6pFn9zJXl/fY1o0VuW1S0HlI1702nI4nRGF7XqECDTkQSu41DMSfniG0iAYStUGFLn5089plOghOjb8guyYlIeC+mV7N+2fGFxgrGTq+2BQ40lKP1ps6u9KQB5Baagjulk5bURty4SbYgKmQl7vLMYpXW1KC0iCOr0KUrJ8dGflhfQMlaUXZTcw7qc1l5hMoHGSAHr+ZoJdSzNv8rjZiZUve323Mm4T+jmf7fvqjZrBs3vdxEzoDrMRGvW+h9hCJV5EDz3HAICkFJcUBqp/iCUVOa6g==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/w32tex/ChangeLog b/systems/win32/w32tex/ChangeLog
index 9d567b69e5..d850b6f7b3 100644
--- a/systems/win32/w32tex/ChangeLog
+++ b/systems/win32/w32tex/ChangeLog
@@ -1,5 +1,17 @@
W32TeX (x86 & x64) ChangeLog
+[2020/07/10]
+(01) context.tar.xz
+ ConTeXt version: 2020.07.09 14:48.
+(02) ltxpkgs.tar.xz
+ Update relsize.
+(03) tex4htk-w32.tar.xz
+ Update tei.4ht.
+(04) web2c-w32.tar.xz
+ Update bib2gls.
+(05) win64/context-w64.tar.xz
+ Update mtxrun.lua
+
[2020/07/09]
(01) cjkzr.tar.xz
Add ctex.
diff --git a/timestamp b/timestamp
index 5565578fd4..a8424fd576 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2020-07-10-02-02
+2020-07-11-02-02