From 5afea81825528668c66deae694ef5790b19befe9 Mon Sep 17 00:00:00 2001 From: Barpfotenbaer Date: Tue, 2 Mar 2021 13:27:45 +0100 Subject: [PATCH] Kurt Jungs Auslieferungszustand --- LICENSE | 21 + Makefile | 29 + README.md | 282 + attachments.go | 157 + compare.go | 146 + contrib/barcode/barcode.go | 302 + contrib/barcode/barcode_test.go | 222 + contrib/ghostscript/ghostscript.go | 68 + contrib/gofpdi/gofpdi.go | 143 + contrib/gofpdi/gofpdi_test.go | 76 + contrib/httpimg/httpimg.go | 43 + contrib/httpimg/httpimg_test.go | 23 + contrib/tiff/tiff.go | 83 + contrib/tiff/tiff_test.go | 23 + def.go | 738 +++ doc.go | 291 + doc/document.md | 288 + doc/go.awk | 13 + doc/html.txt | 68 + embedded.go | 559 ++ font.go | 474 ++ font/CalligrapherRegular.afm | 272 + font/CalligrapherRegular.pfb | Bin 0 -> 45189 bytes font/DejaVuSansCondensed-Bold.ttf | Bin 0 -> 665028 bytes font/DejaVuSansCondensed-BoldOblique.ttf | Bin 0 -> 611836 bytes font/DejaVuSansCondensed-Oblique.ttf | Bin 0 -> 599292 bytes font/DejaVuSansCondensed.json | 1 + font/DejaVuSansCondensed.ttf | Bin 0 -> 680264 bytes font/calligra.json | 1 + font/calligra.ttf | Bin 0 -> 40120 bytes font/calligra.z | Bin 0 -> 25812 bytes font/courier.json | 1 + font/courierb.json | 1 + font/courierbi.json | 1 + font/courieri.json | 1 + font/cp1250.map | 251 + font/cp1251.map | 255 + font/cp1252.map | 251 + font/cp1253.map | 239 + font/cp1254.map | 249 + font/cp1255.map | 233 + font/cp1257.map | 244 + font/cp1258.map | 247 + font/cp874.map | 225 + font/helvetica.json | 1 + font/helvetica_1251.json | 1 + font/helvetica_1251.z | Bin 0 -> 154625 bytes font/helvetica_1253.json | 1 + font/helvetica_1253.z | Bin 0 -> 154625 bytes font/helveticab.json | 1 + font/helveticabi.json | 1 + font/helveticai.json | 1 + font/iso-8859-1.map | 256 + font/iso-8859-11.map | 248 + font/iso-8859-15.map | 256 + font/iso-8859-16.map | 256 + font/iso-8859-2.map | 256 + font/iso-8859-4.map | 256 + font/iso-8859-5.map | 256 + font/iso-8859-7.map | 250 + font/iso-8859-9.map | 256 + font/koi8-r.map | 256 + font/koi8-u.map | 256 + font/times.json | 1 + font/timesb.json | 1 + font/timesbi.json | 1 + font/timesi.json | 1 + font/zapfdingbats.json | 1 + fpdf.go | 4998 +++++++++++++++++ fpdf_test.go | 2924 ++++++++++ fpdftrans.go | 213 + go.mod | 12 + go.sum | 20 + grid.go | 446 ++ htmlbasic.go | 220 + image/doc.png | Bin 0 -> 1556 bytes image/doc.svg | 20 + image/fpdf.png | Bin 0 -> 7551 bytes image/gofpdf.png | Bin 0 -> 11832 bytes image/golang-gopher.png | Bin 0 -> 89846 bytes image/golang-gopher.tiff | Bin 0 -> 114398 bytes image/logo-gray.png | Bin 0 -> 3438 bytes image/logo-progressive.jpg | Bin 0 -> 7610 bytes image/logo-rgb.png | Bin 0 -> 7083 bytes image/logo.gif | Bin 0 -> 2767 bytes image/logo.jpg | Bin 0 -> 4298 bytes image/logo.png | Bin 0 -> 2373 bytes image/logo_gofpdf.jpg | Bin 0 -> 81880 bytes image/mit.png | Bin 0 -> 1171 bytes image/mit.svg | 20 + image/signature.svg | 73 + image/sweden.png | Bin 0 -> 472 bytes internal/example/example.go | 143 + internal/example/example_test.go | 31 + internal/files/bin/Makefile | 24 + internal/files/bin/bin.go | 28 + internal/files/files.go | 1691 ++++++ label.go | 82 + layer.go | 121 + list/list.go | 59 + makefont/doc.go | 23 + makefont/makefont.go | 71 + makefont/makefont_test.go | 26 + pdf/.empty | 0 pdf/reference/Fpdf_AddFont.pdf | Bin 0 -> 27794 bytes pdf/reference/Fpdf_AddLayer.pdf | Bin 0 -> 1468 bytes pdf/reference/Fpdf_AddPage.pdf | Bin 0 -> 6423 bytes pdf/reference/Fpdf_AddUTF8Font.pdf | Bin 0 -> 67549 bytes pdf/reference/Fpdf_Beziergon.pdf | 108 + pdf/reference/Fpdf_Bookmark.pdf | 147 + pdf/reference/Fpdf_CellFormat_align.pdf | Bin 0 -> 32553 bytes pdf/reference/Fpdf_CellFormat_codepage.pdf | Bin 0 -> 315955 bytes .../Fpdf_CellFormat_codepageescape.pdf | 85 + pdf/reference/Fpdf_CellFormat_tables.pdf | 323 ++ pdf/reference/Fpdf_Circle_figures.pdf | 231 + pdf/reference/Fpdf_ClipText.pdf | Bin 0 -> 11018 bytes pdf/reference/Fpdf_ClippedTableCells.pdf | 694 +++ pdf/reference/Fpdf_CreateTemplate.pdf | Bin 0 -> 10829 bytes pdf/reference/Fpdf_DrawPath_fill.pdf | 277 + pdf/reference/Fpdf_EmbeddedFont.pdf | Bin 0 -> 27799 bytes pdf/reference/Fpdf_HTMLBasicNew.pdf | Bin 0 -> 5664 bytes .../Fpdf_LinearGradient_gradient.pdf | 150 + pdf/reference/Fpdf_MoveTo_path.pdf | 75 + pdf/reference/Fpdf_MultiCell.pdf | 499 ++ pdf/reference/Fpdf_PageSize.pdf | 119 + pdf/reference/Fpdf_Polygon.pdf | 371 ++ pdf/reference/Fpdf_SVGBasicWrite.pdf | 947 ++++ pdf/reference/Fpdf_SetFontLoader.pdf | Bin 0 -> 27794 bytes .../Fpdf_SetLeftMargin_multicolumn.pdf | 1082 ++++ pdf/reference/Fpdf_SetLineJoinStyle_caps.pdf | 105 + pdf/reference/Fpdf_SetProtection.pdf | Bin 0 -> 1056 bytes pdf/reference/Fpdf_SplitLines_tables.pdf | 159 + pdf/reference/Fpdf_Splitlines.pdf | 90 + pdf/reference/Fpdf_TransformBegin.pdf | 176 + pdf/reference/Fpdf_UnderlineThickness.pdf | Bin 0 -> 1156 bytes pdf/reference/Fpdf_WrappedTableCells.pdf | 327 ++ pdf/reference/Fpdf_WriteAligned.pdf | Bin 0 -> 1122 bytes pdf/reference/basic.pdf | 75 + png.go | 213 + protect.go | 114 + splittext.go | 53 + spotcolor.go | 184 + subwrite.go | 35 + svgbasic.go | 246 + svgwrite.go | 85 + template.go | 284 + template_impl.go | 303 + text/20k_c1.txt | 10 + text/20k_c2.txt | 23 + text/countries.txt | 15 + text/utf-8test.txt | 38 + text/utf-8test2.txt | 1 + ttfparser.go | 374 ++ ttfparser_test.go | 74 + utf8fontfile.go | 1154 ++++ util.go | 462 ++ 156 files changed, 30287 insertions(+) create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 attachments.go create mode 100644 compare.go create mode 100644 contrib/barcode/barcode.go create mode 100644 contrib/barcode/barcode_test.go create mode 100644 contrib/ghostscript/ghostscript.go create mode 100644 contrib/gofpdi/gofpdi.go create mode 100644 contrib/gofpdi/gofpdi_test.go create mode 100644 contrib/httpimg/httpimg.go create mode 100644 contrib/httpimg/httpimg_test.go create mode 100644 contrib/tiff/tiff.go create mode 100644 contrib/tiff/tiff_test.go create mode 100644 def.go create mode 100644 doc.go create mode 100644 doc/document.md create mode 100644 doc/go.awk create mode 100644 doc/html.txt create mode 100644 embedded.go create mode 100644 font.go create mode 100644 font/CalligrapherRegular.afm create mode 100644 font/CalligrapherRegular.pfb create mode 100644 font/DejaVuSansCondensed-Bold.ttf create mode 100644 font/DejaVuSansCondensed-BoldOblique.ttf create mode 100644 font/DejaVuSansCondensed-Oblique.ttf create mode 100644 font/DejaVuSansCondensed.json create mode 100644 font/DejaVuSansCondensed.ttf create mode 100644 font/calligra.json create mode 100644 font/calligra.ttf create mode 100644 font/calligra.z create mode 100644 font/courier.json create mode 100644 font/courierb.json create mode 100644 font/courierbi.json create mode 100644 font/courieri.json create mode 100644 font/cp1250.map create mode 100644 font/cp1251.map create mode 100644 font/cp1252.map create mode 100644 font/cp1253.map create mode 100644 font/cp1254.map create mode 100644 font/cp1255.map create mode 100644 font/cp1257.map create mode 100644 font/cp1258.map create mode 100644 font/cp874.map create mode 100644 font/helvetica.json create mode 100644 font/helvetica_1251.json create mode 100644 font/helvetica_1251.z create mode 100644 font/helvetica_1253.json create mode 100644 font/helvetica_1253.z create mode 100644 font/helveticab.json create mode 100644 font/helveticabi.json create mode 100644 font/helveticai.json create mode 100644 font/iso-8859-1.map create mode 100644 font/iso-8859-11.map create mode 100644 font/iso-8859-15.map create mode 100644 font/iso-8859-16.map create mode 100644 font/iso-8859-2.map create mode 100644 font/iso-8859-4.map create mode 100644 font/iso-8859-5.map create mode 100644 font/iso-8859-7.map create mode 100644 font/iso-8859-9.map create mode 100644 font/koi8-r.map create mode 100644 font/koi8-u.map create mode 100644 font/times.json create mode 100644 font/timesb.json create mode 100644 font/timesbi.json create mode 100644 font/timesi.json create mode 100644 font/zapfdingbats.json create mode 100644 fpdf.go create mode 100644 fpdf_test.go create mode 100644 fpdftrans.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 grid.go create mode 100644 htmlbasic.go create mode 100644 image/doc.png create mode 100644 image/doc.svg create mode 100644 image/fpdf.png create mode 100644 image/gofpdf.png create mode 100644 image/golang-gopher.png create mode 100644 image/golang-gopher.tiff create mode 100644 image/logo-gray.png create mode 100644 image/logo-progressive.jpg create mode 100644 image/logo-rgb.png create mode 100644 image/logo.gif create mode 100644 image/logo.jpg create mode 100644 image/logo.png create mode 100644 image/logo_gofpdf.jpg create mode 100644 image/mit.png create mode 100644 image/mit.svg create mode 100644 image/signature.svg create mode 100644 image/sweden.png create mode 100644 internal/example/example.go create mode 100644 internal/example/example_test.go create mode 100644 internal/files/bin/Makefile create mode 100644 internal/files/bin/bin.go create mode 100644 internal/files/files.go create mode 100644 label.go create mode 100644 layer.go create mode 100644 list/list.go create mode 100644 makefont/doc.go create mode 100644 makefont/makefont.go create mode 100644 makefont/makefont_test.go create mode 100644 pdf/.empty create mode 100644 pdf/reference/Fpdf_AddFont.pdf create mode 100644 pdf/reference/Fpdf_AddLayer.pdf create mode 100644 pdf/reference/Fpdf_AddPage.pdf create mode 100644 pdf/reference/Fpdf_AddUTF8Font.pdf create mode 100644 pdf/reference/Fpdf_Beziergon.pdf create mode 100644 pdf/reference/Fpdf_Bookmark.pdf create mode 100644 pdf/reference/Fpdf_CellFormat_align.pdf create mode 100644 pdf/reference/Fpdf_CellFormat_codepage.pdf create mode 100644 pdf/reference/Fpdf_CellFormat_codepageescape.pdf create mode 100644 pdf/reference/Fpdf_CellFormat_tables.pdf create mode 100644 pdf/reference/Fpdf_Circle_figures.pdf create mode 100644 pdf/reference/Fpdf_ClipText.pdf create mode 100644 pdf/reference/Fpdf_ClippedTableCells.pdf create mode 100644 pdf/reference/Fpdf_CreateTemplate.pdf create mode 100644 pdf/reference/Fpdf_DrawPath_fill.pdf create mode 100644 pdf/reference/Fpdf_EmbeddedFont.pdf create mode 100644 pdf/reference/Fpdf_HTMLBasicNew.pdf create mode 100644 pdf/reference/Fpdf_LinearGradient_gradient.pdf create mode 100644 pdf/reference/Fpdf_MoveTo_path.pdf create mode 100644 pdf/reference/Fpdf_MultiCell.pdf create mode 100644 pdf/reference/Fpdf_PageSize.pdf create mode 100644 pdf/reference/Fpdf_Polygon.pdf create mode 100644 pdf/reference/Fpdf_SVGBasicWrite.pdf create mode 100644 pdf/reference/Fpdf_SetFontLoader.pdf create mode 100644 pdf/reference/Fpdf_SetLeftMargin_multicolumn.pdf create mode 100644 pdf/reference/Fpdf_SetLineJoinStyle_caps.pdf create mode 100644 pdf/reference/Fpdf_SetProtection.pdf create mode 100644 pdf/reference/Fpdf_SplitLines_tables.pdf create mode 100644 pdf/reference/Fpdf_Splitlines.pdf create mode 100644 pdf/reference/Fpdf_TransformBegin.pdf create mode 100644 pdf/reference/Fpdf_UnderlineThickness.pdf create mode 100644 pdf/reference/Fpdf_WrappedTableCells.pdf create mode 100644 pdf/reference/Fpdf_WriteAligned.pdf create mode 100644 pdf/reference/basic.pdf create mode 100644 png.go create mode 100644 protect.go create mode 100644 splittext.go create mode 100644 spotcolor.go create mode 100644 subwrite.go create mode 100644 svgbasic.go create mode 100644 svgwrite.go create mode 100644 template.go create mode 100644 template_impl.go create mode 100644 text/20k_c1.txt create mode 100644 text/20k_c2.txt create mode 100644 text/countries.txt create mode 100644 text/utf-8test.txt create mode 100644 text/utf-8test2.txt create mode 100644 ttfparser.go create mode 100644 ttfparser_test.go create mode 100644 utf8fontfile.go create mode 100644 util.go diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..946bb79 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Kurt Jung and contributors acknowledged in the documentation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..90624c5 --- /dev/null +++ b/Makefile @@ -0,0 +1,29 @@ +all : documentation + +documentation : doc/index.html doc.go README.md + +cov : all + go test -v -coverprofile=coverage && go tool cover -html=coverage -o=coverage.html + +check : + golint . + go vet -all . + gofmt -s -l . + goreportcard-cli -v | grep -v cyclomatic + +README.md : doc/document.md + pandoc --read=markdown --write=gfm < $< > $@ + +doc/index.html : doc/document.md doc/html.txt + pandoc --read=markdown --write=html --template=doc/html.txt \ + --metadata pagetitle="GoFPDF Document Generator" < $< > $@ + +doc.go : doc/document.md doc/go.awk + pandoc --read=markdown --write=plain $< | awk --assign=package_name=gofpdf --file=doc/go.awk > $@ + gofmt -s -w $@ + +build : + go build -v + +clean : + rm -f coverage.html coverage doc/index.html doc.go README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..e1725da --- /dev/null +++ b/README.md @@ -0,0 +1,282 @@ +# GoFPDF document generator + +[![No Maintenance +Intended](http://unmaintained.tech/badge.svg)](http://unmaintained.tech/) +[![MIT +licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/jung-kurt/gofpdf/master/LICENSE) +[![Report](https://goreportcard.com/badge/github.com/jung-kurt/gofpdf)](https://goreportcard.com/report/github.com/jung-kurt/gofpdf) +[![GoDoc](https://img.shields.io/badge/godoc-GoFPDF-blue.svg)](https://godoc.org/github.com/jung-kurt/gofpdf) + +![](https://github.com/jung-kurt/gofpdf/raw/master/image/logo_gofpdf.jpg?raw=true) + +Package gofpdf implements a PDF document generator with high level +support for text, drawing and images. + +## Features + + - UTF-8 support + - Choice of measurement unit, page format and margins + - Page header and footer management + - Automatic page breaks, line breaks, and text justification + - Inclusion of JPEG, PNG, GIF, TIFF and basic path-only SVG images + - Colors, gradients and alpha channel transparency + - Outline bookmarks + - Internal and external links + - TrueType, Type1 and encoding support + - Page compression + - Lines, Bézier curves, arcs, and ellipses + - Rotation, scaling, skewing, translation, and mirroring + - Clipping + - Document protection + - Layers + - Templates + - Barcodes + - Charting facility + - Import PDFs as templates + +gofpdf has no dependencies other than the Go standard library. All tests +pass on Linux, Mac and Windows platforms. + +gofpdf supports UTF-8 TrueType fonts and “right-to-left” languages. Note +that Chinese, Japanese, and Korean characters may not be included in +many general purpose fonts. For these languages, a specialized font (for +example, +[NotoSansSC](https://github.com/jsntn/webfonts/blob/master/NotoSansSC-Regular.ttf) +for simplified Chinese) can be used. + +Also, support is provided to automatically translate UTF-8 runes to code +page encodings for languages that have fewer than 256 glyphs. + +## We Are Closed + +This repository will not be maintained, at least for some unknown +duration. But it is hoped that gofpdf has a bright future in the open +source world. Due to Go’s promise of compatibility, gofpdf should +continue to function without modification for a longer time than would +be the case with many other languages. + +Forks should be based on the [last viable +commit](https://github.com/jung-kurt/gofpdf/commit/603f56990463f011cb1dbb64ef7f872c1adc009a). +Tools such as +[active-forks](https://techgaun.github.io/active-forks/index.html#jung-kurt/gofpdf) +can be used to select a fork that looks promising for your needs. If a +particular fork looks like it has taken the lead in attracting +followers, this README will be updated to point people in that +direction. + +The efforts of all contributors to this project have been deeply +appreciated. Best wishes to all of you. + +## Installation + +To install the package on your system, run + +``` shell +go get github.com/jung-kurt/gofpdf +``` + +Later, to receive updates, run + +``` shell +go get -u -v github.com/jung-kurt/gofpdf/... +``` + +## Quick Start + +The following Go code generates a simple PDF file. + +``` go +pdf := gofpdf.New("P", "mm", "A4", "") +pdf.AddPage() +pdf.SetFont("Arial", "B", 16) +pdf.Cell(40, 10, "Hello, world") +err := pdf.OutputFileAndClose("hello.pdf") +``` + +See the functions in the +[fpdf\_test.go](https://github.com/jung-kurt/gofpdf/blob/master/fpdf_test.go) +file (shown as examples in this documentation) for more advanced PDF +examples. + +## Errors + +If an error occurs in an Fpdf method, an internal error field is set. +After this occurs, Fpdf method calls typically return without performing +any operations and the error state is retained. This error management +scheme facilitates PDF generation since individual method calls do not +need to be examined for failure; it is generally sufficient to wait +until after `Output()` is called. For the same reason, if an error +occurs in the calling application during PDF generation, it may be +desirable for the application to transfer the error to the Fpdf instance +by calling the `SetError()` method or the `SetErrorf()` method. At any +time during the life cycle of the Fpdf instance, the error state can be +determined with a call to `Ok()` or `Err()`. The error itself can be +retrieved with a call to `Error()`. + +## Conversion Notes + +This package is a relatively straightforward translation from the +original [FPDF](http://www.fpdf.org/) library written in PHP (despite +the caveat in the introduction to [Effective +Go](https://golang.org/doc/effective_go.html)). The API names have been +retained even though the Go idiom would suggest otherwise (for example, +`pdf.GetX()` is used rather than simply `pdf.X()`). The similarity of +the two libraries makes the original FPDF website a good source of +information. It includes a forum and FAQ. + +However, some internal changes have been made. Page content is built up +using buffers (of type bytes.Buffer) rather than repeated string +concatenation. Errors are handled as explained above rather than +panicking. Output is generated through an interface of type io.Writer or +io.WriteCloser. A number of the original PHP methods behave differently +based on the type of the arguments that are passed to them; in these +cases additional methods have been exported to provide similar +functionality. Font definition files are produced in JSON rather than +PHP. + +## Example PDFs + +A side effect of running `go test ./...` is the production of a number +of example PDFs. These can be found in the gofpdf/pdf directory after +the tests complete. + +Please note that these examples run in the context of a test. In order +run an example as a standalone application, you’ll need to examine +[fpdf\_test.go](https://github.com/jung-kurt/gofpdf/blob/master/fpdf_test.go) +for some helper routines, for example `exampleFilename()` and +`summary()`. + +Example PDFs can be compared with reference copies in order to verify +that they have been generated as expected. This comparison will be +performed if a PDF with the same name as the example PDF is placed in +the gofpdf/pdf/reference directory and if the third argument to +`ComparePDFFiles()` in internal/example/example.go is true. (By default +it is false.) The routine that summarizes an example will look for this +file and, if found, will call `ComparePDFFiles()` to check the example +PDF for equality with its reference PDF. If differences exist between +the two files they will be printed to standard output and the test will +fail. If the reference file is missing, the comparison is considered to +succeed. In order to successfully compare two PDFs, the placement of +internal resources must be consistent and the internal creation +timestamps must be the same. To do this, the methods `SetCatalogSort()` +and `SetCreationDate()` need to be called for both files. This is done +automatically for all examples. + +## Nonstandard Fonts + +Nothing special is required to use the standard PDF fonts (courier, +helvetica, times, zapfdingbats) in your documents other than calling +`SetFont()`. + +You should use `AddUTF8Font()` or `AddUTF8FontFromBytes()` to add a +TrueType UTF-8 encoded font. Use `RTL()` and `LTR()` methods switch +between “right-to-left” and “left-to-right” mode. + +In order to use a different non-UTF-8 TrueType or Type1 font, you will +need to generate a font definition file and, if the font will be +embedded into PDFs, a compressed version of the font file. This is done +by calling the MakeFont function or using the included makefont command +line utility. To create the utility, cd into the makefont subdirectory +and run “go build”. This will produce a standalone executable named +makefont. Select the appropriate encoding file from the font +subdirectory and run the command as in the following example. + +``` shell +./makefont --embed --enc=../font/cp1252.map --dst=../font ../font/calligra.ttf +``` + +In your PDF generation code, call `AddFont()` to load the font and, as +with the standard fonts, SetFont() to begin using it. Most examples, +including the package example, demonstrate this method. Good sources of +free, open-source fonts include [Google +Fonts](https://fonts.google.com/) and [DejaVu +Fonts](http://dejavu-fonts.org/). + +## Related Packages + +The [draw2d](https://github.com/llgcode/draw2d) package is a two +dimensional vector graphics library that can generate output in +different forms. It uses gofpdf for its document production mode. + +## Contributing Changes + +gofpdf is a global community effort and you are invited to make it even +better. If you have implemented a new feature or corrected a problem, +please consider contributing your change to the project. A contribution +that does not directly pertain to the core functionality of gofpdf +should be placed in its own directory directly beneath the `contrib` +directory. + +Here are guidelines for making submissions. Your change should + + - be compatible with the MIT License + - be properly documented + - be formatted with `go fmt` + - include an example in + [fpdf\_test.go](https://github.com/jung-kurt/gofpdf/blob/master/fpdf_test.go) + if appropriate + - conform to the standards of [golint](https://github.com/golang/lint) + and [go vet](https://golang.org/cmd/vet/), that is, `golint .` and + `go vet .` should not generate any warnings + - not diminish [test coverage](https://blog.golang.org/cover) + +[Pull requests](https://help.github.com/articles/using-pull-requests/) +are the preferred means of accepting your changes. + +## License + +gofpdf is released under the MIT License. It is copyrighted by Kurt Jung +and the contributors acknowledged below. + +## Acknowledgments + +This package’s code and documentation are closely derived from the +[FPDF](http://www.fpdf.org/) library created by Olivier Plathey, and a +number of font and image resources are copied directly from it. Bruno +Michel has provided valuable assistance with the code. Drawing support +is adapted from the FPDF geometric figures script by David Hernández +Sanz. Transparency support is adapted from the FPDF transparency script +by Martin Hall-May. Support for gradients and clipping is adapted from +FPDF scripts by Andreas Würmser. Support for outline bookmarks is +adapted from Olivier Plathey by Manuel Cornes. Layer support is adapted +from Olivier Plathey. Support for transformations is adapted from the +FPDF transformation script by Moritz Wagner and Andreas Würmser. PDF +protection is adapted from the work of Klemen Vodopivec for the FPDF +product. Lawrence Kesteloot provided code to allow an image’s extent to +be determined prior to placement. Support for vertical alignment within +a cell was provided by Stefan Schroeder. Ivan Daniluk generalized the +font and image loading code to use the Reader interface while +maintaining backward compatibility. Anthony Starks provided code for the +Polygon function. Robert Lillack provided the Beziergon function and +corrected some naming issues with the internal curve function. Claudio +Felber provided implementations for dashed line drawing and generalized +font loading. Stani Michiels provided support for multi-segment path +drawing with smooth line joins, line join styles, enhanced fill modes, +and has helped greatly with package presentation and tests. Templating +is adapted by Marcus Downing from the FPDF\_Tpl library created by Jan +Slabon and Setasign. Jelmer Snoeck contributed packages that generate a +variety of barcodes and help with registering images on the web. Jelmer +Snoek and Guillermo Pascual augmented the basic HTML functionality with +aligned text. Kent Quirk implemented backwards-compatible support for +reading DPI from images that support it, and for setting DPI manually +and then having it properly taken into account when calculating image +size. Paulo Coutinho provided support for static embedded fonts. Dan +Meyers added support for embedded JavaScript. David Fish added a generic +alias-replacement function to enable, among other things, table of +contents functionality. Andy Bakun identified and corrected a problem in +which the internal catalogs were not sorted stably. Paul Montag added +encoding and decoding functionality for templates, including images that +are embedded in templates; this allows templates to be stored +independently of gofpdf. Paul also added support for page boxes used in +printing PDF documents. Wojciech Matusiak added supported for word +spacing. Artem Korotkiy added support of UTF-8 fonts. Dave Barnes added +support for imported objects and templates. Brigham Thompson added +support for rounded rectangles. Joe Westcott added underline +functionality and optimized image storage. Benoit KUGLER contributed +support for rectangles with corners of unequal radius, modification +times, and for file attachments and annotations. + +## Roadmap + + - Remove all legacy code page font support; use UTF-8 exclusively + - Improve test coverage as reported by the coverage tool. diff --git a/attachments.go b/attachments.go new file mode 100644 index 0000000..6e397b7 --- /dev/null +++ b/attachments.go @@ -0,0 +1,157 @@ +package gofpdf + +import ( + "crypto/md5" + "encoding/hex" + "fmt" + "strings" +) + +// Attachment defines a content to be included in the pdf, in one +// of the following ways : +// - associated with the document as a whole : see SetAttachments() +// - accessible via a link localized on a page : see AddAttachmentAnnotation() +type Attachment struct { + Content []byte + + // Filename is the displayed name of the attachment + Filename string + + // Description is only displayed when using AddAttachmentAnnotation(), + // and might be modified by the pdf reader. + Description string + + objectNumber int // filled when content is included +} + +// return the hex encoded checksum of `data` +func checksum(data []byte) string { + tmp := md5.Sum(data) + sl := make([]byte, len(tmp)) + for i, v := range tmp { + sl[i] = v + } + return hex.EncodeToString(sl) +} + +// Writes a compressed file like object as ``/EmbeddedFile``. Compressing is +// done with deflate. Includes length, compressed length and MD5 checksum. +func (f *Fpdf) writeCompressedFileObject(content []byte) { + lenUncompressed := len(content) + sum := checksum(content) + compressed := sliceCompress(content) + lenCompressed := len(compressed) + f.newobj() + f.outf("<< /Type /EmbeddedFile /Length %d /Filter /FlateDecode /Params << /CheckSum <%s> /Size %d >> >>\n", + lenCompressed, sum, lenUncompressed) + f.putstream(compressed) + f.out("endobj") +} + +// Embed includes the content of `a`, and update its internal reference. +func (f *Fpdf) embed(a *Attachment) { + if a.objectNumber != 0 { // already embedded (objectNumber start at 2) + return + } + oldState := f.state + f.state = 1 // we write file content in the main buffer + f.writeCompressedFileObject(a.Content) + streamID := f.n + f.newobj() + f.outf("<< /Type /Filespec /F () /UF %s /EF << /F %d 0 R >> /Desc %s\n>>", + f.textstring(utf8toutf16(a.Filename)), + streamID, + f.textstring(utf8toutf16(a.Description))) + f.out("endobj") + a.objectNumber = f.n + f.state = oldState +} + +// SetAttachments writes attachments as embedded files (document attachment). +// These attachments are global, see AddAttachmentAnnotation() for a link +// anchored in a page. Note that only the last call of SetAttachments is +// useful, previous calls are discarded. Be aware that not all PDF readers +// support document attachments. See the SetAttachment example for a +// demonstration of this method. +func (f *Fpdf) SetAttachments(as []Attachment) { + f.attachments = as +} + +// embed current attachments. store object numbers +// for later use by getEmbeddedFiles() +func (f *Fpdf) putAttachments() { + for i, a := range f.attachments { + f.embed(&a) + f.attachments[i] = a + } +} + +// return /EmbeddedFiles tree name catalog entry. +func (f Fpdf) getEmbeddedFiles() string { + names := make([]string, len(f.attachments)) + for i, as := range f.attachments { + names[i] = fmt.Sprintf("(Attachement%d) %d 0 R ", i+1, as.objectNumber) + } + nameTree := fmt.Sprintf("<< /Names [\n %s \n] >>", strings.Join(names, "\n")) + return nameTree +} + +// ---------------------------------- Annotations ---------------------------------- + +type annotationAttach struct { + *Attachment + + x, y, w, h float64 // fpdf coordinates (y diff and scaling done) +} + +// AddAttachmentAnnotation puts a link on the current page, on the rectangle +// defined by `x`, `y`, `w`, `h`. This link points towards the content defined +// in `a`, which is embedded in the document. Note than no drawing is done by +// this method : a method like `Cell()` or `Rect()` should be called to +// indicate to the reader that there is a link here. Requiring a pointer to an +// Attachment avoids useless copies in the resulting pdf: attachment pointing +// to the same data will have their content only be included once, and be +// shared amongst all links. Be aware that not all PDF readers support +// annotated attachments. See the AddAttachmentAnnotation example for a +// demonstration of this method. +func (f *Fpdf) AddAttachmentAnnotation(a *Attachment, x, y, w, h float64) { + if a == nil { + return + } + f.pageAttachments[f.page] = append(f.pageAttachments[f.page], annotationAttach{ + Attachment: a, + x: x * f.k, y: f.hPt - y*f.k, w: w * f.k, h: h * f.k, + }) +} + +// embed current annotations attachments. store object numbers +// for later use by putAttachmentAnnotationLinks(), which is +// called for each page. +func (f *Fpdf) putAnnotationsAttachments() { + // avoid duplication + m := map[*Attachment]bool{} + for _, l := range f.pageAttachments { + for _, an := range l { + if m[an.Attachment] { // already embedded + continue + } + f.embed(an.Attachment) + } + } +} + +func (f *Fpdf) putAttachmentAnnotationLinks(out *fmtBuffer, page int) { + for _, an := range f.pageAttachments[page] { + x1, y1, x2, y2 := an.x, an.y, an.x+an.w, an.y-an.h + as := fmt.Sprintf("<< /Type /XObject /Subtype /Form /BBox [%.2f %.2f %.2f %.2f] /Length 0 >>", + x1, y1, x2, y2) + as += "\nstream\nendstream" + + out.printf("<< /Type /Annot /Subtype /FileAttachment /Rect [%.2f %.2f %.2f %.2f] /Border [0 0 0]\n", + x1, y1, x2, y2) + out.printf("/Contents %s ", f.textstring(utf8toutf16(an.Description))) + out.printf("/T %s ", f.textstring(utf8toutf16(an.Filename))) + out.printf("/AP << /N %s>>", as) + out.printf("/FS %d 0 R >>\n", an.objectNumber) + } +} diff --git a/compare.go b/compare.go new file mode 100644 index 0000000..f0c286e --- /dev/null +++ b/compare.go @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2015 Kurt Jung (Gmail: kurt.w.jung) + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package gofpdf + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "sort" +) + +type sortType struct { + length int + less func(int, int) bool + swap func(int, int) +} + +func (s *sortType) Len() int { + return s.length +} + +func (s *sortType) Less(i, j int) bool { + return s.less(i, j) +} + +func (s *sortType) Swap(i, j int) { + s.swap(i, j) +} + +func gensort(Len int, Less func(int, int) bool, Swap func(int, int)) { + sort.Sort(&sortType{length: Len, less: Less, swap: Swap}) +} + +func writeBytes(leadStr string, startPos int, sl []byte) { + var pos, max int + var b byte + fmt.Printf("%s %07x", leadStr, startPos) + max = len(sl) + for pos < max { + fmt.Printf(" ") + for k := 0; k < 8; k++ { + if pos < max { + fmt.Printf(" %02x", sl[pos]) + } else { + fmt.Printf(" ") + } + pos++ + } + } + fmt.Printf(" |") + pos = 0 + for pos < max { + b = sl[pos] + if b < 32 || b >= 128 { + b = '.' + } + fmt.Printf("%c", b) + pos++ + } + fmt.Printf("|\n") +} + +func checkBytes(pos int, sl1, sl2 []byte, printDiff bool) (eq bool) { + eq = bytes.Equal(sl1, sl2) + if !eq && printDiff { + writeBytes("<", pos, sl1) + writeBytes(">", pos, sl2) + } + return +} + +// CompareBytes compares the bytes referred to by sl1 with those referred to by +// sl2. Nil is returned if the buffers are equal, otherwise an error. +func CompareBytes(sl1, sl2 []byte, printDiff bool) (err error) { + var posStart, posEnd, len1, len2, length int + var diffs bool + + len1 = len(sl1) + len2 = len(sl2) + length = len1 + if length > len2 { + length = len2 + } + for posStart < length-1 { + posEnd = posStart + 16 + if posEnd > length { + posEnd = length + } + if !checkBytes(posStart, sl1[posStart:posEnd], sl2[posStart:posEnd], printDiff) { + diffs = true + } + posStart = posEnd + } + if diffs { + err = fmt.Errorf("documents are different") + } + return +} + +// ComparePDFs reads and compares the full contents of the two specified +// readers byte-for-byte. Nil is returned if the buffers are equal, otherwise +// an error. +func ComparePDFs(rdr1, rdr2 io.Reader, printDiff bool) (err error) { + var b1, b2 *bytes.Buffer + _, err = b1.ReadFrom(rdr1) + if err == nil { + _, err = b2.ReadFrom(rdr2) + if err == nil { + err = CompareBytes(b1.Bytes(), b2.Bytes(), printDiff) + } + } + return +} + +// ComparePDFFiles reads and compares the full contents of the two specified +// files byte-for-byte. Nil is returned if the file contents are equal, or if +// the second file is missing, otherwise an error. +func ComparePDFFiles(file1Str, file2Str string, printDiff bool) (err error) { + var sl1, sl2 []byte + sl1, err = ioutil.ReadFile(file1Str) + if err == nil { + sl2, err = ioutil.ReadFile(file2Str) + if err == nil { + err = CompareBytes(sl1, sl2, printDiff) + } else { + // Second file is missing; treat this as success + err = nil + } + } + return +} diff --git a/contrib/barcode/barcode.go b/contrib/barcode/barcode.go new file mode 100644 index 0000000..7e0ac0d --- /dev/null +++ b/contrib/barcode/barcode.go @@ -0,0 +1,302 @@ +// Copyright (c) 2015 Jelmer Snoeck (Gmail: jelmer.snoeck) +// +// Permission to use, copy, modify, and distribute this software for any purpose +// with or without fee is hereby granted, provided that the above copyright notice +// and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +// FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +// Package barcode provides helper methods for adding barcodes of different +// types to your pdf document. It relies on the github.com/boombuler/barcode +// package for the barcode creation. +package barcode + +import ( + "bytes" + "errors" + "image/jpeg" + "io" + "strconv" + "sync" + + "github.com/boombuler/barcode" + "github.com/boombuler/barcode/aztec" + "github.com/boombuler/barcode/codabar" + "github.com/boombuler/barcode/code128" + "github.com/boombuler/barcode/code39" + "github.com/boombuler/barcode/datamatrix" + "github.com/boombuler/barcode/ean" + "github.com/boombuler/barcode/qr" + "github.com/boombuler/barcode/twooffive" + "github.com/jung-kurt/gofpdf" + "github.com/ruudk/golang-pdf417" +) + +// barcodes represents the barcodes that have been registered through this +// package. They will later be used to be scaled and put on the page. +// RubenN: made this a struct with a mutex to prevent race condition +var barcodes struct { + sync.Mutex + cache map[string]barcode.Barcode +} + +// barcodePdf is a partial PDF implementation that only implements a subset of +// functions that are required to add the barcode to the PDF. +type barcodePdf interface { + GetConversionRatio() float64 + GetImageInfo(imageStr string) *gofpdf.ImageInfoType + Image(imageNameStr string, x, y, w, h float64, flow bool, tp string, link int, linkStr string) + RegisterImageReader(imgName, tp string, r io.Reader) *gofpdf.ImageInfoType + SetError(err error) +} + +// printBarcode internally prints the scaled or unscaled barcode to the PDF. Used by both +// Barcode() and BarcodeUnscalable(). +func printBarcode(pdf barcodePdf, code string, x, y float64, w, h *float64, flow bool) { + barcodes.Lock() + unscaled, ok := barcodes.cache[code] + barcodes.Unlock() + + if !ok { + err := errors.New("Barcode not found") + pdf.SetError(err) + return + } + + bname := uniqueBarcodeName(code, x, y) + info := pdf.GetImageInfo(bname) + scaleToWidth := unscaled.Bounds().Dx() + scaleToHeight := unscaled.Bounds().Dy() + + if info == nil { + bcode, err := barcode.Scale( + unscaled, + scaleToWidth, + scaleToHeight, + ) + + if err != nil { + pdf.SetError(err) + return + } + + err = registerScaledBarcode(pdf, bname, bcode) + if err != nil { + pdf.SetError(err) + return + } + } + + scaleToWidthF := float64(scaleToWidth) + scaleToHeightF := float64(scaleToHeight) + + if w != nil { + scaleToWidthF = *w + } + if h != nil { + scaleToHeightF = *h + } + + pdf.Image(bname, x, y, scaleToWidthF, scaleToHeightF, flow, "jpg", 0, "") + +} + +// BarcodeUnscalable puts a registered barcode in the current page. +// +// Its arguments work in the same way as that of Barcode(). However, it allows for an unscaled +// barcode in the width and/or height dimensions. This can be useful if you want to prevent +// side effects of upscaling. +func BarcodeUnscalable(pdf barcodePdf, code string, x, y float64, w, h *float64, flow bool) { + printBarcode(pdf, code, x, y, w, h, flow) +} + +// Barcode puts a registered barcode in the current page. +// +// The size should be specified in the units used to create the PDF document. +// If width or height are left unspecfied, the barcode is not scaled in the unspecified dimensions. +// +// Positioning with x, y and flow is inherited from Fpdf.Image(). +func Barcode(pdf barcodePdf, code string, x, y, w, h float64, flow bool) { + printBarcode(pdf, code, x, y, &w, &h, flow) +} + +// GetUnscaledBarcodeDimensions returns the width and height of the +// unscaled barcode associated with the given code. +func GetUnscaledBarcodeDimensions(pdf barcodePdf, code string) (w, h float64) { + barcodes.Lock() + unscaled, ok := barcodes.cache[code] + barcodes.Unlock() + + if !ok { + err := errors.New("Barcode not found") + pdf.SetError(err) + return + } + + return convertFrom96Dpi(pdf, float64(unscaled.Bounds().Dx())), + convertFrom96Dpi(pdf, float64(unscaled.Bounds().Dy())) +} + +// Register registers a barcode but does not put it on the page. Use Barcode() +// with the same code to put the barcode on the PDF page. +func Register(bcode barcode.Barcode) string { + barcodes.Lock() + if len(barcodes.cache) == 0 { + barcodes.cache = make(map[string]barcode.Barcode) + } + + key := barcodeKey(bcode) + barcodes.cache[key] = bcode + barcodes.Unlock() + + return key +} + +// RegisterAztec registers a barcode of type Aztec to the PDF, but not to +// the page. Use Barcode() with the return value to put the barcode on the page. +// code is the string to be encoded. minECCPercent is the error correction percentage. 33 is the default. +// userSpecifiedLayers can be a value between -4 and 32 inclusive. +func RegisterAztec(pdf barcodePdf, code string, minECCPercent int, userSpecifiedLayers int) string { + bcode, err := aztec.Encode([]byte(code), minECCPercent, userSpecifiedLayers) + return registerBarcode(pdf, bcode, err) +} + +// RegisterCodabar registers a barcode of type Codabar to the PDF, but not to +// the page. Use Barcode() with the return value to put the barcode on the page. +func RegisterCodabar(pdf barcodePdf, code string) string { + bcode, err := codabar.Encode(code) + return registerBarcode(pdf, bcode, err) +} + +// RegisterCode128 registers a barcode of type Code128 to the PDF, but not to +// the page. Use Barcode() with the return value to put the barcode on the page. +func RegisterCode128(pdf barcodePdf, code string) string { + bcode, err := code128.Encode(code) + return registerBarcode(pdf, bcode, err) +} + +// RegisterCode39 registers a barcode of type Code39 to the PDF, but not to +// the page. Use Barcode() with the return value to put the barcode on the page. +// +// includeChecksum and fullASCIIMode are inherited from code39.Encode(). +func RegisterCode39(pdf barcodePdf, code string, includeChecksum, fullASCIIMode bool) string { + bcode, err := code39.Encode(code, includeChecksum, fullASCIIMode) + return registerBarcode(pdf, bcode, err) +} + +// RegisterDataMatrix registers a barcode of type DataMatrix to the PDF, but not +// to the page. Use Barcode() with the return value to put the barcode on the +// page. +func RegisterDataMatrix(pdf barcodePdf, code string) string { + bcode, err := datamatrix.Encode(code) + return registerBarcode(pdf, bcode, err) +} + +// RegisterPdf417 registers a barcode of type Pdf417 to the PDF, but not to the +// page. code is the string to be encoded. columns specifies the number of +// barcode columns; this should be a value between 1 and 30 inclusive. +// securityLevel specifies an error correction level between zero and 8 +// inclusive. Barcodes for use with FedEx must set columns to 10 and +// securityLevel to 5. Use Barcode() with the return value to put the barcode +// on the page. +func RegisterPdf417(pdf barcodePdf, code string, columns int, securityLevel int) string { + bcode := pdf417.Encode(code, columns, securityLevel) + return registerBarcode(pdf, bcode, nil) +} + +// RegisterEAN registers a barcode of type EAN to the PDF, but not to the page. +// It will automatically detect if the barcode is EAN8 or EAN13. Use Barcode() +// with the return value to put the barcode on the page. +func RegisterEAN(pdf barcodePdf, code string) string { + bcode, err := ean.Encode(code) + return registerBarcode(pdf, bcode, err) +} + +// RegisterQR registers a barcode of type QR to the PDF, but not to the page. +// Use Barcode() with the return value to put the barcode on the page. +// +// The ErrorCorrectionLevel and Encoding mode are inherited from qr.Encode(). +func RegisterQR(pdf barcodePdf, code string, ecl qr.ErrorCorrectionLevel, mode qr.Encoding) string { + bcode, err := qr.Encode(code, ecl, mode) + return registerBarcode(pdf, bcode, err) +} + +// RegisterTwoOfFive registers a barcode of type TwoOfFive to the PDF, but not +// to the page. Use Barcode() with the return value to put the barcode on the +// page. +// +// The interleaved bool is inherited from twooffive.Encode(). +func RegisterTwoOfFive(pdf barcodePdf, code string, interleaved bool) string { + bcode, err := twooffive.Encode(code, interleaved) + return registerBarcode(pdf, bcode, err) +} + +// registerBarcode registers a barcode internally using the Register() function. +// In case of an error generating the barcode it will not be registered and will +// set an error on the PDF. It will return a unique key for the barcode type and +// content that can be used to put the barcode on the page. +func registerBarcode(pdf barcodePdf, bcode barcode.Barcode, err error) string { + if err != nil { + pdf.SetError(err) + return "" + } + + return Register(bcode) +} + +// uniqueBarcodeName makes sure every barcode has a unique name for its +// dimensions. Scaling a barcode image results in quality loss, which could be +// a problem for barcode readers. +func uniqueBarcodeName(code string, x, y float64) string { + xStr := strconv.FormatFloat(x, 'E', -1, 64) + yStr := strconv.FormatFloat(y, 'E', -1, 64) + + return "barcode-" + code + "-" + xStr + yStr +} + +// barcodeKey combines the code type and code value into a unique identifier for +// a barcode type. This is so that we can store several barcodes with the same +// code but different type in the barcodes map. +func barcodeKey(bcode barcode.Barcode) string { + return bcode.Metadata().CodeKind + bcode.Content() +} + +// registerScaledBarcode registers a barcode with its exact dimensions to the +// PDF but does not put it on the page. Use Fpdf.Image() with the same code to +// add the barcode to the page. +func registerScaledBarcode(pdf barcodePdf, code string, bcode barcode.Barcode) error { + buf := new(bytes.Buffer) + err := jpeg.Encode(buf, bcode, nil) + + if err != nil { + return err + } + + reader := bytes.NewReader(buf.Bytes()) + pdf.RegisterImageReader(code, "jpg", reader) + + return nil +} + +// convertTo96DPI converts the given value, which is based on a 72 DPI value +// like the rest of the PDF document, to a 96 DPI value that is required for +// an Image. +// +// Doing this through the Fpdf.Image() function would mean that it uses a 72 DPI +// value and stretches it to a 96 DPI value. This results in quality loss which +// could be problematic for barcode scanners. +func convertTo96Dpi(pdf barcodePdf, value float64) float64 { + return value * pdf.GetConversionRatio() / 72 * 96 +} + +// convertFrom96Dpi converts the given value, which is based on a 96 DPI value +// required for an Image, to a 72 DPI value like the rest of the PDF document. +func convertFrom96Dpi(pdf barcodePdf, value float64) float64 { + return value / pdf.GetConversionRatio() * 72 / 96 +} diff --git a/contrib/barcode/barcode_test.go b/contrib/barcode/barcode_test.go new file mode 100644 index 0000000..066ac41 --- /dev/null +++ b/contrib/barcode/barcode_test.go @@ -0,0 +1,222 @@ +package barcode_test + +import ( + "testing" + + "github.com/boombuler/barcode/code128" + "github.com/boombuler/barcode/qr" + "github.com/jung-kurt/gofpdf" + "github.com/jung-kurt/gofpdf/contrib/barcode" + "github.com/jung-kurt/gofpdf/internal/example" +) + +func createPdf() (pdf *gofpdf.Fpdf) { + pdf = gofpdf.New("L", "mm", "A4", "") + pdf.SetFont("Helvetica", "", 12) + pdf.SetFillColor(200, 200, 220) + pdf.AddPage() + return +} + +func ExampleRegister() { + pdf := createPdf() + + fileStr := example.Filename("contrib_barcode_Register") + + bcode, err := code128.Encode("gofpdf") + + if err == nil { + key := barcode.Register(bcode) + var width float64 = 100 + var height float64 = 10.0 + barcode.BarcodeUnscalable(pdf, key, 15, 15, &width, &height, false) + } + + err = pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_Register.pdf +} + +func ExampleRegisterCodabar() { + pdf := createPdf() + + key := barcode.RegisterCode128(pdf, "codabar") + var width float64 = 100 + var height float64 = 10 + barcode.BarcodeUnscalable(pdf, key, 15, 15, &width, &height, false) + + fileStr := example.Filename("contrib_barcode_RegisterCodabar") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterCodabar.pdf +} + +func ExampleRegisterAztec() { + pdf := createPdf() + + key := barcode.RegisterAztec(pdf, "aztec", 33, 0) + barcode.Barcode(pdf, key, 15, 15, 100, 100, false) + + fileStr := example.Filename("contrib_barcode_RegisterAztec") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterAztec.pdf +} + +func ExampleRegisterCode128() { + pdf := createPdf() + + key := barcode.RegisterCode128(pdf, "code128") + barcode.Barcode(pdf, key, 15, 15, 100, 10, false) + + fileStr := example.Filename("contrib_barcode_RegisterCode128") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterCode128.pdf +} + +func ExampleRegisterCode39() { + pdf := createPdf() + + key := barcode.RegisterCode39(pdf, "CODE39", false, true) + barcode.Barcode(pdf, key, 15, 15, 100, 10, false) + + fileStr := example.Filename("contrib_barcode_RegisterCode39") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterCode39.pdf +} + +func ExampleRegisterDataMatrix() { + pdf := createPdf() + + key := barcode.RegisterDataMatrix(pdf, "datamatrix") + barcode.Barcode(pdf, key, 15, 15, 20, 20, false) + + fileStr := example.Filename("contrib_barcode_RegisterDataMatrix") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterDataMatrix.pdf +} + +func ExampleRegisterEAN() { + pdf := createPdf() + + key := barcode.RegisterEAN(pdf, "96385074") + barcode.Barcode(pdf, key, 15, 15, 100, 10, false) + + fileStr := example.Filename("contrib_barcode_RegisterEAN") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterEAN.pdf +} + +func ExampleRegisterQR() { + pdf := createPdf() + + key := barcode.RegisterQR(pdf, "qrcode", qr.H, qr.Unicode) + barcode.Barcode(pdf, key, 15, 15, 100, 10, false) + + fileStr := example.Filename("contrib_barcode_RegisterQR") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterQR.pdf +} + +func ExampleRegisterTwoOfFive() { + pdf := createPdf() + + key := barcode.RegisterTwoOfFive(pdf, "1234567895", true) + barcode.Barcode(pdf, key, 15, 15, 100, 10, false) + + fileStr := example.Filename("contrib_barcode_RegisterTwoOfFive") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterTwoOfFive.pdf +} + +func ExampleRegisterPdf417() { + pdf := createPdf() + + key := barcode.RegisterPdf417(pdf, "1234567895", 10, 5) + barcode.Barcode(pdf, key, 15, 15, 100, 10, false) + + fileStr := example.Filename("contrib_barcode_RegisterPdf417") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_RegisterPdf417.pdf +} + +// TestRegisterCode128 ensures that no panic arises when an invalid barcode is registered. +func TestRegisterCode128(t *testing.T) { + pdf := createPdf() + barcode.RegisterCode128(pdf, "Invalid character: é") +} + +// TestBarcodeUnscalable shows that the barcode may be scaled or not by providing optional heights and widths. +func TestBarcodeUnscalable(t *testing.T) { + pdf := createPdf() + + key := barcode.RegisterCode128(pdf, "code128") + var width float64 = 100 + var height float64 = 10 + barcode.BarcodeUnscalable(pdf, key, 15, 15, &width, &height, false) + barcode.BarcodeUnscalable(pdf, key, 15, 35, nil, &height, false) + barcode.BarcodeUnscalable(pdf, key, 15, 55, &width, nil, false) + barcode.BarcodeUnscalable(pdf, key, 15, 75, nil, nil, false) + + fileStr := example.Filename("contrib_barcode_Barcode") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_Barcode.pdf +} + +// TestGetUnscaledBarcodeDimensions shows that the width and height returned by the function match that of the barcode +func TestGetUnscaledBarcodeDimensions(t *testing.T) { + pdf := createPdf() + + key := barcode.RegisterQR(pdf, "qrcode", qr.H, qr.Unicode) + barcode.BarcodeUnscalable(pdf, key, 15, 15, nil, nil, false) + w, h := barcode.GetUnscaledBarcodeDimensions(pdf, key) + + pdf.SetDrawColor(255, 0, 0) + pdf.Line(15, 15, 15+w, 15+h) + + fileStr := example.Filename("contrib_barcode_GetBarcodeDimensions") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_GetBarcodeDimensions.pdf +} + +// TestBarcodeNonIntegerScalingFactors shows that the barcode may be scaled to non-integer sizes +func TestBarcodeNonIntegerScalingFactors(t *testing.T) { + pdf := gofpdf.New("L", "in", "A4", "") + pdf.SetFont("Helvetica", "", 12) + pdf.SetFillColor(200, 200, 220) + pdf.AddPage() + + key := barcode.RegisterQR(pdf, "qrcode", qr.H, qr.Unicode) + var scale float64 = 1.5 + barcode.BarcodeUnscalable(pdf, key, 0.5, 0.5, &scale, &scale, false) + + pdf.SetDrawColor(255, 0, 0) + pdf.Line(0.5, 0.5, 0.5+scale, 0.5+scale) + + fileStr := example.Filename("contrib_barcode_BarcodeScaling") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_barcode_BarcodeScaling.pdf +} diff --git a/contrib/ghostscript/ghostscript.go b/contrib/ghostscript/ghostscript.go new file mode 100644 index 0000000..3196c34 --- /dev/null +++ b/contrib/ghostscript/ghostscript.go @@ -0,0 +1,68 @@ +package main + +// This command demonstrates the use of ghotscript to reduce the size +// of generated PDFs. This is based on a comment made by farkerhaiku: +// https://github.com/jung-kurt/gofpdf/issues/57#issuecomment-185843315 + +import ( + "fmt" + "os" + "os/exec" + + "github.com/jung-kurt/gofpdf" +) + +func report(fileStr string, err error) { + if err == nil { + var info os.FileInfo + info, err = os.Stat(fileStr) + if err == nil { + fmt.Printf("%s: OK, size %d\n", fileStr, info.Size()) + } else { + fmt.Printf("%s: bad stat\n", fileStr) + } + } else { + fmt.Printf("%s: %s\n", fileStr, err) + } +} + +func newPdf() (pdf *gofpdf.Fpdf) { + pdf = gofpdf.New("P", "mm", "A4", "../../font") + pdf.SetCompression(false) + pdf.AddFont("Calligrapher", "", "calligra.json") + pdf.AddPage() + pdf.SetFont("Calligrapher", "", 35) + pdf.Cell(0, 10, "Enjoy new fonts with FPDF!") + return +} + +func full(name string) { + report(name, newPdf().OutputFileAndClose(name)) +} + +func min(name string) { + cmd := exec.Command("gs", "-sDEVICE=pdfwrite", + "-dCompatibilityLevel=1.4", + "-dPDFSETTINGS=/screen", "-dNOPAUSE", "-dQUIET", + "-dBATCH", "-sOutputFile="+name, "-") + inPipe, err := cmd.StdinPipe() + if err == nil { + errChan := make(chan error, 1) + go func() { + errChan <- cmd.Start() + }() + err = newPdf().Output(inPipe) + if err == nil { + report(name, <-errChan) + } else { + report(name, err) + } + } else { + report(name, err) + } +} + +func main() { + full("full.pdf") + min("min.pdf") +} diff --git a/contrib/gofpdi/gofpdi.go b/contrib/gofpdi/gofpdi.go new file mode 100644 index 0000000..7b9c822 --- /dev/null +++ b/contrib/gofpdi/gofpdi.go @@ -0,0 +1,143 @@ +/* +Package gofpdi wraps the gofpdi PDF library to import existing PDFs as templates. See github.com/phpdave11/gofpdi +for further information and examples. + +Users should call NewImporter() to obtain their own Importer instance to work with. +To retain backwards compatibility, the package offers a default Importer that may be used via global functions. Note +however that use of the default Importer is not thread safe. +*/ +package gofpdi + +import ( + realgofpdi "github.com/phpdave11/gofpdi" + "io" +) + +// gofpdiPdf is a partial interface that only implements the functions we need +// from the PDF generator to put the imported PDF templates on the PDF. +type gofpdiPdf interface { + ImportObjects(objs map[string][]byte) + ImportObjPos(objs map[string]map[int]string) + ImportTemplates(tpls map[string]string) + UseImportedTemplate(tplName string, x float64, y float64, w float64, h float64) + SetError(err error) +} + +// Importer wraps an Importer from the gofpdi library. +type Importer struct { + fpdi *realgofpdi.Importer +} + +// NewImporter creates a new Importer wrapping functionality from the gofpdi library. +func NewImporter() *Importer { + return &Importer{ + fpdi: realgofpdi.NewImporter(), + } +} + +// ImportPage imports a page of a PDF file with the specified box (/MediaBox, +// /TrimBox, /ArtBox, /CropBox, or /BleedBox). Returns a template id that can +// be used with UseImportedTemplate to draw the template onto the page. +func (i *Importer) ImportPage(f gofpdiPdf, sourceFile string, pageno int, box string) int { + // Set source file for fpdi + i.fpdi.SetSourceFile(sourceFile) + // return template id + return i.getTemplateID(f, pageno, box) +} + +// ImportPageFromStream imports a page of a PDF with the specified box +// (/MediaBox, TrimBox, /ArtBox, /CropBox, or /BleedBox). Returns a template id +// that can be used with UseImportedTemplate to draw the template onto the +// page. +func (i *Importer) ImportPageFromStream(f gofpdiPdf, rs *io.ReadSeeker, pageno int, box string) int { + // Set source stream for fpdi + i.fpdi.SetSourceStream(rs) + // return template id + return i.getTemplateID(f, pageno, box) +} + +func (i *Importer) getTemplateID(f gofpdiPdf, pageno int, box string) int { + // Import page + tpl := i.fpdi.ImportPage(pageno, box) + + // Import objects into current pdf document + // Unordered means that the objects will be returned with a sha1 hash instead of an integer + // The objects themselves may have references to other hashes which will be replaced in ImportObjects() + tplObjIDs := i.fpdi.PutFormXobjectsUnordered() + + // Set template names and ids (hashes) in gofpdf + f.ImportTemplates(tplObjIDs) + + // Get a map[string]string of the imported objects. + // The map keys will be the ID of each object. + imported := i.fpdi.GetImportedObjectsUnordered() + + // Import gofpdi objects into gofpdf + f.ImportObjects(imported) + + // Get a map[string]map[int]string of the object hashes and their positions within each object, + // to be replaced with object ids (integers). + importedObjPos := i.fpdi.GetImportedObjHashPos() + + // Import gofpdi object hashes and their positions into gopdf + f.ImportObjPos(importedObjPos) + + return tpl +} + +// UseImportedTemplate draws the template onto the page at x,y. If w is 0, the +// template will be scaled to fit based on h. If h is 0, the template will be +// scaled to fit based on w. +func (i *Importer) UseImportedTemplate(f gofpdiPdf, tplid int, x float64, y float64, w float64, h float64) { + // Get values from fpdi + tplName, scaleX, scaleY, tX, tY := i.fpdi.UseTemplate(tplid, x, y, w, h) + + f.UseImportedTemplate(tplName, scaleX, scaleY, tX, tY) +} + +// GetPageSizes returns page dimensions for all pages of the imported pdf. +// Result consists of map[]map[]map[]. +// : page number, note that page numbers start at 1 +// : box identifier, e.g. "/MediaBox" +// : dimension string, either "w" or "h" +func (i *Importer) GetPageSizes() map[int]map[string]map[string]float64 { + return i.fpdi.GetPageSizes() +} + +// Default Importer used by global functions +var fpdi = NewImporter() + +// ImportPage imports a page of a PDF file with the specified box (/MediaBox, +// /TrimBox, /ArtBox, /CropBox, or /BleedBox). Returns a template id that can +// be used with UseImportedTemplate to draw the template onto the page. +// Note: This uses the default Importer. Call NewImporter() to obtain a custom Importer. +func ImportPage(f gofpdiPdf, sourceFile string, pageno int, box string) int { + return fpdi.ImportPage(f, sourceFile, pageno, box) +} + +// ImportPageFromStream imports a page of a PDF with the specified box +// (/MediaBox, TrimBox, /ArtBox, /CropBox, or /BleedBox). Returns a template id +// that can be used with UseImportedTemplate to draw the template onto the +// page. +// Note: This uses the default Importer. Call NewImporter() to obtain a custom Importer. +func ImportPageFromStream(f gofpdiPdf, rs *io.ReadSeeker, pageno int, box string) int { + return fpdi.ImportPageFromStream(f, rs, pageno, box) +} + +// UseImportedTemplate draws the template onto the page at x,y. If w is 0, the +// template will be scaled to fit based on h. If h is 0, the template will be +// scaled to fit based on w. +// Note: This uses the default Importer. Call NewImporter() to obtain a custom Importer. +func UseImportedTemplate(f gofpdiPdf, tplid int, x float64, y float64, w float64, h float64) { + fpdi.UseImportedTemplate(f, tplid, x, y, w, h) +} + +// GetPageSizes returns page dimensions for all pages of the imported pdf. +// Result consists of map[]map[]map[]. +// : page number, note that page numbers start at 1 +// : box identifier, e.g. "/MediaBox" +// : dimension string, either "w" or "h" +// Note: This uses the default Importer. Call NewImporter() to obtain a custom Importer. +func GetPageSizes() map[int]map[string]map[string]float64 { + return fpdi.GetPageSizes() +} diff --git a/contrib/gofpdi/gofpdi_test.go b/contrib/gofpdi/gofpdi_test.go new file mode 100644 index 0000000..70ef6cc --- /dev/null +++ b/contrib/gofpdi/gofpdi_test.go @@ -0,0 +1,76 @@ +package gofpdi + +import ( + "bytes" + "github.com/jung-kurt/gofpdf" + "github.com/jung-kurt/gofpdf/internal/example" + "io" + "sync" + "testing" +) + +func ExampleNewImporter() { + // create new pdf + pdf := gofpdf.New("P", "pt", "A4", "") + + // for testing purposes, get an arbitrary template pdf as stream + rs, _ := getTemplatePdf() + + // create a new Importer instance + imp := NewImporter() + + // import first page and determine page sizes + tpl := imp.ImportPageFromStream(pdf, &rs, 1, "/MediaBox") + pageSizes := imp.GetPageSizes() + nrPages := len(imp.GetPageSizes()) + + // add all pages from template pdf + for i := 1; i <= nrPages; i++ { + pdf.AddPage() + if i > 1 { + tpl = imp.ImportPageFromStream(pdf, &rs, i, "/MediaBox") + } + imp.UseImportedTemplate(pdf, tpl, 0, 0, pageSizes[i]["/MediaBox"]["w"], pageSizes[i]["/MediaBox"]["h"]) + } + + // output + fileStr := example.Filename("contrib_gofpdi_Importer") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_gofpdi_Importer.pdf +} + +func TestGofpdiConcurrent(t *testing.T) { + wg := sync.WaitGroup{} + for i := 0; i < 100; i++ { + wg.Add(1) + go func() { + defer wg.Done() + pdf := gofpdf.New("P", "mm", "A4", "") + pdf.AddPage() + rs, _ := getTemplatePdf() + imp := NewImporter() + tpl := imp.ImportPageFromStream(pdf, &rs, 1, "/MediaBox") + imp.UseImportedTemplate(pdf, tpl, 0, 0, 210.0, 297.0) + // write to bytes buffer + buf := bytes.Buffer{} + if err := pdf.Output(&buf); err != nil { + t.Fail() + } + }() + } + wg.Wait() +} + +func getTemplatePdf() (io.ReadSeeker, error) { + tpdf := gofpdf.New("P", "pt", "A4", "") + tpdf.AddPage() + tpdf.SetFont("Arial", "", 12) + tpdf.Text(20, 20, "Example Page 1") + tpdf.AddPage() + tpdf.Text(20, 20, "Example Page 2") + tbuf := bytes.Buffer{} + err := tpdf.Output(&tbuf) + return bytes.NewReader(tbuf.Bytes()), err +} diff --git a/contrib/httpimg/httpimg.go b/contrib/httpimg/httpimg.go new file mode 100644 index 0000000..7cbf281 --- /dev/null +++ b/contrib/httpimg/httpimg.go @@ -0,0 +1,43 @@ +package httpimg + +import ( + "io" + "net/http" + + "github.com/jung-kurt/gofpdf" +) + +// httpimgPdf is a partial interface that only implements the functions we need +// from the PDF generator to put the HTTP images on the PDF. +type httpimgPdf interface { + GetImageInfo(imageStr string) *gofpdf.ImageInfoType + ImageTypeFromMime(mimeStr string) string + RegisterImageReader(imgName, tp string, r io.Reader) *gofpdf.ImageInfoType + SetError(err error) +} + +// Register registers a HTTP image. Downloading the image from the provided URL +// and adding it to the PDF but not adding it to the page. Use Image() with the +// same URL to add the image to the page. +func Register(f httpimgPdf, urlStr, tp string) (info *gofpdf.ImageInfoType) { + info = f.GetImageInfo(urlStr) + + if info != nil { + return + } + + resp, err := http.Get(urlStr) + + if err != nil { + f.SetError(err) + return + } + + defer resp.Body.Close() + + if tp == "" { + tp = f.ImageTypeFromMime(resp.Header["Content-Type"][0]) + } + + return f.RegisterImageReader(urlStr, tp, resp.Body) +} diff --git a/contrib/httpimg/httpimg_test.go b/contrib/httpimg/httpimg_test.go new file mode 100644 index 0000000..bf13492 --- /dev/null +++ b/contrib/httpimg/httpimg_test.go @@ -0,0 +1,23 @@ +package httpimg_test + +import ( + "github.com/jung-kurt/gofpdf" + "github.com/jung-kurt/gofpdf/contrib/httpimg" + "github.com/jung-kurt/gofpdf/internal/example" +) + +func ExampleRegister() { + pdf := gofpdf.New("L", "mm", "A4", "") + pdf.SetFont("Helvetica", "", 12) + pdf.SetFillColor(200, 200, 220) + pdf.AddPage() + + url := "https://github.com/jung-kurt/gofpdf/raw/master/image/logo_gofpdf.jpg?raw=true" + httpimg.Register(pdf, url, "") + pdf.Image(url, 15, 15, 267, 0, false, "", 0, "") + fileStr := example.Filename("contrib_httpimg_Register") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_httpimg_Register.pdf +} diff --git a/contrib/tiff/tiff.go b/contrib/tiff/tiff.go new file mode 100644 index 0000000..3f13a38 --- /dev/null +++ b/contrib/tiff/tiff.go @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2016 Kurt Jung (Gmail: kurt.w.jung) + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +// Package tiff allows standard (LZW-compressed) TIFF images to be used in +// documents generated with gofpdf. +package tiff + +import ( + "bytes" + "fmt" + "image" + "image/png" + "io" + "os" + + "github.com/jung-kurt/gofpdf" + "golang.org/x/image/tiff" +) + +// RegisterReader registers a TIFF image, adding it to the PDF file but not +// adding it to the page. imgName specifies the name that will be used in the +// call to Image() that actually places the image in the document. options +// specifies various image properties; in this case, the ImageType property +// should be set to "tiff". The TIFF image is a reader from the reader +// specified by r. +func RegisterReader(fpdf *gofpdf.Fpdf, imgName string, options gofpdf.ImageOptions, r io.Reader) (info *gofpdf.ImageInfoType) { + var err error + var img image.Image + var buf bytes.Buffer + if fpdf.Ok() { + if options.ImageType == "tiff" || options.ImageType == "tif" { + img, err = tiff.Decode(r) + if err == nil { + err = png.Encode(&buf, img) + if err == nil { + options.ImageType = "png" + info = fpdf.RegisterImageOptionsReader(imgName, options, &buf) + } + } + } else { + err = fmt.Errorf("expecting \"tiff\" or \"tif\" as image type, got \"%s\"", options.ImageType) + } + if err != nil { + fpdf.SetError(err) + } + } + return +} + +// RegisterFile registers a TIFF image, adding it to the PDF file but not +// adding it to the page. imgName specifies the name that will be used in the +// call to Image() that actually places the image in the document. options +// specifies various image properties; in this case, the ImageType property +// should be set to "tiff". The TIFF image is read from the file specified by +// tiffFileStr. +func RegisterFile(fpdf *gofpdf.Fpdf, imgName string, options gofpdf.ImageOptions, tiffFileStr string) (info *gofpdf.ImageInfoType) { + var f *os.File + var err error + + if fpdf.Ok() { + f, err = os.Open(tiffFileStr) + if err == nil { + info = RegisterReader(fpdf, imgName, options, f) + f.Close() + } else { + fpdf.SetError(err) + } + } + return +} diff --git a/contrib/tiff/tiff_test.go b/contrib/tiff/tiff_test.go new file mode 100644 index 0000000..33b294b --- /dev/null +++ b/contrib/tiff/tiff_test.go @@ -0,0 +1,23 @@ +package tiff_test + +import ( + "github.com/jung-kurt/gofpdf" + "github.com/jung-kurt/gofpdf/contrib/tiff" + "github.com/jung-kurt/gofpdf/internal/example" +) + +// ExampleRegisterFile demonstrates the loading and display of a TIFF image. +func ExampleRegisterFile() { + pdf := gofpdf.New("L", "mm", "A4", "") + pdf.SetFont("Helvetica", "", 12) + pdf.SetFillColor(200, 200, 220) + pdf.AddPageFormat("L", gofpdf.SizeType{Wd: 200, Ht: 200}) + opt := gofpdf.ImageOptions{ImageType: "tiff", ReadDpi: false} + _ = tiff.RegisterFile(pdf, "sample", opt, "../../image/golang-gopher.tiff") + pdf.Image("sample", 0, 0, 200, 200, false, "", 0, "") + fileStr := example.Filename("Fpdf_Contrib_Tiff") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/Fpdf_Contrib_Tiff.pdf +} diff --git a/def.go b/def.go new file mode 100644 index 0000000..6a7030f --- /dev/null +++ b/def.go @@ -0,0 +1,738 @@ +/* + * Copyright (c) 2013-2014 Kurt Jung (Gmail: kurt.w.jung) + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package gofpdf + +import ( + "bytes" + "crypto/sha1" + "encoding/gob" + "encoding/json" + "fmt" + "io" + "time" +) + +// Version of FPDF from which this package is derived +const ( + cnFpdfVersion = "1.7" +) + +type blendModeType struct { + strokeStr, fillStr, modeStr string + objNum int +} + +type gradientType struct { + tp int // 2: linear, 3: radial + clr1Str, clr2Str string + x1, y1, x2, y2, r float64 + objNum int +} + +const ( + // OrientationPortrait represents the portrait orientation. + OrientationPortrait = "portrait" + + // OrientationLandscape represents the landscape orientation. + OrientationLandscape = "landscape" +) + +const ( + // UnitPoint represents the size unit point + UnitPoint = "pt" + // UnitMillimeter represents the size unit millimeter + UnitMillimeter = "mm" + // UnitCentimeter represents the size unit centimeter + UnitCentimeter = "cm" + // UnitInch represents the size unit inch + UnitInch = "inch" +) + +const ( + // PageSizeA3 represents DIN/ISO A3 page size + PageSizeA3 = "A3" + // PageSizeA4 represents DIN/ISO A4 page size + PageSizeA4 = "A4" + // PageSizeA5 represents DIN/ISO A5 page size + PageSizeA5 = "A5" + // PageSizeLetter represents US Letter page size + PageSizeLetter = "Letter" + // PageSizeLegal represents US Legal page size + PageSizeLegal = "Legal" +) + +const ( + // BorderNone set no border + BorderNone = "" + // BorderFull sets a full border + BorderFull = "1" + // BorderLeft sets the border on the left side + BorderLeft = "L" + // BorderTop sets the border at the top + BorderTop = "T" + // BorderRight sets the border on the right side + BorderRight = "R" + // BorderBottom sets the border on the bottom + BorderBottom = "B" +) + +const ( + // LineBreakNone disables linebreak + LineBreakNone = 0 + // LineBreakNormal enables normal linebreak + LineBreakNormal = 1 + // LineBreakBelow enables linebreak below + LineBreakBelow = 2 +) + +const ( + // AlignLeft left aligns the cell + AlignLeft = "L" + // AlignRight right aligns the cell + AlignRight = "R" + // AlignCenter centers the cell + AlignCenter = "C" + // AlignTop aligns the cell to the top + AlignTop = "T" + // AlignBottom aligns the cell to the bottom + AlignBottom = "B" + // AlignMiddle aligns the cell to the middle + AlignMiddle = "M" + // AlignBaseline aligns the cell to the baseline + AlignBaseline = "B" +) + +type colorMode int + +const ( + colorModeRGB colorMode = iota + colorModeSpot + colorModeCMYK +) + +type colorType struct { + r, g, b float64 + ir, ig, ib int + mode colorMode + spotStr string // name of current spot color + gray bool + str string +} + +// SpotColorType specifies a named spot color value +type spotColorType struct { + id, objID int + val cmykColorType +} + +// CMYKColorType specifies an ink-based CMYK color value +type cmykColorType struct { + c, m, y, k byte // 0% to 100% +} + +// SizeType fields Wd and Ht specify the horizontal and vertical extents of a +// document element such as a page. +type SizeType struct { + Wd, Ht float64 +} + +// PointType fields X and Y specify the horizontal and vertical coordinates of +// a point, typically used in drawing. +type PointType struct { + X, Y float64 +} + +// XY returns the X and Y components of the receiver point. +func (p PointType) XY() (float64, float64) { + return p.X, p.Y +} + +// ImageInfoType contains size, color and other information about an image. +// Changes to this structure should be reflected in its GobEncode and GobDecode +// methods. +type ImageInfoType struct { + data []byte // Raw image data + smask []byte // Soft Mask, an 8bit per-pixel transparency mask + n int // Image object number + w float64 // Width + h float64 // Height + cs string // Color space + pal []byte // Image color palette + bpc int // Bits Per Component + f string // Image filter + dp string // DecodeParms + trns []int // Transparency mask + scale float64 // Document scale factor + dpi float64 // Dots-per-inch found from image file (png only) + i string // SHA-1 checksum of the above values. +} + +func generateImageID(info *ImageInfoType) (string, error) { + b, err := info.GobEncode() + return fmt.Sprintf("%x", sha1.Sum(b)), err +} + +// GobEncode encodes the receiving image to a byte slice. +func (info *ImageInfoType) GobEncode() (buf []byte, err error) { + fields := []interface{}{info.data, info.smask, info.n, info.w, info.h, info.cs, + info.pal, info.bpc, info.f, info.dp, info.trns, info.scale, info.dpi} + w := new(bytes.Buffer) + encoder := gob.NewEncoder(w) + for j := 0; j < len(fields) && err == nil; j++ { + err = encoder.Encode(fields[j]) + } + if err == nil { + buf = w.Bytes() + } + return +} + +// GobDecode decodes the specified byte buffer (generated by GobEncode) into +// the receiving image. +func (info *ImageInfoType) GobDecode(buf []byte) (err error) { + fields := []interface{}{&info.data, &info.smask, &info.n, &info.w, &info.h, + &info.cs, &info.pal, &info.bpc, &info.f, &info.dp, &info.trns, &info.scale, &info.dpi} + r := bytes.NewBuffer(buf) + decoder := gob.NewDecoder(r) + for j := 0; j < len(fields) && err == nil; j++ { + err = decoder.Decode(fields[j]) + } + + info.i, err = generateImageID(info) + return +} + +// PointConvert returns the value of pt, expressed in points (1/72 inch), as a +// value expressed in the unit of measure specified in New(). Since font +// management in Fpdf uses points, this method can help with line height +// calculations and other methods that require user units. +func (f *Fpdf) PointConvert(pt float64) (u float64) { + return pt / f.k +} + +// PointToUnitConvert is an alias for PointConvert. +func (f *Fpdf) PointToUnitConvert(pt float64) (u float64) { + return pt / f.k +} + +// UnitToPointConvert returns the value of u, expressed in the unit of measure +// specified in New(), as a value expressed in points (1/72 inch). Since font +// management in Fpdf uses points, this method can help with setting font sizes +// based on the sizes of other non-font page elements. +func (f *Fpdf) UnitToPointConvert(u float64) (pt float64) { + return u * f.k +} + +// Extent returns the width and height of the image in the units of the Fpdf +// object. +func (info *ImageInfoType) Extent() (wd, ht float64) { + return info.Width(), info.Height() +} + +// Width returns the width of the image in the units of the Fpdf object. +func (info *ImageInfoType) Width() float64 { + return info.w / (info.scale * info.dpi / 72) +} + +// Height returns the height of the image in the units of the Fpdf object. +func (info *ImageInfoType) Height() float64 { + return info.h / (info.scale * info.dpi / 72) +} + +// SetDpi sets the dots per inch for an image. PNG images MAY have their dpi +// set automatically, if the image specifies it. DPI information is not +// currently available automatically for JPG and GIF images, so if it's +// important to you, you can set it here. It defaults to 72 dpi. +func (info *ImageInfoType) SetDpi(dpi float64) { + info.dpi = dpi +} + +type fontFileType struct { + length1, length2 int64 + n int + embedded bool + content []byte + fontType string +} + +type linkType struct { + x, y, wd, ht float64 + link int // Auto-generated internal link ID or... + linkStr string // ...application-provided external link string +} + +type intLinkType struct { + page int + y float64 +} + +// outlineType is used for a sidebar outline of bookmarks +type outlineType struct { + text string + level, parent, first, last, next, prev int + y float64 + p int +} + +// InitType is used with NewCustom() to customize an Fpdf instance. +// OrientationStr, UnitStr, SizeStr and FontDirStr correspond to the arguments +// accepted by New(). If the Wd and Ht fields of Size are each greater than +// zero, Size will be used to set the default page size rather than SizeStr. Wd +// and Ht are specified in the units of measure indicated by UnitStr. +type InitType struct { + OrientationStr string + UnitStr string + SizeStr string + Size SizeType + FontDirStr string +} + +// FontLoader is used to read fonts (JSON font specification and zlib compressed font binaries) +// from arbitrary locations (e.g. files, zip files, embedded font resources). +// +// Open provides an io.Reader for the specified font file (.json or .z). The file name +// never includes a path. Open returns an error if the specified file cannot be opened. +type FontLoader interface { + Open(name string) (io.Reader, error) +} + +// Pdf defines the interface used for various methods. It is implemented by the +// main FPDF instance as well as templates. +type Pdf interface { + AddFont(familyStr, styleStr, fileStr string) + AddFontFromBytes(familyStr, styleStr string, jsonFileBytes, zFileBytes []byte) + AddFontFromReader(familyStr, styleStr string, r io.Reader) + AddLayer(name string, visible bool) (layerID int) + AddLink() int + AddPage() + AddPageFormat(orientationStr string, size SizeType) + AddSpotColor(nameStr string, c, m, y, k byte) + AliasNbPages(aliasStr string) + ArcTo(x, y, rx, ry, degRotate, degStart, degEnd float64) + Arc(x, y, rx, ry, degRotate, degStart, degEnd float64, styleStr string) + BeginLayer(id int) + Beziergon(points []PointType, styleStr string) + Bookmark(txtStr string, level int, y float64) + CellFormat(w, h float64, txtStr, borderStr string, ln int, alignStr string, fill bool, link int, linkStr string) + Cellf(w, h float64, fmtStr string, args ...interface{}) + Cell(w, h float64, txtStr string) + Circle(x, y, r float64, styleStr string) + ClearError() + ClipCircle(x, y, r float64, outline bool) + ClipEllipse(x, y, rx, ry float64, outline bool) + ClipEnd() + ClipPolygon(points []PointType, outline bool) + ClipRect(x, y, w, h float64, outline bool) + ClipRoundedRect(x, y, w, h, r float64, outline bool) + ClipText(x, y float64, txtStr string, outline bool) + Close() + ClosePath() + CreateTemplateCustom(corner PointType, size SizeType, fn func(*Tpl)) Template + CreateTemplate(fn func(*Tpl)) Template + CurveBezierCubicTo(cx0, cy0, cx1, cy1, x, y float64) + CurveBezierCubic(x0, y0, cx0, cy0, cx1, cy1, x1, y1 float64, styleStr string) + CurveCubic(x0, y0, cx0, cy0, x1, y1, cx1, cy1 float64, styleStr string) + CurveTo(cx, cy, x, y float64) + Curve(x0, y0, cx, cy, x1, y1 float64, styleStr string) + DrawPath(styleStr string) + Ellipse(x, y, rx, ry, degRotate float64, styleStr string) + EndLayer() + Err() bool + Error() error + GetAlpha() (alpha float64, blendModeStr string) + GetAutoPageBreak() (auto bool, margin float64) + GetCellMargin() float64 + GetConversionRatio() float64 + GetDrawColor() (int, int, int) + GetDrawSpotColor() (name string, c, m, y, k byte) + GetFillColor() (int, int, int) + GetFillSpotColor() (name string, c, m, y, k byte) + GetFontDesc(familyStr, styleStr string) FontDescType + GetFontSize() (ptSize, unitSize float64) + GetImageInfo(imageStr string) (info *ImageInfoType) + GetLineWidth() float64 + GetMargins() (left, top, right, bottom float64) + GetPageSizeStr(sizeStr string) (size SizeType) + GetPageSize() (width, height float64) + GetStringWidth(s string) float64 + GetTextColor() (int, int, int) + GetTextSpotColor() (name string, c, m, y, k byte) + GetX() float64 + GetXY() (float64, float64) + GetY() float64 + HTMLBasicNew() (html HTMLBasicType) + Image(imageNameStr string, x, y, w, h float64, flow bool, tp string, link int, linkStr string) + ImageOptions(imageNameStr string, x, y, w, h float64, flow bool, options ImageOptions, link int, linkStr string) + ImageTypeFromMime(mimeStr string) (tp string) + LinearGradient(x, y, w, h float64, r1, g1, b1, r2, g2, b2 int, x1, y1, x2, y2 float64) + LineTo(x, y float64) + Line(x1, y1, x2, y2 float64) + LinkString(x, y, w, h float64, linkStr string) + Link(x, y, w, h float64, link int) + Ln(h float64) + MoveTo(x, y float64) + MultiCell(w, h float64, txtStr, borderStr, alignStr string, fill bool) + Ok() bool + OpenLayerPane() + OutputAndClose(w io.WriteCloser) error + OutputFileAndClose(fileStr string) error + Output(w io.Writer) error + PageCount() int + PageNo() int + PageSize(pageNum int) (wd, ht float64, unitStr string) + PointConvert(pt float64) (u float64) + PointToUnitConvert(pt float64) (u float64) + Polygon(points []PointType, styleStr string) + RadialGradient(x, y, w, h float64, r1, g1, b1, r2, g2, b2 int, x1, y1, x2, y2, r float64) + RawWriteBuf(r io.Reader) + RawWriteStr(str string) + Rect(x, y, w, h float64, styleStr string) + RegisterAlias(alias, replacement string) + RegisterImage(fileStr, tp string) (info *ImageInfoType) + RegisterImageOptions(fileStr string, options ImageOptions) (info *ImageInfoType) + RegisterImageOptionsReader(imgName string, options ImageOptions, r io.Reader) (info *ImageInfoType) + RegisterImageReader(imgName, tp string, r io.Reader) (info *ImageInfoType) + SetAcceptPageBreakFunc(fnc func() bool) + SetAlpha(alpha float64, blendModeStr string) + SetAuthor(authorStr string, isUTF8 bool) + SetAutoPageBreak(auto bool, margin float64) + SetCatalogSort(flag bool) + SetCellMargin(margin float64) + SetCompression(compress bool) + SetCreationDate(tm time.Time) + SetCreator(creatorStr string, isUTF8 bool) + SetDashPattern(dashArray []float64, dashPhase float64) + SetDisplayMode(zoomStr, layoutStr string) + SetDrawColor(r, g, b int) + SetDrawSpotColor(nameStr string, tint byte) + SetError(err error) + SetErrorf(fmtStr string, args ...interface{}) + SetFillColor(r, g, b int) + SetFillSpotColor(nameStr string, tint byte) + SetFont(familyStr, styleStr string, size float64) + SetFontLoader(loader FontLoader) + SetFontLocation(fontDirStr string) + SetFontSize(size float64) + SetFontStyle(styleStr string) + SetFontUnitSize(size float64) + SetFooterFunc(fnc func()) + SetFooterFuncLpi(fnc func(lastPage bool)) + SetHeaderFunc(fnc func()) + SetHeaderFuncMode(fnc func(), homeMode bool) + SetHomeXY() + SetJavascript(script string) + SetKeywords(keywordsStr string, isUTF8 bool) + SetLeftMargin(margin float64) + SetLineCapStyle(styleStr string) + SetLineJoinStyle(styleStr string) + SetLineWidth(width float64) + SetLink(link int, y float64, page int) + SetMargins(left, top, right float64) + SetPageBoxRec(t string, pb PageBox) + SetPageBox(t string, x, y, wd, ht float64) + SetPage(pageNum int) + SetProtection(actionFlag byte, userPassStr, ownerPassStr string) + SetRightMargin(margin float64) + SetSubject(subjectStr string, isUTF8 bool) + SetTextColor(r, g, b int) + SetTextSpotColor(nameStr string, tint byte) + SetTitle(titleStr string, isUTF8 bool) + SetTopMargin(margin float64) + SetUnderlineThickness(thickness float64) + SetXmpMetadata(xmpStream []byte) + SetX(x float64) + SetXY(x, y float64) + SetY(y float64) + SplitLines(txt []byte, w float64) [][]byte + String() string + SVGBasicWrite(sb *SVGBasicType, scale float64) + Text(x, y float64, txtStr string) + TransformBegin() + TransformEnd() + TransformMirrorHorizontal(x float64) + TransformMirrorLine(angle, x, y float64) + TransformMirrorPoint(x, y float64) + TransformMirrorVertical(y float64) + TransformRotate(angle, x, y float64) + TransformScale(scaleWd, scaleHt, x, y float64) + TransformScaleX(scaleWd, x, y float64) + TransformScaleXY(s, x, y float64) + TransformScaleY(scaleHt, x, y float64) + TransformSkew(angleX, angleY, x, y float64) + TransformSkewX(angleX, x, y float64) + TransformSkewY(angleY, x, y float64) + Transform(tm TransformMatrix) + TransformTranslate(tx, ty float64) + TransformTranslateX(tx float64) + TransformTranslateY(ty float64) + UnicodeTranslatorFromDescriptor(cpStr string) (rep func(string) string) + UnitToPointConvert(u float64) (pt float64) + UseTemplateScaled(t Template, corner PointType, size SizeType) + UseTemplate(t Template) + WriteAligned(width, lineHeight float64, textStr, alignStr string) + Writef(h float64, fmtStr string, args ...interface{}) + Write(h float64, txtStr string) + WriteLinkID(h float64, displayStr string, linkID int) + WriteLinkString(h float64, displayStr, targetStr string) +} + +// PageBox defines the coordinates and extent of the various page box types +type PageBox struct { + SizeType + PointType +} + +// Fpdf is the principal structure for creating a single PDF document +type Fpdf struct { + isCurrentUTF8 bool // is current font used in utf-8 mode + isRTL bool // is is right to left mode enabled + page int // current page number + n int // current object number + offsets []int // array of object offsets + templates map[string]Template // templates used in this document + templateObjects map[string]int // template object IDs within this document + importedObjs map[string][]byte // imported template objects (gofpdi) + importedObjPos map[string]map[int]string // imported template objects hashes and their positions (gofpdi) + importedTplObjs map[string]string // imported template names and IDs (hashed) (gofpdi) + importedTplIDs map[string]int // imported template ids hash to object id int (gofpdi) + buffer fmtBuffer // buffer holding in-memory PDF + pages []*bytes.Buffer // slice[page] of page content; 1-based + state int // current document state + compress bool // compression flag + k float64 // scale factor (number of points in user unit) + defOrientation string // default orientation + curOrientation string // current orientation + stdPageSizes map[string]SizeType // standard page sizes + defPageSize SizeType // default page size + defPageBoxes map[string]PageBox // default page size + curPageSize SizeType // current page size + pageSizes map[int]SizeType // used for pages with non default sizes or orientations + pageBoxes map[int]map[string]PageBox // used to define the crop, trim, bleed and art boxes + unitStr string // unit of measure for all rendered objects except fonts + wPt, hPt float64 // dimensions of current page in points + w, h float64 // dimensions of current page in user unit + lMargin float64 // left margin + tMargin float64 // top margin + rMargin float64 // right margin + bMargin float64 // page break margin + cMargin float64 // cell margin + x, y float64 // current position in user unit + lasth float64 // height of last printed cell + lineWidth float64 // line width in user unit + fontpath string // path containing fonts + fontLoader FontLoader // used to load font files from arbitrary locations + coreFonts map[string]bool // array of core font names + fonts map[string]fontDefType // array of used fonts + fontFiles map[string]fontFileType // array of font files + diffs []string // array of encoding differences + fontFamily string // current font family + fontStyle string // current font style + underline bool // underlining flag + strikeout bool // strike out flag + currentFont fontDefType // current font info + fontSizePt float64 // current font size in points + fontSize float64 // current font size in user unit + ws float64 // word spacing + images map[string]*ImageInfoType // array of used images + aliasMap map[string]string // map of alias->replacement + pageLinks [][]linkType // pageLinks[page][link], both 1-based + links []intLinkType // array of internal links + attachments []Attachment // slice of content to embed globally + pageAttachments [][]annotationAttach // 1-based array of annotation for file attachments (per page) + outlines []outlineType // array of outlines + outlineRoot int // root of outlines + autoPageBreak bool // automatic page breaking + acceptPageBreak func() bool // returns true to accept page break + pageBreakTrigger float64 // threshold used to trigger page breaks + inHeader bool // flag set when processing header + headerFnc func() // function provided by app and called to write header + headerHomeMode bool // set position to home after headerFnc is called + inFooter bool // flag set when processing footer + footerFnc func() // function provided by app and called to write footer + footerFncLpi func(bool) // function provided by app and called to write footer with last page flag + zoomMode string // zoom display mode + layoutMode string // layout display mode + xmp []byte // XMP metadata + producer string // producer + title string // title + subject string // subject + author string // author + keywords string // keywords + creator string // creator + creationDate time.Time // override for document CreationDate value + modDate time.Time // override for document ModDate value + aliasNbPagesStr string // alias for total number of pages + pdfVersion string // PDF version number + fontDirStr string // location of font definition files + capStyle int // line cap style: butt 0, round 1, square 2 + joinStyle int // line segment join style: miter 0, round 1, bevel 2 + dashArray []float64 // dash array + dashPhase float64 // dash phase + blendList []blendModeType // slice[idx] of alpha transparency modes, 1-based + blendMap map[string]int // map into blendList + blendMode string // current blend mode + alpha float64 // current transpacency + gradientList []gradientType // slice[idx] of gradient records + clipNest int // Number of active clipping contexts + transformNest int // Number of active transformation contexts + err error // Set if error occurs during life cycle of instance + protect protectType // document protection structure + layer layerRecType // manages optional layers in document + catalogSort bool // sort resource catalogs in document + nJs int // JavaScript object number + javascript *string // JavaScript code to include in the PDF + colorFlag bool // indicates whether fill and text colors are different + color struct { + // Composite values of colors + draw, fill, text colorType + } + spotColorMap map[string]spotColorType // Map of named ink-based colors + userUnderlineThickness float64 // A custom user underline thickness multiplier. +} + +type encType struct { + uv int + name string +} + +type encListType [256]encType + +type fontBoxType struct { + Xmin, Ymin, Xmax, Ymax int +} + +// Font flags for FontDescType.Flags as defined in the pdf specification. +const ( + // FontFlagFixedPitch is set if all glyphs have the same width (as + // opposed to proportional or variable-pitch fonts, which have + // different widths). + FontFlagFixedPitch = 1 << 0 + // FontFlagSerif is set if glyphs have serifs, which are short + // strokes drawn at an angle on the top and bottom of glyph stems. + // (Sans serif fonts do not have serifs.) + FontFlagSerif = 1 << 1 + // FontFlagSymbolic is set if font contains glyphs outside the + // Adobe standard Latin character set. This flag and the + // Nonsymbolic flag shall not both be set or both be clear. + FontFlagSymbolic = 1 << 2 + // FontFlagScript is set if glyphs resemble cursive handwriting. + FontFlagScript = 1 << 3 + // FontFlagNonsymbolic is set if font uses the Adobe standard + // Latin character set or a subset of it. + FontFlagNonsymbolic = 1 << 5 + // FontFlagItalic is set if glyphs have dominant vertical strokes + // that are slanted. + FontFlagItalic = 1 << 6 + // FontFlagAllCap is set if font contains no lowercase letters; + // typically used for display purposes, such as for titles or + // headlines. + FontFlagAllCap = 1 << 16 + // SmallCap is set if font contains both uppercase and lowercase + // letters. The uppercase letters are similar to those in the + // regular version of the same typeface family. The glyphs for the + // lowercase letters have the same shapes as the corresponding + // uppercase letters, but they are sized and their proportions + // adjusted so that they have the same size and stroke weight as + // lowercase glyphs in the same typeface family. + SmallCap = 1 << 18 + // ForceBold determines whether bold glyphs shall be painted with + // extra pixels even at very small text sizes by a conforming + // reader. If the ForceBold flag is set, features of bold glyphs + // may be thickened at small text sizes. + ForceBold = 1 << 18 +) + +// FontDescType (font descriptor) specifies metrics and other +// attributes of a font, as distinct from the metrics of individual +// glyphs (as defined in the pdf specification). +type FontDescType struct { + // The maximum height above the baseline reached by glyphs in this + // font (for example for "S"). The height of glyphs for accented + // characters shall be excluded. + Ascent int + // The maximum depth below the baseline reached by glyphs in this + // font. The value shall be a negative number. + Descent int + // The vertical coordinate of the top of flat capital letters, + // measured from the baseline (for example "H"). + CapHeight int + // A collection of flags defining various characteristics of the + // font. (See the FontFlag* constants.) + Flags int + // A rectangle, expressed in the glyph coordinate system, that + // shall specify the font bounding box. This should be the smallest + // rectangle enclosing the shape that would result if all of the + // glyphs of the font were placed with their origins coincident + // and then filled. + FontBBox fontBoxType + // The angle, expressed in degrees counterclockwise from the + // vertical, of the dominant vertical strokes of the font. (The + // 9-o’clock position is 90 degrees, and the 3-o’clock position + // is –90 degrees.) The value shall be negative for fonts that + // slope to the right, as almost all italic fonts do. + ItalicAngle int + // The thickness, measured horizontally, of the dominant vertical + // stems of glyphs in the font. + StemV int + // The width to use for character codes whose widths are not + // specified in a font dictionary’s Widths array. This shall have + // a predictable effect only if all such codes map to glyphs whose + // actual widths are the same as the value of the MissingWidth + // entry. (Default value: 0.) + MissingWidth int +} + +type fontDefType struct { + Tp string // "Core", "TrueType", ... + Name string // "Courier-Bold", ... + Desc FontDescType // Font descriptor + Up int // Underline position + Ut int // Underline thickness + Cw []int // Character width by ordinal + Enc string // "cp1252", ... + Diff string // Differences from reference encoding + File string // "Redressed.z" + Size1, Size2 int // Type1 values + OriginalSize int // Size of uncompressed font file + N int // Set by font loader + DiffN int // Position of diff in app array, set by font loader + i string // 1-based position in font list, set by font loader, not this program + utf8File *utf8FontFile // UTF-8 font + usedRunes map[int]int // Array of used runes +} + +// generateFontID generates a font Id from the font definition +func generateFontID(fdt fontDefType) (string, error) { + // file can be different if generated in different instance + fdt.File = "" + b, err := json.Marshal(&fdt) + return fmt.Sprintf("%x", sha1.Sum(b)), err +} + +type fontInfoType struct { + Data []byte + File string + OriginalSize int + FontName string + Bold bool + IsFixedPitch bool + UnderlineThickness int + UnderlinePosition int + Widths []int + Size1, Size2 uint32 + Desc FontDescType +} diff --git a/doc.go b/doc.go new file mode 100644 index 0000000..cb46a70 --- /dev/null +++ b/doc.go @@ -0,0 +1,291 @@ +/* +Package gofpdf implements a PDF document generator with high level +support for text, drawing and images. + + +Features + + +- UTF-8 support + +- Choice of measurement unit, page format and margins + +- Page header and footer management + +- Automatic page breaks, line breaks, and text justification + +- Inclusion of JPEG, PNG, GIF, TIFF and basic path-only SVG images + +- Colors, gradients and alpha channel transparency + +- Outline bookmarks + +- Internal and external links + +- TrueType, Type1 and encoding support + +- Page compression + +- Lines, Bézier curves, arcs, and ellipses + +- Rotation, scaling, skewing, translation, and mirroring + +- Clipping + +- Document protection + +- Layers + +- Templates + +- Barcodes + +- Charting facility + +- Import PDFs as templates + +gofpdf has no dependencies other than the Go standard library. All tests +pass on Linux, Mac and Windows platforms. + +gofpdf supports UTF-8 TrueType fonts and “right-to-left” languages. Note +that Chinese, Japanese, and Korean characters may not be included in +many general purpose fonts. For these languages, a specialized font (for +example, NotoSansSC for simplified Chinese) can be used. + +Also, support is provided to automatically translate UTF-8 runes to code +page encodings for languages that have fewer than 256 glyphs. + + +We Are Closed + +This repository will not be maintained, at least for some unknown +duration. But it is hoped that gofpdf has a bright future in the open +source world. Due to Go’s promise of compatibility, gofpdf should +continue to function without modification for a longer time than would +be the case with many other languages. + +Forks should be based on the last viable commit. Tools such as +active-forks can be used to select a fork that looks promising for your +needs. If a particular fork looks like it has taken the lead in +attracting followers, this README will be updated to point people in +that direction. + +The efforts of all contributors to this project have been deeply +appreciated. Best wishes to all of you. + + +Installation + +To install the package on your system, run + + go get github.com/jung-kurt/gofpdf + +Later, to receive updates, run + + go get -u -v github.com/jung-kurt/gofpdf/... + + +Quick Start + +The following Go code generates a simple PDF file. + + pdf := gofpdf.New("P", "mm", "A4", "") + pdf.AddPage() + pdf.SetFont("Arial", "B", 16) + pdf.Cell(40, 10, "Hello, world") + err := pdf.OutputFileAndClose("hello.pdf") + +See the functions in the fpdf_test.go file (shown as examples in this +documentation) for more advanced PDF examples. + + +Errors + +If an error occurs in an Fpdf method, an internal error field is set. +After this occurs, Fpdf method calls typically return without performing +any operations and the error state is retained. This error management +scheme facilitates PDF generation since individual method calls do not +need to be examined for failure; it is generally sufficient to wait +until after Output() is called. For the same reason, if an error occurs +in the calling application during PDF generation, it may be desirable +for the application to transfer the error to the Fpdf instance by +calling the SetError() method or the SetErrorf() method. At any time +during the life cycle of the Fpdf instance, the error state can be +determined with a call to Ok() or Err(). The error itself can be +retrieved with a call to Error(). + + +Conversion Notes + +This package is a relatively straightforward translation from the +original FPDF library written in PHP (despite the caveat in the +introduction to Effective Go). The API names have been retained even +though the Go idiom would suggest otherwise (for example, pdf.GetX() is +used rather than simply pdf.X()). The similarity of the two libraries +makes the original FPDF website a good source of information. It +includes a forum and FAQ. + +However, some internal changes have been made. Page content is built up +using buffers (of type bytes.Buffer) rather than repeated string +concatenation. Errors are handled as explained above rather than +panicking. Output is generated through an interface of type io.Writer or +io.WriteCloser. A number of the original PHP methods behave differently +based on the type of the arguments that are passed to them; in these +cases additional methods have been exported to provide similar +functionality. Font definition files are produced in JSON rather than +PHP. + + +Example PDFs + +A side effect of running go test ./... is the production of a number of +example PDFs. These can be found in the gofpdf/pdf directory after the +tests complete. + +Please note that these examples run in the context of a test. In order +run an example as a standalone application, you’ll need to examine +fpdf_test.go for some helper routines, for example exampleFilename() and +summary(). + +Example PDFs can be compared with reference copies in order to verify +that they have been generated as expected. This comparison will be +performed if a PDF with the same name as the example PDF is placed in +the gofpdf/pdf/reference directory and if the third argument to +ComparePDFFiles() in internal/example/example.go is true. (By default it +is false.) The routine that summarizes an example will look for this +file and, if found, will call ComparePDFFiles() to check the example PDF +for equality with its reference PDF. If differences exist between the +two files they will be printed to standard output and the test will +fail. If the reference file is missing, the comparison is considered to +succeed. In order to successfully compare two PDFs, the placement of +internal resources must be consistent and the internal creation +timestamps must be the same. To do this, the methods SetCatalogSort() +and SetCreationDate() need to be called for both files. This is done +automatically for all examples. + + +Nonstandard Fonts + +Nothing special is required to use the standard PDF fonts (courier, +helvetica, times, zapfdingbats) in your documents other than calling +SetFont(). + +You should use AddUTF8Font() or AddUTF8FontFromBytes() to add a TrueType +UTF-8 encoded font. Use RTL() and LTR() methods switch between +“right-to-left” and “left-to-right” mode. + +In order to use a different non-UTF-8 TrueType or Type1 font, you will +need to generate a font definition file and, if the font will be +embedded into PDFs, a compressed version of the font file. This is done +by calling the MakeFont function or using the included makefont command +line utility. To create the utility, cd into the makefont subdirectory +and run “go build”. This will produce a standalone executable named +makefont. Select the appropriate encoding file from the font +subdirectory and run the command as in the following example. + + ./makefont --embed --enc=../font/cp1252.map --dst=../font ../font/calligra.ttf + +In your PDF generation code, call AddFont() to load the font and, as +with the standard fonts, SetFont() to begin using it. Most examples, +including the package example, demonstrate this method. Good sources of +free, open-source fonts include Google Fonts and DejaVu Fonts. + + +Related Packages + +The draw2d package is a two dimensional vector graphics library that can +generate output in different forms. It uses gofpdf for its document +production mode. + + +Contributing Changes + +gofpdf is a global community effort and you are invited to make it even +better. If you have implemented a new feature or corrected a problem, +please consider contributing your change to the project. A contribution +that does not directly pertain to the core functionality of gofpdf +should be placed in its own directory directly beneath the contrib +directory. + +Here are guidelines for making submissions. Your change should + + +- be compatible with the MIT License + +- be properly documented + +- be formatted with go fmt + +- include an example in fpdf_test.go if appropriate + +- conform to the standards of golint and go vet, that is, golint . and +go vet . should not generate any warnings + +- not diminish test coverage + +Pull requests are the preferred means of accepting your changes. + + +License + +gofpdf is released under the MIT License. It is copyrighted by Kurt Jung +and the contributors acknowledged below. + + +Acknowledgments + +This package’s code and documentation are closely derived from the FPDF +library created by Olivier Plathey, and a number of font and image +resources are copied directly from it. Bruno Michel has provided +valuable assistance with the code. Drawing support is adapted from the +FPDF geometric figures script by David Hernández Sanz. Transparency +support is adapted from the FPDF transparency script by Martin Hall-May. +Support for gradients and clipping is adapted from FPDF scripts by +Andreas Würmser. Support for outline bookmarks is adapted from Olivier +Plathey by Manuel Cornes. Layer support is adapted from Olivier Plathey. +Support for transformations is adapted from the FPDF transformation +script by Moritz Wagner and Andreas Würmser. PDF protection is adapted +from the work of Klemen Vodopivec for the FPDF product. Lawrence +Kesteloot provided code to allow an image’s extent to be determined +prior to placement. Support for vertical alignment within a cell was +provided by Stefan Schroeder. Ivan Daniluk generalized the font and +image loading code to use the Reader interface while maintaining +backward compatibility. Anthony Starks provided code for the Polygon +function. Robert Lillack provided the Beziergon function and corrected +some naming issues with the internal curve function. Claudio Felber +provided implementations for dashed line drawing and generalized font +loading. Stani Michiels provided support for multi-segment path drawing +with smooth line joins, line join styles, enhanced fill modes, and has +helped greatly with package presentation and tests. Templating is +adapted by Marcus Downing from the FPDF_Tpl library created by Jan +Slabon and Setasign. Jelmer Snoeck contributed packages that generate a +variety of barcodes and help with registering images on the web. Jelmer +Snoek and Guillermo Pascual augmented the basic HTML functionality with +aligned text. Kent Quirk implemented backwards-compatible support for +reading DPI from images that support it, and for setting DPI manually +and then having it properly taken into account when calculating image +size. Paulo Coutinho provided support for static embedded fonts. Dan +Meyers added support for embedded JavaScript. David Fish added a generic +alias-replacement function to enable, among other things, table of +contents functionality. Andy Bakun identified and corrected a problem in +which the internal catalogs were not sorted stably. Paul Montag added +encoding and decoding functionality for templates, including images that +are embedded in templates; this allows templates to be stored +independently of gofpdf. Paul also added support for page boxes used in +printing PDF documents. Wojciech Matusiak added supported for word +spacing. Artem Korotkiy added support of UTF-8 fonts. Dave Barnes added +support for imported objects and templates. Brigham Thompson added +support for rounded rectangles. Joe Westcott added underline +functionality and optimized image storage. Benoit KUGLER contributed +support for rectangles with corners of unequal radius, modification +times, and for file attachments and annotations. + + +Roadmap + + +- Remove all legacy code page font support; use UTF-8 exclusively + +- Improve test coverage as reported by the coverage tool. +*/ +package gofpdf diff --git a/doc/document.md b/doc/document.md new file mode 100644 index 0000000..145fc16 --- /dev/null +++ b/doc/document.md @@ -0,0 +1,288 @@ +# GoFPDF document generator + +[![No Maintenance Intended][badge-no-maintain]][unmaintained] +[![MIT licensed][badge-mit]][license] +[![Report][badge-report]][report] +[![GoDoc][badge-doc]][godoc] + +![][logo] + +Package gofpdf implements a PDF document generator with high level support for +text, drawing and images. + +## Features + +* UTF-8 support +* Choice of measurement unit, page format and margins +* Page header and footer management +* Automatic page breaks, line breaks, and text justification +* Inclusion of JPEG, PNG, GIF, TIFF and basic path-only SVG images +* Colors, gradients and alpha channel transparency +* Outline bookmarks +* Internal and external links +* TrueType, Type1 and encoding support +* Page compression +* Lines, Bézier curves, arcs, and ellipses +* Rotation, scaling, skewing, translation, and mirroring +* Clipping +* Document protection +* Layers +* Templates +* Barcodes +* Charting facility +* Import PDFs as templates + +gofpdf has no dependencies other than the Go standard library. All tests pass +on Linux, Mac and Windows platforms. + +gofpdf supports UTF-8 TrueType fonts and "right-to-left" languages. Note that +Chinese, Japanese, and Korean characters may not be included in many general +purpose fonts. For these languages, a specialized font (for example, +[NotoSansSC][noto] for simplified Chinese) can be used. + +Also, support is provided to automatically translate UTF-8 runes to code page +encodings for languages that have fewer than 256 glyphs. + +## We Are Closed + +This repository will not be maintained, at least for some unknown duration. But +it is hoped that gofpdf has a bright future in the open source world. Due to +Go's promise of compatibility, gofpdf should continue to function without +modification for a longer time than would be the case with many other +languages. + +Forks should be based on the [last viable commit][last-commit]. Tools such as +[active-forks][gofpdf-fork] can be used to select a fork that looks promising +for your needs. If a particular fork looks like it has taken the lead in +attracting followers, this README will be updated to point people in that +direction. + +The efforts of all contributors to this project have been deeply appreciated. +Best wishes to all of you. + +## Installation + +To install the package on your system, run + +```shell +go get github.com/jung-kurt/gofpdf +``` + +Later, to receive updates, run + +```shell +go get -u -v github.com/jung-kurt/gofpdf/... +``` + +## Quick Start + +The following Go code generates a simple PDF file. + +```go +pdf := gofpdf.New("P", "mm", "A4", "") +pdf.AddPage() +pdf.SetFont("Arial", "B", 16) +pdf.Cell(40, 10, "Hello, world") +err := pdf.OutputFileAndClose("hello.pdf") +``` + +See the functions in the [fpdf_test.go][fpdf-test] file (shown as examples in +this documentation) for more advanced PDF examples. + +## Errors + +If an error occurs in an Fpdf method, an internal error field is set. After +this occurs, Fpdf method calls typically return without performing any +operations and the error state is retained. This error management scheme +facilitates PDF generation since individual method calls do not need to be +examined for failure; it is generally sufficient to wait until after `Output()` +is called. For the same reason, if an error occurs in the calling application +during PDF generation, it may be desirable for the application to transfer the +error to the Fpdf instance by calling the `SetError()` method or the +`SetErrorf()` method. At any time during the life cycle of the Fpdf instance, +the error state can be determined with a call to `Ok()` or `Err()`. The error +itself can be retrieved with a call to `Error()`. + +## Conversion Notes + +This package is a relatively straightforward translation from the original +[FPDF][fpdf-site] library written in PHP (despite the caveat in the +introduction to [Effective Go][effective-go]). The +API names have been retained even though the Go idiom would suggest otherwise +(for example, `pdf.GetX()` is used rather than simply `pdf.X()`). The +similarity of the two libraries makes the original FPDF website a good source +of information. It includes a forum and FAQ. + +However, some internal changes have been made. Page content is built up using +buffers (of type bytes.Buffer) rather than repeated string concatenation. +Errors are handled as explained above rather than panicking. Output is +generated through an interface of type io.Writer or io.WriteCloser. A number of +the original PHP methods behave differently based on the type of the arguments +that are passed to them; in these cases additional methods have been exported +to provide similar functionality. Font definition files are produced in JSON +rather than PHP. + +## Example PDFs + +A side effect of running `go test ./...` is the production of a number of +example PDFs. These can be found in the gofpdf/pdf directory after the tests +complete. + +Please note that these examples run in the context of a test. In order run an +example as a standalone application, you'll need to examine +[fpdf_test.go][fpdf-test] for some helper routines, for example +`exampleFilename()` and `summary()`. + +Example PDFs can be compared with reference copies in order to verify that they +have been generated as expected. This comparison will be performed if a PDF +with the same name as the example PDF is placed in the gofpdf/pdf/reference +directory and if the third argument to `ComparePDFFiles()` in +internal/example/example.go is true. (By default it is false.) The routine that +summarizes an example will look for this file and, if found, will call +`ComparePDFFiles()` to check the example PDF for equality with its reference PDF. +If differences exist between the two files they will be printed to standard +output and the test will fail. If the reference file is missing, the comparison +is considered to succeed. In order to successfully compare two PDFs, the +placement of internal resources must be consistent and the internal creation +timestamps must be the same. To do this, the methods `SetCatalogSort()` and +`SetCreationDate()` need to be called for both files. This is done automatically +for all examples. + +## Nonstandard Fonts + +Nothing special is required to use the standard PDF fonts (courier, helvetica, +times, zapfdingbats) in your documents other than calling `SetFont()`. + +You should use `AddUTF8Font()` or `AddUTF8FontFromBytes()` to add a TrueType +UTF-8 encoded font. Use `RTL()` and `LTR()` methods switch between +"right-to-left" and "left-to-right" mode. + +In order to use a different non-UTF-8 TrueType or Type1 font, you will need to +generate a font definition file and, if the font will be embedded into PDFs, a +compressed version of the font file. This is done by calling the MakeFont +function or using the included makefont command line utility. To create the +utility, cd into the makefont subdirectory and run "go build". This will +produce a standalone executable named makefont. Select the appropriate encoding +file from the font subdirectory and run the command as in the following +example. + +```shell +./makefont --embed --enc=../font/cp1252.map --dst=../font ../font/calligra.ttf +``` + +In your PDF generation code, call `AddFont()` to load the font and, as with the +standard fonts, SetFont() to begin using it. Most examples, including the +package example, demonstrate this method. Good sources of free, open-source +fonts include [Google Fonts][gfont] and [DejaVu Fonts][dfont]. + +## Related Packages + +The [draw2d][draw2d-site] package is a two dimensional vector graphics library that +can generate output in different forms. It uses gofpdf for its document +production mode. + +## Contributing Changes + +gofpdf is a global community effort and you are invited to make it even better. +If you have implemented a new feature or corrected a problem, please consider +contributing your change to the project. A contribution that does not directly +pertain to the core functionality of gofpdf should be placed in its own +directory directly beneath the `contrib` directory. + +Here are guidelines for making submissions. Your change should + +* be compatible with the MIT License +* be properly documented +* be formatted with `go fmt` +* include an example in [fpdf_test.go][test] if appropriate +* conform to the standards of [golint][lint] and +[go vet][vet], that is, `golint .` and +`go vet .` should not generate any warnings +* not diminish [test coverage][coverage] + +[Pull requests][pr] are the preferred means of accepting your changes. + +## License + +gofpdf is released under the MIT License. It is copyrighted by Kurt Jung and +the contributors acknowledged below. + +## Acknowledgments + +This package's code and documentation are closely derived from the [FPDF][fpdf-site] +library created by Olivier Plathey, and a number of font and image resources +are copied directly from it. Bruno Michel has provided valuable assistance with +the code. Drawing support is adapted from the FPDF geometric figures script by +David Hernández Sanz. Transparency support is adapted from the FPDF +transparency script by Martin Hall-May. Support for gradients and clipping is +adapted from FPDF scripts by Andreas Würmser. Support for outline bookmarks is +adapted from Olivier Plathey by Manuel Cornes. Layer support is adapted from +Olivier Plathey. Support for transformations is adapted from the FPDF +transformation script by Moritz Wagner and Andreas Würmser. PDF protection is +adapted from the work of Klemen Vodopivec for the FPDF product. Lawrence +Kesteloot provided code to allow an image's extent to be determined prior to +placement. Support for vertical alignment within a cell was provided by Stefan +Schroeder. Ivan Daniluk generalized the font and image loading code to use the +Reader interface while maintaining backward compatibility. Anthony Starks +provided code for the Polygon function. Robert Lillack provided the Beziergon +function and corrected some naming issues with the internal curve function. +Claudio Felber provided implementations for dashed line drawing and generalized +font loading. Stani Michiels provided support for multi-segment path drawing +with smooth line joins, line join styles, enhanced fill modes, and has helped +greatly with package presentation and tests. Templating is adapted by Marcus +Downing from the FPDF_Tpl library created by Jan Slabon and Setasign. Jelmer +Snoeck contributed packages that generate a variety of barcodes and help with +registering images on the web. Jelmer Snoek and Guillermo Pascual augmented the +basic HTML functionality with aligned text. Kent Quirk implemented +backwards-compatible support for reading DPI from images that support it, and +for setting DPI manually and then having it properly taken into account when +calculating image size. Paulo Coutinho provided support for static embedded +fonts. Dan Meyers added support for embedded JavaScript. David Fish added a +generic alias-replacement function to enable, among other things, table of +contents functionality. Andy Bakun identified and corrected a problem in which +the internal catalogs were not sorted stably. Paul Montag added encoding and +decoding functionality for templates, including images that are embedded in +templates; this allows templates to be stored independently of gofpdf. Paul +also added support for page boxes used in printing PDF documents. Wojciech +Matusiak added supported for word spacing. Artem Korotkiy added support of +UTF-8 fonts. Dave Barnes added support for imported objects and templates. +Brigham Thompson added support for rounded rectangles. Joe Westcott added +underline functionality and optimized image storage. Benoit KUGLER contributed +support for rectangles with corners of unequal radius, modification times, and +for file attachments and annotations. + +## Roadmap + +* Remove all legacy code page font support; use UTF-8 exclusively +* Improve test coverage as reported by the coverage tool. + +[badge-author]: https://img.shields.io/badge/author-Kurt_Jung-blue.svg +[badge-doc]: https://img.shields.io/badge/godoc-GoFPDF-blue.svg +[badge-github]: https://img.shields.io/badge/project-Git_Hub-blue.svg +[badge-mit]: https://img.shields.io/badge/license-MIT-blue.svg +[badge-no-maintain]: http://unmaintained.tech/badge.svg +[badge-report]: https://goreportcard.com/badge/github.com/jung-kurt/gofpdf +[badge-status]: https://travis-ci.org/jung-kurt/gofpdf.svg?branch=master +[coverage]: https://blog.golang.org/cover +[dfont]: http://dejavu-fonts.org/ +[draw2d-site]: https://github.com/llgcode/draw2d +[effective-go]: https://golang.org/doc/effective_go.html +[fpdf-site]: http://www.fpdf.org/ +[fpdf-test]: https://github.com/jung-kurt/gofpdf/blob/master/fpdf_test.go +[gfont]: https://fonts.google.com/ +[github]: https://github.com/jung-kurt/gofpdf +[godoc]: https://godoc.org/github.com/jung-kurt/gofpdf +[gofpdf-fork]: https://techgaun.github.io/active-forks/index.html#jung-kurt/gofpdf +[issue109]: https://github.com/jung-kurt/gofpdf/issues/109 +[jung]: https://github.com/jung-kurt/ +[last-commit]: https://github.com/jung-kurt/gofpdf/commit/603f56990463f011cb1dbb64ef7f872c1adc009a +[license]: https://raw.githubusercontent.com/jung-kurt/gofpdf/master/LICENSE +[lint]: https://github.com/golang/lint +[logo]: https://github.com/jung-kurt/gofpdf/raw/master/image/logo_gofpdf.jpg?raw=true +[noto]: https://github.com/jsntn/webfonts/blob/master/NotoSansSC-Regular.ttf +[pr]: https://help.github.com/articles/using-pull-requests/ +[report]: https://goreportcard.com/report/github.com/jung-kurt/gofpdf +[status]: https://travis-ci.org/jung-kurt/gofpdf +[test]: https://github.com/jung-kurt/gofpdf/blob/master/fpdf_test.go +[unmaintained]: http://unmaintained.tech/ +[vet]: https://golang.org/cmd/vet/ diff --git a/doc/go.awk b/doc/go.awk new file mode 100644 index 0000000..bcd4a7c --- /dev/null +++ b/doc/go.awk @@ -0,0 +1,13 @@ +BEGIN { show = 0 ; print "/*" } + +/^\-/ { trim = 1 ; print "" } + +/^Package/ { show = 1 } + +!NF { trim = 0 } + +trim { sub("^ +", "", $0) } + +show { print $0 } + +END { print "*/\npackage " package_name } diff --git a/doc/html.txt b/doc/html.txt new file mode 100644 index 0000000..7a89bb1 --- /dev/null +++ b/doc/html.txt @@ -0,0 +1,68 @@ + + + + + + + + GoFPDF Document Generator + + + + +$body$ + + + diff --git a/embedded.go b/embedded.go new file mode 100644 index 0000000..1d947b0 --- /dev/null +++ b/embedded.go @@ -0,0 +1,559 @@ +/* + * Copyright (c) 2014 Kurt Jung (Gmail: kurt.w.jung) + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package gofpdf + +// Embedded standard fonts + +import ( + "strings" +) + +var embeddedFontList = map[string]string{ + "courierBI": `{"Tp":"Core","Name":"Courier-BoldOblique","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, + "courierB": `{"Tp":"Core","Name":"Courier-Bold","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, + "courierI": `{"Tp":"Core","Name":"Courier-Oblique","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, + "courier": `{"Tp":"Core","Name":"Courier","Up":-100,"Ut":50,"I":256,"Cw":[600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600]}`, + "helveticaBI": `{"Tp":"Core","Name":"Helvetica-BoldOblique","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,350,556,350,278,556,500,1000,556,556,333,1000,667,333,1000,350,611,350,350,278,278,500,500,350,556,1000,333,1000,556,333,944,350,500,667,278,333,556,556,556,556,280,556,333,737,370,556,584,333,737,333,400,584,333,333,333,611,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,584,611,611,611,611,611,556,611,556]}`, + "helveticaB": `{"Tp":"Core","Name":"Helvetica-Bold","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,350,556,350,278,556,500,1000,556,556,333,1000,667,333,1000,350,611,350,350,278,278,500,500,350,556,1000,333,1000,556,333,944,350,500,667,278,333,556,556,556,556,280,556,333,737,370,556,584,333,737,333,400,584,333,333,333,611,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,584,611,611,611,611,611,556,611,556]}`, + "helveticaI": `{"Tp":"Core","Name":"Helvetica-Oblique","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,350,556,350,222,556,333,1000,556,556,333,1000,667,333,1000,350,611,350,350,222,222,333,333,350,556,1000,333,1000,500,333,944,350,500,667,278,333,556,556,556,556,260,556,333,737,370,556,584,333,737,333,400,584,333,333,333,556,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,584,611,556,556,556,556,500,556,500]}`, + "helvetica": `{"Tp":"Core","Name":"Helvetica","Up":-100,"Ut":50,"Cw":[278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,350,556,350,222,556,333,1000,556,556,333,1000,667,333,1000,350,611,350,350,222,222,333,333,350,556,1000,333,1000,500,333,944,350,500,667,278,333,556,556,556,556,260,556,333,737,370,556,584,333,737,333,400,584,333,333,333,556,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1000,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,584,611,556,556,556,556,500,556,500]}`, + "timesBI": `{"Tp":"Core","Name":"Times-BoldItalic","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,389,555,500,500,833,778,278,333,333,500,570,250,333,250,278,500,500,500,500,500,500,500,500,500,500,333,333,570,570,570,500,832,667,667,667,722,667,667,722,778,389,500,667,611,889,722,722,611,722,667,556,611,722,667,889,667,611,611,333,278,333,570,500,333,500,500,444,500,444,333,500,556,278,278,500,278,778,556,500,500,500,389,389,278,556,444,667,500,444,389,348,220,348,570,350,500,350,333,500,500,1000,500,500,333,1000,556,333,944,350,611,350,350,333,333,500,500,350,500,1000,333,1000,389,333,722,350,389,611,250,389,500,500,500,500,220,500,333,747,266,500,606,333,747,333,400,570,300,300,333,576,500,250,333,300,300,500,750,750,750,500,667,667,667,667,667,667,944,667,667,667,667,667,389,389,389,389,722,722,722,722,722,722,722,570,722,722,722,722,722,611,611,500,500,500,500,500,500,500,722,444,444,444,444,444,278,278,278,278,500,556,500,500,500,500,500,570,500,556,556,556,556,444,500,444]}`, + "timesB": `{"Tp":"Core","Name":"Times-Bold","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,333,555,500,500,1000,833,278,333,333,500,570,250,333,250,278,500,500,500,500,500,500,500,500,500,500,333,333,570,570,570,500,930,722,667,722,722,667,611,778,778,389,500,778,667,944,722,778,611,778,722,556,667,722,722,1000,722,722,667,333,278,333,581,500,333,500,556,444,556,444,333,500,556,278,333,556,278,833,556,500,556,556,444,389,333,556,500,722,500,500,444,394,220,394,520,350,500,350,333,500,500,1000,500,500,333,1000,556,333,1000,350,667,350,350,333,333,500,500,350,500,1000,333,1000,389,333,722,350,444,722,250,333,500,500,500,500,220,500,333,747,300,500,570,333,747,333,400,570,300,300,333,556,540,250,333,300,330,500,750,750,750,500,722,722,722,722,722,722,1000,722,667,667,667,667,389,389,389,389,722,722,778,778,778,778,778,570,778,722,722,722,722,722,611,556,500,500,500,500,500,500,722,444,444,444,444,444,278,278,278,278,500,556,500,500,500,500,500,570,500,556,556,556,556,500,556,500]}`, + "timesI": `{"Tp":"Core","Name":"Times-Italic","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,333,420,500,500,833,778,214,333,333,500,675,250,333,250,278,500,500,500,500,500,500,500,500,500,500,333,333,675,675,675,500,920,611,611,667,722,611,611,722,722,333,444,667,556,833,667,722,611,722,611,500,556,722,611,833,611,556,556,389,278,389,422,500,333,500,500,444,500,444,278,500,500,278,278,444,278,722,500,500,500,500,389,389,278,500,444,667,444,444,389,400,275,400,541,350,500,350,333,500,556,889,500,500,333,1000,500,333,944,350,556,350,350,333,333,556,556,350,500,889,333,980,389,333,667,350,389,556,250,389,500,500,500,500,275,500,333,760,276,500,675,333,760,333,400,675,300,300,333,500,523,250,333,300,310,500,750,750,750,500,611,611,611,611,611,611,889,667,611,611,611,611,333,333,333,333,722,667,722,722,722,722,722,675,722,722,722,722,722,556,611,500,500,500,500,500,500,500,667,444,444,444,444,444,278,278,278,278,500,500,500,500,500,500,500,675,500,500,500,500,500,444,500,444]}`, + "times": `{"Tp":"Core","Name":"Times-Roman","Up":-100,"Ut":50,"Cw":[250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,333,408,500,500,833,778,180,333,333,500,564,250,333,250,278,500,500,500,500,500,500,500,500,500,500,278,278,564,564,564,444,921,722,667,667,722,611,556,722,722,333,389,722,611,889,722,722,556,722,667,556,611,722,722,944,722,722,611,333,278,333,469,500,333,444,500,444,500,444,333,500,500,278,278,500,278,778,500,500,500,500,333,389,278,500,500,722,500,500,444,480,200,480,541,350,500,350,333,500,444,1000,500,500,333,1000,556,333,889,350,611,350,350,333,333,444,444,350,500,1000,333,980,389,333,722,350,444,722,250,333,500,500,500,500,200,500,333,760,276,500,564,333,760,333,400,564,300,300,333,500,453,250,333,300,310,500,750,750,750,444,722,722,722,722,722,722,889,667,611,611,611,611,333,333,333,333,722,722,722,722,722,722,722,564,722,722,722,722,722,722,556,500,444,444,444,444,444,444,667,444,444,444,444,444,278,278,278,278,500,500,500,500,500,500,500,564,500,500,500,500,500,500,500,500]}`, + "zapfdingbats": `{"Tp":"Core","Name":"ZapfDingbats","Up":-100,"Ut":50,"Cw":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,278,974,961,974,980,719,789,790,791,690,960,939,549,855,911,933,911,945,974,755,846,762,761,571,677,763,760,759,754,494,552,537,577,692,786,788,788,790,793,794,816,823,789,841,823,833,816,831,923,744,723,749,790,792,695,776,768,792,759,707,708,682,701,826,815,789,789,707,687,696,689,786,787,713,791,785,791,873,761,762,762,759,759,892,892,788,784,438,138,277,415,392,392,668,668,0,390,390,317,317,276,276,509,509,410,410,234,234,334,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,732,544,544,910,667,760,760,776,595,694,626,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,894,838,1016,458,748,924,748,918,927,928,928,834,873,828,924,924,917,930,931,463,883,836,836,867,867,696,696,874,0,874,760,946,771,865,771,888,967,888,831,873,927,970,918,0]}`, +} + +func (f *Fpdf) coreFontReader(familyStr, styleStr string) (r *strings.Reader) { + key := familyStr + styleStr + str, ok := embeddedFontList[key] + if ok { + r = strings.NewReader(str) + } else { + f.SetErrorf("could not locate \"%s\" among embedded core font definition files", key) + } + return +} + +var embeddedMapList = map[string]string{ + "cp1250": ` +!00 U+0000 .notdef +!01 U+0001 .notdef +!02 U+0002 .notdef +!03 U+0003 .notdef +!04 U+0004 .notdef +!05 U+0005 .notdef +!06 U+0006 .notdef +!07 U+0007 .notdef +!08 U+0008 .notdef +!09 U+0009 .notdef +!0A U+000A .notdef +!0B U+000B .notdef +!0C U+000C .notdef +!0D U+000D .notdef +!0E U+000E .notdef +!0F U+000F .notdef +!10 U+0010 .notdef +!11 U+0011 .notdef +!12 U+0012 .notdef +!13 U+0013 .notdef +!14 U+0014 .notdef +!15 U+0015 .notdef +!16 U+0016 .notdef +!17 U+0017 .notdef +!18 U+0018 .notdef +!19 U+0019 .notdef +!1A U+001A .notdef +!1B U+001B .notdef +!1C U+001C .notdef +!1D U+001D .notdef +!1E U+001E .notdef +!1F U+001F .notdef +!20 U+0020 space +!21 U+0021 exclam +!22 U+0022 quotedbl +!23 U+0023 numbersign +!24 U+0024 dollar +!25 U+0025 percent +!26 U+0026 ampersand +!27 U+0027 quotesingle +!28 U+0028 parenleft +!29 U+0029 parenright +!2A U+002A asterisk +!2B U+002B plus +!2C U+002C comma +!2D U+002D hyphen +!2E U+002E period +!2F U+002F slash +!30 U+0030 zero +!31 U+0031 one +!32 U+0032 two +!33 U+0033 three +!34 U+0034 four +!35 U+0035 five +!36 U+0036 six +!37 U+0037 seven +!38 U+0038 eight +!39 U+0039 nine +!3A U+003A colon +!3B U+003B semicolon +!3C U+003C less +!3D U+003D equal +!3E U+003E greater +!3F U+003F question +!40 U+0040 at +!41 U+0041 A +!42 U+0042 B +!43 U+0043 C +!44 U+0044 D +!45 U+0045 E +!46 U+0046 F +!47 U+0047 G +!48 U+0048 H +!49 U+0049 I +!4A U+004A J +!4B U+004B K +!4C U+004C L +!4D U+004D M +!4E U+004E N +!4F U+004F O +!50 U+0050 P +!51 U+0051 Q +!52 U+0052 R +!53 U+0053 S +!54 U+0054 T +!55 U+0055 U +!56 U+0056 V +!57 U+0057 W +!58 U+0058 X +!59 U+0059 Y +!5A U+005A Z +!5B U+005B bracketleft +!5C U+005C backslash +!5D U+005D bracketright +!5E U+005E asciicircum +!5F U+005F underscore +!60 U+0060 grave +!61 U+0061 a +!62 U+0062 b +!63 U+0063 c +!64 U+0064 d +!65 U+0065 e +!66 U+0066 f +!67 U+0067 g +!68 U+0068 h +!69 U+0069 i +!6A U+006A j +!6B U+006B k +!6C U+006C l +!6D U+006D m +!6E U+006E n +!6F U+006F o +!70 U+0070 p +!71 U+0071 q +!72 U+0072 r +!73 U+0073 s +!74 U+0074 t +!75 U+0075 u +!76 U+0076 v +!77 U+0077 w +!78 U+0078 x +!79 U+0079 y +!7A U+007A z +!7B U+007B braceleft +!7C U+007C bar +!7D U+007D braceright +!7E U+007E asciitilde +!7F U+007F .notdef +!80 U+20AC Euro +!82 U+201A quotesinglbase +!84 U+201E quotedblbase +!85 U+2026 ellipsis +!86 U+2020 dagger +!87 U+2021 daggerdbl +!89 U+2030 perthousand +!8A U+0160 Scaron +!8B U+2039 guilsinglleft +!8C U+015A Sacute +!8D U+0164 Tcaron +!8E U+017D Zcaron +!8F U+0179 Zacute +!91 U+2018 quoteleft +!92 U+2019 quoteright +!93 U+201C quotedblleft +!94 U+201D quotedblright +!95 U+2022 bullet +!96 U+2013 endash +!97 U+2014 emdash +!99 U+2122 trademark +!9A U+0161 scaron +!9B U+203A guilsinglright +!9C U+015B sacute +!9D U+0165 tcaron +!9E U+017E zcaron +!9F U+017A zacute +!A0 U+00A0 space +!A1 U+02C7 caron +!A2 U+02D8 breve +!A3 U+0141 Lslash +!A4 U+00A4 currency +!A5 U+0104 Aogonek +!A6 U+00A6 brokenbar +!A7 U+00A7 section +!A8 U+00A8 dieresis +!A9 U+00A9 copyright +!AA U+015E Scedilla +!AB U+00AB guillemotleft +!AC U+00AC logicalnot +!AD U+00AD hyphen +!AE U+00AE registered +!AF U+017B Zdotaccent +!B0 U+00B0 degree +!B1 U+00B1 plusminus +!B2 U+02DB ogonek +!B3 U+0142 lslash +!B4 U+00B4 acute +!B5 U+00B5 mu +!B6 U+00B6 paragraph +!B7 U+00B7 periodcentered +!B8 U+00B8 cedilla +!B9 U+0105 aogonek +!BA U+015F scedilla +!BB U+00BB guillemotright +!BC U+013D Lcaron +!BD U+02DD hungarumlaut +!BE U+013E lcaron +!BF U+017C zdotaccent +!C0 U+0154 Racute +!C1 U+00C1 Aacute +!C2 U+00C2 Acircumflex +!C3 U+0102 Abreve +!C4 U+00C4 Adieresis +!C5 U+0139 Lacute +!C6 U+0106 Cacute +!C7 U+00C7 Ccedilla +!C8 U+010C Ccaron +!C9 U+00C9 Eacute +!CA U+0118 Eogonek +!CB U+00CB Edieresis +!CC U+011A Ecaron +!CD U+00CD Iacute +!CE U+00CE Icircumflex +!CF U+010E Dcaron +!D0 U+0110 Dcroat +!D1 U+0143 Nacute +!D2 U+0147 Ncaron +!D3 U+00D3 Oacute +!D4 U+00D4 Ocircumflex +!D5 U+0150 Ohungarumlaut +!D6 U+00D6 Odieresis +!D7 U+00D7 multiply +!D8 U+0158 Rcaron +!D9 U+016E Uring +!DA U+00DA Uacute +!DB U+0170 Uhungarumlaut +!DC U+00DC Udieresis +!DD U+00DD Yacute +!DE U+0162 Tcommaaccent +!DF U+00DF germandbls +!E0 U+0155 racute +!E1 U+00E1 aacute +!E2 U+00E2 acircumflex +!E3 U+0103 abreve +!E4 U+00E4 adieresis +!E5 U+013A lacute +!E6 U+0107 cacute +!E7 U+00E7 ccedilla +!E8 U+010D ccaron +!E9 U+00E9 eacute +!EA U+0119 eogonek +!EB U+00EB edieresis +!EC U+011B ecaron +!ED U+00ED iacute +!EE U+00EE icircumflex +!EF U+010F dcaron +!F0 U+0111 dcroat +!F1 U+0144 nacute +!F2 U+0148 ncaron +!F3 U+00F3 oacute +!F4 U+00F4 ocircumflex +!F5 U+0151 ohungarumlaut +!F6 U+00F6 odieresis +!F7 U+00F7 divide +!F8 U+0159 rcaron +!F9 U+016F uring +!FA U+00FA uacute +!FB U+0171 uhungarumlaut +!FC U+00FC udieresis +!FD U+00FD yacute +!FE U+0163 tcommaaccent +!FF U+02D9 dotaccent + `, + "cp1252": ` +!00 U+0000 .notdef +!01 U+0001 .notdef +!02 U+0002 .notdef +!03 U+0003 .notdef +!04 U+0004 .notdef +!05 U+0005 .notdef +!06 U+0006 .notdef +!07 U+0007 .notdef +!08 U+0008 .notdef +!09 U+0009 .notdef +!0A U+000A .notdef +!0B U+000B .notdef +!0C U+000C .notdef +!0D U+000D .notdef +!0E U+000E .notdef +!0F U+000F .notdef +!10 U+0010 .notdef +!11 U+0011 .notdef +!12 U+0012 .notdef +!13 U+0013 .notdef +!14 U+0014 .notdef +!15 U+0015 .notdef +!16 U+0016 .notdef +!17 U+0017 .notdef +!18 U+0018 .notdef +!19 U+0019 .notdef +!1A U+001A .notdef +!1B U+001B .notdef +!1C U+001C .notdef +!1D U+001D .notdef +!1E U+001E .notdef +!1F U+001F .notdef +!20 U+0020 space +!21 U+0021 exclam +!22 U+0022 quotedbl +!23 U+0023 numbersign +!24 U+0024 dollar +!25 U+0025 percent +!26 U+0026 ampersand +!27 U+0027 quotesingle +!28 U+0028 parenleft +!29 U+0029 parenright +!2A U+002A asterisk +!2B U+002B plus +!2C U+002C comma +!2D U+002D hyphen +!2E U+002E period +!2F U+002F slash +!30 U+0030 zero +!31 U+0031 one +!32 U+0032 two +!33 U+0033 three +!34 U+0034 four +!35 U+0035 five +!36 U+0036 six +!37 U+0037 seven +!38 U+0038 eight +!39 U+0039 nine +!3A U+003A colon +!3B U+003B semicolon +!3C U+003C less +!3D U+003D equal +!3E U+003E greater +!3F U+003F question +!40 U+0040 at +!41 U+0041 A +!42 U+0042 B +!43 U+0043 C +!44 U+0044 D +!45 U+0045 E +!46 U+0046 F +!47 U+0047 G +!48 U+0048 H +!49 U+0049 I +!4A U+004A J +!4B U+004B K +!4C U+004C L +!4D U+004D M +!4E U+004E N +!4F U+004F O +!50 U+0050 P +!51 U+0051 Q +!52 U+0052 R +!53 U+0053 S +!54 U+0054 T +!55 U+0055 U +!56 U+0056 V +!57 U+0057 W +!58 U+0058 X +!59 U+0059 Y +!5A U+005A Z +!5B U+005B bracketleft +!5C U+005C backslash +!5D U+005D bracketright +!5E U+005E asciicircum +!5F U+005F underscore +!60 U+0060 grave +!61 U+0061 a +!62 U+0062 b +!63 U+0063 c +!64 U+0064 d +!65 U+0065 e +!66 U+0066 f +!67 U+0067 g +!68 U+0068 h +!69 U+0069 i +!6A U+006A j +!6B U+006B k +!6C U+006C l +!6D U+006D m +!6E U+006E n +!6F U+006F o +!70 U+0070 p +!71 U+0071 q +!72 U+0072 r +!73 U+0073 s +!74 U+0074 t +!75 U+0075 u +!76 U+0076 v +!77 U+0077 w +!78 U+0078 x +!79 U+0079 y +!7A U+007A z +!7B U+007B braceleft +!7C U+007C bar +!7D U+007D braceright +!7E U+007E asciitilde +!7F U+007F .notdef +!80 U+20AC Euro +!82 U+201A quotesinglbase +!83 U+0192 florin +!84 U+201E quotedblbase +!85 U+2026 ellipsis +!86 U+2020 dagger +!87 U+2021 daggerdbl +!88 U+02C6 circumflex +!89 U+2030 perthousand +!8A U+0160 Scaron +!8B U+2039 guilsinglleft +!8C U+0152 OE +!8E U+017D Zcaron +!91 U+2018 quoteleft +!92 U+2019 quoteright +!93 U+201C quotedblleft +!94 U+201D quotedblright +!95 U+2022 bullet +!96 U+2013 endash +!97 U+2014 emdash +!98 U+02DC tilde +!99 U+2122 trademark +!9A U+0161 scaron +!9B U+203A guilsinglright +!9C U+0153 oe +!9E U+017E zcaron +!9F U+0178 Ydieresis +!A0 U+00A0 space +!A1 U+00A1 exclamdown +!A2 U+00A2 cent +!A3 U+00A3 sterling +!A4 U+00A4 currency +!A5 U+00A5 yen +!A6 U+00A6 brokenbar +!A7 U+00A7 section +!A8 U+00A8 dieresis +!A9 U+00A9 copyright +!AA U+00AA ordfeminine +!AB U+00AB guillemotleft +!AC U+00AC logicalnot +!AD U+00AD hyphen +!AE U+00AE registered +!AF U+00AF macron +!B0 U+00B0 degree +!B1 U+00B1 plusminus +!B2 U+00B2 twosuperior +!B3 U+00B3 threesuperior +!B4 U+00B4 acute +!B5 U+00B5 mu +!B6 U+00B6 paragraph +!B7 U+00B7 periodcentered +!B8 U+00B8 cedilla +!B9 U+00B9 onesuperior +!BA U+00BA ordmasculine +!BB U+00BB guillemotright +!BC U+00BC onequarter +!BD U+00BD onehalf +!BE U+00BE threequarters +!BF U+00BF questiondown +!C0 U+00C0 Agrave +!C1 U+00C1 Aacute +!C2 U+00C2 Acircumflex +!C3 U+00C3 Atilde +!C4 U+00C4 Adieresis +!C5 U+00C5 Aring +!C6 U+00C6 AE +!C7 U+00C7 Ccedilla +!C8 U+00C8 Egrave +!C9 U+00C9 Eacute +!CA U+00CA Ecircumflex +!CB U+00CB Edieresis +!CC U+00CC Igrave +!CD U+00CD Iacute +!CE U+00CE Icircumflex +!CF U+00CF Idieresis +!D0 U+00D0 Eth +!D1 U+00D1 Ntilde +!D2 U+00D2 Ograve +!D3 U+00D3 Oacute +!D4 U+00D4 Ocircumflex +!D5 U+00D5 Otilde +!D6 U+00D6 Odieresis +!D7 U+00D7 multiply +!D8 U+00D8 Oslash +!D9 U+00D9 Ugrave +!DA U+00DA Uacute +!DB U+00DB Ucircumflex +!DC U+00DC Udieresis +!DD U+00DD Yacute +!DE U+00DE Thorn +!DF U+00DF germandbls +!E0 U+00E0 agrave +!E1 U+00E1 aacute +!E2 U+00E2 acircumflex +!E3 U+00E3 atilde +!E4 U+00E4 adieresis +!E5 U+00E5 aring +!E6 U+00E6 ae +!E7 U+00E7 ccedilla +!E8 U+00E8 egrave +!E9 U+00E9 eacute +!EA U+00EA ecircumflex +!EB U+00EB edieresis +!EC U+00EC igrave +!ED U+00ED iacute +!EE U+00EE icircumflex +!EF U+00EF idieresis +!F0 U+00F0 eth +!F1 U+00F1 ntilde +!F2 U+00F2 ograve +!F3 U+00F3 oacute +!F4 U+00F4 ocircumflex +!F5 U+00F5 otilde +!F6 U+00F6 odieresis +!F7 U+00F7 divide +!F8 U+00F8 oslash +!F9 U+00F9 ugrave +!FA U+00FA uacute +!FB U+00FB ucircumflex +!FC U+00FC udieresis +!FD U+00FD yacute +!FE U+00FE thorn +!FF U+00FF ydieresis + `, +} diff --git a/font.go b/font.go new file mode 100644 index 0000000..29417bb --- /dev/null +++ b/font.go @@ -0,0 +1,474 @@ +/* + * Copyright (c) 2013 Kurt Jung (Gmail: kurt.w.jung) + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package gofpdf + +// Utility to generate font definition files + +// Version: 1.2 +// Date: 2011-06-18 +// Author: Olivier PLATHEY +// Port to Go: Kurt Jung, 2013-07-15 + +import ( + "bufio" + "compress/zlib" + "encoding/binary" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strconv" + "strings" +) + +func baseNoExt(fileStr string) string { + str := filepath.Base(fileStr) + extLen := len(filepath.Ext(str)) + if extLen > 0 { + str = str[:len(str)-extLen] + } + return str +} + +func loadMap(encodingFileStr string) (encList encListType, err error) { + // printf("Encoding file string [%s]\n", encodingFileStr) + var f *os.File + // f, err = os.Open(encodingFilepath(encodingFileStr)) + f, err = os.Open(encodingFileStr) + if err == nil { + defer f.Close() + for j := range encList { + encList[j].uv = -1 + encList[j].name = ".notdef" + } + scanner := bufio.NewScanner(f) + var enc encType + var pos int + for scanner.Scan() { + // "!3F U+003F question" + _, err = fmt.Sscanf(scanner.Text(), "!%x U+%x %s", &pos, &enc.uv, &enc.name) + if err == nil { + if pos < 256 { + encList[pos] = enc + } else { + err = fmt.Errorf("map position 0x%2X exceeds 0xFF", pos) + return + } + } else { + return + } + } + if err = scanner.Err(); err != nil { + return + } + } + return +} + +// getInfoFromTrueType returns information from a TrueType font +func getInfoFromTrueType(fileStr string, msgWriter io.Writer, embed bool, encList encListType) (info fontInfoType, err error) { + info.Widths = make([]int, 256) + var ttf TtfType + ttf, err = TtfParse(fileStr) + if err != nil { + return + } + if embed { + if !ttf.Embeddable { + err = fmt.Errorf("font license does not allow embedding") + return + } + info.Data, err = ioutil.ReadFile(fileStr) + if err != nil { + return + } + info.OriginalSize = len(info.Data) + } + k := 1000.0 / float64(ttf.UnitsPerEm) + info.FontName = ttf.PostScriptName + info.Bold = ttf.Bold + info.Desc.ItalicAngle = int(ttf.ItalicAngle) + info.IsFixedPitch = ttf.IsFixedPitch + info.Desc.Ascent = round(k * float64(ttf.TypoAscender)) + info.Desc.Descent = round(k * float64(ttf.TypoDescender)) + info.UnderlineThickness = round(k * float64(ttf.UnderlineThickness)) + info.UnderlinePosition = round(k * float64(ttf.UnderlinePosition)) + info.Desc.FontBBox = fontBoxType{ + round(k * float64(ttf.Xmin)), + round(k * float64(ttf.Ymin)), + round(k * float64(ttf.Xmax)), + round(k * float64(ttf.Ymax)), + } + // printf("FontBBox\n") + // dump(info.Desc.FontBBox) + info.Desc.CapHeight = round(k * float64(ttf.CapHeight)) + info.Desc.MissingWidth = round(k * float64(ttf.Widths[0])) + var wd int + for j := 0; j < len(info.Widths); j++ { + wd = info.Desc.MissingWidth + if encList[j].name != ".notdef" { + uv := encList[j].uv + pos, ok := ttf.Chars[uint16(uv)] + if ok { + wd = round(k * float64(ttf.Widths[pos])) + } else { + fmt.Fprintf(msgWriter, "Character %s is missing\n", encList[j].name) + } + } + info.Widths[j] = wd + } + // printf("getInfoFromTrueType/FontBBox\n") + // dump(info.Desc.FontBBox) + return +} + +type segmentType struct { + marker uint8 + tp uint8 + size uint32 + data []byte +} + +func segmentRead(r io.Reader) (s segmentType, err error) { + if err = binary.Read(r, binary.LittleEndian, &s.marker); err != nil { + return + } + if s.marker != 128 { + err = fmt.Errorf("font file is not a valid binary Type1") + return + } + if err = binary.Read(r, binary.LittleEndian, &s.tp); err != nil { + return + } + if err = binary.Read(r, binary.LittleEndian, &s.size); err != nil { + return + } + s.data = make([]byte, s.size) + _, err = r.Read(s.data) + return +} + +// -rw-r--r-- 1 root root 9532 2010-04-22 11:27 /usr/share/fonts/type1/mathml/Symbol.afm +// -rw-r--r-- 1 root root 37744 2010-04-22 11:27 /usr/share/fonts/type1/mathml/Symbol.pfb + +// getInfoFromType1 return information from a Type1 font +func getInfoFromType1(fileStr string, msgWriter io.Writer, embed bool, encList encListType) (info fontInfoType, err error) { + info.Widths = make([]int, 256) + if embed { + var f *os.File + f, err = os.Open(fileStr) + if err != nil { + return + } + defer f.Close() + // Read first segment + var s1, s2 segmentType + s1, err = segmentRead(f) + if err != nil { + return + } + s2, err = segmentRead(f) + if err != nil { + return + } + info.Data = s1.data + info.Data = append(info.Data, s2.data...) + info.Size1 = s1.size + info.Size2 = s2.size + } + afmFileStr := fileStr[0:len(fileStr)-3] + "afm" + size, ok := fileSize(afmFileStr) + if !ok { + err = fmt.Errorf("font file (ATM) %s not found", afmFileStr) + return + } else if size == 0 { + err = fmt.Errorf("font file (AFM) %s empty or not readable", afmFileStr) + return + } + var f *os.File + f, err = os.Open(afmFileStr) + if err != nil { + return + } + defer f.Close() + scanner := bufio.NewScanner(f) + var fields []string + var wd int + var wt, name string + wdMap := make(map[string]int) + for scanner.Scan() { + fields = strings.Fields(strings.TrimSpace(scanner.Text())) + // Comment Generated by FontForge 20080203 + // FontName Symbol + // C 32 ; WX 250 ; N space ; B 0 0 0 0 ; + if len(fields) >= 2 { + switch fields[0] { + case "C": + if wd, err = strconv.Atoi(fields[4]); err == nil { + name = fields[7] + wdMap[name] = wd + } + case "FontName": + info.FontName = fields[1] + case "Weight": + wt = strings.ToLower(fields[1]) + case "ItalicAngle": + info.Desc.ItalicAngle, err = strconv.Atoi(fields[1]) + case "Ascender": + info.Desc.Ascent, err = strconv.Atoi(fields[1]) + case "Descender": + info.Desc.Descent, err = strconv.Atoi(fields[1]) + case "UnderlineThickness": + info.UnderlineThickness, err = strconv.Atoi(fields[1]) + case "UnderlinePosition": + info.UnderlinePosition, err = strconv.Atoi(fields[1]) + case "IsFixedPitch": + info.IsFixedPitch = fields[1] == "true" + case "FontBBox": + if info.Desc.FontBBox.Xmin, err = strconv.Atoi(fields[1]); err == nil { + if info.Desc.FontBBox.Ymin, err = strconv.Atoi(fields[2]); err == nil { + if info.Desc.FontBBox.Xmax, err = strconv.Atoi(fields[3]); err == nil { + info.Desc.FontBBox.Ymax, err = strconv.Atoi(fields[4]) + } + } + } + case "CapHeight": + info.Desc.CapHeight, err = strconv.Atoi(fields[1]) + case "StdVW": + info.Desc.StemV, err = strconv.Atoi(fields[1]) + } + } + if err != nil { + return + } + } + if err = scanner.Err(); err != nil { + return + } + if info.FontName == "" { + err = fmt.Errorf("the field FontName missing in AFM file %s", afmFileStr) + return + } + info.Bold = wt == "bold" || wt == "black" + var missingWd int + missingWd, ok = wdMap[".notdef"] + if ok { + info.Desc.MissingWidth = missingWd + } + for j := 0; j < len(info.Widths); j++ { + info.Widths[j] = info.Desc.MissingWidth + } + for j := 0; j < len(info.Widths); j++ { + name = encList[j].name + if name != ".notdef" { + wd, ok = wdMap[name] + if ok { + info.Widths[j] = wd + } else { + fmt.Fprintf(msgWriter, "Character %s is missing\n", name) + } + } + } + // printf("getInfoFromType1/FontBBox\n") + // dump(info.Desc.FontBBox) + return +} + +func makeFontDescriptor(info *fontInfoType) { + if info.Desc.CapHeight == 0 { + info.Desc.CapHeight = info.Desc.Ascent + } + info.Desc.Flags = 1 << 5 + if info.IsFixedPitch { + info.Desc.Flags |= 1 + } + if info.Desc.ItalicAngle != 0 { + info.Desc.Flags |= 1 << 6 + } + if info.Desc.StemV == 0 { + if info.Bold { + info.Desc.StemV = 120 + } else { + info.Desc.StemV = 70 + } + } + // printf("makeFontDescriptor/FontBBox\n") + // dump(info.Desc.FontBBox) +} + +// makeFontEncoding builds differences from reference encoding +func makeFontEncoding(encList encListType, refEncFileStr string) (diffStr string, err error) { + var refList encListType + if refList, err = loadMap(refEncFileStr); err != nil { + return + } + var buf fmtBuffer + last := 0 + for j := 32; j < 256; j++ { + if encList[j].name != refList[j].name { + if j != last+1 { + buf.printf("%d ", j) + } + last = j + buf.printf("/%s ", encList[j].name) + } + } + diffStr = strings.TrimSpace(buf.String()) + return +} + +func makeDefinitionFile(fileStr, tpStr, encodingFileStr string, embed bool, encList encListType, info fontInfoType) error { + var err error + var def fontDefType + def.Tp = tpStr + def.Name = info.FontName + makeFontDescriptor(&info) + def.Desc = info.Desc + // printf("makeDefinitionFile/FontBBox\n") + // dump(def.Desc.FontBBox) + def.Up = info.UnderlinePosition + def.Ut = info.UnderlineThickness + def.Cw = info.Widths + def.Enc = baseNoExt(encodingFileStr) + // fmt.Printf("encodingFileStr [%s], def.Enc [%s]\n", encodingFileStr, def.Enc) + // fmt.Printf("reference [%s]\n", filepath.Join(filepath.Dir(encodingFileStr), "cp1252.map")) + def.Diff, err = makeFontEncoding(encList, filepath.Join(filepath.Dir(encodingFileStr), "cp1252.map")) + if err != nil { + return err + } + def.File = info.File + def.Size1 = int(info.Size1) + def.Size2 = int(info.Size2) + def.OriginalSize = info.OriginalSize + // printf("Font definition file [%s]\n", fileStr) + var buf []byte + buf, err = json.Marshal(def) + if err != nil { + return err + } + var f *os.File + f, err = os.Create(fileStr) + if err != nil { + return err + } + defer f.Close() + _, err = f.Write(buf) + if err != nil { + return err + } + err = f.Close() + if err != nil { + return err + } + + return err +} + +// MakeFont generates a font definition file in JSON format. A definition file +// of this type is required to use non-core fonts in the PDF documents that +// gofpdf generates. See the makefont utility in the gofpdf package for a +// command line interface to this function. +// +// fontFileStr is the name of the TrueType file (extension .ttf), OpenType file +// (extension .otf) or binary Type1 file (extension .pfb) from which to +// generate a definition file. If an OpenType file is specified, it must be one +// that is based on TrueType outlines, not PostScript outlines; this cannot be +// determined from the file extension alone. If a Type1 file is specified, a +// metric file with the same pathname except with the extension .afm must be +// present. +// +// encodingFileStr is the name of the encoding file that corresponds to the +// font. +// +// dstDirStr is the name of the directory in which to save the definition file +// and, if embed is true, the compressed font file. +// +// msgWriter is the writer that is called to display messages throughout the +// process. Use nil to turn off messages. +// +// embed is true if the font is to be embedded in the PDF files. +func MakeFont(fontFileStr, encodingFileStr, dstDirStr string, msgWriter io.Writer, embed bool) error { + if msgWriter == nil { + msgWriter = ioutil.Discard + } + if !fileExist(fontFileStr) { + return fmt.Errorf("font file not found: %s", fontFileStr) + } + extStr := strings.ToLower(fontFileStr[len(fontFileStr)-3:]) + // printf("Font file extension [%s]\n", extStr) + var tpStr string + switch extStr { + case "ttf": + fallthrough + case "otf": + tpStr = "TrueType" + case "pfb": + tpStr = "Type1" + default: + return fmt.Errorf("unrecognized font file extension: %s", extStr) + } + + var info fontInfoType + encList, err := loadMap(encodingFileStr) + if err != nil { + return err + } + // printf("Encoding table\n") + // dump(encList) + if tpStr == "TrueType" { + info, err = getInfoFromTrueType(fontFileStr, msgWriter, embed, encList) + if err != nil { + return err + } + } else { + info, err = getInfoFromType1(fontFileStr, msgWriter, embed, encList) + if err != nil { + return err + } + } + baseStr := baseNoExt(fontFileStr) + // fmt.Printf("Base [%s]\n", baseStr) + if embed { + var f *os.File + info.File = baseStr + ".z" + zFileStr := filepath.Join(dstDirStr, info.File) + f, err = os.Create(zFileStr) + if err != nil { + return err + } + defer f.Close() + cmp := zlib.NewWriter(f) + _, err = cmp.Write(info.Data) + if err != nil { + return err + } + err = cmp.Close() + if err != nil { + return err + } + fmt.Fprintf(msgWriter, "Font file compressed: %s\n", zFileStr) + } + defFileStr := filepath.Join(dstDirStr, baseStr+".json") + err = makeDefinitionFile(defFileStr, tpStr, encodingFileStr, embed, encList, info) + if err != nil { + return err + } + fmt.Fprintf(msgWriter, "Font definition file successfully generated: %s\n", defFileStr) + return nil +} diff --git a/font/CalligrapherRegular.afm b/font/CalligrapherRegular.afm new file mode 100644 index 0000000..5e24959 --- /dev/null +++ b/font/CalligrapherRegular.afm @@ -0,0 +1,272 @@ +StartFontMetrics 2.0 +Comment Generated by FontForge 20141024 +Comment Creation Date: Thu Jul 23 17:38:06 2015 +FontName CalligrapherRegular +FullName Calligrapher Regular +FamilyName Calligrapher +Weight Thin +Notice (Generated by Fontographer 3.5) +ItalicAngle 0 +IsFixedPitch false +UnderlinePosition -190 +UnderlineThickness 20 +Version Altsys Fontographer 3.5 5/26/92 +EncodingScheme ISO10646-1 +FontBBox -173 -234 1328 899 +CapHeight 677 +XHeight 677 +Ascender 756 +Descender -219 +StartCharMetrics 250 +C 32 ; WX 282 ; N space ; B 0 0 0 0 ; +C 33 ; WX 324 ; N exclam ; B 67 -16 251 718 ; +C 34 ; WX 405 ; N quotedbl ; B 60 460 353 718 ; +C 35 ; WX 584 ; N numbersign ; B 35 0 549 701 ; +C 36 ; WX 632 ; N dollar ; B 32 -126 595 814 ; +C 37 ; WX 980 ; N percent ; B 35 -16 945 703 ; +C 38 ; WX 776 ; N ampersand ; B 41 -17 811 670 ; +C 39 ; WX 259 ; N quotesingle ; B 72 460 206 718 ; +C 40 ; WX 299 ; N parenleft ; B 57 -119 299 785 ; +C 41 ; WX 299 ; N parenright ; B 0 -119 242 785 ; +C 42 ; WX 377 ; N asterisk ; B 35 407 342 714 ; +C 43 ; WX 600 ; N plus ; B 47 0 553 506 ; +C 44 ; WX 259 ; N comma ; B 35 -67 224 162 ; +C 45 ; WX 432 ; N hyphen ; B 28 249 404 377 ; +C 46 ; WX 254 ; N period ; B 43 -16 227 162 ; +C 47 ; WX 597 ; N slash ; B 7 -14 591 714 ; +C 48 ; WX 529 ; N zero ; B 21 -18 508 583 ; +C 49 ; WX 298 ; N one ; B 8 -15 233 582 ; +C 50 ; WX 451 ; N two ; B 17 -8 430 588 ; +C 51 ; WX 359 ; N three ; B 11 -54 337 582 ; +C 52 ; WX 525 ; N four ; B 18 -20 519 602 ; +C 53 ; WX 423 ; N five ; B 10 -55 420 582 ; +C 54 ; WX 464 ; N six ; B 23 -14 447 589 ; +C 55 ; WX 417 ; N seven ; B 8 -18 415 589 ; +C 56 ; WX 457 ; N eight ; B 19 -16 432 583 ; +C 57 ; WX 479 ; N nine ; B 26 -16 450 588 ; +C 58 ; WX 275 ; N colon ; B 59 -16 242 491 ; +C 59 ; WX 282 ; N semicolon ; B 54 -67 245 491 ; +C 60 ; WX 600 ; N less ; B 47 -8 553 514 ; +C 61 ; WX 600 ; N equal ; B 47 98 553 408 ; +C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ; +C 63 ; WX 501 ; N question ; B 21 -16 473 721 ; +C 64 ; WX 800 ; N at ; B 29 -12 771 730 ; +C 65 ; WX 743 ; N A ; B -23 -14 754 721 ; +C 66 ; WX 636 ; N B ; B -42 -7 608 706 ; +C 67 ; WX 598 ; N C ; B 27 -12 572 712 ; +C 68 ; WX 712 ; N D ; B -42 -11 684 705 ; +C 69 ; WX 608 ; N E ; B -21 0 608 708 ; +C 70 ; WX 562 ; N F ; B -21 -18 584 716 ; +C 71 ; WX 680 ; N G ; B 29 -8 668 714 ; +C 72 ; WX 756 ; N H ; B 70 -17 777 728 ; +C 73 ; WX 308 ; N I ; B 14 -15 238 718 ; +C 74 ; WX 314 ; N J ; B 7 -223 244 727 ; +C 75 ; WX 676 ; N K ; B 14 -16 683 725 ; +C 76 ; WX 552 ; N L ; B 14 -8 580 713 ; +C 77 ; WX 1041 ; N M ; B 42 -17 1017 739 ; +C 78 ; WX 817 ; N N ; B -42 -17 747 736 ; +C 79 ; WX 729 ; N O ; B 32 -16 698 709 ; +C 80 ; WX 569 ; N P ; B -35 -15 570 716 ; +C 81 ; WX 698 ; N Q ; B 27 -201 1328 715 ; +C 82 ; WX 674 ; N R ; B -35 -20 696 712 ; +C 83 ; WX 618 ; N S ; B 31 -16 589 709 ; +C 84 ; WX 673 ; N T ; B -21 -20 702 714 ; +C 85 ; WX 805 ; N U ; B 0 -19 804 722 ; +C 86 ; WX 753 ; N V ; B -28 -20 788 729 ; +C 87 ; WX 1238 ; N W ; B -28 -17 1273 736 ; +C 88 ; WX 716 ; N X ; B 7 -38 709 731 ; +C 89 ; WX 754 ; N Y ; B -35 -17 789 747 ; +C 90 ; WX 599 ; N Z ; B 30 -5 584 748 ; +C 91 ; WX 315 ; N bracketleft ; B 93 -124 322 718 ; +C 92 ; WX 463 ; N backslash ; B -21 -18 484 736 ; +C 93 ; WX 315 ; N bracketright ; B -7 -124 222 718 ; +C 94 ; WX 600 ; N asciicircum ; B 63 266 537 658 ; +C 95 ; WX 547 ; N underscore ; B -7 -198 554 -163 ; +C 96 ; WX 278 ; N grave ; B -1 541 214 693 ; +C 97 ; WX 581 ; N a ; B 21 -16 581 494 ; +C 98 ; WX 564 ; N b ; B -24 -17 543 792 ; +C 99 ; WX 440 ; N c ; B 21 -17 422 490 ; +C 100 ; WX 571 ; N d ; B 0 -15 550 659 ; +C 101 ; WX 450 ; N e ; B 28 -23 428 493 ; +C 102 ; WX 347 ; N f ; B -35 -14 474 785 ; +C 103 ; WX 628 ; N g ; B 19 -219 612 496 ; +C 104 ; WX 611 ; N h ; B -29 -18 569 785 ; +C 105 ; WX 283 ; N i ; B -14 -15 241 679 ; +C 106 ; WX 283 ; N j ; B -14 -234 241 679 ; +C 107 ; WX 560 ; N k ; B -24 -15 582 789 ; +C 108 ; WX 252 ; N l ; B -28 -15 210 789 ; +C 109 ; WX 976 ; N m ; B -21 -16 927 494 ; +C 110 ; WX 595 ; N n ; B -28 -15 574 493 ; +C 111 ; WX 508 ; N o ; B 27 -17 485 490 ; +C 112 ; WX 549 ; N p ; B -28 -216 526 496 ; +C 113 ; WX 540 ; N q ; B 28 -219 491 493 ; +C 114 ; WX 395 ; N r ; B -21 -19 430 492 ; +C 115 ; WX 441 ; N s ; B 34 -15 413 493 ; +C 116 ; WX 307 ; N t ; B -21 -16 378 621 ; +C 117 ; WX 614 ; N u ; B -14 -18 558 501 ; +C 118 ; WX 556 ; N v ; B -28 -20 569 483 ; +C 119 ; WX 915 ; N w ; B -28 -17 928 495 ; +C 120 ; WX 559 ; N x ; B 14 -17 546 500 ; +C 121 ; WX 597 ; N y ; B -21 -227 541 500 ; +C 122 ; WX 452 ; N z ; B 28 -5 442 515 ; +C 123 ; WX 315 ; N braceleft ; B 6 -118 309 718 ; +C 124 ; WX 222 ; N bar ; B 63 -18 159 730 ; +C 125 ; WX 315 ; N braceright ; B 6 -118 309 718 ; +C 126 ; WX 600 ; N asciitilde ; B 69 166 531 340 ; +C 160 ; WX 282 ; N nonbreakingspace ; B 0 0 0 0 ; +C 161 ; WX 324 ; N exclamdown ; B 69 -203 253 531 ; +C 162 ; WX 450 ; N cent ; B 27 -122 437 592 ; +C 163 ; WX 640 ; N sterling ; B 0 -9 619 716 ; +C 164 ; WX 518 ; N currency ; B 3 72 515 586 ; +C 165 ; WX 603 ; N yen ; B -28 -65 631 747 ; +C 166 ; WX 0 ; N brokenbar ; B 0 0 0 0 ; +C 167 ; WX 519 ; N section ; B -50 -216 524 762 ; +C 168 ; WX 254 ; N dieresis ; B -20 554 308 682 ; +C 169 ; WX 800 ; N copyright ; B 29 -12 771 730 ; +C 170 ; WX 349 ; N ordfeminine ; B 13 385 349 717 ; +C 171 ; WX 0 ; N guillemotleft ; B 0 0 0 0 ; +C 172 ; WX 0 ; N logicalnot ; B 0 0 0 0 ; +C 173 ; WX 432 ; N hyphen ; B 28 249 404 377 ; +C 174 ; WX 800 ; N registered ; B 29 -12 771 730 ; +C 175 ; WX 278 ; N macron ; B -47 584 325 665 ; +C 176 ; WX 0 ; N degree ; B 0 0 0 0 ; +C 177 ; WX 0 ; N plusminus ; B 0 0 0 0 ; +C 178 ; WX 0 ; N twosuperior ; B 0 0 0 0 ; +C 179 ; WX 0 ; N threesuperior ; B 0 0 0 0 ; +C 180 ; WX 278 ; N acute ; B 49 536 279 693 ; +C 181 ; WX 614 ; N mu ; B -14 -231 558 501 ; +C 182 ; WX 0 ; N paragraph ; B 0 0 0 0 ; +C 183 ; WX 254 ; N periodcentered ; B 43 278 227 456 ; +C 184 ; WX 278 ; N cedilla ; B -8 -216 231 6 ; +C 185 ; WX 0 ; N onesuperior ; B 0 0 0 0 ; +C 186 ; WX 305 ; N ordmasculine ; B 16 373 291 702 ; +C 187 ; WX 0 ; N guillemotright ; B 0 0 0 0 ; +C 188 ; WX 0 ; N onequarter ; B 0 0 0 0 ; +C 189 ; WX 0 ; N onehalf ; B 0 0 0 0 ; +C 190 ; WX 0 ; N threequarters ; B 0 0 0 0 ; +C 191 ; WX 501 ; N questiondown ; B 15 -196 467 541 ; +C 192 ; WX 743 ; N Agrave ; B -23 -14 754 893 ; +C 193 ; WX 743 ; N Aacute ; B -23 -14 754 893 ; +C 194 ; WX 743 ; N Acircumflex ; B -23 -14 754 877 ; +C 195 ; WX 743 ; N Atilde ; B -23 -14 754 889 ; +C 196 ; WX 743 ; N Adieresis ; B -23 -14 754 882 ; +C 197 ; WX 743 ; N Aring ; B -23 -14 754 899 ; +C 198 ; WX 1060 ; N AE ; B -29 -14 1053 708 ; +C 199 ; WX 598 ; N Ccedilla ; B 27 -183 572 712 ; +C 200 ; WX 608 ; N Egrave ; B -21 0 608 893 ; +C 201 ; WX 608 ; N Eacute ; B -21 0 608 893 ; +C 202 ; WX 608 ; N Ecircumflex ; B -21 0 608 877 ; +C 203 ; WX 608 ; N Edieresis ; B -21 0 608 882 ; +C 204 ; WX 308 ; N Igrave ; B 14 -15 264 893 ; +C 205 ; WX 308 ; N Iacute ; B 14 -15 274 893 ; +C 206 ; WX 308 ; N Icircumflex ; B 1 -15 307 877 ; +C 207 ; WX 308 ; N Idieresis ; B -15 -15 313 882 ; +C 208 ; WX 0 ; N Eth ; B 0 0 0 0 ; +C 209 ; WX 817 ; N Ntilde ; B -42 -17 747 889 ; +C 210 ; WX 729 ; N Ograve ; B 32 -16 698 893 ; +C 211 ; WX 729 ; N Oacute ; B 32 -16 698 893 ; +C 212 ; WX 729 ; N Ocircumflex ; B 32 -16 698 877 ; +C 213 ; WX 729 ; N Otilde ; B 32 -16 698 889 ; +C 214 ; WX 729 ; N Odieresis ; B 32 -16 698 882 ; +C 215 ; WX 0 ; N multiply ; B 0 0 0 0 ; +C 216 ; WX 729 ; N Oslash ; B 14 -24 724 709 ; +C 217 ; WX 805 ; N Ugrave ; B 0 -19 804 893 ; +C 218 ; WX 805 ; N Uacute ; B 0 -19 804 893 ; +C 219 ; WX 805 ; N Ucircumflex ; B 0 -19 804 877 ; +C 220 ; WX 805 ; N Udieresis ; B 0 -19 804 882 ; +C 221 ; WX 0 ; N Yacute ; B 0 0 0 0 ; +C 222 ; WX 0 ; N Thorn ; B 0 0 0 0 ; +C 223 ; WX 688 ; N germandbls ; B -35 -15 668 785 ; +C 224 ; WX 581 ; N agrave ; B 21 -16 581 693 ; +C 225 ; WX 581 ; N aacute ; B 21 -16 581 693 ; +C 226 ; WX 581 ; N acircumflex ; B 21 -16 581 677 ; +C 227 ; WX 581 ; N atilde ; B 21 -16 581 689 ; +C 228 ; WX 581 ; N adieresis ; B 21 -16 581 682 ; +C 229 ; WX 581 ; N aring ; B 21 -16 581 734 ; +C 230 ; WX 792 ; N ae ; B 21 -23 773 494 ; +C 231 ; WX 440 ; N ccedilla ; B 21 -183 422 490 ; +C 232 ; WX 450 ; N egrave ; B 28 -23 428 693 ; +C 233 ; WX 450 ; N eacute ; B 28 -23 428 693 ; +C 234 ; WX 450 ; N ecircumflex ; B 28 -23 432 677 ; +C 235 ; WX 450 ; N edieresis ; B 28 -23 428 682 ; +C 236 ; WX 283 ; N igrave ; B -14 -15 244 693 ; +C 237 ; WX 283 ; N iacute ; B -14 -15 269 693 ; +C 238 ; WX 283 ; N icircumflex ; B -14 -15 297 677 ; +C 239 ; WX 283 ; N idieresis ; B -25 -15 303 682 ; +C 240 ; WX 0 ; N eth ; B 0 0 0 0 ; +C 241 ; WX 595 ; N ntilde ; B -28 -15 574 689 ; +C 242 ; WX 508 ; N ograve ; B 27 -17 485 693 ; +C 243 ; WX 508 ; N oacute ; B 27 -17 485 693 ; +C 244 ; WX 508 ; N ocircumflex ; B 27 -17 485 677 ; +C 245 ; WX 508 ; N otilde ; B 27 -17 485 689 ; +C 246 ; WX 508 ; N odieresis ; B 27 -17 485 682 ; +C 247 ; WX 0 ; N divide ; B 0 0 0 0 ; +C 248 ; WX 508 ; N oslash ; B -8 -54 496 589 ; +C 249 ; WX 614 ; N ugrave ; B -14 -18 558 693 ; +C 250 ; WX 614 ; N uacute ; B -14 -18 558 693 ; +C 251 ; WX 614 ; N ucircumflex ; B -14 -18 558 677 ; +C 252 ; WX 614 ; N udieresis ; B -14 -18 558 682 ; +C 253 ; WX 0 ; N yacute ; B 0 0 0 0 ; +C 254 ; WX 0 ; N thorn ; B 0 0 0 0 ; +C 255 ; WX 597 ; N ydieresis ; B -21 -227 541 682 ; +C -1 ; WX 283 ; N dotlessi ; B -14 -15 227 499 ; +C -1 ; WX 0 ; N Lslash ; B 0 0 0 0 ; +C -1 ; WX 0 ; N lslash ; B 0 0 0 0 ; +C -1 ; WX 1064 ; N OE ; B 32 -16 1055 709 ; +C -1 ; WX 790 ; N oe ; B 27 -23 764 493 ; +C -1 ; WX 0 ; N Scaron ; B 0 0 0 0 ; +C -1 ; WX 0 ; N scaron ; B 0 0 0 0 ; +C -1 ; WX 754 ; N Ydieresis ; B -35 -17 789 882 ; +C -1 ; WX 0 ; N Zcaron ; B 0 0 0 0 ; +C -1 ; WX 0 ; N zcaron ; B 0 0 0 0 ; +C -1 ; WX 0 ; N florin ; B 0 0 0 0 ; +C -1 ; WX 278 ; N hungarumlaut ; B -51 531 379 693 ; +C -1 ; WX 278 ; N circumflex ; B -14 557 292 677 ; +C -1 ; WX 278 ; N caron ; B -14 557 292 677 ; +C -1 ; WX 278 ; N macron ; B -47 584 325 665 ; +C -1 ; WX 278 ; N breve ; B -32 545 310 698 ; +C -1 ; WX 254 ; N dotaccent ; B 88 554 220 682 ; +C -1 ; WX 278 ; N ring ; B 11 532 267 734 ; +C -1 ; WX 278 ; N ogonek ; B 32 -216 226 6 ; +C -1 ; WX 278 ; N tilde ; B -44 563 326 689 ; +C -1 ; WX 611 ; N summation ; B -29 -18 569 785 ; +C -1 ; WX 411 ; N Omega ; B 34 -15 413 677 ; +C -1 ; WX 283 ; N pi ; B -14 -234 297 677 ; +C -1 ; WX 300 ; N endash ; B 0 245 300 350 ; +C -1 ; WX 600 ; N emdash ; B 0 245 600 350 ; +C -1 ; WX 259 ; N quoteleft ; B 35 489 224 717 ; +C -1 ; WX 259 ; N quoteright ; B 35 489 224 717 ; +C -1 ; WX 0 ; N quotesinglbase ; B 0 0 0 0 ; +C -1 ; WX 470 ; N quotedblleft ; B 35 489 443 717 ; +C -1 ; WX 470 ; N quotedblright ; B 35 487 443 717 ; +C -1 ; WX 0 ; N quotedblbase ; B 0 0 0 0 ; +C -1 ; WX 0 ; N dagger ; B 0 0 0 0 ; +C -1 ; WX 0 ; N daggerdbl ; B 0 0 0 0 ; +C -1 ; WX 500 ; N bullet ; B 70 179 430 539 ; +C -1 ; WX 780 ; N ellipsis ; B 43 -16 747 162 ; +C -1 ; WX 0 ; N perthousand ; B 0 0 0 0 ; +C -1 ; WX 0 ; N guilsinglleft ; B 0 0 0 0 ; +C -1 ; WX 0 ; N guilsinglright ; B 0 0 0 0 ; +C -1 ; WX 990 ; N trademark ; B 62 306 928 718 ; +C -1 ; WX 756 ; N partialdiff ; B 70 -17 777 877 ; +C -1 ; WX 614 ; N Delta ; B -14 -18 558 698 ; +C -1 ; WX 314 ; N product ; B 7 -223 317 877 ; +C -1 ; WX 0 ; N minus ; B 0 0 0 0 ; +C -1 ; WX 167 ; N fraction ; B -173 -28 310 686 ; +C -1 ; WX 254 ; N periodcentered ; B 43 278 227 456 ; +C -1 ; WX 760 ; N radical ; B 30 0 730 700 ; +C -1 ; WX 440 ; N infinity ; B 21 -17 422 677 ; +C -1 ; WX 618 ; N integral ; B 31 -16 589 877 ; +C -1 ; WX 805 ; N approxequal ; B 0 -19 804 854 ; +C -1 ; WX 598 ; N notequal ; B 27 -12 572 877 ; +C -1 ; WX 680 ; N lessequal ; B 29 -8 668 877 ; +C -1 ; WX 628 ; N greaterequal ; B 19 -219 612 677 ; +C -1 ; WX 795 ; N lozenge ; B 35 0 760 727 ; +C -1 ; WX 795 ; N apple ; B 35 0 760 727 ; +C -1 ; WX 0 ; N fi ; B 0 0 0 0 ; +C -1 ; WX 0 ; N fl ; B 0 0 0 0 ; +C -1 ; WX 800 ; N .notdef ; B 50 0 750 800 ; +C -1 ; WX 0 ; N .null ; B 0 0 0 0 ; +C -1 ; WX 282 ; N nonmarkingreturn ; B 0 0 0 0 ; +EndCharMetrics +EndFontMetrics diff --git a/font/CalligrapherRegular.pfb b/font/CalligrapherRegular.pfb new file mode 100644 index 0000000000000000000000000000000000000000..d958c0da45d3fe281336bb6862dd7d31fccde36e GIT binary patch literal 45189 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 U*;&G?WOTnu&3K9% zR^S@~kinO8kvyAJkwV+y5fIYqokk_!e1@Ho;Ml#-mLJrA;vN zO72$JFjXD6Q=>eX3W_<>VAODGo!x^UX%`9v3FqG{_q9T9qajA1O6?F^WcVD zQFvbM+NK*JAr-??Qpg|cSyefFY`?0wy_>2N;-5Q&xL|l#*^pG%C?=mf%6??NFI&iD0rEaUXkP}l1!18%Ou7OEU`M{P&Zq;WF4!RiZ6M=vi0)ItZY!JFz1UePM-YY zBs(Nm&^LZne!)9Hd%pMrohITg!T+2$piVt94#BEo9ZxT981POGX^;9m0HSqC3=bQo zMML2usO|{7_~%C~MUaH-DR#Y)7LCVudCE^b{FUw@NXO`z9I0eZa9~wl;l8oM8w*Ed zU4F*;P1w+tvh9EJ6G9$iD@O+oWreKw@D+nzpE2gdfT4qm>NEd*`qs^n6GFq}JIA(3 zN9Be|Z%veU%F%s-f>>6hUs86KIjNgd=*}k$;r9<%WWBBZVBzqMcunqPP-wXPquHFA z-aXN!i(&iIFTUuZ)xB_$U4_Y^yAw_W&|W8ce-!U!plNu|hWSK@iFk2}w~R7>;hj?& z*6@D`LuvfKwp7?Kv7uq&dU1r@x+`UL?Fh8VgE{}PcuCo`th6Bw&0`xHc$=?&KIrwC zW7}Kz-KgrMF=`LCO!w#YDtAIN85zxJ>}FK@dO z$Brv03vh8t93)LZ1}kLj(3eSvznq-Q?w1J}Q<|n_;2Z68}szT`2{~RsiD4=mTyuFx1pvmDMK0AqJw% zR{$tR`vyizA#Y#4=pH(;E;2p2thli#v&_^ZKBKg}F*DH+IojkCWUNd~@e8oz+@94% zzs1!x#NWsNm`_$}#)LyJKe)2CcSV3-&+vhk+~NVnnX&PS$^MxxU3;xsP*zdYV^$G6 zyWPhts#jEE_qyEt#7KYd3iOjH_HQdiand`48VY8|v!n7U0?yVGS-= z@pXkW$M$80iA&47XJwg-9)-G5tX3;R=X8j$#?c6a{!*tQ2|Ds}YAN+Df9H#Gmt$3e zpXg_9a1H6v5$IG{fOz?(7lx%u2uR`;V{7$@5rWtEi)w?XH#62eJ-Bw!_wUQcN3fl& zLMx>XdqHd{v}j-J>lNqKx9=EMzi_~PW4vR$$J}3wxj<|fb6BU%fXs&2hDbYfa}XOy z08bQjCLKgfLG|w}c)*kVJId{8q9mdgQa}$pR_iC8pT>$Ow+w06`q9cgPp$ZH>)-)n zhYjyDYE*==GE07JP|tCrbA|}D?^!EL4MDmGT0@^9M{eA^PeeYrQt}J7{FxVQWOt4- zUAGMJx}on{`7im-+5wR?mXPZmLc^4WF&ad<{_vKl7v^{$1Ifn=52@o>Rfx<2^OM9< zO^H9g%my6!>0rY0iYfA&Q{>@O(i$mIVEpq&Gdch zkw+dm^#JO^`?t8~_bK!SHinsDR_yMxhfXr!oiht6qK2Ch$f5xT|618W!QFgvHy{tm zmA&6KM>}Wwl%EzamgU9r&&%#(hd&I6!iuk1e5}jt`NRJ^Wx=;oeqrL_FWth5h1Dm0 z0{YZe^_KsWo^j8d-%n=7rkhUs2KViqX<*+TARkn~#IXk`Ee~#(hg2@b%@L;k#pOASsnpi z?6#9$)WZA(!^zF3M})6*=}sIOO!*195EIa~QFwy%1Kf~ebbAkZaXz4Rix>46UV+w= z)cC>yoyk25Zox1iqaB7})nZ$f{CTJ|E3Ep<-ITwiEGsMPRk?L{O7no_hbJZZyU6v` zY+zTPq)A%OQ>QX3PE}<$BzWfMFP7`cOJL4L5pk!YL-I*}jO)@R)Q`xW7q|CzTMy?Y z!dpQ1VW5%K?~!tY4N(k!)i-R|(1wZffA{`Gmj5?c{$J#i_4B5095io+T>b5hr{q7H zXEq5D-2CHRM6~fR>d^D}pxsN12$$R?yj>3|AxSUvC>`+vVR!_&eDX5311l9o^lh3_ zwnSbiKk+uc;K@B-eXtMn`#_GrwDyb7KmTGa!$gI4w2jy5Y!{#hTKoauJHn@J!h5SH z2s5=h=DK=`g0oet(})U=7e(1q#kNhttch#1x+OTq!`ik=b2$y1EfgdC3?{7GBFxs+ z6IMU|xI$|6`SYtg<1r%Rhb3RzR-&|Z>zau~jqt>_ky@OH)ForY@;E%@zlc`9+eW?r zJ{x)QBE$c6$-mPV@hIIntnHyWudwO2V0~!2% zWo2p0A9nL)Zx-j66S8VpgnXmRvf+y#KYeaa<)Dg1gNASKd+C&+O&s24tsRm)q`7%W z+VDQ*_vBvw<(JF3bHp==iSY>yl`i+l-AdegKXLEYM_2}4F=H&y_xSDq=+dng`DT7Z z%k>sRq5MsV|8MNM-{Hk7ZE#9P8^SPylu%Z^Xm>m{o$luwZui06@kor1$%qGJ_)6pd zy^T(0dG(=9{%e?DRC(N!t6Afo4StXPZYYR9dH-LJ{$HEa{bgJBkmc( zt=gexu6e_%%jf2h=H=Yu(k3>v1r}FU78g`j7M%a;tMl)E^Nn^}2W<=W|DCk$wwErw zZ5iI6pFVxY%xPc$A=m!?JA392nwK$-oLsT~Rp#tL6ywqTk9oPFG* z{X>ITEFSud@Kn5U$9@UTQ1Gwm9}giZ&bJ>2C{8*;V-Y<2yM5b$JSc~c9zdH5N?AKi za^|TPaT88aCY)XJP)S&9cw%U*x1Zpu(?v&w8bW>Cef>k@B2(h>Oo1_ykB|G(C;F6! zdHK5r$wU78!ilkk@xf6^rWhZ6NI*<>Zit_+XIMi`MO;omP_!{QIy7}o)q@W|Wzv39 zY<-?JzqKelI@%l&?;X}9LZ=Uk?p-|diwkF$u8IrGjqYyJ8Kd2nl!avG_u0*oq7%YD7#vU-N)+Kbx1 zG&rTug>t-eX*rfP+}llU?)pfHuX^&7Km$pLyX|(0@a2WK z<-@5NsgdC^CX0JXjHw{s)I2D?^`5Mr6H*V97v!1C_UYxDsd3Bq_lk%rSoG!Ic|8qL z&IQea{7qD9+=Kx$BfO)d4c&W0dU`U!&p&R!q@@1&Bge5!`RQ~+n7?;od{t~rO7hI& z>e^q=tjQfbcw+jzVq^3o%dc+pdX;9?H!YrZze|{hw|~%~OY*zc*Zm{vHwmc`5$R!# z4ZX_euNdEKs16Ivf48)m#?Jpo+Izr9Rc!I&JGbl-(%S~oH=E58(#xijN)k#45RyO= zN+1ax=^dn3MFbV3N)Z(hK@bE)^Z^QrA`b*X^)ssC_LE^C48fVGCZe&S-cHd52qW<1KtSmQI%5>3uAt~DYMi_uS}=M zhdDdvX4F3$ID{T2?xbL3)xp{oFSZeOGaFlaFTdQPH`Xg(YJHTQLk4YsKC~z526vR^ zp>BWFostylObl!x%T!;q1YOD7pfmZ&#QNqDGNyDIeYbymx$W|Ss{;np_uhZW@MS8= z4SI;eC*Y~g0r7f(T!+z6`_BY|cuL(H7g zr=EE`P5!!sR$YAQg^@dY?d+YMosKgZwB?D~u(T8+92VoMA_lgN%L~g2jS7t!_}mPP zK4by%JxcG(zaU~Ikz+$$Rx&UdX^SeHOn+tTNK0}K;iPN_6AR4DQPajvoHAzogo97k z&;Q5#v6DKyUN$6Z)CB**z0wkLa(?dGHSW+W|B9M1E3QI5l97;*aXq6pqjAo+VMRTr zSLBbaomW%2;)ADWjDDf^-TuG+yH{_FPXX2}yCE;T10pO@*xax=C+#dqb(PviN)+QH6CdJK zx1u0e@9XB4{`8`!)5gzxs&-q4ak)CvvD)l_I(;>ob*o)5A|!; zJI_BPq(k-Sm2XX-nh-a0cwIqAdS-d0hxo#`b7zD{7Q`pUc39wlbdYPlPh|9fJdM!w z9pb8PqJIJ0+kvwOn4=F}(;0EH0%(IXWpqR!Uhp3z8?~aAj0u>Tuqh>{V9ea)%u9p2 zIRy?M+-d7eo_Tc7tCj%$u<`)n`g+AMOZxo!=b!3XzHXh6Ft_xLF7VfB&We&lMN6y)g_FzY-smA*x4Up@hayrNaWEFXp|-u97mrdO*Z!L_C_6Sjl#5GoVCu*7E4KHcC_RagD+GGR-=#BV1X>x z*g{R&8c$a@JS}Z_+8=I+sQU30;?^^WK1tiXN`L7Yq$R|4{d)Rfy^y1v5Z8|TY{G=k zguPacu=}Hx|H{s6oG)pVzWl3j;g1olU)Z_3TA^6VH1e3>oslJ^C~Ml(w&1@yt5O6I{}<_+%$TAItD1mWC(@*0*h0OH~{j5 zfk|fe9R@k^g$NRA?5opTbP1VxD>Xho^%i+QC%U#a+D2c>?K_InAk5JUpKFcEaKFgv zw+>V@x{@^g>1CGl3;uRLv}nd!1v1H|$3vU<5ls3}G#aWCnMx0hp0LI-g^+8_oxXiN zfF7jJlJTT7=|aYwP~69n&~fAFH{-^)_glNxPxv4IFu|ea0gLPyGMa3nBj{=?eZf09 zNqQqGx$z~bz21M1vSp9IBsPApZ~ulcWDkTH8^d(W?Sj4;#M8#O5iB8^VGK}( zPb=92tT5s8XPwQE>f3DC6b)rh0#PaV|DSXlV+`7+aq1Bb^J#^so^0)pDO z=)GetF}=T&z-S@>4bGR9Y*Usq!E@odzR+aC0dV|(*s(^IqkgN#XfpN=Ijym(CbwOzZ8Nd*Q&x}jJf z>z`XQf6A6boVJ(KWyP_&nxvZxmc{uSv)dS!r&XJxfs5{tBOl5Cg&cwZT?S`mOw66z zojD@>U`XQh>Tm(F3w|vHbPM{oA;T}#kKi08E^SoPsx&0m)4xDp-oLbT@7w_ch9$*h zXT>BYM)xej-?)s-W$cvWWqZm3-1h9Q>u8ve(P?~gw4q&4=z>_q$8-9mP8k{A?UG7^ z-rcZd$a7J#$3L4oWy;hygGco(De1RDSiQDiNlD-SgUU+APno)D^OPy0jiHtO+!FTp zn>Bk-LimVT3nvchJWlG6-3$fi0`N=b8*0Nmq1+S66h5MwiB<4$+K0i37|c2Y{48${96EF$ zv5b59b9z$nykj+q!-kS9Y)0{&+bp#*We6p?Jt z7PYnRPDdcL-e=X+kCf=dP2nMmaNPy)2%6jCGx8z%8aPTaU~xn{IQ*&+W*!d(HrB!` znaWNWhN#vV5sfSC>0TZl6B%gE8P<2klj#%l%4%ZF9fM-i2UJWOpEzvKza~z;zOQap z?VIwkB?ceA(DpuUTzpFls%rIqPelc^4-N9eSxV)(y@$9F=nYOd$fxAS4f+-&Gh)oz zC_IkXlk4OV&&)@~^al0CzB4UfyW|#mPFb#`3nS?)GL}AvUr$-PireUZs?h!7d?jw5 zICtM`d(Z7dc!qVRxP@a7roY`RO@^~WtTSUFNCI*EsrxB1xg!CVUD za>k*f__8kJpdoRm5`IhgSK~ElixMT=ZcG&}E4el)vZ&EKeUbE~3RfJB6mM!%nbie$ zEhdg4jI09oAMtzm&(vHjuA@j;9PzAKP1XeUe118-OXkzLc;|^;bORYiU%0%s_lms_ z#N8kGE+5o2=E{`$Uy=BaNc@-oqPPA(M=vjTpWu|J z&Mw3Im8bQNHF)_1r1bAyj}>zw-Z)b=&mV_zHk zq=)OoX`j>2c3+!;_Nk1G_H@(3waTm?8uCC| z3c0QEW>Kydn;?W@_-6Fbpw#!XG6uDGMTF^Z^Kzwk+k1!fkE*mTS8>Sn40aBORuju{ z=!D-a@3>a86c31+;wGv!X=9-|^<=rCiC?qq^l{)1qLaOh1{KLn^x`Kov^aDrtPD+} z>=4_y%Zhk=q7wVKK=$?)zJ6hSLFT~9zS63pRZj$&Ofj*3`58G;)}^CI^e7IGYNvmu zYM|6MI3zo!efab(#DAKQwKy-c`+y}q2E`b|qI_1hn-M>yTWVo)U7a>I)o94in6ak1 zGTe30z!~dC2L%Qg3|@%=fhU6eE!od3J1g|ockNc`6`Wv-4KTFp&~56B&G8Kvgxu66 z%exMA)k?ZHr#p4kOA*RpA18gWW%Am5OK=FIEzOjsFXbiBm2w$Q!cEX4&=K^A6NtG* z?{SUM5~Cd!?um{=aWW+45N1JvrwZrS2^9$l*KiH(>=hZS_v-svcw4haN@TD{s4+Y@ zZ0NwH9nuQBg;;!xlafOMKRQF&R2jYlKOWeFZa8^!kertKe*C6fPi>+hR?_+FyYJMHcRVSg+gFlaN`X2H$ z26h7oSk@KHVZL??4QHx)cv7O|AJ~%IUl8*;UK?X5B1FDlhLeczT!Ww@BW;H%Z~%z4X|d-rc;t z$@tz$eM*yiaX5;xX3vufu+|9%R#RXT*NT#yp!EfA89eJ**!Ft zM9>elXMj zzKiBChKteOKViq{h94|8j+rkY6M=x1WUH!IDmi16)zeZLZF9;6U`%sVIR~piFbY$1 z`wzy3fZ;_wBXVM*IwlzPZXSWgvijmd<&i@ME!#hLM$Uk7{a;u(B*R@WX*aev@1Qqc zn>;mb&aBB|j9|#FUbb=YB452Zy|lbTR9L&vkl-L=WN=v5{%dBJhX?rP1O=rJ+`Vyp z<>0jEy~uNE;oE`&Q=VM;>5OscQ)lSOiP|_#8TusaQ&T`^oa&fj2#K#V{EfLL73Y4+ zsRk%YHmgl*L@;$h{FV$(aEeEhq(^s3qhfkiELk{lM`==Ya7J{v zSBS4$U~27{gy0~$BaZ~snpgCwb{2GUlz(P|-n{L3;#ZjdrhKiBv*6@a=bvAj)-Fij zkNS>2ymn2GvZ9>Q*zTF(27`C^9QUAMaU(`9JnlSIhzRV_uT1Ew)BCz6MYU@e)_cv? zRZd;iu>>EJN+HLO`G)M{>%NM z+P9B11^Qtuqy2o+e3(DQ(-;(&?rSu58uUb6s=0kT(ZlVvQDY+$dyoWjWZDW%|(#FnMD{Kfe^bISTs5>;O=lJRkD=&Ywp2S@LX6^0{?ZaYy zJL=oDOY=>oo9W;OL-KOkdB&%NhIP)VN->Qc`>GH^q;vEOyr5_b8cWmnVz@W}US&8t zvA+V-lW*Yl;=6hUz7N(*=$)U{cXD2CzX>nz`25N?yoG>?v+2(lCr^h(+WW`DpU~g% zhqP74aR6laEbvwM^_{RD@zLQ7b)6P*YkW!?EMTNKgOnNU_@b(l1+PN;F=e)8+;qy^B`FrX| zjfu`q%NZCHSC=xp;+c*ARc|T{-{;pQl*}(nd|Um1nH6UWfOk9q@92OZ@ErU4ux*(} zLl}b$!Kntm^g^^CrDRWS%MU-*GB}l z7oO?eM>=H9Gkb=-;;A*e8((qPilN<{#0lSc7_&mfN)<kd!%OpLm+J#zp;=ooDw z_J*B@1=>RNg12pdgcc+PZ?)~1>|H~FRg4FI~DV{5P0BONWv5WH{^=Yp$FnF?jqxZ=QVb;Qo^*vF4fsdVLq`2xoW+ z^lYt%4Xik36jndBbsDh~Ojn2JkLlLzy79pbtDij*9Lv9tX(~yipOKHrVfr;OD8`q?dDeNP8=RyESTMK=x>^qA&O*S@ z7P~FDpASL`VhRzfuoxvFCebdmnC@j`OzgZ{FiXzyjX<+OeCXmH8P_9NxwUPZ*k-=F zTeye2n`d-A^6;zE+iTL|o>rJH4_!N=351)GW zQzesZz&^EA^dtJN@~u#(X%aFosC2~S!Xm!Dfn;FTR|p4SpIghsuaqt7dZyuJ`SSFJ zmw`h(FR$d!>zF>xN*I{s%_dT$x!W5bZWq6Rm&c=(mj@=>fvgrryLviJ{y{#0^*7XW zC&B0>__75)=++5Qox6m6%Fx@wMx|8tv_8u|#Z3)y!aGVWMOqb6Z@q0jru}?6`2nc-=3K8 z@A2oqxq2pLpy`rwQ?4&6qBV3QeUa88YRS^2h>)M}5y2gYovFE1JfQR=wFrw>QRS%k z34K-BA|8_t5VnUNnwsRS-dDw})Ye)k43RH4L=mHO07%Db1UMXkXWFnj&~f&lJb*5y zpW(F#PO|=jk8)QWj8M;~Q5~~T$Sl^#2izo-pN`E#v2A)7)0uVJNSucZg$rg3gP7zk zvn>nEhXA{06i!4=T)CpMMBmmUxS(kK{4HDP1^T>DeSOdCi$9vUoA$l_+;w67o9){j zv3OK@%9j)3Cl6bgky|!s*WyJ(Cnv-+5=fC|TDZ5)>gwgYjU-j~JTd`{2Qh%a`)KeX zSFCQ$%$H<>#>X25jUt1OH;e_T;QXp_4O#)y35ZclGO3}VOi?5UHhtE?-PCE5pYO{) zh9yZO&6>K z1aXK^`N!Subpu{`VqK5EMBMR8Tr8Q>aNSv~3{ITRp95f`rW0h+bJ8r#e;*!!z!Ap) z@beZ~6dY4gL{)8NC}pb;NKP+ouV9LvI|k~tApfT#T#7vOO1_XS=Jh`^;C9Kd@iRuO z)X$tYZ6f_?cC~vP8A9ZrCY8FjRf@$oz5SlNmXr2WrQS>Igf0cl?LXH#DWJVi%FOt7 z?Kh6wSI~>#^rS5lUMnbpuK+M&)(cMopZ3@z78Hm9HRF>Mk%DCUZuo}n8yd*WQ*?>e zhhC?@Gqy6laVs(v{!Xz=k(YI0G2*aL82Hu|q{Pv}tmOt$NM$Pp@X&%J`tGf=w2F|| zx4&(eM`r%ReDCNNzG(x>;60(&|G4atUa?=i)Oi1Wxl7~0Z+@CI;1uR9)*mw40~x_~ zP&h%D>I^Afsl?z1_LQhmBk1uLLP(uHH)4ELB9vR7|6wxq;bS?Nh=VXu|7Q8*hA&LZsrp;=OEax(*zfy0zAA$S!I}sZ8oX)wT`F`8Mf4Xnh%wqTP zTuo+;=h7DCTi-`Hv~Ry(iuzmLH>-DG z!9Gx%EH2V8*PexKFf z>OQNt#eLA_BloeoYjGdrEMuQ@3%p_+(J#m{e&&n)tQY*2d|>N|U^}c3I}x<u7~};GbG3(_wgLN&z`q`I>7?P%CS!sZr!~WaAgXM_;uJJ<&n6qwVm;X-#UIq zC0edS4K1!aP2=S=)pqz@1{dsyYW@7IBQ5hM)@sQY(M*%e)z2|qV>$BL@ze0oZw5z=t-S^Ox&C%|+jMDhoxw4x#r`IB_DX${Tu&0$zA&aH7XNC-y!ax$NaxavFTQBMvStlQBx7e^y7A5B z+4Pm!m%skzl1-sl^qNhbh)P%X~^WE^!L})$Y^MNgKaouu;pv2HJC4?HCQ?uxJI4b^(-15K`b!c8uf&2O+e@h z+m^&$78|;mj>HudxwK_(RQ&Qjb$JZ_=eHgsrM@PuSj9y5)FFIKW>+VqrX^HK2U>Sq z;;8tJX4|@NO>aF|Tr+eGBr*2mNLy51wvZuB>dS^u*d-@rj2)Me3=J7H>EH=0`*};6 z74#Tu0-t(c9wY0IF^9(W=x$c*cR^IDL7Wk0Y>tN=JmlE$cP?FeXZW!p^i_Y+5ee(q zs!D$^=w?07+e?9LXeoQmHW{mB`_s{WwdO5(t5nK(u(yTSGPhKd+64zB@5Xxv76_eI zkmajS-#@(?k8232$6S6@zRq=wB%)I@;RvVaklKX@t{zw@U#HVnpKhEkE#n11-Ga9SN zuU6sP^-Azj>7RAyte@@{lPNfR>*onfb)Im!!qxXh)lnsQJ(kLHQk`;%wBsetJ@ULs z2LlI5#nMxbtD??UUgGGTx^rUkZtJJW%=75;$f)E={9qU% z(1E8NkKUXXM2wgXljJ|IzxxEixvG1PJwZ1(a7nsPzj&X%J^dobrDMENk2(&l28)5! zW*>JN^g3$zm>k3h8Rnn>R>yr-8!95;eQ#jX!z9lCbc{7%`D%NywG`ZhMo)%k#3-`` zm-=FBD?h#5bjBkvuuExCP@sEoR&t-N6;*{j(<+a$!RQxMgzG_WhK%%*qRQ&dy;CxU zegh(dL&CyB3=zG$WSPUl%vpo!4?=X^xf=Cq-`wnou&@rD@)(|+G;hfNRpDy63lQxx zKyuh_D>j^b{lu-loUd`Xf|X*~<7`gZM;oE2=l z9_TLgtH|rrAuKE+JGXCyfk9Gpj?=_o6~->T)T_afj~%}x`&=eQ+xWdsEDH_@b;{-g z3+N}WH;-RGKKV#LbuJ9R{C)}Zn~fiv3%>R_PAr%W@9}v~EPO5!i+#SoM|Z70tyBs- zPp>BZ-s9tEpZ9h;Fxuxnc6Qn3|LgQq%*xF|9cF0q>&;g2in;k3_yOwS z{J>)82?RSk#X>$Q=_ec>`pJQXoIkur&?jN1Qpsvz;MnN^eGxs{yfc8!)E9oZ-NHG0&0kH@ZTXqU& z-)yy4c6b=yg;$*c0lN=o2-I2sQ~RMKkTJ()uCVZE$c& zdKO0f*6kwqpp8c|7rr>b!6506qE@sZ6hFna@LHiUMtQ4NRuG-L1%=vj57 z06kzFRw%IdLV1@}iwf;>YcaR4+tJ58#j5dzsc}XNV+XeVw%{E`vcis7;WsxI7w5KG zNz%4;c5!jbjrMXY-*Z&{b5mfOY_>m)J(QHHOvk&dO8ATOIroJK9gH^NHzCO#dhW z*4b*}&*G@%MH{HVv|Tndchn&=)bSxtw)YJQZR^`k@8l%A1qFv0J46{G`~%(PHcon6 zGzRJ0omBgXd9=+DmM{+lw7>R+q$^4 zb#aX`nmoO{^r7L=9!~6v+1**bVpEEqlO-=NpRkS*xP`Rf+O|#}9V5bgyu4)X3$~%; z^KU=;UB*0nCbKtWjLN~h{Y3D0o8Wd$G=}`o@ym|%Z}uk=vx727RU-Y;fmlAT zzHRzl4wwJU`J)IXVFuIiCa7N8xbL%3bl7Zq?=GkLV2@sSy7YrVz1 zWLnraR|5jlQu6cG=XFj=^ACJ$0o?*=z2HDhOnL9I^}pAT?OhQQE!^(gy-RMoAtc0* zp4+9n1K1@~rw^=3iH}dI8aRC_gF6!K|E9L@-MS&@0bE;u1gOZE=!)ic9P)|5)H#>K z6c8ZXZq?2bJE~g4g#HVftC|45&&P>Vq(j3O@s0R2tNEEkx+v8-RDIDrZ5oO*{@i3l ze##pt4eJNNFf&;XtslxU8wVzVp`&B}uegIvlB-wQlEwNVX=D@V>Qz-6Afq^hBdj~f z2)<|%;u$$%N6rAcj*YR(leTCE%8TV?Jem@$hVA6TtEF^AbF2%v%G~DcW#dPjxsqEc zK>;agiCwZb=N2a8dq7~?kt*`g+Ak_PI;vmA$l<>XA6cRPkUTScbnjdCLRP9VBqTHg zKg#-c?~$o0&_l;hU9xcM_@UL7_;^b-el1*rU!0y60>)7`7*qcO4x28`yTE#&_JM7Q zLP)uBU1i7U=#G^YBZfa1KB8|w_M@Mb{91K1H83C`C?&ZdZ*x|cgtU}^Ajxz0;~`NM zYTg0BoDmulVoc3?fpvhxSS_@bnU01SP}|zrwlEgjzNcc_rib8!O7;vC84P8$T*wyA z^d+Hz%RV;#M1U=dubc6ls;?P^^{?|qvwg|TpJTe6I1&0cdk&)nHA$SnWL2$vy&;^f zs>yN=+epC1Vec7Z37M0@C5K<_MJ zD(>|K&pIey$Gt%M3+#G2mtX=tn%`?K$L0qshw?npDsYTCx5`iQHHq0_q)@SKA(7|p z){5=hRhtD+zu-I7Y;o|Qs()}?z$PibWn0^%I*b=8mXk#3JXf5rZr^?tjCaT!>9_9~ zewZ!e;6c@*VaL7NM-Gpl!>FN-g0J-TdAo6A`*zjDfe`^b9N8Qm7#~!4fRDG-wT%e@ z05)TXihU!4hk}W7c$oR&>+e)7H%>ozP_=;YA?7&$6*zYXUSaptya(JdyKBA;ul9Sz zwtLJDg?kR2u@n&$us)d(@og6f$fW@6vbSi^`58phvh;7et6D^Na%K3k3~cayriA=M zx$C3cD<~kRFZ3H%X44JIPWKzPb?sJ?Qj7*ghkZtZ@792kO*I>kU=dlqRN0e+R3vtV z!DzOiHR+Yko#`8!PTJc$x#?7~sx=g!+C=vj6bPxs#cS#ED~<-Q;HzrSDcic1waWTt zU+3_?fw9^fF<_q~MvB`c3;;&Bxh&&9_6BH&Vaw973Y^rF<_JDMf)7ARmy%fLYz?TL zqi4~KeGS6blxz`W#~v_8>ZMF;g}n>n>x~}*?5z%nw=y7McLGm%1@y?)k~S(-SKDUc z#H#LmB{yV2@u~vpU}F!-r_U<#6rH-NPvc$bATRIeBP)-tFw2^4jx!`Sejx6#cg$MO zum%9^cv9QP+WHmHA1m*dYNI<&hQf)?1*?ixiM_D*$&h*h`I z592{Hi@{+K==@{{7F1XmAlCOWX#16~?dT8;Hn12>94d8zP-X`Yb;BlipW{ZY8_=1t ztEk1I5z~bMSOHrS1wIeg2#*HqgZ*3K@OFJ z)bfb3K*n^{qL(BMQ^cXdx}(+9WfUt<2a_tX&qO77vhqd!XTrDRt$P{#C_i2;Z{l`6 z11x;L_~t9P2+A;J#7OE|eNdLj}p&WXANTN@gQ-rHEEQTDkM(bI+734$gR-ESRMBH#q6#IMthv}_{tvZaE!@CqNlfE&T4xf{}LUhe9_TQdmS7yY|(UxMZkoAF{(_2 z9cw4u-K0@<6?&HSli^Er;ND&j3=AxLwd@d!!ns@Pzmp4@Ohi&5J!)!DVd3%+)c_V7 zj_h^Va_Zoi2fO`$f(nbx2_VMM-9*z6&g3Bs(!dZOJDUwewW)y_gQePZYN5WR7OmQM zS}D!VG{o#;t+eyj`nYNpBh4B(-;R32Hs9As>wjM9Y4+j@#au( za*urx%P(H6`A!)rgbU&HD=IKvhc&eHi?)reyjcf2@str4#iBP(96#Royz)A^NA4k) zmPHzW@uD?QytzUMSFW=!to>ZHzt7QrDz-2~aI5W0ImeHq(Rp)F+?#zNZ?g7<7nSSE zbz&l*dbHnkPWlCMK!x8AJHL#cCbfN`%kkqC=Y?|WjSjRSpOB#!FN!yirz@pI#{fCY46rg*pR%Wdogt9kICbL%d#ln7+zidymJ#fvOeC+`~jfywg4NRI>=ZC zy=dKTJ-7Wg2IjAH`qQ_TKKO1$3|Z6+-aS7n(^UMJ=s~hw}SjRbq7)&aX z8Lm_PgkXdgvF@`Isz5LFcVRa}H?UJNVx)MJp@3dja)p1e4&Z}?U%WUO;W91p(iS`2 zu!{w|AX(K6Ic6KSZOw|jEpZHL?F-ze*wC(P*>)sv@pl3AuIw2zW(DgV=|n*G3<5@m zXttSl)sf(X3xhH?8?q2syg|lNj`hZnA!5k!<4O&EnGD1^Fd$~(*N>E^KB@uD#C;^L z{D_!Tie~fS3F!GOCx;XF=-FgD_SB;~EV*mhN|t-Uj!4}bV@9`JuD>*`VLJ-`sSbz7 zjUc8f$x}Mg?00K?Tl#!7ndtDoS!<`sgBqe7^9u9YiAy;fHvMuq5;^6n80>recqGxO zGt5rBWT@zjnf~j=i+rY$2R7Pu@LQG-5e_LQFe{#Rt$7L0@}S!MVK&pQA5(tAReLJS z#b)+4I9Ags>T>Y3Ru`C_*17Xboja$c2egsLkCUAO92WxH$fud~w4N#p4-fKmC6%t8 zf#Cz_9v6?G@NirU^b|TVe(vkjEk7eHG&C$DznhQmeZ9We`UWcbY2i)1Kq|FCSTNfzvWcuk-Vj&VOxRcO6h&%Qgoy z8S?elq~Ld(ml>`l?p>O;;`iT?6U`wrAV<|TK4U7JP@u{39%XaCvX54Ft$)S7BG_i+*XZn3!8(fYrybV8etRUWN&c_Xm*OxtQ^YfI!AT zKgMwkzNFvM2Xq|H^1Dv%lIXS7bQ5y>zDGA5WV~S{%3N`jf!JV!?L?#lOO}kW8pVH+ z)hK#*?b`bXafVht#bR6J?Wkp3RIX%}c}wh%?5SgA6;IZpu#gp3JeTqs?Cq)*k@`*m zhRH<+EsL###BB?>S(Gs`1c>67pe)f; zA`Y141jc&Y8|mH+EEtF9XbjVOA|(}f9vQ$;SlEtd<*HSrEorl=TR7e4x zaq%urq%^$SDumqrwrZ7dn@l?U@yElSiwv1~i~bN+X3-fSVKH#rugUVUiAF>f#d6k zyk9rSnAj$$Vr}t+a8qt_Y**zoAmoNjNdsABStusACgzh|@AGj)x>qkI9CtNs zlZI-O!O`_Rj}lTXV%MAzI#ZH2<`K)DiFjqCR`L|~o$)7al(K*`0bSNt{+Hxc(&6OJ z)XK`;{Rq(}*EB>Sr!=pYRgJvxXW5&iFxW)c%D$B^%SXWT!g+=wH6_1?fIW_2;A*aZ z54QCZ*|=C}KTEuc4N>ru@o)%md1*}ktF!BKst(b;M~=RpA`EoGEw4E?0> zWpPIFs+BKn-TH#?y>)7^zKi+;CQGQXphp>d8U$#OkV>2$g$4AQ(1VsCJyk=4RYIC< z=|n>gd-TuGv%TuV0urGd+(KnpqFORq?Aw?ls|AQ=Nt0FnS-#44ewrc#P%R?q!KZCP z%~us@{0jMU+kyTAw(j2}98?Cb9ydBG*j<|5xXdlM)94ASg_o5cCu{0RJy~|}NOk=m zd3o^XHsoYY%kTUL;1bc!Hu-0562>-+?VmCMk$jJ9CPK$mgBUZ4Vabei@jQn!&wa|o zsj#rJ&$a{D;ri|m{up_g9vVpwQhAgxRH^VkLuRgi;R-+@)*{-S!O|(uyL}P>LGGLp zC;RvRgDz{J%l_z(tuFKJAekUg7@eNdOqF&>Pcxm;#HJ*A9|>h96sCPZg6V=^LLWUZD|SvDH;aT4-=*WOni9ucuj^#Ks@B^Qr`VirK@tq6 zIN%FY64)Mnb+;?1ZsV4dN)O@X=f;oj6ztx(RGQ%)(rL`t=ahlM!9Dx84X8d)Q};*b z{ApP^4RBWH<^54#edHjW&JPg$6HXbGvS3AIXayak5th`HyNQt7g}76(3whg}<5WHYq|!|vd_dPR zq>||kWcnZd8%{og)K)kp;D4UjAQwq229})wkf8VYC5$FbF31Udqlh;jR7TTn9h7qjFHAPzM$fJDfaysFh}4~ zV|;?WmP+dpaDr97eB$@FwUK{ZVdK4&PQi2U^XJsZAPrIkxW4HWUH3n(Xd{2e;t1zt zqCPg~oYngHiVa(cGNldHAB9-ug4m_eAWT-aW9!=glvzqo`r95+!uiIWrUVzcNcf$> z$@~_lqy>$0gx~Mto&b8&$VIY*dSTsRo>NtqLEZ}%>oM*N+L3(m1;K|>F2O~4m$^mn z3I~7s31zFnQ`ue}QH`eaMNSn|&r}RlBIv(B!FOrF7qo!j46{%3sMlR&c>n1x`3ZJx z*rf%i--y@sVla~Urj6o7IibkA*Lj>0QWo0o}ml zhxGYaYu)hoi~73TfWOwnYKCAgl)>e3ChU&pQk zcd`Vy+@(1zO^}?ivnUobAG=B-%wY7*GLvx~OxR3VFvD~>K)~08#OO?9!s91(C>ok* z@$GCW8a=Mc8IPzoLf+l^mIzM36noK zHg}xu$0uhWoIQ8;K~7P1?QF&u0gK!Zuo$p6AQcE;{1?j$zU%g}kdbCskQBQ4ZE}kc^EMb;gOqjRouN?78-Fzv*sDl%@4@?!S3?|2juS?UKNiJAM34# z2KiEB1aSXM(<}TLU*@l6@{A#yxlDcG{Wg#YbE+O93qvBhLwx(t!8Kj`L=uY(lAP*i@|E@24)1HynY~>}ikH|1=jx@UZb%_p>7lMpIi#5OjGgx+ttZ5zxcuGi-ULcChKoE&D{%&W9HV8HHiyi)bV(ccdnBjx zN?Iw-z&-F0W;6pK18J}&^ttp)GKskKUyD#^^%mG4!Czms!QSE39(pnzp)`ZI;!_Yi7C5`P+Q{(o>i7EK@H(b*XbQ`CJ-cjjj@B zDXtxd_JFo=xzf5&_%#ac5dzFer=;ynyWqNoGcLh?HH4VyyU)KMZEqYTYOM`wUt2s2 zr5Iy}(IfdUJdcwAzoc8F?bZfS+c>E8v&;^}bYajmKb=F}t`Aog(btb9(jPPH8zU3v z&q|GK6rxD)6&p9sr7tU&g{ZTgd-cltrvjTnGmPA(gfl&uG6s2qF0<{|klaMy7@0b2 zeqv-}{meh8b!@#bO^8x1|1+ysug+)LH~RA2jT_+{B$@ykCo-ELyr8me(u3qsUpxyt z<$#>UDNsE&{?tjlT`9bY!dU4L~t1eAL4%M5csl!J|_3 z5aHfTgJ|ALk*WsEVh-sd@R;bQ$Id*}laI$l#QCd7kLX2TOArnV9N#%G#Jg3;ymSR= zIL(foYG=DQ@!0}&+S8J$_0n~n8h|_)?(U&&JsSN3+j&QYgtQgAXZG&#MsfEiLtJ(A z@}>$4A-&R9=raiEPyED??40h!eJhKLvvY8tm|NYa_rx&ew5NY~Swd2Wjz(t}obdjf zXMk^QLPA+Mrir8}0{%{7e5$bPZY0~MW@^=c7)irXSm}v4 zXT**zIhr9!MFbmt51Pxdwvu6nUHB`k@rTI?FNWe44|lcLvERl&&`(7u{UwCv1b^cn z(9VZpb^ar$Y^2|`Lf!ufwZD^~R?jn3XE+85mgcd|XovgjD{6{sg?e!9D9~s(;C_bY zNzHuC3eCDlvH$;u?Z3yquGKg`I<7gygb|5k!_qt|q{V;9uqT%yS9;Up!s%dHTf_cue#0-QIYb9&DR?mnV+`Qrw5G^P%9x9chPnnv|;Gr-^ zc!8zoFqMiY%4QtW-YLBfu^61Owx&aDbjO|uc3dXk>W-4KxB46pmnA5M{7B}Aos)YR z&2Fvw;^OSwE5i~Q=rXv+<$#Xqy(6MH7jO`rXPY*?CL@@OJoJ=hi@~)m-5DlY3?^S6 zpLSu$bMD%$a~n6`h#;}YJhO*WYrgsqNjB$Z)^uLfea0(Eak*wMC;FdOSRgKq z`%Lfm>93;TAK~s+EO-(Bh^UmLS;?8BCkRUg#Ca z)L$Sh1d8}yAS}Xc(($6HI*u(j9E;6fL}b~W%n`3z)~( zYe?);(4pg>FjkgAo^_J7@g4l#>*#M`Vsu9n&gk;?>d=lDz1K)O&q#lgzH@ND!&&)8 zkG5a5!pR9q8z6-?n;yxQbFl&Y4w$;2Ry7TT~=?3*Is23F#SW z@o|CV7kX{1msesO5C-}Egl4O>R*pd|&b<7@bmQNaM_a57Ru5~FKYNO;Gi4X(8JoGDv4gxy7DA6Wh4{Y@ zq&M(QJ!1rGVG(Z@MexR)7?`L2NB3}C=h@9nF~A@G<} zJ}fK2S5cc$*cN`kK}F#H>g%>n*cE}D~?w{KukEBOAaC@WbO1Z_%T@pbj9oRUA{ z;NUf*+qTiVZ5mX$r*_nV+7**sB(2AWL49`vNVXo_2pC85$Xlq;>hU9CW++nJbZTKp z@+fE)F!)_?7L%YhnUe1Bl>|wot;wAQgb^@6t-^3rHwa8bz>zbRacc#)utpP zYd|YHW%2H0BHMaaF)g~s+G03kHlTJq-W%$S9cSDG3YQ~{b?6`@j;(**(#{XdhmKDl zw7p+uVU3WYq#al{^*b_SQSVXR%8UD}tw&yw_T#9~^xVvcy$XFd-J@TQeDB^@@uJYd z*cS-R)V3$X*&5@NrWkFr3_$9cptd>rS3PA$P{+*t%ihAiCF>sFJ6CAv;FEOd#iB*TloR^oQv=?J3+o&w6V-h&}Z#Hk?Dtsc{rVjvv@pxyq8q> zE-9(1DeVoe_|2(oD$$EteO5m*h#c2FU8z-kMa|8(87?!Ek ziauVXbo5VJj|fZyqk$~JBaLJ1v=5pL;`@&NmV0{t?Og}{9>-hRqy*n}YMwTO=QGC0 zCXStsLB1*>t9+Nf#Rpq*OeOG3IlEY;Z4b<&+dKzA^W?7aP2bt(PAbnW z`8RX+@8JHsdkzZu^Bn){{`~bFvg9${5quwa@o^n*HCCKY*0&Nx>NAB2qgY(?rkJ6qr2G1^fOGa3HP=vAhg;A!?P0h7>i<1gwy&(W0Dy{gHZ! zEcw~hKcS@e(bAHH0O$K;nW*=VHe_TNqW$$EoqpdrAfcr6Xz!8)f7hSsOi7Quj>Jne znY(5TyU{7We_~QnV*jM{8$)usnuEojQn0ye&X61FN$QRGPB(^SbTyl}{3U~JaEAi! zzXOd;3sL?%2$W~|IMn||bISGq098z2A{Jusfq~iWRaKFHIA2H)C?n_D*?jO`#(EcKIVC9>B zr=K7vODK6mZK3IR%@z*BemwK5`i%6DJ>#-NdZ^jLVEkFd7hs3J;>0x~=5{x-EE`6a z_ykf7&QzH7@nI2Xhll@cH16>9pwLd}R~{b31UHdSVyBGc*xc;+)YPQRJ9pxR zj2fRcch6q&t2@{4Nk7%Es;%qNwSIe2T>SKc&NE`-linx(ComRl9`do+#@l6jsJ&I3 zn->AiorwcTqPxBQ#}m^h z^YX&4!e*romiR+0;CM_OEXAW}Y*EKYlc%5faXYU=evTd@#Y&x{A3AkS)S@5W%!Vy{ zn`CcC6&pzY&|xHxHV#7s#ven~ni5Gl-E)cV!6A#~0LV5Tx|evLSkA}hULi4B5>cIg zD(aUIw-b{|l#-%WRYhkCJFNRLjvTkz_Ph>1cz;qfS(?%oH6hf;XyHT2b8w3MBy~32 zCLH<5mL2@8Kb~k5Tv5kUX|j;}Fl`V!R}zi@7VV3&j=qu3BS-3!!#efs*(oeJ&Jd0? zzv1CR-a{$2gQ3u5>Tas49b8c|V6-tXI6@ZMX6QYuszxRyb;{Q%1UrJi>Wj&F4Zw^85|CNrjLUfjldMkAFG0)D&Lr_Q2Ag! zX9o;7LosQ4P<)WTUsQytA||D}Fu!>zAULeg5>*Pr~U77aow_cSz4amqS>p!4o?baXrG`Vv(vdG`D)~8cDf!t!2Za=8-y*Sj)|=f519ve~TTi z2_DzPtu0^>G#?<7DTBeAM?9gVy5iw0AU;0uP_q6@d5C%$l22|ZizjaKrVq(0dDLH+ zH*w>ycANmV0oS%JYlpvEmI?bD*!jO`1NAdp{bd{0Nqn$6JkmsSM+D?^e@7?DUDY^u zBwb}g=ENb_NlJUfG+D$?lw!qS_|BSw#9}>Z5>09lO79A#4b5LM{;ldkL?x?8R6iDr zXRRs1_etU>R*Uex)U!d^cURfhK+chKj<1{+Uc!90YP}&PqoA`GnP=aKfH#;SnUNcY z59ZoWQjb&CL)FrYT9_(f(-jVV;_m6@dNwO7K4~BsWQotoI_u%#=K4u?r?}(+gkO0* zR}?aH1d;yYsrU8j_w3N8|9A4@?S=JgsyuLnPv7R>((bR;?LCb*U?Q56O?NRjHt=~D z0j<)66%qJ1Ge$Gbk~^NT<`j9BhRY$nwg zC#w6RDN#$WUn!;ig@bE%m0YL$o+1BM&QIAT{C9kxPj}sgKX+Q$smg}=blckvH|Up4 z-m&%j9MtJ*s}maNb*JFX>!i2o za$YB?L7l{GuQLF3vJ(US0jJK7z%kF=@@yKYTM135-%t4QlfB3*nn34ek>ga(gb8Fp z!I1=dhRo|uQ-q0SN5poP7_y=AVf`nQ9=!13PqzxU{$yQz=MZTRD-wgfWjm=1cG)(~ z7`u}#rc|{L9Z&4YA}5qhIS6I*MGK!2pGbO&Je5f^1*zh&us^Zm`2}|loaYTZGvL9n zGgBU}A-;vYjWW#Romi`fGrq;7HZyy-FjT4ba7b<2jFyYkg*R+#PgnF(tw@WUYzEH( z_F4TvT{Ath02lR+>HYuKwr!^WZQD3>hOy=jf7NvJv~Pji1hymIPNg(im{@)!3a6_s&LQtm z-H>y8w?0;u7eL)RIyM;xMlH(%h0S zcpa4Un|u35pbmHctZ=%l7!L0YGD=$!&ttYWiO1tLq6(cyS*s+)?OVX`o& zhET0AspoNe^46#8(vv0E>W4K~M?YAydexnS^!X&~pa(-PJ@Ihq>gVqqCc~4IFEcHz zV30Ws;25cKM4h^9By9kJmjVa|kWi76Muw&*y|0`V>dTLpW7A}&k$kP(4H6QtYxUhe zbUis|r0oU&8y@b$7w)bJ&p+Hx<|olv!|p8F@$|!|macyACY_r^7LUBMmuI=zNHe0>4OYt}39pI61x)8xH_KP?vSG*y(*CTzl^aS%n?W|8h8k zG#&nrys#zwc7FI62hhMr`?T6V?OPcprO-!vsP^&y8XkxgY9TWCN&`MrPi-K_P(gnaAk{w~f4mQs0M%l43} z9w9_XqwU4SHna~3(-%;{koFqdd#wlBBVnvPoMASL-aL4eoG9**pG(}wt{^FIJwco& zennE6G+W5ceCjkH`fjK7%F2AP!rmUy9M(J~_mQUaQ`aEMv8H3;TI`z|v?M$s+*AVV zmK7A%;!Dtpsq^N|m8Rd=FndmM$&Hm8&VRXTCE#ZDEOyjmkB5X#%;LVVRD=m-V@ z=FK^(1PM0>6c;Y9Qv#*wD_4E_?^P>rloT$Xz2S!1|HDn0av#|Febfkda|D9XG6~Ks z1W5dC3{X9LfKuqPbv(d1e0S)Xq0l&1y&y=+@wzkHpWnmb-RL@Z6?tLRN-~sgyrKMZ zgT5?e3vL^p7*||kZz~CHol)CjE+d4eMG?_xkHhxH{srg&JR!Vzatqp;bL4LQM?>j( zGJcKHC=}G5+4jPoy5)t1wbF1jM#rpLNjH+AHw3pEWT0|V`NiIt0Q_jsmL8nZPorUL z9%h1Tg>7{7J85*|8nUz%#*YGRb1z(w^*4BBH&*gKaavL9^i}KR>n~uQh1j)3yd2iJ zM!4CG{Mtf}{EHVaN}X47kZ+U}k9(pS|DxOn`gkDA-E0Dkwsj`7BR&#pN(?p<-pl|1 zV#y@J9buR?Zny!<{9m<6qoAS*FHY27hPgWPxPp;W6HyHuiRWx%X1dFyhF? z;g~Nh024zgz89OWHk3i1Lqp0l!cE%??aTCX?v)=T%`L+gO$N`0z}UR`g-Fy6JV@VDGiJh1dcZ0lA%*@r9N!KocR4 zhk>OMVEg4^0Q(aZg4dim)8@>1JOo1IibX5%pUGc2^rLr>BE`@w@th|*O=1Vj)iq9W2% zx*&ED5f!@vVnGxYY5L-;A|$ty-{+a#OD>^^@Av<|xHC`-KPstgC5#OMUfp~ILA*lKG zVZI2_O3tXBVnMpQ&G2!5tCouWQh8)6W~22{%cQj2Z4?@FMk*B0_>+FGBAGN@w;X|H|d?{cq(^P+R{Fe=k4vukprt-|zi@Lw5|sb(()=_;7yQzoI)|`R=>3 z0{{QI1mdaV#}@_uP1^qq9!kdixC!m8CY`FZrlW}$lrm-J%Fz6p-q%fk!{tuY0`qC| zq6T*`9(Js0)5OGPO*?ex)4OA*CQX|pBsFQ)ksfY-z4z!*GiKf~x=+u#V4+@pC5VYD*98Z_Ccf$r*Ah_-VmiQ*V<`w}PYS z$%tRf+b#msGF4S6ya0`mc(Yb@k<_h5xq1<#ptM9uSHk*%lxN&E^0>=aYU=|D_~T zNB;V2;e~rH_p7s|+mbsl*CpUdciAw~`n&p}Y_3<;P)c9~IwA@*@C` z>aPmmp)7zY;b5QoDgU7W0G{yPd%Qela9Y|!2wXxrx!Z=f3j7B^9AkA@-C5!bc@c+a zu{z>#TmYmx0BdBO7l~bB*CN(gURdW10pza44P^`9X38sZA^=JXqZa~6F`j_Ep>|1w z?I_lxEN>4_?pIfo+`eC1Z>&CMtgaYGj!g>S(dO^{CAX_9wDraP`S4?WIC#7QEE@3; z!TA|ukJiW7^S1iov127rIaZ2CyQ>hffS-ArcP!p?O#QGV|JX4TmeR2@UhJ%JSHw%k zq51$2S-}9ObP#SCb3Z$)G==xjiQ0NGF$lj(@wLCHC@3+?9TcCJ(Z=);OWb2ohz;J) z?t5E_@&EQVQ6NAms_OtfiBGViCh1i%CBNxycK_RKk(gv94gwIIrELCjTzn?vCpU}rhKj#0a z5C7U&P353*ZvciQShz*NLe>S^Soo2@0Qg)7Xy#1O(q9nYuvTJ(*t@IV__r?` zbNBO`o_VGW&pQc8KAdP)Qk$)ivNZtL0S!$YX03p%Shk3?MoSo5(6MDDR%^5CEt8LgYP1?t#ZLRRw zu;zV3WOEB)y!i?X~gKyq09RS!HaAzkSE@@889OPoLvb`*uo6f2~ zRLJOxw4@<%nz_-0?68^PO=r(4e+TEuZDU!X{T-YsCC@Qr6%2JSaq`NsmbBR+`!@RX zqSCc;+a7Io<1wb?&bX$tdSu6ne8p{9@yu#8wsvhdrAvc`*l0-f3*Z+fJz|vSThXTII;gJBZ`Up#`R3gi zo=Uit{egc#6S(1I6zy@)&PCb{^!lI-CJZ1{G*}RfT908ME19w|KYc9!g>!eUI%68o z+PYMw`1}3keHOR9j()N_bYhYNt(~+Q7%_M^t(dD0ELmrFntN*JVP;<` z9Ta}di`}|ry0RU+Vi=_h?Ax_F&s9zr*tvVv`~rJ;&2&-+0$o8kd2`DoWeb=yhWHah z0&|}fG5)c(EjIn$uDXM{{XN;Su*e2)-Jhg!ambn2Mf~}4hnsm7)~a=S< z+U8BNRmG{j`Ke0iW^wKhc00QXHlL&a5Es&H?*sOcDByE<@7leK!LO#^uv@fzDPT{|dRd-Two}R(btw5U zDz|SVv$kQZr6?H&-*qr+iwd@ABe}L1GI5H`vnuF-F(3UY7PmD&{XfgeZV@R{dXqs^i-+qGG|b6&i&ne7l= zH`BQ0?b0XgYpy2=X1o*9BN?R!+2hM z&v+ic)mfbJDT+$GRQe>~49A@bg@DL^ejZ5`e$+U|Yf5l)DG}SmdqAQ$#NSC1;8kE~ z0T{rgyCDFB(8)BugwvhVJo`c3qqsgL#tFy=@kbj|%J9Ir*UXgCU9ql1Z%<&&r=xpMkba|8#t|Jw$^kv)oFjrr; zO>F;c-1yJfEG5N%T+D&ft5#?Q7g4U~OFswSdlXVmR3ShdOp zBr7}`(*LUAio0P!eit`BUGfVW@_NQ+G11X+IzDmH(J}NqbJDmiSvfgbTgFYANzXmH zbex>z^(Ia3*rf-r$68m7>)oKy+(r$0$5s6{M30Y&sTmU!uZMgq78mBfdCzPXH~XG9 z^9#RCOPSlP_Zz*t%}q&z*GrQRKi3A9l>@CNS0b4&3nUj$WFgG`{M4$h9v&?V%>QeA z#_PpIJL2rRZjW^m-G4drx|%venDZu7|R*))lZ1DwSAV z0eM*}aaxv2mSYv_f4o*5qh4&MW%;rYIK^ICWy-Q7>yh*n2$H3$5Q++;@KYXlm%PHs zBfHc-sB2Xn(W$73$b;gAoUE;5C;2Chf4*M!!K9?g9lAW<6~#zC$Vazq*syn8Tz2m} zTN;n@(Kr;Px;-SsUOm-Cj|*o{e-68H%y)Wk9%T&SPrSQuNDZt{uC8(0 z{10IKOfoVbZH!=J{G>^{U|Oc2KLD0$f12&adNbf(Sgm{T;6bw8r7v#H8*%#J!4KIV zB7*(#>$m4vF?@*O3uDw@zoiC1eR>nfr+3ZqjI{rgE|au2{wI_nG-MZtnJWCsM`E{l zv6y{wo_!*Eh!3tzYuWsfLd6`85A*M5iZGOqibc+OkyFe%JTB8IWGfi@vSo9K`CkRA zL(BLu^re8wp>eY`Lxk~R`Q0_l5Q8lesjsS(PerRl%Q$hKG)_E~TjA&GHi{L^6{#;2 zUA4CGcSJU?WSfqWCaX&ZI-!=Ok4cD{{$r*oX~1NMhyC`O(Gcc3V#hhLOCK9B+>!lj zMVK@eb&xG(tQN5Rkp{I?Gybo{2GjNj0R1=r$vU57UH|w@d$!E{N7gT`g;{pFLC|RM zSBBLqLCGtpDK8bPP#ooz;6j-E5NziHV-y(Iz$S%kY+#+C!p>%vzm)&VmIv%xOxqB( znHU7C6!u1OL-8Xcs}!8|{(~qbs}%5OFidHAlM0X$B1~T1X3P1n{!%f^v~M9h7t`KF zZN?gkmav^MVr?)jVGO4;%!l!em@Q$BLA_0d{*~62$)3})NUIJ7 zR&Z{0=?fE@=FOTl^_5qj7bhFD`XBu%7QOqz{*ABy^>O1LF^YPPWv@&v>ej+OwU78M zzk&F1;7#I(J`af>UY)sY(RZ-qiP$P?^kH8%t@~T8c1t^Doo~HVEa{!-f=LjNu)S@Z zLR-H;_EEsd?I8=(LRj^{#seFR9I$1>hWXSqUn&l%($u~$9J+h{53hGQ0V~rr;_Ues z?w&qk{po(kxx zN|cA`_zvnOGoQ*?umi6cbNPvRFEd4E+=P4Lf^*{Z;sxiPtptmaYgmbIz}g#9 z8QgsZ7+Ofy-2OYt01tTWt6oW`*fRMt-aW1+VFnmqUB%ZYZ@6|Ctv?%Q}SFr*D?V_ z?YAxJU>Z0IZSA^cEw?BO-gJ)gmTx*od8b!4C=0zxxs_p+%*p-@9_5x~*TKVI9FR1o z)-i-y>2A$I56m8&WgUtVKJ=J1;8~nesEsw6gB(WN?T}QXTKd}9EiQ^k&)Df2;Ty& zt)5=y+ttL^kjyb3}=FiMXGU|boe^r#s}eVXDxPTgPX*FS?F*A%pnbW+ussZ``%mXFr6 zyufrNx=uy?S_3r-)Ag>pns}eiIsorKy>p9nz$`%SQb0gR(Mvy#czxpa4 zUgk^ptnq=x{mlP}=}VXPS;6PC9^mnSd1qxZ(Mm)#cY+uG*-P=A#Nt5s#xx*YpmoeD6=Xiicn}#N=~~*D%Z7g|ok)5hOh()^X)m+gb958X>Tl{v z@nA9j5s&((2Bn{?32HjD+zD8tv9Vkaj2HvUaWtNy)i4dCDq8-6TM)~Vl-F7}eblH? z{T4s`?vr#gV9~>Da;KulZXKL6s?#lx-ZnT}^^BZ4^{)9Z9Dnl3;Zvtheei`7Pd@pR zZ`7!jqk2p&7&Yp#QQf8N9?t43KPhWz-5g6-1sayG_(-Fa-NPBb8@nbt94&_O_Qj(_ z$0^Vi>{Jh6#R3}MJkob!wj9c)^6EUnzltw|Kc~HX4b+~;jG@1>#iZz^JlIfWzdR?A z@~}=_;s;My2Q8gYU%6x+=ygfPMIIY@HHlB2c?u{$IP-)&2JFduS@Na8kzcUW99nu> z-Kg9aoe=^1On-W`?txN+Po%!h3{yvyg=NUF7G@mf9*LK&bO*oBK7?iqX@yXJKq%0) z8S{|tk4#qOl}&BZWGa2zXFV2OxA~n@o8a5EdH?o{S=hpMJ=!m{l@4sQ*4dy-=ZDZ2 zwC{$WzZRe@HrfyPvE4;JX)%7svip-z{RzDJ;qsdlJ_F%f%y5j!(TVXb;$y?^y7ZmB z#SfLzBRntmNtSDf|LVz?-~6F+dbn+Hc=;CNGlS)d|NdZaVdH#$>22Cwd?UDwD34x} z=E8jb{{4q}b@qy}nUBU&FzU5$>1|5KvUq3)8shRP#!oy8i{TrO9Xn4QJ>X$Vc9#}o z!2>LuU}JsvKIP$8mAmW6;)WW8ZsoTSpr- zV6ei6*McNBwy$F|b`sY2YO`3m&X<(lgr#6Jb`ruHDFrDR)@E_6M0+vsv38D|Yk+cd zfHWkhDNz9*yJq%_FEY0Gaa>+}arPQ|6s0ddz84pIeEjh>{aQ5d*RMHZw&>TtdEjd- zT|;kM^iu{OVhM*1J-l`6!-o!ulZUo`fQ$9W5pF*ol5kFhX+mW(6C{{$mo8t9BKX@ zR=}&U5AW#Syi2DJ>270K{O1kpiytha< zYO$}e-n1D)p(pQa=B4jLUW!~NizIumOb97BWDn%U95@9_-*@RlJ^%8UEAzTEhBC9e zb_Hi4($yW53DKdp4bnRFGW5e$ps`7@)q^$RP4F``$TrG0)poD#VYJmvwij$~+CH#- zY5URkA6p3s?!<<#+RTSFpe}IvJAzGOv)Dsy1$%~VXRoq%*%$05c7geM2zbex8|!eT zc#{hp`5uQW&zp-IJUU}twOMi#mfr}yZO}cuVV1qug6@OkT0pJpNP0sa~I00Z16v7w(0i-HCm8CPIm_JmK|fM~;{LeEhf?e;mIZI;im-{MFm1rL|9o#}@qW zl~?or#;^Z2)xV9u`+vg9#Q&Q#@m*Tl@}#u(X-2ysIFFja)Pq50t*a=5rRdcm4D%q0 zL$T)$cPw<><#?ktf6e~$+R-EkN0;d*66}1b>no z7^UR1ZFza3C|?wf7=bfJma|d(7#k&)`%fwT*;dibzg~3HS_~2Ahlu`k<;BJ^(itr& z{ff^~2S?kL&QeFTTJ%(ps59}5aT3D2l>V&!A;SmC=RT#U)D7x1gtrB0n9U=y?1{ER zGzZdX{(}((X=m8yd>MP?my(0OuvdR(+kX|e;1cKy&uhQqlufdNL0^ct^7uC>{4m0_ zzXEfcj_6Or_#QS6XL#dSlDX&@mFHx)XrA>tZk16z(6?f~Z?C0&DrsiJX%4304z9~t zJN__hCtflph*oT_VrO&341WnfZ7kqZsHeqUoIyhn+a$w}(-6l{8GuhTj1lr+RN!FK zMDdc%%TGPEW}@Lgt4w4kc{WxER~g@n@%|-dI(9e49SV*29o|VeuCZ93cM;Pjz!WaP zoF`$%63CQvfGl9sCeD5N)I+G41eeZaXf(Y zKhlBHQ*uz1Z8bXS^Zwo`j)!9I7DWHDI6O&o<1ZNgkj^aS;=>f@hRaumCzZ_T#I~YB z7Bgrn0VCfytA2`lj=+Ol?{0)K4NbI_TrqC!yMG(~(-Vxd`sBYBEfg2B)1WkEwiQBG z^7LtPtO_NCwACU@K!==|W9*ArBcG9%(N7G?|HS7z)L@9{m&)HtYO+-P$7sv9y*|B# z%HT6{@&QcN+KInbLU}835iZ~|P2xg(8zm~Rg>@*o3F-ZfzYk0pr%$`|^wVkC;=;lQ zFYCP|{(nkbz;C1n0@lL#GxUCfXIo*MMVMJO2WGXk2}9WVI(UAKjQ+-@cgKuF(PjW1 zi(a_suS*XRJfTY*s1ZP6RTYB8#Do-DWDWHsWWdwwV69QN&+ij-^dx*+4Uw#FOX@khC$`Bo}fVH~zpSqkl#X6z=rp9guM`&!uRXnZ4u6yHE1sjx z;%j+oNn>^iYKaQ+I1%GlTd*{?fmG(ML{cJT$SpoRx+#Nq=4jfJSXn}g$Fg&}b$h2< zx18+2&5G$?`j1YZe$@ZvwIsIk-q!>A7vj@@K;Q;07vg?fu;4dw8dnqvGFr2(*6vpp zN82MG#0$mNPW-JN!l*vN@)DCz$jQC&q$fmu1PrQ)LvUVVfiKUY{Mq2agzD83TDMN9 zjy;j<*7xp>>$<+Z{l1r9|KPbNW;bvC#8WNsdGd>K&`)A2hQo|;m=hVc`aD`pZeetKvOSs|Z?*3BS1w$5<@R;0 z#2ezjUT7Cv{+cNM9QVnXF`tZ6Ub}68*lQGvy#sDrr@l9M&K++Rb)D0%WannqeDkwn zKk@t&k)`fL-vez2`W{S;U~B?IqAduIe#qb?L~b zllRmZSYq2-r`h1Yi`n3( zVFvF#^y!cPJ!FjFAHj9f&1^UG?Pnw3dP}TkUv3d^Y!&Ck-LP4V-OieCfx66H`(QmI ziS}Ctf0|hc(w9gv!@N!T5kJ(9uIe7)I z*UieTS2gX+s?O;%dW@%b9$X&@(gXW-Y6NZ-u+mSvzAugSX|uLfYZA{?q-_TDZ`Un>5-_g^ zyD;fj->ypo{D5)@-s#={Sdc{|Vew(MUW4lNA8zME8ZO=a-lo0ppZT!a)Eg*^F}ZpB z_RZWD@xY3qWOFJC_KGphpAjEe0y`T8Y7ozNinA8{5T{C)A1_?_J(2HyaR zr&jy_%a20rRp8wW*tT}OK0d(|P9rz{7Q5(y_KG*YfS*^e%|9YOx3EEdUxCjjzH#^4 z``qTe{oP5!-q`)(o5Oc!)vcYCRl9E14HU z!*uM6X?p!S4CKyvs zK#}~9vG3D&)iUnb&DJj)GiKRiW5+)F@u^cEfBefYHdgu@ze63VkcEVe=5#UY-TaO% zTSy*Im;!Gf)Ysu zIF131i0;LTq z@scIlc(zUqyd>zVZlSC399^l-Rg`@!%3c9ZQ0a*Z!4v=`t_e=^h~zDEu84spX65rl zn6PQ?EhUdpet|fnAsqvA&On^eVspuP83+7S3C?Q%u_&ql$BYvUClIF$PU&yNv*0~5 zuL8nHg!B6V{f;fgG^Hn=mvMsO1mb}1#gCT7d9?zZ)uKE9@CrDuf@jOi6^K&?2h>2@ zLpzaiFeHuzSF(%z4$V`td<)Tr+FwvOaV^4K+L)4a)C!4ytAk;92?pwiZ3_Ug;sn7# z99f5mQw~VV0ok5`3*-QJCx-pG1U#yaDn29W!d+$IfMA8AENX1=GE#ZoQRD!rV3wFzCUg#HBALeG8PFvVk4i+8vEqR?#5ht8 zNqAThhw^}Ol@Qx85QyTcCZz$jQe4aY9dv3(U?r!K%PfgNd0d&l1yxd=VwNFV9klf|)p2@l1XW&36EsEEEBTYMjEIvaty)rJ*6%wX9at}l;SxzmlJg!+D z30KAh)F4F5yNzOU|KXm&2|=Q($Z25Fmn#C*@H9SIJc( zT)o?5sx20uQr@!v4B(0(KXEF_9Ftj9!0bt}129LI(bc4YtSM7wLPqs8>%I(bFrJ8M zZq>Oqu)-cp|2ie-NIQ3`2QL*@JNi zScF6&0reYVKgj3+gQE@dT^qpB{xBL3m%kDCPagVH-L%eQ86y% zZNin3kHoBmiHH_VQ&w9zQmdB|jzq16pt*DT;y-y#h}e8+d}<*ft|K7}4^$ z7M>J0kbe-O79W95G`5mTH|{Gr z)L4C!tEa`MS4l_lAxlkpVwS93c}t~ULQ0ij8k%?_KiRiYezJ6d{*78~S?>~@PV!Lz zN2`v_(oqK*Tw#^#OX4U?R)O}xNv@zh(%|n(+6Rb8HC8#FatdChzRYg$iZo_ExK^s; zVB~m(vAo=Ym4}&1A$wyCdlQY5W+xP~G2W z2;v6KM3m7=5C8Ke-IebCEf6D!yBcv{EsqOKCAQ|wqe66E`Wt%#{mgz7t^ynxzL>3* z%v0}H+*`JY%{0k?UB0j>3fiq{b4DD5KUPHZAUSsn%-`fV4Dif;i@1zxM2^eN#;xr~ z;r%U97X(xGg@L$`IcNh#id(EEuyUlYLgZNaOFU`KlxPL0R_jE3<8B&iVHgkK#b?2f z629!eCzats?FIF1N*Z(QuDk(UifI~7aTNvQa!c-;n;K&j7Yc~_BA_JtBz>*8`!V)5 zaWT0FS3c30uDC>3v4;IA@h@(QEKmT9JBiMqpDe4y9F(y}p6nufLwnobg1AD`#p=_n zxU$v7N?Nnw=HT3vz>+Q&TniV1Oxyu`z==!PaR1pQe4gS~M*+Clti4@)26F?db2%P2 z%POfN$K$0a2LbfH?3V{(&aLgz@@pi(6tN;+CTk4$_dj}b4j;lu^Ri)BM; z%*iF6f%Y1xkJ+(FAG*r?P-`ZoBoA4{Dn3gXj-!>bG(B7` zLTVCnL=tEdz|m?Gido+hM~jA3<5IfGDqzFQ@*+Mi%a3RR9AO&=Nn^>4VBVyLQZ~jh zdDN==0Hd0Cm%|ChyNt#b4go@&jY-ZF0|ZxzCnPS!6AtO`O3FU;bSRNYJChoGq7;Fq z>d6@Uq4M{YG^euuhJ&PQ2lT0$BL?|lfWR=rzFa)5FpzK;|b$7L<;3t%3Z^bXJCxpP9~_vw+ty3*w!59pf<2#bmN)AU*O$98;PC zXJ{N~4}+_g-ZYy>04+t3~fgRV5OzNYoE48pAEkj{h@N) zXTnEcyQZ|6tP7-!(YE2719*>-c~h9}jtXI`(L5ExbkC(TWnuP~6~aPV{{2Q-m|2Hq`I&NE!cD#r8}f3?qs? zfgtQ_JOG+KuFpZe4W$Jwe6YbBE$b`UeyPVYE#b^_gvpA(p7i9|NcwSs4ji)&j7=;4 zl72k+{k5L?fnELuJCvzA{R?(-7hQLjzo>j`UveBDap*gIF1)RenNMEj zdn!v!DvP#253Dm>yDY6>3*8aEa=Y1j+4{jIdWdZV?4rlP&(~DjJ+@h}kAA@R5NxEE z*;c?#`YGu0vBT7Zat77`yjYS>3;JrfC%5Dd{CIGmQ|Z@-v`Wx72XSJ9zW>+o9XodH z0y%f?EIGDo7aOv3r~KZwYZpBua0gw@FCta^>@q(UUjmr*vCqW0Z1Qu#{QT#_h5rce zf6UJX>zAGQ&wto=_~Mt|neT7-EqNxAbw~Y3IUg3_Tvh2=TFWZ{y$ezTzkz#5yn>XV zuNO50sRfTGUVO351lBfYDsZ19jL`_h0bz(hbT6JH^6c2LlRI~D*RGw$c?t$GDDcJO zeZg+Mzv}}=D{c=CWDkGG9;WN@;}+Ki(IiU_X+J_Lh)~)V})IY$2Flm6obM zm$kVODh!?Qk+Osz43ca7OH1TiZFCLa2N+|`HfqXSeo)HWu@&X5K3lFmpku)9fi=ZN zaIXbWp|eToQ#z87NS9&4BA8cAPsttH8Y9!l)RDHNdFbo_o|K;QfEfntPdz1}-l^3uey`%!hF$c*^t_(zznZ+XQCkdrv9&9>8Or<0@BZyGHEV|Y<&L#$ znf~OHOk2Cw|N9eVAEvCeJ``$xD31AI`kJy&$-UaF`P=BDe7j9#?Gkl%h&sDOR)t6Y zQhCs|?vX@%Cpj!6h<4=dF%o`6$g6Ck$+eI?N-RdQvDi$5FI*wQL67`;3S|9%@Btfe z(s+x1cGBNTZ8N6i)uqY{M!iRPbFpsehqB68_mg~O=9*~n7W$Q7&DfqFzz7*n@k3Tf_on!<3olf%4N;;2`m?$rtH0tqY zC&e=#d|6}zcB~i7W^eYG4+jEC9R$YTHim-XNeh46BJVYTy%M-;EulKPxRXQ7Nk&6&&WxKdP8=SO%hB=U$Kyhe6UL7}H5Q?&YeL;D#HCad$4wAlB9%B&@BXX_ zeDe6LEIbpadiP~dV7%Vgtddx5mYSC{J>U2#cjn9-)@A0*d{H`c`b__aIWuSE@bmO+ z%$PA#?3p=ZhIn!2%$e-`^qg73m_Bp5*gXT67pG63F80XB>4-8Xe|ir8b!P6W9I+d* zk#0I&aJM@@ezLL&b z9K~YcJleQ0k>XMxU{|`}T!}y*z&97$t6%=f#HTE*LLb1eyJH03JRd@?rxh1Yrc7I1 z6CdVPlS_VNL)7XLBf_aXoN#jDq;r^$DgXV;zw@Fp+l*TQFAe7o-H*PBqm_p;jm(&3 z3z4wO!q8iKuv_pcwWIO1(Sjl^P!AO!kaB}?aw{uAYrudDPK_O6?_0zsd;(#B;UgG) zkoZg#Ql$BOqyMy|G+>nFgL_4mlmprCd#-K%0+OLWx@ydvnD@R zps@vqWwUyQPSN01x-Z{2QO2!6XD4$2AMR43uZoZK_4$R`vG^B?WUN*{G*(+t!O!J+ z+6a!a3~B>$ReVf1e4zg@MG{;2MzPh3YQhQ7Ieng1*~l{tS`Uw~KC}*`FTmIN`R$Cmw&tqaV8@wGud^T9D#n1Nt z@D58mbXaP12boie~KpH(}P=M1-?%qK=Y^m_MT{^?Y zg^a>noKomQ@_Zj_kWrACSEpHit8C@2+{}7)`xZ3KYrYUKb89!xYnAPPFfX$pqi>y? z@|zuL{ZQ+ao?CnJi;2+E(>D(~8rkWA_ zGN*CVHZ8Mj79V!I$HvF=LG9PJ&**okpVC1-8&6x$G}bPsFL|O%lNt(JVFhk*k~?b; zx!Tn2(H`a?wsC-IJUAl}?)*Rt+(i##gLi-}Os?3zBh2N2U2H?oJ*!uYH*tiBCt||)R4E3FoH=?4_JnBVHTGW`G#->iKocA1&pO>FEVgxSvN1p70&r?s)RkXW4 zH}RF?QcJJ5B@4k-jAM@t%gY-k?!c9AzaF14+t5-KZ8C}U(=l-VlqB8YB&7~}4ZgFd zv9_qA7g^sFJ2CViGhnM36;FTfs zrfe387BT1guyI6(lxxn)u;G}p_VVSAJ&G;)SHc!^2sR_zuV8v$cUc9zEqZ|54sT`n zTnP|`hz=XlN>vyjjg?J>e6TmHaz59}fcLx_U{D3TB}$c4$a_dv*@7L(8EBPgl-p%{ zyL=Q0i?tL{fjjY&6YRC5yxxTK*oWI|%DI@$=5oW2ab7OG z1Lu=Zdu+?F%W?nPId!row`?_~Uru&b*5vypXV(?G)i;&akKUV?S6Ddw-VW{Oh@vdbxHkx`TR0^2%- z?M}i3LprP7nuH`g%E!Fus?4#x9AZ`q3ykxx8s;_A$#Rv$!#-)emm_En4bSC) zXzxLKM)Z3DOqqr4oje^gyE}QB@l7C6@c|R>@^Nq&qy<)2KvirJ!IrAzbaElXn{{sB z>(psNCo#BuddTi*+Oua@@pa zWStiE&Zr3`=S9iA_c9FzWZJ#=7C)hGX0;xBOdKugEsj2hb-i*LlD!9P*J!qH=??Hq zI$I*)2qHew5xQH_KGPgoY0rmUnVx8GrYD|Zk$fShex&s^)ALR^X2DYbPP|(B^8Bsz zX?&4Pk9tIHE`a8In5jLcdC!}ynGdJF&ZF^YpusIJgk+I3a& zYF57wk)GkG+&8mN?wKym!xMq=eJpdCB3&GrKK+WW^y|njyTq1>V#_WFc`ID6Vz~cd98t|BYPv!gvMs}fG2M@N8=n~0? zAp7g*&(Y_gO>sGq!y)CV&MU?y-B|7E_wf0#;=C;TKw#sFHBMB{UU|(>QDlCEbw~M2 z(m)K>{f6?VnIz<+U1vb!O8O&znK3fG>z?V#EFf|v@n!BPI!q#tM0PQXfdt6^1m#~o zhbFC#%?GuT!#i3v^&Uy;Qeu^>#KWW=>=~H1L#Z)VT`H9tmEhr^9;w$c;Vl3>DTquN zJ5B4RZbuDZR7G5Cu8}C;`IASeTVmCslEzwL@gZbRdbU7ZbFD?)@_-davhuhJ6_yEy z+KdIKmjCDog1?SW_>JRhfII5bbJo{{F!Q?T1s%T2_I4>b3eP8^vRVL0j_&H7dH;3Zwh zb6(&_LQvw{Xj&UPE6qRQGdld}Q+8*vORsee-_oqs6TOo*G&Yv79J^h7qNxfi)OB&l z-i%Kh?mJ;zPzt{Dv7cpX?TB5hv)kFg$D1jl*>9rxyFPW#4})JH>es`ZQriOPx_mKViaHZi&li{pc%e_&^K3h9$5{x=X9L*+_@MZn zhw=hGh>zgoaPIdr{3HIi;#E4Klx|<19XgOaw=W&a4mXq_)~{myW>{y7(ZTTYtP>H~`Kb_uZPf8_6p#Vi{5l=>XUTzefRg)VFqEUntP|o8{NiOgaM;4&U zh%57QDeetM)&2!o=Z%BCCbq!&MzM8W5fjLwbg}x4&_KCyWQhhhNUlUsxI$F34$4YZ zRs}wZ>Wx(w;#LG2sM#wB0DYR|D$V-!SidH@Z;UY4Vvehl`v&p47EJdQCAcPIT!oF5 z$8M_X(I!m@iA~#-&Xn{NMY){Dc}A+DG)(47iWe?8$A9>RVXy@6bVri*ucDFlXVp_L0eooU^L^Rh@6*W??T`MF~g&KfGg{!Gt z3lGVxV~@~Sm{;TRT=S|*guQ0Ey^5+NDl9x4`-qirJuO|2P?RV{iHKx&tlLzvXQb(2 zcAliM$SM>kB1FdN@3pgdZckR!aEejI&b-JvTuV~aDg-55_4^#0(J&x}u@J=_tA;Sr zoNL^{6-|kCa|FE?!&x*_oScWK9=EDTI~A*ut8o-~(BwR6Rx zun@b77arv_NHG#8aUxSsoD#yPafnROMVRvi(8 z(H_c^{^amwk9_*+Bg=;ONa6+UMh+h~Z1~7_@Fw)t__)c=fv0bYi>}^w(uQYFoqA@& zq>k01+_#**$r$Nv5Ea$Ht2(NHEtK#m?)61S`@B3V9BiXhaj?%4^CKei6P0Lifl~>M zPwNYM2J z2NEb@5ljo)99>=4t4DJafEL1|s)dA9ivsyg01O4E8~{-X3*(y3qN;|3RE=V~#>2uC zH6$)7Uf1I(0Sl`_?It=tBqW|NVpYQM{InSkmSy2#ESy=7;Vdj1TYQ@YXzvzbr1j~(3u&*LAW{02uu$#W|dVh+AmO0ER=wP6EXnG02}NpCu5vjs#n1n z*NYKuD_eJ1K}>|v{BP2L1H(29PyTN>`siSEy75im_+KTzr*ZT#@ZRCrPUe;|icWti3O$uCwPj zSH0v~g=tm#&#HfZV4@Zt(eSRUez7&0&N@*oLXQipf^$+m;VbAqG+f?KuNrChghnLd zu$1tHRptAnaNKhl2k$-M&&NmDJz?Q^9T(1S3yQxz2c3cEfgy4^RF(-nfjw&p5*2oH=M@0~5$R|Xl2b4bI*DYl=*vAqJ5MZ#^BO;sMi zd$2ZQTI2jYLu`SyL!doPep2EJ+|8) z$67RFO#7-^a=h`5h(98lB#-9q=(^Q&*@{Td(-Mb3Y}#hDrr$R!<_R`5Ng zMZ=bgT&AJR)hyRD()*qEjpa9O${yBw({rr#?h+fjja_0x)`@S$$Kv=pMZc|Wn;~^? z>0VR^r>DLzI%3`g*J-!Ib=s-}aJe>>J;>sAvXGr#+2(N-t)G17`diu$9V0%+zP-=KOz3>e`pJ_v6geDY*)p(JDz0Zn zbZ9?fMEedS@H=uOetS6F{pZfvyLZmq{u?lpm^69)EuANf!KrIISk{=K?QdCs=j8Q8F3(8y5wi#* zI>_RT7$L&{7SFH&fA3xt71NJ#xUv`hdMguG>@F$Uy>de6E&a`R{oRg-s11!THPm6+ zLFjOCxw&k#dFD9KtK%OJ zDTCfyviSY?7cY6QQM7XvsQwAd0h(~>{6!y&Ud;Xt+Bf-u%#pdc+~kuVOdvfVD zY&`YLhG*`?DC6sAFFcEX-dFw_KXo6vN0c(QXD?&$G5KKo9=H*ud+~Bkm2exZ3unRr z;%>BW57sgYpd;#J>th=VZoLN@f=6smpeNk}jPo#7kHx4z-B+05Mc=7w_6+oKw0{B2 zSrvL*th+a1u*?tk!4>4#DI@5f_Dlu*+;a@A?cfFQIxD|*!{8;7VWAPLC~5-3nXhzT zm|BQBG2^F|-xk8nAQoE8NWu5&T_HU2mp_w7h^1XpM|SW>bi6&at5`Zb<*!rx(wwh8 zE#{vco4fk(@)civzVfjzc>a_g-KR|H-eby=>h9PYHDcY>1HZ4u*&U9|h;ZHEU~?nv zF^-y%be}1jx?>{Joi3L>B#l?c`GFy+E*GxG*^G4E9^;Bl!-%MrD>cOKbU8EZcBg0? zk?C-RM26$4vp$hE9WnL@`Jf$fJih+9bzuvub(t0tGObIsg<A13EgF!gw z*v-zegh37PXdK^k_UxvO=g)5#aNm6c2Hkt_ckbk5cU*F^F)7aLjq@ZY^Iqv$5mCC+ zRW~ZaIOEKUiqKuox{(ofb}MFtv39){YV+;LT5fl2h@J_OM!MW_nIZOAxBE{Wm&_1( z6_3W~5s~%a2sI)qi$^>0Q`hCxqaw1g9X4WU>Unc_f2V3XV(I8 z!3AkS_bd=sx4VPyX=6=A#!a)h8nDw~%>#b-Sp4pz(W2&t7)wpdh)q#7sIq)%g&FBS zWqzH=z1y{j9WUy6=azr`$)n3Y{p8e!JMY|Z=d+nLY6SlOh}Ns1rX5;%l}zSy=;0A~ zu!o1&6!q*brz;hl66;Fk;b0hNT6l~rCe1jdr^dQs?0PD~c~yHlUfS(xPFIW=<;biO z3Erz2Sw&~P9W}$l!J0L}nw_Q{+Fv~K?L*VV2hBz`?IX5NY8rk5O1;?HZXWXei7HJd zifw(Gj%wz)xsT7s(z>+_JuFU%?zMA7H*xB4NXu?4&FAaWQQ6;oar2xOzl&k)@!wnI z;Gx|w&#XUnYW*|6Y@PGc?Ab3dS5j6|QkJnt{_r*tb)7LGU<{{2H%cSxI*C8(;L38` znYs=dF4Ot1DzW}55GI?AqR8}4-I?waOei-z|qmwYfh+>K0kHO z6XWMpWvuF)@lWhYou6K30yZ>p+XnQ(pMq!QeqyH=ns9H1gH|M;*D$p!KB)~+hiFIi z;`(;G_TI>n5Ob4>Vq1@NpIPakV-8NKgSTypJ;k2F;U^S>?>sP&ukbm|YquAl(1xl* z?rxnXzOJuD-5%cWrP!tOTiCPe_j#xnw7A9fVdrFK^Q65+L(x{e-l!gC^X>25c;^eR z-i0wkaK6 zI2lO%u5@NG;y10is1m}yi|Qd%_@3^@{uWhwvdio*tev3eBfWVmeTwV@tJzX)bs#aC zQt!j^Xl8~fQ`t>g;EgA6Qx>EJ-joH=s>J_A3C}hu@!jnCyc)08&7Q|j^Z0IB{&y;_ z1?;p^tvh}~dDZUr{368D@{Lpfi_YH8J_$?V_1Vx*LQ)jpkDr93DuplOidT(3)>9SV z?Vr%~+$W(ayuoU1yy$v!xE_(|?wb|C8x zN_QHP;f8pYMw{3Lta8!`B$|%K>qTAp3Q{pq#xjd1-I1T? zb>j>o6I5+@`KNq*$j7dyG{tN>y&x}vF*}bU{Xx7xx@vtbQh7K$q(w-6=Q{C>)yU&4 zr=V%g_BHD2`N@u3bE>&V8+V2DW_PP0j@uGKV4ZZCHDR3-yZN8=^8fzSKiV!{o4}() zdXyp-LnY<7`K>+K%HK6|=5$URmfhGM?O$XMRgQ)!;x*0D0P2o*d0J>AzPr&a`Muq$ z_^4Wp+x_mCd8|{TK8~K%lj_awRFgGn*DxZn&V-wLv{o|f&+j#1)Xt^D>UJG-Pw^jd z?&uYrd&Px?g+(_>4T}oVqwSpch>1|Egt`Q)m(AmbJiaQ^-A-lAs>L{~vcGbxH}5yL zb=&&gQ?qV{%vo(?a=t@raW+irAaXFf!_o>Q`xJ@aRFJwg zn{7v$hmq!#cG%Vu02G?B(I^~Wnq%lnS|LpkGk%9R);C5Dty=3_c_w3N_S z=ur~)x9XCd+@*8Z{BF77MK7?_>0^=-o7tnMwy7GHkk=p~X;AA|)8_PiI`!qY1CtUO z`4$q8F>v3mxgIHIqmhs^kxkLwUTg4KzZ`768&Da#Bq8TZ=V`m;# zGVOXYmQvilT=di_$vB(N4yAZLhVilJhH`x|X>Q#G=Fg?Yw{*qsDM;7cLt|P#74u6@ zoFh|-da$=UCbF>=5=z#87tW&4o$21>yF)OH&c;jA5HGa2G#mALyrwA=BsH2ky`rSoq*b*uR@jINC3IAc6jeNBE@7gx7xyt~dcHQN#GuI5WO9#vE7 zG);84tL4SlX%fb(MCMk*Z}r^xItkTyIFzfo@wHL8+_u(sSUUJ7e8HV&WA2vev56mEQAjYBXZEq}6ZryAqq0*MN6y ze{;w7T{^bIwFVnG0)tdsocKoJrVVda*Z%^Q;XX|Mztaw(46R|ipurdt!(c}t5O!qX zlqdRu*iEj%rioLU^C^DNTd#n(Y}vZa|KsgD0Gq7V z{&U`ubdSt7T}jg<-78JfJ?Nfv18rGlmA&^6*?Y;}vIImF#eskdS8;;~D!8xWy^ia= zaz$tk|KEAr0xI77UH!g)N0RqV^1kOh=Q+=L=I`Vc=jRpXchi$TE!e`kcW>g?w*?L9 z-8+j*jdaP$__8DeX?19MYh9g-^CkmoYw7duAJx?zR_4^z1-B5=QZ5`~Pgi)7!Jg@Q zfphgHq<8y8V;)@+on6i`y?{gI_JupfBH5k-QE%&b!hTg)V65y3qk}P$Yg7uJF%e@S z#ET{VVQd73>Es)^g705mp60i$tn6hs5?oeBPkC`i%FA8R>O^`fBsM>yAQjx39?HGT zM!{7rkU};J^fUf-_Pj;NXHVakmRFRNcgJICIhSTLw|^DNSH9w4+;oVP1Z59+2I;arOkGD?Nz29+}EzVJLh^OJ6@WCf=l_58)oGtIJX!uB-dN zot~+yBdy*pQdh@Ybq>bThPHWP`x93v?qJ1d`5OVb2c=W$a0Y>IC?a zv zm#{->8af=&SkVqH!YWs2bYL~Lf^A)ufb@xQt6YOgA8u!h0BZltkg;qz zz*oYEo$dMwsYKMM1H`Kg>_-V<%M7a!qO&>iIeY|vI8^B19)SH9LktSJi1o$_VGaI} zmKl}JVbeKq2@8a{Tw{hh&Dx=3ZX!r&T$A0NwaaSfwa~CFPJB-C=Of=h%kC~}kY*9C z5HWSk8mFB-+cZwALi+E38bIId&=oOssN}>uusbBh$6}Y8*-oZ9T)|>en6Wbl`>0j= zI3U7tIrh(&5#?Nav#1qUMH&=oIRUBFA3NX7X)H_^bd7F zVyH2&pe^~3r#vdqU8zHGrJoO{^U~0#5lGU}AGJ>fa5-wOEkvnZt8LR3hS0bn@@&!D zKWAB}{{twFe=T0=nJNZ1x<2OhTJ0d+lY!nkT<6lM5%q=R2KSNM9)0O={X^)KNfWEbq$aCk zR}}2`>Jyq88{n<)(=DR>_*P|%+A}=qa6oNy%$tLvzt4EXuXv}prH4n&hAjYx?!-@)O-%MlN>wB!O&3K~T4HKjRfsvX zwWXjf);FpxM=8FRBzKl3%ae>risXP~d9si!+B}jK%w5;1dtH)z$sNiQfl7hU3z8Z{ zXiY5MBLlOiSlJ<1)yBVd@1TUyuEQQZcx{nepZ1?t_YauKB`7_5dbr$e9zDIqOUo;} zFKKn{%-=FVw=CD0AV95y185E?gHoR6HnhSLiQ~j1N+aLA6iLy*tk*p`1!78l= zsnM8CJnoKcQ_*5FVEai{3u91Wsv#2+n@L(#EdR)MlV0Bprk@^uHiRDhM=z520Qnrbs6SjBdt>Lz#P()2JuA>30yo@qA|}}_ zF6vp-&^FRJg!A)1Dd!3sc{-Z}hgwgLr4vhS+AMRFqQs`mGl`ez@`vB1kGSq5a}Pfn zjFLxg-l5*~@{!Z@`A?RRruF-LNw1HE8zsHS=&%sFrY9d++E?@=hWEU^V85U#}_-oYRwk0G&PvfhuM`ukcS<$TdA^Y*-+32ej}`zkkq_|iE9T04S`i7 zSHO*^mE;>Wxj^AJHqp?(X>3=fT1fmKTD&vtQO)m>IeU6kS-4&=00l}1pBnx2}(hTU$$MQ4F{cUm1fMsN@x)`SVpGOg93(lB|?)(S{%kY8Z=hZ>xa)E;&M z`B&!>n^S*>mSZ7{T&_&r1(hxsJ6D%O2c=M4g8w(q}%;M{DXr0LjB0{q1M12i`v31 zjblrEW1SNdVOsR&wGJ*VF2ND&>KPc>RvT#vZ);M<`j(XYq;iS*=}sMQ?(0a1lV8lw z9RFQ)1<6!bbA;!VYPH#d{XmsG*Ih$0DyqL5Ef`Dz>XA;*a9>?unU63t+u-l6Za*8I zSz_Y%>CNu#ajE*$s8DBOfH!o)Xy@S6hnl=wVoC}OD)&H3Om<0Z|kBo$o?$UzA@jXB;U2e{nsGA)AumAZ8}8|h zjT+pn_VW!+3F8JU4gPrr{)WulL`#}xKu&mL%s(WIRl~>tBPkAE_N%wujg{l;;q9b1g0%+J9buny2`S*MeYbi7?ks{YBg4^)~eB3 zJvc(Np$>V=URJe^99!W<_*@i_%QE<&VTJ0tI20m;RY@w42?}3`-QQ$Upm35ma3e<& z#gK7FhkNpmKfw#r?%Ta}%kH(k=*zt}?Afwym+;{cjytkqY}2?wPyLhQ{&~820R72H zsMq6%4?j+R1pb9PO9)4N6EQ0_?#;^#@S|Z*YQQi+-H||$M2*oOEX$i>?1vQwVxx$iw6uSX6usFf6+@(hW;DS0&J6p-LV+Ph~(SHzG+Sy zKNbQg~{ zJK4WkTqg+YkZdE;pT*5`+AfMjSR;yS#COCk^0o4@@{MBq98u(Fi5qdSR^H+N1Z~Cl z;p>e-uh^wcpdnnK>;`~CVz*?sVc>}@jT-NO-gt|fNS4UutB|DDR}}loU33+4pC^gp zCYMWW6Y)4Ql>Ba`>GkG ziGlR-wjZ@+k( zEBj*j5aRWEk-&wHdGb=i#V2ayirR;t<;ch%*_;I-=Yxjzz(^Yc-b&W_!h6NkFP%vP z|0|S7r%mhchm=tGGO!H72x9A-T*ne|K>-+I%x1#k27oIE0g^RlEV?DaxLpMfPy6sczK zr9xC$+tSxX)!0+1BZoivw$`WW*i<1$UmYJo%EL151*v>z#8=leyx3Yk<=$;)9vP?F zODT4fd--r&@O_bS8SYWvB&{!*l#w~1a!v1N&0I$Aeq-cAFg+{3*r%F$_{Q!8<&^T4 z*Pa2WL1~Vm}xN z%nt2U0N=w;(rHzOD;)g1w@xe^b9ff_z}mlTp8X~Nq@aU&uNbuQ(89m;7Z13-DZ4rD zoIdlD8N-b|M{E+`Il1MXmzS)advH`wo+d3<1d@#*4Q*$}Pw*m~kGSJuAFgRe1RYf9 zgclWcCm27-g-gg2P+}hF;X^=urp$;`66sN;))8JVQ)zWU!~tjykX~l>--Oh99hQ;B zbTZOIzMzv9k0keSkI*w)w?9N0pV|zR(UpVf^C!74A>5I2gPf9Aqz(BTpG_fG$!US^ zcC{Xnb8W8mZhOcRbi#eZTAa9q;2z z=l$9BfBXGkzW;mQ$NAs6f5-Q`-j}|QjF~kuIj|;PKr|o|e)$qv6(mBFte^3S0-VYgA;QN(*PW{jnIP`k3g9%xKrMz%U5tSK-sEZ1lrL#d~HHH~Urg z4IGr5JV-gX(yzIA=I-L6-7`vi_?7k!ATNa)JZJYLO=kU`rdjm7Lj7cchI>#e{^Vck zdPwPhRb9Z1QmCIQ^QBuujh?fb=w7{PU(-FjWnMx;pLvOiiGQi8dU8f}U%%?Xp<_~0 z$7n~_`1Y%rdaSDIk-60^o;5>4*je4k8qb#MsZWzwl?UWQEesi3m z;U4$2((=$~|7DFoTEY(vnZ8)*NxuuN-0QABT^R~mV$R+iCjUY{3RKr%zQ&>M1-VKN zObTgEm{S~*vV!S>oG|09nSAGK*oJVH!PK*&s#C7ux|P~f%F0sgrJP$?TX{KNw09?$ zNq6McF(8&l=n-n2iVUk@_}o_0(ezV#g^qm75Wk1Ku_w+rL~oi+*UmQSc~?eF&7|78 zbUbCG*VSDn6FFbk_jD;;=K7KIA`|HIG@qO#nFxG6M{`}~RNLc^+fqwntt*yCLNoba z=^MBS1*>2$EEfi=-=J^&V%(Su zrXx)XvqCO*B^ZUvJM;Ra@nY%%>kM1_&>8EUy}_83mm~k@HzP%=?lLmzb+wZ^Mum+I zee{<@(|mg*R#;=eSzYVGZ)@$CpXPtB+D=;QvG~EI3Nr9PMWR?F=VYw-uH;H8e>9R@ zJ6-4bNM6kDX5+ye6yGI7@jWXFB5^|9d|95$OT~BJ^7fA$6rS7MrfHw z9Nq*p&1r`O#@P_G2c}yM-Fmez8F>HB*r<|gW0#V+Y4r;t=s=Qy_N;uPJdilot{_t% zIztu_GQd~S{m83GR~hry?tX#?YYldJUj2ChU$_2hOCNW7nzj#S^pS15naH0N--B%fz6~E*S-W@QxV^O%LZd!n?#UA~2Kt=m29j4^ zZ9VTjXvT??b0hSD=D8=_JmxgjDHL^0b3EKm%r*Cw*Y~3B2M-dV7b^%xyXj5gfcP$K zzYrW-3}}P_9!Qp0%T#{0$t(li2ZpajkiSXaJ9mzl-*hEzME2%`Bx&QcU01K-Z?}+t zC)%h$Ooi?9;M-1XDR8m87yIO266ZAq|v9s0r@kX_riVra6dCLGjT6aM!E~k zTij7ga^EE8bLZ%LZ*p&JMEYw3J%@Y!_#?X)nRew0DQ5SgCVG@qkPmS$;x>b2L(ZT- zb=+(9%}>P};$LvDz}x+Ds@bh%P$m&fL==c<`5PDL`)|BKA};KrZ_^rjmN>}PL8OpA zI*XjVmp(IydlVge>e8h>pVO1zz4u9j{}9r$f~r@NiFA)t=Sv{f#BP#}hYUHE3<}wX zLekE(PX)ukXQn6j?5Ir}M~~dR@bi89KW}|~(W3UrDEWEthX)^=${iyDZ9leuI{(7; zNHSvsnk*v(b58ge*9Eo;>P)4`2WW#u4@qXy4WOB_dtsY&^3Q(#7TtgUz{NY?nYD1% z(t!h(E)te+IC^vgojH=y<4vDU<>q};GX228X|zZhi;vLewYati%VNDFgV_qRFULQmeKMJ+=Y#_3~Dg`H@f0BNIrot(WWJ66QC~4 zK#FEv#%w`=4(1g6Aj~O(*1>-7IA*X_m_B#BjX4D2qv7vav}4D*Q47hvWX|F_b2yIl zDe66!%v&^PPIF=3&a;Fp9JO}a@#DugEY(h1|4#jiWt%oFTT#z#XzQ-#URl0$^X8?? zT~2k?u=S)@$9uhm3+t!qma@U&$kP~`V`!_A%^PBbX2DEk6G$Vu6<8`76M{_rBd5t2 z;@1@Ni9LzF#$_lJt}?|OVwsrht5{MQ)?2#@_Q)sT)9Pn#65Ew(CQL|*~E^)@0?8qa~Y5BBy$Bq&Ar;ja|R9M+#^#h~V zPf}^3E%WHVo;gncHQyYgRZZADa^L>k%0j;79DVofSzArXwT$9|XxACgfqAf*kIpU_%nv};q=HZ^TX2)OZyE@5MH^IE&cORpCc zdOh@%bFy4T~*9uI0Gkp{I#)Pm*&azywPU$q32u2aPWSX%g z=i?7fn$%c7g)X9hr^l9DAy+*o9h z)+g@+?x}gt%%A@ZcA|-lnNe>vk9godh`)D-R90|L%zI`Y{s1i)6*IlwXc@6@?YVPn z*9@tw1RoO6WxO+;qh%lUyo4-#t)r5UQ`w5&kG4%Q(nP6d;iNHJaU|R9G$`UESWrY^o!)Lrx)zqa&PA9?AG^c#>d4EnBqvy z%p4bQD<&VZF>R$Q8(g&rk8_CLz zZF7$ip1O|BZQHof+rMGzw1WqyO>OW8Xbh7J**7!gsh}P66ks^9IOw46z%6G%-q-KY ziZMhdiB-bv-qqFolTY&1Pi93bRKKNBb|*Or@f|&rOnT^HVbYYcNxb&oP^FWYu6bzR zMut;>_Cbm<&`p#EA+;6G6i~)rtaHsLA^l-d&FN2O(N9`Q2saH|zdy!ZBJHjm`j-(T zi}oBr_LHm;^e^10jV{*bE*Wr1LUn{!Nh#&PNi&ai7+zC{%EC%7bcz(tYERa}JO+b6 zse;lK&e49Qy4HtBF1dI1(ovCPXKYw9s!wcsigA^E<*do`R!2ldnMaY7`iZOE{Lr%>u z$mu-r04p=mvgUO>suU2M7#b`Pc$C4}-1&h!-)C>#`oMN#9unmhyQL~QNt3wMVjk1l z&|^#GAZ;SfB_vJX@x*>nk8D{V=gpV&rxBUh{_E?%)B zf z+yR%jB|N+TfJgfv@D<|a)4zY;{{4Ntf{lg6y&oOenq@LmZ(WpH8>z*gI!edC$n!D5 zQ8nwTYt}^ixVia6uBoYBR}&Q+!}G4E=y{Sr?PUSVcnOd$RO;&i$=mWTZ+=yU*dVxFg3S(|JIa)|cIj)Phj zD@!wEJ%y8qhpYM4QP3~m!;zGb*zrkTb;l6`KA@-_A(9Zz2&i=aHo@5_gyQnf&a=`e z_;gUyiJC&pxNOpOk_{KJ@yWM_t7{CqKG-pcx6Z~kdIlxx1Cs*zly~CG{q%`J`UE|R zK4{J4f)WF8$Y+M{i_#|r1SRP`s%rmk)h7nx3tqiewg1dr+)a<|;a0dR3g3_`{FKTt zrGJ!$4&MPGk^gC9F4t zJ-Ke>?%gXla)ldK?b>qvhSSM^Ik#`$xvohQX3w6G!WlW&2Qq;yfgb%8c-V=&&>C4E z#=Bj5rQ}+`9F~-nP6n1zguziz`7saM1+$pwopDi(3TrKpEg4Vgc%ux=+QpD^ zZeDP(n}@?_Cd6zl3JlWusw0am=AtMS;@9Kvz5edmwgZ`m?z%a%2c zsKWB1$kZ3PQaVYWn3ALqN($5`khS)-OuN62C8wlXs4gv!_VG}LSfgUfqod1XqO2h* zcc19;QoL1?ZSnQDXQn%NflefAN!5%IGw??rjVq0*ii)a=$#u{}Vqm&GIM|+U4+>&( zP#_5yxFXOd6sS)&StFBzC}m`#7&MYu83C*cq_IFdXSpz#q8SJ+v3x(|*6Gv=Q+O7t zKA=J&0;SM`SWX3#iCUQs8BZKZhE^iI$({9zuUQ&FjzzX_@FK(AYLcT@xJAwkuJMY= zQ+bB>NnCAglv}e^3e-#Gxd)n0hZS0#I=fX_qwU=zY^uI*X%d~y0a3sNPp1%}DvGlD z3!ew{n=qVMfYPn$P$?9{n)r;eS8{=3~}&1{oR zMFr6RpOur5nB~0RT76k+k1Yj^dB=Kd`af7-$u!sF$J+gTotfFg(^8#gJ$ISYqxvml zcvgnf-|xo%+4|f5#7i%oRd^Yv=69Q(Z`4Kb9LGoKjQP{MgM z@yT7+8DUl%L|AJ-WVMOur!kP2MrRJaSFF zZJT(7D#s%BFb)ZH&r_t5tqG(?UKl0(&AKDDW{oeQhdN|=#N@+@4Psk$a2*jZjBJaJ zz9(qfO~25j@Wfmi6%gWU59e}w(SN!GUef1bqIb$`c$CEdP7agc|A~D4F9j!fgb*ww zVh!r4V6hV|s#`h|RA7Udka!DFKYy!<8DkQLj4X%nnGL7klAG2frY&u-l%1-CE>|(` zK!MwS5>&&97aySipkJmnR7XD0Py2xv{cOE_0}0`K&Ocuo|KzJ=&R(AJC90^2coun> z0UcQp$ooYp6SEN!nNY|SrViByBL{_ggyszQ@*Kmm*+Mg+}1B#JWs!_4k#k_3su$Ll>Xgyxf}QOqffj! zBaW{0d+&WDBSn}us3#D!Kod8ttf)-W$P^Yd$z9;nIi3av zd()B}7(sS&mYfAv_eGap;mUx5IlIxDTkjg;8pv(s5UeGrUyz9p;5tC`XSp9bWEI(@ z*i1)IB%Eh7Mp(q*Z#ThS?+A>r*p1}xWf|BGKI2rgCqKf$cdPJ!yNCKjMDDvyeA#h% zCExVHgDtubGveJUi@9>W<5aGA@za#li90icU+I?ldYhM=DBbCSk#hNLQpwY=UM@)g zqRuOrFD@Kaxd@7ZxtX?J@qOWAvHg)HVDVeJPdN?!q-Ui=-g3lOBdR6TXi&4+%Wd?g#k}LYESCwkHr-|4wn!Zu$K3{G28Q!>8 z5mesWe|m=dljmlqd3noy#JB!R9ZMJR=d1kQ^`@V10pFMgO+4H!$D4oYA{kQpA{{+v z{&BneyG3gshzt#TLY)h8r1+dC`sjwJgPrD&>U>UycDvldmz@wR zxTX&uYSDd^86WNp?xp`r?xl^M{fD`|=af%(6rUXIi;B(iniU%=Jw8nmhxeNhqT8Qn z-dFy0pd(Ox|7=m(ynQo9j5syYwFU%so7d=)@h!C-ntE9dl@%RMFc3|bT8 zBWxlD932zA^lM_hapd%rjsovvN0A#I+=m$2Q}n_E2RCw)@+;R9Ka>#pt*B+a7yFWkk{>`p8R(Bh>

Q;I?})2Bdx8E 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¬3>(zox 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