%PDF-1.4 %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com % 'BasicFonts': class PDFDictionary 1 0 obj % The standard fonts dictionary << /F1 2 0 R /F2 3 0 R /F3 13 0 R /F4 112 0 R /F5 185 0 R /F6 293 0 R /F7 313 0 R >> endobj % 'F1': class PDFType1Font 2 0 obj % Font Helvetica << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> endobj % 'F2': class PDFType1Font 3 0 obj % Font Helvetica-Bold << /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER1': class PDFDictionary 4 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org) >> /Border [ 0 0 0 ] /Rect [ 153.7323 692.7736 265.4323 704.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER2': class PDFDictionary 5 0 obj << /A << /S /URI /Type /Action /URI (mailto:rasky@develer.com) >> /Border [ 0 0 0 ] /Rect [ 153.7323 650.7736 526.5827 662.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page1': class PDFPage 6 0 obj % Page dictionary << /Annots [ 4 0 R 5 0 R ] /Contents 436 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER3': class LinkAnnotation 7 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 291.0236 0 ] /Rect [ 62.69291 711.7736 129.3729 723.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER4': class LinkAnnotation 8 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 291.0236 0 ] /Rect [ 527.0227 711.7736 532.5827 723.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER5': class LinkAnnotation 9 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 623.0236 0 ] /Rect [ 62.69291 693.7736 99.93291 705.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER6': class LinkAnnotation 10 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 623.0236 0 ] /Rect [ 527.0227 693.7736 532.5827 705.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER7': class LinkAnnotation 11 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 428.0236 0 ] /Rect [ 62.69291 675.7736 152.1329 687.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER8': class LinkAnnotation 12 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 428.0236 0 ] /Rect [ 527.0227 675.7736 532.5827 687.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F3': class PDFType1Font 13 0 obj % Font Helvetica-BoldOblique << /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER9': class LinkAnnotation 14 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 341.0236 0 ] /Rect [ 62.69291 657.7736 109.3729 669.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER10': class LinkAnnotation 15 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 341.0236 0 ] /Rect [ 109.3729 657.7736 159.9529 669.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER11': class LinkAnnotation 16 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 341.0236 0 ] /Rect [ 527.0227 657.7736 532.5827 669.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER12': class LinkAnnotation 17 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 290.0236 0 ] /Rect [ 82.69291 639.7736 166.6129 651.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER13': class LinkAnnotation 18 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 218 0 R /XYZ 62.69291 290.0236 0 ] /Rect [ 527.0227 639.7736 532.5827 651.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER14': class LinkAnnotation 19 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 226 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 621.7736 196.0529 633.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER15': class LinkAnnotation 20 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 226 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 527.0227 621.7736 532.5827 633.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER16': class LinkAnnotation 21 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 226 0 R /XYZ 62.69291 456.0236 0 ] /Rect [ 82.69291 603.7736 196.6229 615.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER17': class LinkAnnotation 22 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 226 0 R /XYZ 62.69291 456.0236 0 ] /Rect [ 527.0227 603.7736 532.5827 615.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER18': class LinkAnnotation 23 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 226 0 R /XYZ 62.69291 240.0236 0 ] /Rect [ 82.69291 585.7736 188.2929 597.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER19': class LinkAnnotation 24 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 226 0 R /XYZ 62.69291 240.0236 0 ] /Rect [ 527.0227 585.7736 532.5827 597.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER20': class LinkAnnotation 25 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 681.0236 0 ] /Rect [ 82.69291 567.7736 171.6129 579.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER21': class LinkAnnotation 26 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 681.0236 0 ] /Rect [ 527.0227 567.7736 532.5827 579.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER22': class LinkAnnotation 27 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 417.0236 0 ] /Rect [ 62.69291 549.7736 140.4929 561.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER23': class LinkAnnotation 28 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 417.0236 0 ] /Rect [ 140.4929 549.7736 193.8529 561.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER24': class LinkAnnotation 29 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 417.0236 0 ] /Rect [ 193.8529 549.7736 307.7629 561.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER25': class LinkAnnotation 30 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 417.0236 0 ] /Rect [ 527.0227 549.7736 532.5827 561.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER26': class LinkAnnotation 31 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 234.0236 0 ] /Rect [ 82.69291 531.7736 295.5429 543.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER27': class LinkAnnotation 32 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 242 0 R /XYZ 62.69291 234.0236 0 ] /Rect [ 527.0227 531.7736 532.5827 543.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER28': class LinkAnnotation 33 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 609.0236 0 ] /Rect [ 82.69291 513.7736 185.5229 525.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER29': class LinkAnnotation 34 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 609.0236 0 ] /Rect [ 527.0227 513.7736 532.5827 525.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER30': class LinkAnnotation 35 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 369.0236 0 ] /Rect [ 82.69291 495.7736 173.2929 507.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER31': class LinkAnnotation 36 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 369.0236 0 ] /Rect [ 527.0227 495.7736 532.5827 507.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER32': class LinkAnnotation 37 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 267.0236 0 ] /Rect [ 82.69291 477.7736 244.9529 489.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER33': class LinkAnnotation 38 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 267.0236 0 ] /Rect [ 527.0227 477.7736 532.5827 489.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER34': class LinkAnnotation 39 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 459.7736 232.7229 471.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER35': class LinkAnnotation 40 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 527.0227 459.7736 532.5827 471.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER36': class LinkAnnotation 41 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 429.0236 0 ] /Rect [ 82.69291 441.7736 153.2829 453.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER37': class LinkAnnotation 42 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 429.0236 0 ] /Rect [ 527.0227 441.7736 532.5827 453.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER38': class LinkAnnotation 43 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 303.0236 0 ] /Rect [ 82.69291 423.7736 188.8529 435.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER39': class LinkAnnotation 44 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 303.0236 0 ] /Rect [ 527.0227 423.7736 532.5827 435.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER40': class LinkAnnotation 45 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 189.0236 0 ] /Rect [ 62.69291 405.7736 143.8329 417.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER41': class LinkAnnotation 46 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 189.0236 0 ] /Rect [ 527.0227 405.7736 532.5827 417.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER42': class LinkAnnotation 47 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 425.8236 0 ] /Rect [ 82.69291 387.7736 117.1529 399.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER43': class LinkAnnotation 48 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 425.8236 0 ] /Rect [ 521.4627 387.7736 532.5827 399.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER44': class LinkAnnotation 49 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 395.8236 0 ] /Rect [ 102.6929 369.7736 175.5029 381.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER45': class LinkAnnotation 50 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 248 0 R /XYZ 62.69291 395.8236 0 ] /Rect [ 521.4627 369.7736 532.5827 381.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER46': class LinkAnnotation 51 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 252 0 R /XYZ 62.69291 627.0236 0 ] /Rect [ 102.6929 351.7736 330.5629 363.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER47': class LinkAnnotation 52 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 252 0 R /XYZ 62.69291 627.0236 0 ] /Rect [ 521.4627 351.7736 532.5827 363.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER48': class LinkAnnotation 53 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 252 0 R /XYZ 62.69291 354.0236 0 ] /Rect [ 102.6929 333.7736 253.3329 345.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER49': class LinkAnnotation 54 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 252 0 R /XYZ 62.69291 354.0236 0 ] /Rect [ 521.4627 333.7736 532.5827 345.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER50': class LinkAnnotation 55 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 258 0 R /XYZ 62.69291 596.8236 0 ] /Rect [ 102.6929 315.7736 219.4029 327.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER51': class LinkAnnotation 56 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 258 0 R /XYZ 62.69291 596.8236 0 ] /Rect [ 521.4627 315.7736 532.5827 327.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER52': class LinkAnnotation 57 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 258 0 R /XYZ 62.69291 275.8236 0 ] /Rect [ 102.6929 297.7736 224.4129 309.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER53': class LinkAnnotation 58 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 258 0 R /XYZ 62.69291 275.8236 0 ] /Rect [ 521.4627 297.7736 532.5827 309.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER54': class LinkAnnotation 59 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 258 0 R /XYZ 62.69291 203.8236 0 ] /Rect [ 82.69291 279.7736 226.0929 291.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER55': class LinkAnnotation 60 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 258 0 R /XYZ 62.69291 203.8236 0 ] /Rect [ 521.4627 279.7736 532.5827 291.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER56': class LinkAnnotation 61 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 609.0236 0 ] /Rect [ 102.6929 261.7736 201.0729 273.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER57': class LinkAnnotation 62 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 609.0236 0 ] /Rect [ 521.4627 261.7736 532.5827 273.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER58': class LinkAnnotation 63 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 408.0236 0 ] /Rect [ 102.6929 243.7736 277.7829 255.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER59': class LinkAnnotation 64 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 408.0236 0 ] /Rect [ 521.4627 243.7736 532.5827 255.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER60': class LinkAnnotation 65 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 351.0236 0 ] /Rect [ 102.6929 225.7736 272.7729 237.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER61': class LinkAnnotation 66 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 351.0236 0 ] /Rect [ 521.4627 225.7736 532.5827 237.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER62': class LinkAnnotation 67 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 198.0236 0 ] /Rect [ 82.69291 207.7736 196.6329 219.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER63': class LinkAnnotation 68 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 261 0 R /XYZ 62.69291 198.0236 0 ] /Rect [ 521.4627 207.7736 532.5827 219.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER64': class LinkAnnotation 69 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 566.6236 0 ] /Rect [ 82.69291 189.7736 131.5929 201.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER65': class LinkAnnotation 70 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 566.6236 0 ] /Rect [ 521.4627 189.7736 532.5827 201.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER66': class LinkAnnotation 71 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 312.8661 0 ] /Rect [ 82.69291 171.7736 213.2929 183.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER67': class LinkAnnotation 72 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 312.8661 0 ] /Rect [ 521.4627 171.7736 532.5827 183.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER68': class LinkAnnotation 73 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 252.8661 0 ] /Rect [ 102.6929 153.7736 286.1029 165.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER69': class LinkAnnotation 74 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 252.8661 0 ] /Rect [ 521.4627 153.7736 532.5827 165.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER70': class LinkAnnotation 75 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 651.0236 0 ] /Rect [ 102.6929 135.7736 276.0929 147.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER71': class LinkAnnotation 76 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 651.0236 0 ] /Rect [ 521.4627 135.7736 532.5827 147.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER72': class LinkAnnotation 77 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 342.8236 0 ] /Rect [ 62.69291 117.7736 142.7229 129.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER73': class LinkAnnotation 78 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 342.8236 0 ] /Rect [ 521.4627 117.7736 532.5827 129.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER74': class LinkAnnotation 79 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 275 0 R /XYZ 62.69291 471.0236 0 ] /Rect [ 82.69291 99.77362 171.0629 111.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER75': class LinkAnnotation 80 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 275 0 R /XYZ 62.69291 471.0236 0 ] /Rect [ 521.4627 99.77362 532.5827 111.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page2': class PDFPage 81 0 obj % Page dictionary << /Annots [ 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R ] /Contents 437 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER76': class LinkAnnotation 82 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 276 0 R /XYZ 62.69291 663.0236 0 ] /Rect [ 102.6929 738.7736 239.9529 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER77': class LinkAnnotation 83 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 276 0 R /XYZ 62.69291 663.0236 0 ] /Rect [ 521.4627 738.7736 532.5827 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER78': class LinkAnnotation 84 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 276 0 R /XYZ 62.69291 169.6236 0 ] /Rect [ 102.6929 720.7736 171.0429 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER79': class LinkAnnotation 85 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 276 0 R /XYZ 62.69291 169.6236 0 ] /Rect [ 521.4627 720.7736 532.5827 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER80': class LinkAnnotation 86 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 277 0 R /XYZ 62.69291 495.8236 0 ] /Rect [ 82.69291 702.7736 199.4229 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER81': class LinkAnnotation 87 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 277 0 R /XYZ 62.69291 495.8236 0 ] /Rect [ 521.4627 702.7736 532.5827 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER82': class LinkAnnotation 88 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 684.7736 225.5229 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER83': class LinkAnnotation 89 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 684.7736 532.5827 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER84': class LinkAnnotation 90 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 417.8236 0 ] /Rect [ 62.69291 666.7736 176.5829 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER85': class LinkAnnotation 91 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 417.8236 0 ] /Rect [ 521.4627 666.7736 532.5827 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER86': class LinkAnnotation 92 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 384.8236 0 ] /Rect [ 82.69291 648.7736 282.2029 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER87': class LinkAnnotation 93 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 384.8236 0 ] /Rect [ 521.4627 648.7736 532.5827 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER88': class LinkAnnotation 94 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 240.8236 0 ] /Rect [ 82.69291 630.7736 198.3129 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER89': class LinkAnnotation 95 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 240.8236 0 ] /Rect [ 521.4627 630.7736 532.5827 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER90': class LinkAnnotation 96 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 612.7736 216.6329 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER91': class LinkAnnotation 97 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 612.7736 532.5827 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER92': class LinkAnnotation 98 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 723.0236 0 ] /Rect [ 102.6929 594.7736 195.4929 606.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER93': class LinkAnnotation 99 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 723.0236 0 ] /Rect [ 521.4627 594.7736 532.5827 606.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER94': class LinkAnnotation 100 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 288.8236 0 ] /Rect [ 102.6929 576.7736 214.3829 588.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER95': class LinkAnnotation 101 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 288.8236 0 ] /Rect [ 521.4627 576.7736 532.5827 588.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER96': class LinkAnnotation 102 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 558.7736 215.5229 570.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER97': class LinkAnnotation 103 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 558.7736 532.5827 570.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER98': class LinkAnnotation 104 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 612.0236 0 ] /Rect [ 102.6929 540.7736 251.8929 552.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER99': class LinkAnnotation 105 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 612.0236 0 ] /Rect [ 521.4627 540.7736 532.5827 552.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER100': class LinkAnnotation 106 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 501.0236 0 ] /Rect [ 82.69291 522.7736 228.8529 534.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER101': class LinkAnnotation 107 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 501.0236 0 ] /Rect [ 521.4627 522.7736 532.5827 534.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER102': class LinkAnnotation 108 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 471.0236 0 ] /Rect [ 102.6929 504.7736 187.1929 516.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER103': class LinkAnnotation 109 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 471.0236 0 ] /Rect [ 521.4627 504.7736 532.5827 516.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER104': class LinkAnnotation 110 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 336.8236 0 ] /Rect [ 102.6929 486.7736 202.1729 498.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER105': class LinkAnnotation 111 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 336.8236 0 ] /Rect [ 521.4627 486.7736 532.5827 498.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F4': class PDFType1Font 112 0 obj % Font Courier << /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER106': class LinkAnnotation 113 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 295 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 468.7736 206.8829 480.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER107': class LinkAnnotation 114 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 295 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 206.8829 468.7736 254.8829 480.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER108': class LinkAnnotation 115 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 295 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 468.7736 532.5827 480.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER109': class LinkAnnotation 116 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 295 0 R /XYZ 62.69291 546.0236 0 ] /Rect [ 102.6929 450.7736 227.7429 462.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER110': class LinkAnnotation 117 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 295 0 R /XYZ 62.69291 546.0236 0 ] /Rect [ 521.4627 450.7736 532.5827 462.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER111': class LinkAnnotation 118 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 62.69291 432.7736 145.4929 444.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER112': class LinkAnnotation 119 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 432.7736 532.5827 444.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER113': class LinkAnnotation 120 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 720.0236 0 ] /Rect [ 82.69291 414.7736 223.3029 426.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER114': class LinkAnnotation 121 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 720.0236 0 ] /Rect [ 521.4627 414.7736 532.5827 426.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER115': class LinkAnnotation 122 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 636.0236 0 ] /Rect [ 102.6929 396.7736 151.0529 408.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER116': class LinkAnnotation 123 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 636.0236 0 ] /Rect [ 521.4627 396.7736 532.5827 408.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER117': class LinkAnnotation 124 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 285.0236 0 ] /Rect [ 102.6929 378.7736 198.3029 390.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER118': class LinkAnnotation 125 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 285.0236 0 ] /Rect [ 521.4627 378.7736 532.5827 390.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER119': class LinkAnnotation 126 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 302 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 360.7736 238.3129 372.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER120': class LinkAnnotation 127 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 302 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 360.7736 532.5827 372.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER121': class LinkAnnotation 128 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 302 0 R /XYZ 62.69291 456.0236 0 ] /Rect [ 82.69291 342.7736 198.1929 354.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER122': class LinkAnnotation 129 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 302 0 R /XYZ 62.69291 456.0236 0 ] /Rect [ 521.4627 342.7736 532.5827 354.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER123': class LinkAnnotation 130 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 305 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 324.7736 176.0529 336.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER124': class LinkAnnotation 131 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 305 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 324.7736 532.5827 336.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER125': class LinkAnnotation 132 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 305 0 R /XYZ 62.69291 531.0236 0 ] /Rect [ 82.69291 306.7736 186.6229 318.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER126': class LinkAnnotation 133 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 305 0 R /XYZ 62.69291 531.0236 0 ] /Rect [ 521.4627 306.7736 532.5827 318.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER127': class LinkAnnotation 134 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 657.0236 0 ] /Rect [ 82.69291 288.7736 169.3929 300.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER128': class LinkAnnotation 135 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 657.0236 0 ] /Rect [ 521.4627 288.7736 532.5827 300.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER129': class LinkAnnotation 136 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 549.0236 0 ] /Rect [ 102.6929 270.7736 152.1429 282.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER130': class LinkAnnotation 137 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 549.0236 0 ] /Rect [ 521.4627 270.7736 532.5827 282.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER131': class LinkAnnotation 138 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 336.0236 0 ] /Rect [ 102.6929 252.7736 143.2529 264.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER132': class LinkAnnotation 139 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 336.0236 0 ] /Rect [ 521.4627 252.7736 532.5827 264.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER133': class LinkAnnotation 140 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 310 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 234.7736 213.8229 246.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER134': class LinkAnnotation 141 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 310 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 234.7736 532.5827 246.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER135': class LinkAnnotation 142 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 310 0 R /XYZ 62.69291 421.2236 0 ] /Rect [ 82.69291 216.7736 185.5229 228.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER136': class LinkAnnotation 143 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 310 0 R /XYZ 62.69291 421.2236 0 ] /Rect [ 521.4627 216.7736 532.5827 228.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER137': class LinkAnnotation 144 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 310 0 R /XYZ 62.69291 283.2236 0 ] /Rect [ 82.69291 198.7736 180.5129 210.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER138': class LinkAnnotation 145 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 310 0 R /XYZ 62.69291 283.2236 0 ] /Rect [ 521.4627 198.7736 532.5827 210.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER139': class LinkAnnotation 146 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 312 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 102.6929 180.7736 180.4929 192.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER140': class LinkAnnotation 147 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 312 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 521.4627 180.7736 532.5827 192.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER141': class LinkAnnotation 148 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 312 0 R /XYZ 62.69291 404.4661 0 ] /Rect [ 102.6929 162.7736 220.5029 174.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER142': class LinkAnnotation 149 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 312 0 R /XYZ 62.69291 404.4661 0 ] /Rect [ 521.4627 162.7736 532.5827 174.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER143': class LinkAnnotation 150 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 314 0 R /XYZ 62.69291 511.4236 0 ] /Rect [ 82.69291 144.7736 158.2629 156.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER144': class LinkAnnotation 151 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 314 0 R /XYZ 62.69291 511.4236 0 ] /Rect [ 521.4627 144.7736 532.5827 156.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER145': class LinkAnnotation 152 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 314 0 R /XYZ 62.69291 217.4236 0 ] /Rect [ 82.69291 126.7736 149.9329 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER146': class LinkAnnotation 153 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 314 0 R /XYZ 62.69291 217.4236 0 ] /Rect [ 521.4627 126.7736 532.5827 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER147': class LinkAnnotation 154 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 321 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 108.7736 186.0829 120.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER148': class LinkAnnotation 155 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 321 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 108.7736 532.5827 120.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page3': class PDFPage 156 0 obj % Page dictionary << /Annots [ 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R ] /Contents 438 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER149': class LinkAnnotation 157 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 321 0 R /XYZ 62.69291 663.0236 0 ] /Rect [ 102.6929 738.7736 185.5029 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER150': class LinkAnnotation 158 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 321 0 R /XYZ 62.69291 663.0236 0 ] /Rect [ 521.4627 738.7736 532.5827 750.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER151': class LinkAnnotation 159 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 321 0 R /XYZ 62.69291 301.6236 0 ] /Rect [ 102.6929 720.7736 138.2629 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER152': class LinkAnnotation 160 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 321 0 R /XYZ 62.69291 301.6236 0 ] /Rect [ 521.4627 720.7736 532.5827 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER153': class LinkAnnotation 161 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 323 0 R /XYZ 62.69291 633.0236 0 ] /Rect [ 102.6929 702.7736 253.8729 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER154': class LinkAnnotation 162 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 323 0 R /XYZ 62.69291 633.0236 0 ] /Rect [ 521.4627 702.7736 532.5827 714.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER155': class LinkAnnotation 163 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 82.69291 684.7736 273.3029 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER156': class LinkAnnotation 164 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 684.7736 532.5827 696.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER157': class LinkAnnotation 165 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 633.0236 0 ] /Rect [ 102.6929 666.7736 164.9229 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER158': class LinkAnnotation 166 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 633.0236 0 ] /Rect [ 521.4627 666.7736 532.5827 678.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER159': class LinkAnnotation 167 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 528.0236 0 ] /Rect [ 102.6929 648.7736 180.6929 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER160': class LinkAnnotation 168 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 528.0236 0 ] /Rect [ 521.4627 648.7736 532.5827 660.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER161': class LinkAnnotation 169 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 393.0236 0 ] /Rect [ 102.6929 630.7736 173.8229 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER162': class LinkAnnotation 170 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 393.0236 0 ] /Rect [ 521.4627 630.7736 532.5827 642.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER163': class LinkAnnotation 171 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 246.0236 0 ] /Rect [ 102.6929 612.7736 167.1729 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER164': class LinkAnnotation 172 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 326 0 R /XYZ 62.69291 246.0236 0 ] /Rect [ 521.4627 612.7736 532.5827 624.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER165': class LinkAnnotation 173 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 594.7736 131.0329 606.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER166': class LinkAnnotation 174 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 594.7736 532.5827 606.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER167': class LinkAnnotation 175 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 648.0236 0 ] /Rect [ 102.6929 576.7736 144.9229 588.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER168': class LinkAnnotation 176 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 648.0236 0 ] /Rect [ 521.4627 576.7736 532.5827 588.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER169': class LinkAnnotation 177 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 537.0236 0 ] /Rect [ 102.6929 558.7736 177.7129 570.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER170': class LinkAnnotation 178 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 537.0236 0 ] /Rect [ 521.4627 558.7736 532.5827 570.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER171': class LinkAnnotation 179 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 456.0236 0 ] /Rect [ 62.69291 540.7736 151.0429 552.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER172': class LinkAnnotation 180 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 456.0236 0 ] /Rect [ 521.4627 540.7736 532.5827 552.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER173': class LinkAnnotation 181 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 393.0236 0 ] /Rect [ 82.69291 522.7736 219.3929 534.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER174': class LinkAnnotation 182 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 393.0236 0 ] /Rect [ 521.4627 522.7736 532.5827 534.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER175': class LinkAnnotation 183 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 332 0 R /XYZ 62.69291 545.6236 0 ] /Rect [ 82.69291 504.7736 166.0529 516.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER176': class LinkAnnotation 184 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 332 0 R /XYZ 62.69291 545.6236 0 ] /Rect [ 521.4627 504.7736 532.5827 516.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F5': class PDFType1Font 185 0 obj % Font Helvetica-Oblique << /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER177': class LinkAnnotation 186 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 332 0 R /XYZ 62.69291 343.2236 0 ] /Rect [ 82.69291 486.7736 112.6929 498.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER178': class LinkAnnotation 187 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 332 0 R /XYZ 62.69291 343.2236 0 ] /Rect [ 112.6929 486.7736 223.8429 498.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER179': class LinkAnnotation 188 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 332 0 R /XYZ 62.69291 343.2236 0 ] /Rect [ 521.4627 486.7736 532.5827 498.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER180': class LinkAnnotation 189 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 102.6929 468.7736 180.6929 480.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER181': class LinkAnnotation 190 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 753.0236 0 ] /Rect [ 521.4627 468.7736 532.5827 480.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER182': class LinkAnnotation 191 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 594.0236 0 ] /Rect [ 102.6929 450.7736 186.6929 462.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER183': class LinkAnnotation 192 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 594.0236 0 ] /Rect [ 521.4627 450.7736 532.5827 462.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER184': class LinkAnnotation 193 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 507.0236 0 ] /Rect [ 102.6929 432.7736 210.6929 444.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER185': class LinkAnnotation 194 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 507.0236 0 ] /Rect [ 521.4627 432.7736 532.5827 444.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER186': class LinkAnnotation 195 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 402.0236 0 ] /Rect [ 102.6929 414.7736 132.6929 426.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER187': class LinkAnnotation 196 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 402.0236 0 ] /Rect [ 521.4627 414.7736 532.5827 426.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER188': class LinkAnnotation 197 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 195.0236 0 ] /Rect [ 102.6929 396.7736 146.6029 408.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER189': class LinkAnnotation 198 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 333 0 R /XYZ 62.69291 195.0236 0 ] /Rect [ 521.4627 396.7736 532.5827 408.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER190': class LinkAnnotation 199 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 102.6929 378.7736 154.9229 390.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER191': class LinkAnnotation 200 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 521.4627 378.7736 532.5827 390.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER192': class LinkAnnotation 201 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 522.0236 0 ] /Rect [ 102.6929 360.7736 159.9229 372.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER193': class LinkAnnotation 202 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 522.0236 0 ] /Rect [ 521.4627 360.7736 532.5827 372.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER194': class LinkAnnotation 203 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 441.0236 0 ] /Rect [ 102.6929 342.7736 159.9329 354.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER195': class LinkAnnotation 204 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 441.0236 0 ] /Rect [ 521.4627 342.7736 532.5827 354.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER196': class LinkAnnotation 205 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 360.0236 0 ] /Rect [ 102.6929 324.7736 150.4829 336.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER197': class LinkAnnotation 206 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 360.0236 0 ] /Rect [ 521.4627 324.7736 532.5827 336.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER198': class LinkAnnotation 207 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 183.0236 0 ] /Rect [ 102.6929 306.7736 142.1529 318.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER199': class LinkAnnotation 208 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 334 0 R /XYZ 62.69291 183.0236 0 ] /Rect [ 521.4627 306.7736 532.5827 318.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER200': class PDFDictionary 209 0 obj << /A << /S /URI /Type /Action /URI (http://sourceforge.net/projects/pywin32/files/) >> /Border [ 0 0 0 ] /Rect [ 105.6929 210.7736 148.4829 222.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page4': class PDFPage 210 0 obj % Page dictionary << /Annots [ 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R ] /Contents 439 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER201': class PDFDictionary 211 0 obj << /A << /S /URI /Type /Action /URI (https://raw.github.com/pyinstaller/pyinstaller/develop/COPYING.txt) >> /Border [ 0 0 0 ] /Rect [ 216.1481 584.7736 276.2002 596.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER202': class PDFDictionary 212 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/wiki/FAQ) >> /Border [ 0 0 0 ] /Rect [ 272.2229 440.7736 295.5629 452.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER203': class PDFDictionary 213 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org) >> /Border [ 0 0 0 ] /Rect [ 323.3629 440.7736 372.8229 452.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER204': class PDFDictionary 214 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/) >> /Border [ 0 0 0 ] /Rect [ 449.6806 389.7736 516.4627 401.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER205': class PDFDictionary 215 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/wiki/Development/HowtoContribute) >> /Border [ 0 0 0 ] /Rect [ 428.1227 377.7736 514.8027 389.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER206': class PDFDictionary 216 0 obj << /A << /S /URI /Type /Action /URI (http://www.pip-installer.org/) >> /Border [ 0 0 0 ] /Rect [ 146.1282 242.7736 163.5699 254.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER207': class PDFDictionary 217 0 obj << /A << /S /URI /Type /Action /URI (http://peak.telecommunity.com/DevCenter/EasyInstall) >> /Border [ 0 0 0 ] /Rect [ 229.7752 242.7736 282.0152 254.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page5': class PDFPage 218 0 obj % Page dictionary << /Annots [ 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R ] /Contents 440 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER208': class PDFDictionary 219 0 obj << /A << /S /URI /Type /Action /URI (http://sourceforge.net/projects/pywin32/files/) >> /Border [ 0 0 0 ] /Rect [ 129.3366 720.7736 173.4985 732.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER209': class PDFDictionary 220 0 obj << /A << /S /URI /Type /Action /URI (https://sites.google.com/site/pydatalog/python/pip-for-windows) >> /Border [ 0 0 0 ] /Rect [ 231.7406 678.7736 265.6306 690.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER210': class PDFDictionary 221 0 obj << /A << /S /URI /Type /Action /URI (http://www.pip-installer.org/) >> /Border [ 0 0 0 ] /Rect [ 359.6461 678.7736 376.3372 690.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER211': class PDFDictionary 222 0 obj << /A << /S /URI /Type /Action /URI (http://www.virtualenv.org/) >> /Border [ 0 0 0 ] /Rect [ 396.3683 678.7736 442.5094 690.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER212': class LinkAnnotation 223 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 315.8661 0 ] /Rect [ 129.9429 654.7736 263.3229 666.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER213': class PDFDictionary 224 0 obj << /A << /S /URI /Type /Action /URI (https://pypi.python.org/pypi/PyInstaller/) >> /Border [ 0 0 0 ] /Rect [ 421.8277 420.7736 447.2527 432.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER214': class LinkAnnotation 225 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 321 0 R /XYZ 62.69291 756.0236 0 ] /Rect [ 191.3638 276.7736 299.8993 288.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page6': class PDFPage 226 0 obj % Page dictionary << /Annots [ 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R ] /Contents 441 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER215': class LinkAnnotation 227 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 192.5236 0 ] /Rect [ 411.1529 624.7736 486.1729 636.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER216': class LinkAnnotation 228 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 346.3236 0 ] /Rect [ 310.9929 606.7736 386.0129 618.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER217': class LinkAnnotation 229 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 346.3236 0 ] /Rect [ 383.5929 588.7736 458.6129 600.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER218': class LinkAnnotation 230 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 660.0236 0 ] /Rect [ 400.3629 570.7736 487.0629 582.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER219': class LinkAnnotation 231 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 310 0 R /XYZ 62.69291 424.2236 0 ] /Rect [ 413.7229 552.7736 516.5529 564.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER220': class LinkAnnotation 232 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 305 0 R /XYZ 62.69291 534.0236 0 ] /Rect [ 85.69291 522.7736 189.6229 534.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER221': class LinkAnnotation 233 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 396.0236 0 ] /Rect [ 430.8977 504.7736 532.8002 516.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER222': class LinkAnnotation 234 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 329 0 R /XYZ 62.69291 396.0236 0 ] /Rect [ 85.69291 492.7736 120.7129 504.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER223': class LinkAnnotation 235 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 192.5236 0 ] /Rect [ 305.9359 366.7736 381.402 378.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER224': class PDFDictionary 236 0 obj << /A << /S /URI /Type /Action /URI (http://www.qt-project.org) >> /Border [ 0 0 0 ] /Rect [ 285.7028 126.7736 300.5699 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER225': class PDFDictionary 237 0 obj << /A << /S /URI /Type /Action /URI (http://www.riverbankcomputing.co.uk/software/pyqt/intro) >> /Border [ 0 0 0 ] /Rect [ 364.1942 126.7736 390.7313 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER226': class PDFDictionary 238 0 obj << /A << /S /URI /Type /Action /URI (http://qt-project.org/wiki/About-PySide) >> /Border [ 0 0 0 ] /Rect [ 403.9284 126.7736 435.6084 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER227': class PDFDictionary 239 0 obj << /A << /S /URI /Type /Action /URI (http://www.wxpython.org/) >> /Border [ 0 0 0 ] /Rect [ 446.0256 126.7736 491.5956 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER228': class PDFDictionary 240 0 obj << /A << /S /URI /Type /Action /URI (http://wiki.python.org/moin/TkInter) >> /Border [ 0 0 0 ] /Rect [ 498.6827 126.7736 529.8027 138.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER229': class PDFDictionary 241 0 obj << /A << /S /URI /Type /Action /URI (https://www.djangoproject.com/) >> /Border [ 0 0 0 ] /Rect [ 62.69291 114.7736 94.37291 126.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page7': class PDFPage 242 0 obj % Page dictionary << /Annots [ 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R ] /Contents 442 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER230': class LinkAnnotation 243 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 300 0 R /XYZ 62.69291 723.0236 0 ] /Rect [ 248.3029 117.7736 391.6929 129.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page8': class PDFPage 244 0 obj % Page dictionary << /Annots [ 243 0 R ] /Contents 443 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER231': class PDFDictionary 245 0 obj << /A << /S /URI /Type /Action /URI (http://www.cython.org/) >> /Border [ 0 0 0 ] /Rect [ 128.8554 225.7736 160.5354 237.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page9': class PDFPage 246 0 obj % Page dictionary << /Annots [ 245 0 R ] /Contents 444 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER232': class LinkAnnotation 247 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 346.3236 0 ] /Rect [ 427.4067 540.5736 502.524 552.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page10': class PDFPage 248 0 obj % Page dictionary << /Annots [ 247 0 R ] /Contents 445 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER233': class LinkAnnotation 249 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 725.5236 0 ] /Rect [ 401.6247 678.7736 497.6827 690.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER234': class LinkAnnotation 250 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 314 0 R /XYZ 62.69291 514.4236 0 ] /Rect [ 385.3728 444.7736 472.9402 456.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER235': class LinkAnnotation 251 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 295 0 R /XYZ 62.69291 548.5236 0 ] /Rect [ 303.6378 381.7736 440.1827 393.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page11': class PDFPage 252 0 obj % Page dictionary << /Annots [ 249 0 R 250 0 R 251 0 R ] /Contents 446 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER236': class LinkAnnotation 253 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 755.5236 0 ] /Rect [ 459.5233 729.7736 524.0033 741.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER237': class LinkAnnotation 254 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 755.5236 0 ] /Rect [ 303.6378 717.7736 351.9878 729.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER238': class LinkAnnotation 255 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 265 0 R /XYZ 62.69291 569.6236 0 ] /Rect [ 331.9878 627.7736 383.6678 639.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER239': class LinkAnnotation 256 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 305 0 R /XYZ 62.69291 534.0236 0 ] /Rect [ 439.6244 540.5736 519.6544 552.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER240': class LinkAnnotation 257 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 305 0 R /XYZ 62.69291 534.0236 0 ] /Rect [ 303.6378 528.5736 327.5378 540.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page12': class PDFPage 258 0 obj % Page dictionary << /Annots [ 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R ] /Contents 447 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER241': class PDFDictionary 259 0 obj << /A << /S /URI /Type /Action /URI (https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigFiles.html) >> /Border [ 0 0 0 ] /Rect [ 161.7852 633.7736 249.3475 645.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER242': class PDFDictionary 260 0 obj << /A << /S /URI /Type /Action /URI (http://www.lemkesoft.de/en/products/graphic-converter/) >> /Border [ 0 0 0 ] /Rect [ 62.69291 432.7736 146.3166 444.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page13': class PDFPage 261 0 obj % Page dictionary << /Annots [ 259 0 R 260 0 R ] /Contents 448 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER243': class PDFDictionary 262 0 obj << /A << /S /URI /Type /Action /URI (http://upx.sourceforge.net/) >> /Border [ 0 0 0 ] /Rect [ 62.69291 531.3736 86.42223 543.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER244': class PDFDictionary 263 0 obj << /A << /S /URI /Type /Action /URI (http://upx.sourceforge.net/) >> /Border [ 0 0 0 ] /Rect [ 337.5187 507.3736 361.3292 519.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER245': class PDFDictionary 264 0 obj << /A << /S /URI /Type /Action /URI (http://www.virtualenv.org/) >> /Border [ 0 0 0 ] /Rect [ 377.1877 196.6161 419.9777 208.6161 ] /Subtype /Link /Type /Annot >> endobj % 'Page14': class PDFPage 265 0 obj % Page dictionary << /Annots [ 262 0 R 263 0 R 264 0 R ] /Contents 449 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER246': class PDFDictionary 266 0 obj << /A << /S /URI /Type /Action /URI (https://sites.google.com/site/pydatalog/python/pip-for-windows) >> /Border [ 0 0 0 ] /Rect [ 158.2229 687.7736 195.7995 699.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER247': class PDFDictionary 267 0 obj << /A << /S /URI /Type /Action /URI (https://www.virtualbox.org) >> /Border [ 0 0 0 ] /Rect [ 373.1992 588.7736 420.7439 600.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER248': class PDFDictionary 268 0 obj << /A << /S /URI /Type /Action /URI (http://www.vmware.com/solutions/desktop/) >> /Border [ 0 0 0 ] /Rect [ 473.368 588.7736 515.9027 600.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER249': class PDFDictionary 269 0 obj << /A << /S /URI /Type /Action /URI (http://www.parallels.com/) >> /Border [ 0 0 0 ] /Rect [ 62.69291 576.7736 104.5205 588.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER250': class PDFDictionary 270 0 obj << /A << /S /URI /Type /Action /URI (https://www.dropbox.com/home) >> /Border [ 0 0 0 ] /Rect [ 83.65852 546.7736 125.1841 558.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER251': class PDFDictionary 271 0 obj << /A << /S /URI /Type /Action /URI (http://www.winehq.org/) >> /Border [ 0 0 0 ] /Rect [ 448.3383 367.5736 474.7827 379.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER252': class PDFDictionary 272 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/wiki/Development/HowtoContribute) >> /Border [ 0 0 0 ] /Rect [ 204.4329 355.5736 284.4629 367.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page15': class PDFPage 273 0 obj % Page dictionary << /Annots [ 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R ] /Contents 450 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER253': class LinkAnnotation 274 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 309 0 R /XYZ 62.69291 660.0236 0 ] /Rect [ 333.7488 163.5736 424.1101 175.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page16': class PDFPage 275 0 obj % Page dictionary << /Annots [ 274 0 R ] /Contents 451 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page17': class PDFPage 276 0 obj % Page dictionary << /Contents 452 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page18': class PDFPage 277 0 obj % Page dictionary << /Contents 453 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER254': class PDFDictionary 278 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/wiki/Recipe) >> /Border [ 0 0 0 ] /Rect [ 501.4627 349.5736 530.262 361.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER255': class LinkAnnotation 279 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 277 0 R /XYZ 62.69291 498.8236 0 ] /Rect [ 444.9683 316.5736 530.9846 328.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER256': class LinkAnnotation 280 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 277 0 R /XYZ 62.69291 498.8236 0 ] /Rect [ 85.69291 304.5736 116.8229 316.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER257': class PDFDictionary 281 0 obj << /A << /S /URI /Type /Action /URI (https://pypi.python.org/pypi/PyInstaller/) >> /Border [ 0 0 0 ] /Rect [ 425.4304 193.5736 446.5504 205.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER258': class PDFDictionary 282 0 obj << /A << /S /URI /Type /Action /URI (http://www.pyinstaller.org/) >> /Border [ 0 0 0 ] /Rect [ 356.7329 181.5736 420.6429 193.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER259': class PDFDictionary 283 0 obj << /A << /S /URI /Type /Action /URI (http://git-scm.com/downloads) >> /Border [ 0 0 0 ] /Rect [ 115.8313 163.5736 131.8708 175.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page19': class PDFPage 284 0 obj % Page dictionary << /Annots [ 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R ] /Contents 454 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER260': class LinkAnnotation 285 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 339.3236 0 ] /Rect [ 365.572 313.5736 469.6684 325.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page20': class PDFPage 286 0 obj % Page dictionary << /Annots [ 285 0 R ] /Contents 455 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER261': class LinkAnnotation 287 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 756.0236 0 ] /Rect [ 460.5533 579.7736 532.2333 591.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER262': class LinkAnnotation 288 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 284 0 R /XYZ 62.69291 756.0236 0 ] /Rect [ 62.69291 567.7736 138.0391 579.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER263': class LinkAnnotation 289 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 286 0 R /XYZ 62.69291 725.5236 0 ] /Rect [ 166.0729 262.5736 258.8729 274.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER264': class LinkAnnotation 290 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 614.5236 0 ] /Rect [ 267.4529 214.5736 419.4329 226.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER265': class LinkAnnotation 291 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 314 0 R /XYZ 62.69291 514.4236 0 ] /Rect [ 459.1402 184.5736 535.2564 196.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page21': class PDFPage 292 0 obj % Page dictionary << /Annots [ 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R ] /Contents 456 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'F6': class PDFType1Font 293 0 obj % Font Courier-BoldOblique << /BaseFont /Courier-BoldOblique /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER266': class LinkAnnotation 294 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 314 0 R /XYZ 62.69291 514.4236 0 ] /Rect [ 305.5729 618.7736 383.9229 630.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page22': class PDFPage 295 0 obj % Page dictionary << /Annots [ 294 0 R ] /Contents 457 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER267': class LinkAnnotation 296 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 244 0 R /XYZ 62.69291 270.0236 0 ] /Rect [ 253.5308 672.7736 429.0407 684.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER268': class LinkAnnotation 297 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 756.0236 0 ] /Rect [ 450.5947 672.7736 530.4887 684.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER269': class LinkAnnotation 298 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 246 0 R /XYZ 62.69291 756.0236 0 ] /Rect [ 62.69291 660.7736 132.647 672.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER270': class PDFDictionary 299 0 obj << /A << /S /URI /Type /Action /URI (http://msdn.microsoft.com/en-us/library/windows/desktop/aa374153\(v=vs.85\).aspx) >> /Border [ 0 0 0 ] /Rect [ 220.9529 357.7736 298.2129 369.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page23': class PDFPage 300 0 obj % Page dictionary << /Annots [ 296 0 R 297 0 R 298 0 R 299 0 R ] /Contents 458 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER271': class PDFDictionary 301 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org/dev/peps/pep-0302/) >> /Border [ 0 0 0 ] /Rect [ 465.6665 708.7736 509.0327 720.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page24': class PDFPage 302 0 obj % Page dictionary << /Annots [ 301 0 R ] /Contents 459 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER272': class LinkAnnotation 303 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 277 0 R /XYZ 62.69291 498.8236 0 ] /Rect [ 172.7529 705.7736 289.4829 717.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER273': class PDFDictionary 304 0 obj << /A << /S /URI /Type /Action /URI (http://msdn.microsoft.com/en-us/library/ff468916\(v=vs.85\).aspx) >> /Border [ 0 0 0 ] /Rect [ 62.69291 435.7736 200.5229 447.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page25': class PDFPage 305 0 obj % Page dictionary << /Annots [ 303 0 R 304 0 R ] /Contents 460 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER274': class PDFDictionary 306 0 obj << /A << /S /URI /Type /Action /URI (http://docs.python.org/library/marshal) >> /Border [ 0 0 0 ] /Rect [ 189.9629 462.7736 241.6429 474.7736 ] /Subtype /Link /Type /Annot >> endobj % 'FormXob.b0457f0a414020c0d759fda1eca85a59': class PDFImageXObject 307 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 326 /Length 5649 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 328 >> stream Gb"/j%?g%UZ3J#BI3&r7WB`YT;sN1`G3l0]4+)uos=zzzzzzzzzzzzzzz!!"hG!r*X&g\)WeRk,_hk5Y8/#eVKpP2LHk]I#E>Y@HKJR5oL4"0Y9=0BI>X#J1j[#O(s'8*CIij0ctJPMLIu-aS)Hq6gmMJ+AN:[s/p$j2l1$[?Ik%?OX>g[4P>^lFu%TnSXZ4CcCVZ;\d9`E?"9+pMB6[71h5F!WL)/$a2qQTBp.<*i2e2'1':sIUS!WEo*[nL:jS"cb'KmVY9C\0mJ]0)SNhm'f\gTr(^8GH.TuM:S5TZ0"f3i::0TGI\C'>hrUpb^h^U6=CndeS^Ue('f-/@NRo)4:U]P=cL5UVcW&g[?>E4rfs&b9&$:_W'>2>#NE\=6#`*XH)-#jR8rjI+qKLkq`q9ca[KLT$LQWQC@?lO\31+uOX*GTEMFD+/1p,^:?H,qMrX;8MQ0GYP%F?ABpj41WjJL0*B9[bi8GX0L"aAX2:uJAU?XG&%pG*eM&a+YStXbaVHMSs?&N[u/@PY;#O#TBI;,3)7G:"CD\QS&f/7q$pAOS2+esY@+ZQ@@eA:G^GYP%F?AH=313N)t*r]D6Ae/5"K@aZ-i,p@GrB2.(agAnM)SU:2CGL&%\qWFU+8l!nR5K6V-Cl8cPGs2dDXa)G'>4$YR2oUtWIredA?QNn-;t,P*TU/:CGL&%g&YND`Ic\f`-LY]qg17qU[>?dj]I$P^Y>+MT//c)Y_/$>en63l"dFDgX-;t)OFUDFW9FP6C(c-KO33UHB_.s4$3eGGO:$)ag/)W9f3-_QUf4.`VTr`[/(^Gol2O4VD.%X[R_>3eI)dPI"QpY%D[?K8GClV?Q*:KHta_32[ZdYfp1XkBK]V_mS:U>IcM6rP^u)]Ug>,3USQ(fXRrjWIi_.F^G*Rg19d4F[F%XiPoeQ#@$P6lln+0'h$[aiB51,*tO+a@+a2OQ7DrSap2!&K2X-dMS;FgG/QiS"?li^^Z\2ZDkn(U[[on60(\rX07`&\Q\\V=VP+FQ<\?rl:-1]-5(VWYeuF9Jf7`Tai#!$1l0YQ&TQ_q*agEII[74?uF+]!sqP(*9+n5O7u,e:rCfCX3W9=Eo@Vi3dWk=t`!'7t/]uJ=47>,Na.BJ$StOTD.mUh`]XSGl7iMa]?7D2ii8jgR+)Vi:WQD?>C@BAKUs9ai;0_2c"d+gR+)&i:WQ??3f0tiXB/.C#cU@rI/6Cr5%\XA%W;Y-c?\2IacMVqkKX?$#p0Qh[K*;d%6>.nG:C#Y@G$Q@K`ml[.Ls)l2C=/fYQl4K>!<$6AQDiIacqb:P5/(#r.%`DoR,E]7geNGl;4]YJYPrEX?'%W2e`$+@e=-'tjN"L"G:q#YB[#+52)/Dg(^f68$+?&$pL$^5J(knG5KgYH(j`^Pe10Gl7ZHaZdQ,"TK2$]L-Q,E:>mhYK8--l\&SN#MS(GbLuL/n/XK-*PO%sXi<\#PZ2"?Fn`tLC49hs5KP;n8U[<=&k%$]rd,6hCa9B00njP=gk4Aj"$t`i]e*hrl^7,2r@oS]hZ+CbaW::dho-%EKnuh:7msY%mR&%ci#m.nV[)c7BGn)5\t?Q?oPDBam1Z&<^)U"pU,V))9%G7qouV4iJ0:>_ou&6;2MVG:U>IcM6IA+sP^iR8sp7g<#4<2#"0]jQMrL6$2PF7'T'%L=gi(rBDk2T:qr"l64e627;*f'I,C$=epA/H2(1*1G_/"a[]Y<&*C(i=HX],!Hqe2lBC6Q*BCRm>qDHI+r-?sC%:$Os.:n(,q]Jb&\lhat]2YdQ\9ighrD)#Sci,o?G?hVS?mR=r*@>)cXhJ7ADQ1OS(EA/bLkk&N:2D_hoIUilPdcfh6:PArfQ,]-'m-fC6LZ0f-/X.V?+mA?3b`>LS"$5Mm)*MqB9naY@EO^\mbW;]lEO&L+NRDPHhsi(h:6s3!"-,%]I&8TOJ2s(9WT2mhp2n;e/EFnL1m2eA_Wg,.Gl)''",^IH#[2>Y?tIno%L7tY2:'qH_HEF/rnS^fL+2J4DSNSn\FH=i\h8`f.-JZ`bqm34J".fD\a`D0WoY%rkd@[c&$[WjI'hh>.fmS(Np"j0AGDXr\hG6I[^"@O.P6HgmASO-#sj?E`t'i&+i5XQt#td9#*-G`C<&2nf4_n20#g3Oi#W)Qus)Hi<3i;(a)6E1c&G?D$TCom)7D)mAf.Ul!]qI\&nGm`,iU]Z09$R+H&AoN0jT;r(m"kqlNS],p52Ofa5e0u@7TqsCYb1Od)6s&;2UGDZX<5(pIb'tfRSb%pO39Wo9T8L8Z)QJZ!YDJcmV_3\Y_kV<4CrqKYXLK4]2^.PJFEOm`FfPbATfi`6-%?N#/npQNXD%U(*"3Gb&orlQ`_q5EE`!q-ase>CJ(`.otXY4!0=sm3PM1!o.U.A&S]0=0G,\s6@BYXpG`C;a\`n853^8R>=g[e3[K*G$97sl8X[;EEb#V3+8:KTq%'^mo)=\WKrPZ@Ol+@CYf6V3?FS5LZIsYY&I+l)U@BDT?IZ3e*MV!*$dbF*6&<1CQ3:6fRj7UMIH[YUoe)SG`]KUVVld%!NG.>d1a(r=OH,f0r5a1nbG.>A0a(r=OH-GU#=OVD8l#uG:1Sq28:4>?a26Tk($5-h6j?K:_#&?e=Y%_FkXg_.4#YOVI"Ph2P$#MaZ=d)l"d?K:_#5d*DI5C2@k]&1qmWU.W?]KV0tS[N7<>d^-`mCua%rhE83L\V>@m7'ZkYj8i)`,!"L$%!]Is3FbX1[p_7(s?4>35WGrR?(cBrG=b$4u+Wq`c/T:p[ocB9BT'ZpF4#YB0,VI=*;4?].84?>HIbV1#V!r2oodO]Q=b.c)6?qD)j!`p6C,nlg*)Hr2bSkL4t5QR`T=fD_B3)Qs7uoK%Ef5Hi&G@Y^NV[!F>6/qk1>MMd7Mm:sU;dOUo#Zl;ZA[gHH^LjAq9UA0N.odH9Y;#Gocgp0rL3l^5eT,;4PETLV4'qkLBiu&Q7nbQc&Y7Gm\_\Ki(l]Y>]5*!_1W4rOCj7UM\?6=t#7jRk]f6D_LQIdM`?U'#L]Z09$'tle->61qtqIEm8&+%TWCV2hC]nUYIDB`E5^`GRGb:QEu]T0:]%bSI%n2eR<,%1.?_%^%np[p#'tO?eG))]l*=#7_[hiBni+5f/&NWKI*K;0(Q@EpB7\iqW-8@rnbB-1i'pC]KZ-cYJ6WE-9,>louSk6SbBLIi-:75-[:((G%ne_)Qus+>3gZ,_=8GI:L[Y.D2'TC53Va`hgb9tmdTf,No7&=#[m:J\VSj^I1l8-hJ^)ip2f28XQT5%D/Tr0I0fH#.X2u/Q.P"ER9hU3P"P;0/\`$-)mt+;b6un$'dr=8Lo6l3KJ@-uhlZIdlO`ken8"XMf-bgV'6oMg-[<<XMf-dendstream endobj % 'FormXob.0fb62db63e29f7a22c3f1467db7a707b': class PDFImageXObject 308 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 326 /Length 6759 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 300 >> stream Gb"/lbE_*9(e+h66E*d$MAHq^".@,]d/.-_jMIdC"%'YR!8W"9j0nU\KQMqGkgHbqM?9/sZVAS4\"8]/1G1XXk/b'j+IOJ7JqIToN!g,Y3AN3H8ES"'i#nF4j+;noNf4>UOuY9M3(W2Q\DSKt,NFB.A<)TV%[&h-/iZDaaLL.NR3UaDK4L"$$P&=[1+kOWk/b'j+IOJ7JqIToN!g,Y3AN3HQlOBLp3O85H2h-j0p<2cp]G<@t0#B^D83r!J^)S>-n;N)"cK4EL,G[F(@1.mDA;Ud#%[+ph(/!A`%0sup)%.E0o49&?JGSBl]gkV="p,%OPSjWt5X"6$hBSgYUO[u-er0Y?P$'RDY(1iXl+KSXH%l;(ai#%u*$c21#]Pl!SGr$cW2H9EH\@W]IrLLnSc6Gk13`R"#Kbcc*ulPIVfT9Le?_p=4[R]2/KKh6/_;o9i\.>dU?Qi!7cer40W+585/+7(@'%8Wr=?l)Tqs^c!h(#o-)X/+ZX<2T;I<`0LVf1LDkntJB+*GeUGS./&4VMcglGEa6`DHLs]XN*!Vf1UGko$[Wp>li/K;VrI"iN\^7CpH\ck[/taV=!*XZ(kl81%!="<>pP3(W1&[qr`"Pg<.o4[Rmh&(SRO&C#C+=KSEO(Tft[Boe(3,k5ePTTiGgb+C'SSK-BhKsp?Vd",%>U8-WKB+6@RBVE*8ENIhi#oQsH7&.EDTlJ*+_:6;$kCjIk'hZj>bAt,@:Uahgti4??P:gDiBR4Z^.utrf@T?apFWBIP8ns4fI7^&)'#`Jk;`6]R\HQ=:d7hBp#Q+D[6EkU^2L4M?o9t'(B=J_Z*,WiE'm^Z+>--3)Z19O0HC%l#c[kpQ%VDPY>Rg(1k3NQt.D!,l`Q[8:?S9OB-tYU\+6AZDcU"^&ZdLk^6/+RC9T%g.q#*It%"-b^YClCLe1A-9#N`\0h't8S@d+kD^'`X.&.Qb>ko;JhiZOXHSKf0)O.H_V1aF3[_a0mhA+":X=8=7-.[#F)[3LR%?lmE,-X@*N*,CD^E%(pbrNha\_48lcY*dAc*L$K4LqQM>,1!GF?_C6:3M'3lEm.ftlLTKQNF7f[A#+EG+UaOGo:X^d3"KFN)hO0A]i/MP23X5$_%C_>(tT3@Xn<&C*N(!r%_<&++IOIFYUcBY9U]*t8:!uX`&ME^QE1f>OtP2i/KDu=Kogr9"-EXg$S-`V36%sTP+&)?K1f7N=!Y^P9f3QlG&T`7;B.QTK,J1(?DZ-r1aFAE34MqL#Rs@Ke>40jbQfm\HLh!I8OeZU_0YsN+j#P/`5.TIAo"u1L*SV`#FETmTHQma_SIPi$W2Eek&O95#e7MfXOS.dB&*Mm-p'#f><`qjo[64G:e>gS>4M0[VD6MSVJQh>jK5ENE-s?2Ia0OKn_G(siu;ng.Bc:o_R8E.ji>t^lH7u2ElI2VbPP/'XEWn!If#XT`nP7@>GJk?%_c$=p3_7mcQhh-L;e4%76QT+7_OZhR^8NPATj\+JX!Op?-KV`i1RKP/"h869i9oPHMNn7Z=N\3LPu\qRU3\t-&'Ck&jUnGFBgEFNNt/($VB6o]iiUa)LO;[?ug]D1"q6n[2I_:^qh(,8`e))HJ]#YJ5a"[KBDu*0;Rd]I>!hRiS[V0&fQqM-lcJa4[MM6&p7%V/K)aDnbcZa#*$3UKAJn5WT)ifL*S\b#FB3%THVF5_SN(G4(q/_UMt1O/.NS]UaR3flYh9e'/>K+FLQd!t/RRTTea;^FSm,PmtAm:M2bgp?jj]_>(@9ZaqQeVuG3,l+`7`@$R*'B-"Ft[[\J;&>Y*tJjigo."P]FN(5g^?4!G\]n=Kl&Mf/m,8r05S0rW=-3GB#)*a&$!UI=4+iBpVN5?'YVAsYc[<8Qs8S.]&U6u-p8%Uf&@1L"5O?3H$aahHXU.5PrEpB_t]m^3cRtKUP?>rp=;;>=Z$]/YBWHF3j5J(#Na-+mY.dt\_F,5*F*VRo?N6+eB+Z7.USJ><2P*($O`#p`N;IdF"cm^YDhl&EA1j&a^GskXqGY!F'lPHObL\DX(\U/Qi$m`HGAZ%f6q&obJV0kNK,p73B9E&AY?:s^W+[M>E:>DtYdZCNXsK>`34PdJV>s?p#HN$bKqb0RiDfjU[so*G(SLfoV)qrBE3NfQIa`e-C40@D`>dGV'9>?.866%8WUhbp83(W1+n#24Qp#@0_-,$WB']L7',m3'G$?;0OOth326N/_$m&hS/9#^i9ah/Jq91'[EZXb>#ONa)SO@(0$P$'OW7RJ.@ZXbbKJ2g)3a`oKLP.<=h%#&5p%#Op)B`OTSK0R'=q?pB>J*i,T2GmP"E7#S]%QT$:O@r%$i*q%gL88Ap%PAiiU[N*:7+*Ij#FA0Fd#^)?_SP?q)B+c;U2Y&X3>e,Y8]q)lG^DuAN5ECWrB"#0@W505dg7*l!__r6'3S9dNi8mNj(GA<'caTB].%?Y`L)I6Q`;>H*4/7Zcn$&:(^D]oMhf&s!]+iC6=,S!>d28NlWl9IVr[C:,HoeWMQ2oRebG+&af)$g<\<4d2tNuWidUntcWZr?]Y[Olqe4cnq?dHZXDuVADi[EPG]oDamjU&:eKh,g5Z-)HI7,@r'e!!UQ]EG_io'*UH.6oM^:s72m-Q7&7_P_N7p1tB(uKSK$.%)tcfL6>8%2ON@NK%%$oHg_KpecQghls<%dGC/L?X_EpADZ9F4QNA2[c"t=eDeMCW_cDC3jB8moJ9'hH&U.,iG=UO'0Yn_u&!Iio4=YM6Cn^'l,&T/3,Gj-o4:NbZg)kI]R+(b7$46DnBhu&gXm_#^4sqm5(IgTC(7.WO37rU#u!T3*U-D_pjTsOk9o(k3jDX\FM8%qnZKKi#jl*N=KtFRoqJtP?nK\T5.:e``_Ee,>,:bh4*Q"GbQ:P=*K/o"<D?H[!Yh.&_KN/ZUFFaJjYd7E>LA?aoel^.JH]BiOGrer:)cMBNFr`k'?MdBPKS/B_"\%;7Bd\;/So5eep*?,rih$&gCCNI]5Gt#:[XrZEuCiHj!;cgE30t$4b;!nqEI]nCp>#]C=GGfANU2a!@hS8$[jrOEg>-7`iY/\pfbrE#;*U#ah8H>0@O.>.f62=9]N1<=f_%Z>21UWcSkprPH47XifV!YW<*Q5D!`SD<*Wb,]?JjHf7aq[;.c*1Wt_95`#'/g1c8;2?#\.7jtLt.4&Q"=QZUUQ^nKr2QP:KJ9*"cfd;cQ2XC'SDK7arOLTtmP*PN_M>CFqnMgYM:=;iQB;Y0.;q@EBm`M2n[2JA:eWL7L=t"o"_80.lIga*/9&q!?4lAK7gtS&HmsEd2qgQQNk"bQ7VJi?B:=8L!6.lZrl@"01f+@PfKt[@bTQcmaC*)k-,Z.Tn^C/t--,NsD1L:=BgQXAN\l9SVSs[>EdQr@s5C[*GhUP7Z/FU2)bF8[UN*H`#://7!HY2U-[;JpW*qSO*nbM6oqdX\'K(+>(:Y[?m:XO)7p"us]]Jddo4-0YarZ:*ms3gH#r")e18V+XWj'X1G4Zikud:Ef.lSdiCF,]@kb]@j07?1!sd`aK/O&pZKI/YAih"TCEhnK"_iLTs9#daa[C-j4@q,ALATpe*/B:[?%TXcl(\Bu@nY>f,plS`QC,r/lZQ1m/P0P>bV<*8\(!5;?Vj$CRh-/n3Xa@[l?]co.+7fVa4rW[Y]`"f,;,D"AiCsT[Mh@9#oQ02;ih1=r^)YWeSrq3OgCp/iRA(LHqVlnK(fT/V-A9sh_+Fk,\T;eo7CRdAO]oqD8.+5.?-h%YeoFSNQc#Hm)tM(u_OD*?(C)H&ki^5_EcCc.+%`lMUPAO"mdbBn+5=f($jTLLEf8/&HpU%I$^MRbKMWn5YS)M9m[PO-:T6c%(]Q])bA05O[#\[9YS'ImTJlH2TGdWqeTc1M+3!5I-'$VDDendstream endobj % 'Page26': class PDFPage 309 0 obj % Page dictionary << /Annots [ 306 0 R ] /Contents 461 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.0fb62db63e29f7a22c3f1467db7a707b 308 0 R /FormXob.b0457f0a414020c0d759fda1eca85a59 307 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page27': class PDFPage 310 0 obj % Page dictionary << /Contents 462 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER275': class LinkAnnotation 311 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 312 0 R /XYZ 62.69291 599.5236 0 ] /Rect [ 451.8598 687.7736 529.8027 699.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page28': class PDFPage 312 0 obj % Page dictionary << /Annots [ 311 0 R ] /Contents 463 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'F7': class PDFType1Font 313 0 obj % Font Courier-Bold << /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F7 /Subtype /Type1 /Type /Font >> endobj % 'Page29': class PDFPage 314 0 obj % Page dictionary << /Contents 464 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page30': class PDFPage 315 0 obj % Page dictionary << /Contents 465 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER276': class PDFDictionary 316 0 obj << /A << /S /URI /Type /Action /URI (http://developer.apple.com/xcode) >> /Border [ 0 0 0 ] /Rect [ 255.6119 512.3736 283.9619 524.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER277': class PDFDictionary 317 0 obj << /A << /S /URI /Type /Action /URI (http://www.microsoft.com/express/) >> /Border [ 0 0 0 ] /Rect [ 191.0829 440.3736 288.3429 452.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER278': class PDFDictionary 318 0 obj << /A << /S /URI /Type /Action /URI (http://sourceforge.net/downloads/mingw/) >> /Border [ 0 0 0 ] /Rect [ 85.69291 347.3736 121.8029 359.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER279': class PDFDictionary 319 0 obj << /A << /S /URI /Type /Action /URI (http://mingw-w64.sourceforge.net/) >> /Border [ 0 0 0 ] /Rect [ 85.69291 329.3736 143.4729 341.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER280': class PDFDictionary 320 0 obj << /A << /S /URI /Type /Action /URI (http://tdm-gcc.tdragon.net/) >> /Border [ 0 0 0 ] /Rect [ 85.69291 311.3736 135.6829 323.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page31': class PDFPage 321 0 obj % Page dictionary << /Annots [ 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R ] /Contents 466 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER281': class PDFDictionary 322 0 obj << /A << /S /URI /Type /Action /URI (http://ftp.linuxfoundation.org/pub/lsb/bundles/released-4.0.0/sdk/) >> /Border [ 0 0 0 ] /Rect [ 350.0629 339.1736 406.7629 351.1736 ] /Subtype /Link /Type /Annot >> endobj % 'Page32': class PDFPage 323 0 obj % Page dictionary << /Annots [ 322 0 R ] /Contents 467 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER282': class PDFDictionary 324 0 obj << /A << /S /URI /Type /Action /URI (http://docs.python.org/2.7/library/modulefinder.html) >> /Border [ 0 0 0 ] /Rect [ 62.69291 705.7736 123.7465 717.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER283': class LinkAnnotation 325 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 332 0 R /XYZ 62.69291 346.2236 0 ] /Rect [ 218.4607 705.7736 239.5807 717.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page33': class PDFPage 326 0 obj % Page dictionary << /Annots [ 324 0 R 325 0 R ] /Contents 468 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER284': class LinkAnnotation 327 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 292 0 R /XYZ 62.69291 339.3236 0 ] /Rect [ 118.8329 690.7736 221.0929 702.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER285': class PDFDictionary 328 0 obj << /A << /S /URI /Type /Action /URI (http://www.microsoft.com/com/default.mspx) >> /Border [ 0 0 0 ] /Rect [ 334.9013 300.7736 408.447 312.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page34': class PDFPage 329 0 obj % Page dictionary << /Annots [ 327 0 R 328 0 R ] /Contents 469 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER286': class LinkAnnotation 330 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 273 0 R /XYZ 62.69291 346.3236 0 ] /Rect [ 83.26291 355.9736 161.0629 367.9736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER287': class PDFDictionary 331 0 obj << /A << /S /URI /Type /Action /URI (http://docs.python.org/2.7/library/imputil.html) >> /Border [ 0 0 0 ] /Rect [ 382.6304 307.9736 415.251 319.9736 ] /Subtype /Link /Type /Annot >> endobj % 'Page35': class PDFPage 332 0 obj % Page dictionary << /Annots [ 330 0 R 331 0 R ] /Contents 470 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page36': class PDFPage 333 0 obj % Page dictionary << /Contents 471 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page37': class PDFPage 334 0 obj % Page dictionary << /Contents 472 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page38': class PDFPage 335 0 obj % Page dictionary << /Contents 473 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 435 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'R336': class PDFCatalog 336 0 obj % Document Root << /Outlines 338 0 R /PageLabels 474 0 R /PageMode /UseNone /Pages 435 0 R /Type /Catalog >> endobj % 'R337': class PDFInfo 337 0 obj << /Author (David Cortesi \(based on structure by Giovanni Bajo & William Caban \(based on Gordon McMillan's manual\)\)) /CreationDate (D:20130905110136-01'00') /Creator (\(unspecified\)) /Keywords () /Producer (ReportLab PDF Library - www.reportlab.com) /Subject (\(unspecified\)) /Title (PyInstaller Manual) >> endobj % 'R338': class PDFOutlines 338 0 obj << /Count 116 /First 339 0 R /Last 421 0 R /Type /Outlines >> endobj % 'Outline.0': class OutlineEntryObject 339 0 obj << /Dest [ 210 0 R /XYZ 62.69291 291.0236 0 ] /Next 340 0 R /Parent 338 0 R /Title (Requirements) >> endobj % 'Outline.1': class OutlineEntryObject 340 0 obj << /Dest [ 218 0 R /XYZ 62.69291 623.0236 0 ] /Next 341 0 R /Parent 338 0 R /Prev 339 0 R /Title (License) >> endobj % 'Outline.2': class OutlineEntryObject 341 0 obj << /Dest [ 218 0 R /XYZ 62.69291 428.0236 0 ] /Next 342 0 R /Parent 338 0 R /Prev 340 0 R /Title (How To Contribute) >> endobj % 'Outline.3': class OutlineEntryObject 342 0 obj << /Count 5 /Dest [ 218 0 R /XYZ 62.69291 341.0236 0 ] /First 343 0 R /Last 347 0 R /Next 348 0 R /Parent 338 0 R /Prev 341 0 R /Title (Installing PyInstaller) >> endobj % 'Outline.97.0': class OutlineEntryObject 343 0 obj << /Count 1 /Dest [ 218 0 R /XYZ 62.69291 290.0236 0 ] /First 344 0 R /Last 344 0 R /Next 345 0 R /Parent 342 0 R /Title (Installing Using pip) >> endobj % 'Outline.98.0': class OutlineEntryObject 344 0 obj << /Dest [ 226 0 R /XYZ 62.69291 753.0236 0 ] /Parent 343 0 R /Title (Installing in Windows) >> endobj % 'Outline.97.1': class OutlineEntryObject 345 0 obj << /Dest [ 226 0 R /XYZ 62.69291 456.0236 0 ] /Next 346 0 R /Parent 342 0 R /Prev 343 0 R /Title (Installing from the archive) >> endobj % 'Outline.97.2': class OutlineEntryObject 346 0 obj << /Dest [ 226 0 R /XYZ 62.69291 240.0236 0 ] /Next 347 0 R /Parent 342 0 R /Prev 345 0 R /Title (Verifying the installation) >> endobj % 'Outline.97.3': class OutlineEntryObject 347 0 obj << /Dest [ 242 0 R /XYZ 62.69291 681.0236 0 ] /Parent 342 0 R /Prev 346 0 R /Title (Installed commands) >> endobj % 'Outline.4': class OutlineEntryObject 348 0 obj << /Count 7 /Dest [ 242 0 R /XYZ 62.69291 417.0236 0 ] /First 349 0 R /Last 355 0 R /Next 356 0 R /Parent 338 0 R /Prev 342 0 R /Title (Overview: What PyInstaller Does and How It Does It) >> endobj % 'Outline.99.0': class OutlineEntryObject 349 0 obj << /Dest [ 242 0 R /XYZ 62.69291 234.0236 0 ] /Next 350 0 R /Parent 348 0 R /Title (Analysis: Finding the Files Your Program Needs) >> endobj % 'Outline.99.1': class OutlineEntryObject 350 0 obj << /Dest [ 244 0 R /XYZ 62.69291 609.0236 0 ] /Next 351 0 R /Parent 348 0 R /Prev 349 0 R /Title (Bundling to One Folder) >> endobj % 'Outline.99.2': class OutlineEntryObject 351 0 obj << /Dest [ 244 0 R /XYZ 62.69291 369.0236 0 ] /Next 352 0 R /Parent 348 0 R /Prev 350 0 R /Title (Bundling to One File) >> endobj % 'Outline.99.3': class OutlineEntryObject 352 0 obj << /Dest [ 244 0 R /XYZ 62.69291 267.0236 0 ] /Next 353 0 R /Parent 348 0 R /Prev 351 0 R /Title (How the One-Folder Program Works) >> endobj % 'Outline.99.4': class OutlineEntryObject 353 0 obj << /Dest [ 246 0 R /XYZ 62.69291 753.0236 0 ] /Next 354 0 R /Parent 348 0 R /Prev 352 0 R /Title (How the One-File Program Works) >> endobj % 'Outline.99.5': class OutlineEntryObject 354 0 obj << /Dest [ 246 0 R /XYZ 62.69291 429.0236 0 ] /Next 355 0 R /Parent 348 0 R /Prev 353 0 R /Title (Console or not?) >> endobj % 'Outline.99.6': class OutlineEntryObject 355 0 obj << /Dest [ 246 0 R /XYZ 62.69291 303.0236 0 ] /Parent 348 0 R /Prev 354 0 R /Title (Hiding the Source Code) >> endobj % 'Outline.5': class OutlineEntryObject 356 0 obj << /Count 15 /Dest [ 246 0 R /XYZ 62.69291 189.0236 0 ] /First 357 0 R /Last 369 0 R /Next 372 0 R /Parent 338 0 R /Prev 348 0 R /Title (Using PyInstaller) >> endobj % 'Outline.100.0': class OutlineEntryObject 357 0 obj << /Count 5 /Dest [ 248 0 R /XYZ 62.69291 425.8236 0 ] /First 358 0 R /Last 362 0 R /Next 363 0 R /Parent 356 0 R /Title (Options) >> endobj % 'Outline.101.0': class OutlineEntryObject 358 0 obj << /Dest [ 248 0 R /XYZ 62.69291 395.8236 0 ] /Next 359 0 R /Parent 357 0 R /Title (General Options) >> endobj % 'Outline.101.1': class OutlineEntryObject 359 0 obj << /Dest [ 252 0 R /XYZ 62.69291 627.0236 0 ] /Next 360 0 R /Parent 357 0 R /Prev 358 0 R /Title (Options for Finding Imported Modules and Libraries) >> endobj % 'Outline.101.2': class OutlineEntryObject 360 0 obj << /Dest [ 252 0 R /XYZ 62.69291 354.0236 0 ] /Next 361 0 R /Parent 357 0 R /Prev 359 0 R /Title (Options for the Executable Output) >> endobj % 'Outline.101.3': class OutlineEntryObject 361 0 obj << /Dest [ 258 0 R /XYZ 62.69291 596.8236 0 ] /Next 362 0 R /Parent 357 0 R /Prev 360 0 R /Title (Options for Windows apps) >> endobj % 'Outline.101.4': class OutlineEntryObject 362 0 obj << /Dest [ 258 0 R /XYZ 62.69291 275.8236 0 ] /Parent 357 0 R /Prev 361 0 R /Title (Options for Mac OS X apps) >> endobj % 'Outline.100.1': class OutlineEntryObject 363 0 obj << /Count 3 /Dest [ 258 0 R /XYZ 62.69291 203.8236 0 ] /First 364 0 R /Last 366 0 R /Next 367 0 R /Parent 356 0 R /Prev 357 0 R /Title (Building Mac OS X App Bundles) >> endobj % 'Outline.102.0': class OutlineEntryObject 364 0 obj << /Dest [ 261 0 R /XYZ 62.69291 609.0236 0 ] /Next 365 0 R /Parent 363 0 R /Title (Setting a Custom Icon) >> endobj % 'Outline.102.1': class OutlineEntryObject 365 0 obj << /Dest [ 261 0 R /XYZ 62.69291 408.0236 0 ] /Next 366 0 R /Parent 363 0 R /Prev 364 0 R /Title (Setting the Supported Document Types) >> endobj % 'Outline.102.2': class OutlineEntryObject 366 0 obj << /Dest [ 261 0 R /XYZ 62.69291 351.0236 0 ] /Parent 363 0 R /Prev 365 0 R /Title (Getting the Opened Document Names) >> endobj % 'Outline.100.2': class OutlineEntryObject 367 0 obj << /Dest [ 261 0 R /XYZ 62.69291 198.0236 0 ] /Next 368 0 R /Parent 356 0 R /Prev 363 0 R /Title (Shortening the Command) >> endobj % 'Outline.100.3': class OutlineEntryObject 368 0 obj << /Dest [ 265 0 R /XYZ 62.69291 566.6236 0 ] /Next 369 0 R /Parent 356 0 R /Prev 367 0 R /Title (Using UPX) >> endobj % 'Outline.100.4': class OutlineEntryObject 369 0 obj << /Count 2 /Dest [ 265 0 R /XYZ 62.69291 312.8661 0 ] /First 370 0 R /Last 371 0 R /Parent 356 0 R /Prev 368 0 R /Title (Supporting Multiple Platforms) >> endobj % 'Outline.103.0': class OutlineEntryObject 370 0 obj << /Dest [ 265 0 R /XYZ 62.69291 252.8661 0 ] /Next 371 0 R /Parent 369 0 R /Title (Supporting Multiple Python Environments) >> endobj % 'Outline.103.1': class OutlineEntryObject 371 0 obj << /Dest [ 273 0 R /XYZ 62.69291 651.0236 0 ] /Parent 369 0 R /Prev 370 0 R /Title (Supporting Multiple Operating Systems) >> endobj % 'Outline.6': class OutlineEntryObject 372 0 obj << /Count 5 /Dest [ 273 0 R /XYZ 62.69291 342.8236 0 ] /First 373 0 R /Last 377 0 R /Next 378 0 R /Parent 338 0 R /Prev 356 0 R /Title (Using Spec Files) >> endobj % 'Outline.104.0': class OutlineEntryObject 373 0 obj << /Count 2 /Dest [ 275 0 R /XYZ 62.69291 471.0236 0 ] /First 374 0 R /Last 375 0 R /Next 376 0 R /Parent 372 0 R /Title (Spec File Operation) >> endobj % 'Outline.105.0': class OutlineEntryObject 374 0 obj << /Dest [ 276 0 R /XYZ 62.69291 663.0236 0 ] /Next 375 0 R /Parent 373 0 R /Title (TOC Class \(Table of Contents\)) >> endobj % 'Outline.105.1': class OutlineEntryObject 375 0 obj << /Dest [ 276 0 R /XYZ 62.69291 169.6236 0 ] /Parent 373 0 R /Prev 374 0 R /Title (The Tree Class) >> endobj % 'Outline.104.1': class OutlineEntryObject 376 0 obj << /Dest [ 277 0 R /XYZ 62.69291 495.8236 0 ] /Next 377 0 R /Parent 372 0 R /Prev 373 0 R /Title (Adding Files to the Bundle) >> endobj % 'Outline.104.2': class OutlineEntryObject 377 0 obj << /Dest [ 284 0 R /XYZ 62.69291 753.0236 0 ] /Parent 372 0 R /Prev 376 0 R /Title (Giving Run-time Python Options) >> endobj % 'Outline.7': class OutlineEntryObject 378 0 obj << /Count 12 /Dest [ 284 0 R /XYZ 62.69291 417.8236 0 ] /First 379 0 R /Last 386 0 R /Next 391 0 R /Parent 338 0 R /Prev 372 0 R /Title (When Things Go Wrong) >> endobj % 'Outline.106.0': class OutlineEntryObject 379 0 obj << /Dest [ 284 0 R /XYZ 62.69291 384.8236 0 ] /Next 380 0 R /Parent 378 0 R /Title (Recipes and Examples for Specific Problems) >> endobj % 'Outline.106.1': class OutlineEntryObject 380 0 obj << /Dest [ 284 0 R /XYZ 62.69291 240.8236 0 ] /Next 381 0 R /Parent 378 0 R /Prev 379 0 R /Title (Getting the Latest Version) >> endobj % 'Outline.106.2': class OutlineEntryObject 381 0 obj << /Count 4 /Dest [ 286 0 R /XYZ 62.69291 753.0236 0 ] /First 382 0 R /Last 385 0 R /Next 386 0 R /Parent 378 0 R /Prev 380 0 R /Title (Finding out What Went Wrong) >> endobj % 'Outline.107.0': class OutlineEntryObject 382 0 obj << /Dest [ 286 0 R /XYZ 62.69291 723.0236 0 ] /Next 383 0 R /Parent 381 0 R /Title (Build-time Messages) >> endobj % 'Outline.107.1': class OutlineEntryObject 383 0 obj << /Dest [ 286 0 R /XYZ 62.69291 288.8236 0 ] /Next 384 0 R /Parent 381 0 R /Prev 382 0 R /Title (Build-Time Python Errors) >> endobj % 'Outline.107.2': class OutlineEntryObject 384 0 obj << /Dest [ 292 0 R /XYZ 62.69291 753.0236 0 ] /Next 385 0 R /Parent 381 0 R /Prev 383 0 R /Title (Getting Debug Messages) >> endobj % 'Outline.107.3': class OutlineEntryObject 385 0 obj << /Dest [ 292 0 R /XYZ 62.69291 612.0236 0 ] /Parent 381 0 R /Prev 384 0 R /Title (Getting Python's Verbose Imports) >> endobj % 'Outline.106.3': class OutlineEntryObject 386 0 obj << /Count 4 /Dest [ 292 0 R /XYZ 62.69291 501.0236 0 ] /First 387 0 R /Last 390 0 R /Parent 378 0 R /Prev 381 0 R /Title (Helping PyInstaller Find Modules) >> endobj % 'Outline.108.0': class OutlineEntryObject 387 0 obj << /Dest [ 292 0 R /XYZ 62.69291 471.0236 0 ] /Next 388 0 R /Parent 386 0 R /Title (Extending the Path) >> endobj % 'Outline.108.1': class OutlineEntryObject 388 0 obj << /Dest [ 292 0 R /XYZ 62.69291 336.8236 0 ] /Next 389 0 R /Parent 386 0 R /Prev 387 0 R /Title (Listing Hidden Imports) >> endobj % 'Outline.108.2': class OutlineEntryObject 389 0 obj << /Dest [ 295 0 R /XYZ 62.69291 753.0236 0 ] /Next 390 0 R /Parent 386 0 R /Prev 388 0 R /Title (Extending a Package's __path__) >> endobj % 'Outline.108.3': class OutlineEntryObject 390 0 obj << /Dest [ 295 0 R /XYZ 62.69291 546.0236 0 ] /Parent 386 0 R /Prev 389 0 R /Title (Changing Runtime Behavior) >> endobj % 'Outline.8': class OutlineEntryObject 391 0 obj << /Count 29 /Dest [ 300 0 R /XYZ 62.69291 753.0236 0 ] /First 392 0 R /Last 413 0 R /Next 421 0 R /Parent 338 0 R /Prev 378 0 R /Title (Advanced Topics) >> endobj % 'Outline.109.0': class OutlineEntryObject 392 0 obj << /Count 3 /Dest [ 300 0 R /XYZ 62.69291 720.0236 0 ] /First 393 0 R /Last 395 0 R /Next 396 0 R /Parent 391 0 R /Title (The Bootstrap Process in Detail) >> endobj % 'Outline.110.0': class OutlineEntryObject 393 0 obj << /Dest [ 300 0 R /XYZ 62.69291 636.0236 0 ] /Next 394 0 R /Parent 392 0 R /Title (Bootloader) >> endobj % 'Outline.110.1': class OutlineEntryObject 394 0 obj << /Dest [ 300 0 R /XYZ 62.69291 285.0236 0 ] /Next 395 0 R /Parent 392 0 R /Prev 393 0 R /Title (Running Python code) >> endobj % 'Outline.110.2': class OutlineEntryObject 395 0 obj << /Dest [ 302 0 R /XYZ 62.69291 753.0236 0 ] /Parent 392 0 R /Prev 394 0 R /Title (Python imports in a frozen app) >> endobj % 'Outline.109.1': class OutlineEntryObject 396 0 obj << /Dest [ 302 0 R /XYZ 62.69291 456.0236 0 ] /Next 397 0 R /Parent 391 0 R /Prev 392 0 R /Title (Adapting to being "frozen") >> endobj % 'Outline.109.2': class OutlineEntryObject 397 0 obj << /Dest [ 305 0 R /XYZ 62.69291 753.0236 0 ] /Next 398 0 R /Parent 391 0 R /Prev 396 0 R /Title (Accessing Data Files) >> endobj % 'Outline.109.3': class OutlineEntryObject 398 0 obj << /Dest [ 305 0 R /XYZ 62.69291 531.0236 0 ] /Next 399 0 R /Parent 391 0 R /Prev 397 0 R /Title (Capturing Version Data) >> endobj % 'Outline.109.4': class OutlineEntryObject 399 0 obj << /Count 3 /Dest [ 309 0 R /XYZ 62.69291 657.0236 0 ] /First 400 0 R /Last 402 0 R /Next 403 0 R /Parent 391 0 R /Prev 398 0 R /Title (Inspecting Archives) >> endobj % 'Outline.111.0': class OutlineEntryObject 400 0 obj << /Dest [ 309 0 R /XYZ 62.69291 549.0236 0 ] /Next 401 0 R /Parent 399 0 R /Title (ZlibArchive) >> endobj % 'Outline.111.1': class OutlineEntryObject 401 0 obj << /Dest [ 309 0 R /XYZ 62.69291 336.0236 0 ] /Next 402 0 R /Parent 399 0 R /Prev 400 0 R /Title (CArchive) >> endobj % 'Outline.111.2': class OutlineEntryObject 402 0 obj << /Dest [ 310 0 R /XYZ 62.69291 753.0236 0 ] /Parent 399 0 R /Prev 401 0 R /Title (Using pyi-archive_viewer) >> endobj % 'Outline.109.5': class OutlineEntryObject 403 0 obj << /Dest [ 310 0 R /XYZ 62.69291 421.2236 0 ] /Next 404 0 R /Parent 391 0 R /Prev 399 0 R /Title (Inspecting Executables) >> endobj % 'Outline.109.6': class OutlineEntryObject 404 0 obj << /Count 2 /Dest [ 310 0 R /XYZ 62.69291 283.2236 0 ] /First 405 0 R /Last 406 0 R /Next 407 0 R /Parent 391 0 R /Prev 403 0 R /Title (Multipackage Bundles) >> endobj % 'Outline.112.0': class OutlineEntryObject 405 0 obj << /Dest [ 312 0 R /XYZ 62.69291 597.0236 0 ] /Next 406 0 R /Parent 404 0 R /Title (MERGE Function) >> endobj % 'Outline.112.1': class OutlineEntryObject 406 0 obj << /Dest [ 312 0 R /XYZ 62.69291 404.4661 0 ] /Parent 404 0 R /Prev 405 0 R /Title (Example MERGE spec file) >> endobj % 'Outline.109.7': class OutlineEntryObject 407 0 obj << /Dest [ 314 0 R /XYZ 62.69291 511.4236 0 ] /Next 408 0 R /Parent 391 0 R /Prev 404 0 R /Title (Using Hook Files) >> endobj % 'Outline.109.8': class OutlineEntryObject 408 0 obj << /Dest [ 314 0 R /XYZ 62.69291 217.4236 0 ] /Next 409 0 R /Parent 391 0 R /Prev 407 0 R /Title (Hooks in Detail) >> endobj % 'Outline.109.9': class OutlineEntryObject 409 0 obj << /Count 3 /Dest [ 321 0 R /XYZ 62.69291 753.0236 0 ] /First 410 0 R /Last 412 0 R /Next 413 0 R /Parent 391 0 R /Prev 408 0 R /Title (Building the Bootloader) >> endobj % 'Outline.113.0': class OutlineEntryObject 410 0 obj << /Dest [ 321 0 R /XYZ 62.69291 663.0236 0 ] /Next 411 0 R /Parent 409 0 R /Title (Development tools) >> endobj % 'Outline.113.1': class OutlineEntryObject 411 0 obj << /Dest [ 321 0 R /XYZ 62.69291 301.6236 0 ] /Next 412 0 R /Parent 409 0 R /Prev 410 0 R /Title (Building) >> endobj % 'Outline.113.2': class OutlineEntryObject 412 0 obj << /Dest [ 323 0 R /XYZ 62.69291 633.0236 0 ] /Parent 409 0 R /Prev 411 0 R /Title (Linux Standard Base \(LSB\) binary) >> endobj % 'Outline.109.10': class OutlineEntryObject 413 0 obj << /Count 7 /Dest [ 326 0 R /XYZ 62.69291 753.0236 0 ] /First 414 0 R /Last 420 0 R /Parent 391 0 R /Prev 409 0 R /Title (Modulefinder Replacement - ImportTracker) >> endobj % 'Outline.114.0': class OutlineEntryObject 414 0 obj << /Dest [ 326 0 R /XYZ 62.69291 633.0236 0 ] /Next 415 0 R /Parent 413 0 R /Title (ImportTracker) >> endobj % 'Outline.114.1': class OutlineEntryObject 415 0 obj << /Dest [ 326 0 R /XYZ 62.69291 528.0236 0 ] /Next 416 0 R /Parent 413 0 R /Prev 414 0 R /Title (analyze_one\(\)) >> endobj % 'Outline.114.2': class OutlineEntryObject 416 0 obj << /Dest [ 326 0 R /XYZ 62.69291 393.0236 0 ] /Next 417 0 R /Parent 413 0 R /Prev 415 0 R /Title (Module Classes) >> endobj % 'Outline.114.3': class OutlineEntryObject 417 0 obj << /Dest [ 326 0 R /XYZ 62.69291 246.0236 0 ] /Next 418 0 R /Parent 413 0 R /Prev 416 0 R /Title (code scanning) >> endobj % 'Outline.114.4': class OutlineEntryObject 418 0 obj << /Dest [ 329 0 R /XYZ 62.69291 753.0236 0 ] /Next 419 0 R /Parent 413 0 R /Prev 417 0 R /Title (Hooks) >> endobj % 'Outline.114.5': class OutlineEntryObject 419 0 obj << /Dest [ 329 0 R /XYZ 62.69291 648.0236 0 ] /Next 420 0 R /Parent 413 0 R /Prev 418 0 R /Title (Warnings) >> endobj % 'Outline.114.6': class OutlineEntryObject 420 0 obj << /Dest [ 329 0 R /XYZ 62.69291 537.0236 0 ] /Parent 413 0 R /Prev 419 0 R /Title (Cross Reference) >> endobj % 'Outline.9': class OutlineEntryObject 421 0 obj << /Count 13 /Dest [ 329 0 R /XYZ 62.69291 456.0236 0 ] /First 422 0 R /Last 424 0 R /Parent 338 0 R /Prev 391 0 R /Title (Outdated Features) >> endobj % 'Outline.115.0': class OutlineEntryObject 422 0 obj << /Dest [ 329 0 R /XYZ 62.69291 393.0236 0 ] /Next 423 0 R /Parent 421 0 R /Title (Windows COM Server Support) >> endobj % 'Outline.115.1': class OutlineEntryObject 423 0 obj << /Dest [ 332 0 R /XYZ 62.69291 545.6236 0 ] /Next 424 0 R /Parent 421 0 R /Prev 422 0 R /Title (Building Optimized) >> endobj % 'Outline.115.2': class OutlineEntryObject 424 0 obj << /Count 10 /Dest [ 332 0 R /XYZ 62.69291 343.2236 0 ] /First 425 0 R /Last 434 0 R /Parent 421 0 R /Prev 423 0 R /Title (iu.py: An imputil Replacement) >> endobj % 'Outline.116.0': class OutlineEntryObject 425 0 obj << /Dest [ 333 0 R /XYZ 62.69291 753.0236 0 ] /Next 426 0 R /Parent 424 0 R /Title (ImportManager) >> endobj % 'Outline.116.1': class OutlineEntryObject 426 0 obj << /Dest [ 333 0 R /XYZ 62.69291 594.0236 0 ] /Next 427 0 R /Parent 424 0 R /Prev 425 0 R /Title (ImportDirector) >> endobj % 'Outline.116.2': class OutlineEntryObject 427 0 obj << /Dest [ 333 0 R /XYZ 62.69291 507.0236 0 ] /Next 428 0 R /Parent 424 0 R /Prev 426 0 R /Title (PathImportDirector) >> endobj % 'Outline.116.3': class OutlineEntryObject 428 0 obj << /Dest [ 333 0 R /XYZ 62.69291 402.0236 0 ] /Next 429 0 R /Parent 424 0 R /Prev 427 0 R /Title (Owner) >> endobj % 'Outline.116.4': class OutlineEntryObject 429 0 obj << /Dest [ 333 0 R /XYZ 62.69291 195.0236 0 ] /Next 430 0 R /Parent 424 0 R /Prev 428 0 R /Title (Packages) >> endobj % 'Outline.116.5': class OutlineEntryObject 430 0 obj << /Dest [ 334 0 R /XYZ 62.69291 669.0236 0 ] /Next 431 0 R /Parent 424 0 R /Prev 429 0 R /Title (Possibilities) >> endobj % 'Outline.116.6': class OutlineEntryObject 431 0 obj << /Dest [ 334 0 R /XYZ 62.69291 522.0236 0 ] /Next 432 0 R /Parent 424 0 R /Prev 430 0 R /Title (Compatibility) >> endobj % 'Outline.116.7': class OutlineEntryObject 432 0 obj << /Dest [ 334 0 R /XYZ 62.69291 441.0236 0 ] /Next 433 0 R /Parent 424 0 R /Prev 431 0 R /Title (Performance) >> endobj % 'Outline.116.8': class OutlineEntryObject 433 0 obj << /Dest [ 334 0 R /XYZ 62.69291 360.0236 0 ] /Next 434 0 R /Parent 424 0 R /Prev 432 0 R /Title (Limitations) >> endobj % 'Outline.116.9': class OutlineEntryObject 434 0 obj << /Dest [ 334 0 R /XYZ 62.69291 183.0236 0 ] /Parent 424 0 R /Prev 433 0 R /Title (iu Usage) >> endobj % 'R435': class PDFPages 435 0 obj % page tree << /Count 38 /Kids [ 6 0 R 81 0 R 156 0 R 210 0 R 218 0 R 226 0 R 242 0 R 244 0 R 246 0 R 248 0 R 252 0 R 258 0 R 261 0 R 265 0 R 273 0 R 275 0 R 276 0 R 277 0 R 284 0 R 286 0 R 292 0 R 295 0 R 300 0 R 302 0 R 305 0 R 309 0 R 310 0 R 312 0 R 314 0 R 315 0 R 321 0 R 323 0 R 326 0 R 329 0 R 332 0 R 333 0 R 334 0 R 335 0 R ] /Type /Pages >> endobj % 'R436': class PDFStream 436 0 obj % page stream << /Length 2778 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 4 Tm 147.1349 0 Td 24 TL /F2 20 Tf 0 0 0 rg (PyInstaller Manual) Tj T* -147.1349 0 Td ET Q Q q 1 0 0 1 62.69291 704.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 33.02937 0 Td (Version:) Tj T* -33.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (PyInstaller 2.1) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 689.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 18.58937 0 Td (Homepage:) Tj T* -18.58937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (http://www.pyinstaller.org) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 662.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 36.93937 0 Td (Author:) Tj T* -36.93937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 14 Tm 1.800866 Tw 12 TL /F1 10 Tf 0 0 0 rg (David Cortesi \(based on structure by Giovanni Bajo & William Caban \(based on) Tj T* 0 Tw (Gordon McMillan's manual\)\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 647.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 32.48937 0 Td (Contact:) Tj T* -32.48937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (rasky@develer.com) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 632.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 28.02937 0 Td (Revision:) Tj T* -28.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ($Rev$) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 617.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 12.47937 0 Td (Source URL:) Tj T* -12.47937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ($HeadURL$) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 602.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 22.48937 0 Td (Copyright:) Tj T* -22.48937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This document has been placed in the public domain.) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 196.7649 0 Td (PyInstaller Manual -) Tj T* -196.7649 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (1) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R437': class PDFStream 437 0 obj % page stream << /Length 9606 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 732.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Contents) Tj T* ET Q Q q 1 0 0 1 62.69291 96.02362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 615 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Requirements) Tj T* ET Q Q q 1 0 0 1 397.8898 615 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 597 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (License) Tj T* ET Q Q q 1 0 0 1 397.8898 597 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 579 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (How To Contribute) Tj T* ET Q Q q 1 0 0 1 397.8898 579 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 561 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Installing ) Tj /F3 10 Tf 0 0 0 rg (PyInstaller) Tj T* ET Q Q q 1 0 0 1 397.8898 561 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 543 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Installing Using pip) Tj T* ET Q Q q 1 0 0 1 397.8898 543 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 525 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Installing in Windows) Tj T* ET Q Q q 1 0 0 1 397.8898 525 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 507 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Installing from the archive) Tj T* ET Q Q q 1 0 0 1 397.8898 507 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 489 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Verifying the installation) Tj T* ET Q Q q 1 0 0 1 397.8898 489 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 471 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Installed commands) Tj T* ET Q Q q 1 0 0 1 397.8898 471 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 453 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Overview: What ) Tj /F3 10 Tf 0 0 0 rg (PyInstaller ) Tj /F2 10 Tf 0 0 .501961 rg (Does and How It Does It) Tj T* ET Q Q q 1 0 0 1 397.8898 453 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 435 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Analysis: Finding the Files Your Program Needs) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Bundling to One Folder) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Bundling to One File) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (How the One-Folder Program Works) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (How the One-File Program Works) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Console or not?) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Hiding the Source Code) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Using PyInstaller) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Options) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (General Options) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Options for Finding Imported Modules and Libraries) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (11) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Options for the Executable Output) Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (11) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Options for Windows apps) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Options for Mac OS X apps) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building Mac OS X App Bundles) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Setting a Custom Icon) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Setting the Supported Document Types) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Getting the Opened Document Names) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Shortening the Command) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Using UPX) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (14) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Supporting Multiple Platforms) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (14) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Supporting Multiple Python Environments) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (14) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Supporting Multiple Operating Systems) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (15) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Using Spec Files) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (15) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Spec File Operation) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (16) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 196.7649 0 Td (PyInstaller Manual -) Tj T* -196.7649 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (2) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R438': class PDFStream 438 0 obj % page stream << /Length 9637 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 105.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 633 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (TOC Class \(Table of Contents\)) Tj T* ET Q Q q 1 0 0 1 397.8898 633 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 615 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (The Tree Class) Tj T* ET Q Q q 1 0 0 1 397.8898 615 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 597 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Adding Files to the Bundle) Tj T* ET Q Q q 1 0 0 1 397.8898 597 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (18) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 579 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Giving Run-time Python Options) Tj T* ET Q Q q 1 0 0 1 397.8898 579 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 561 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (When Things Go Wrong) Tj T* ET Q Q q 1 0 0 1 397.8898 561 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 543 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Recipes and Examples for Specific Problems) Tj T* ET Q Q q 1 0 0 1 397.8898 543 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 525 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Getting the Latest Version) Tj T* ET Q Q q 1 0 0 1 397.8898 525 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 507 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Finding out What Went Wrong) Tj T* ET Q Q q 1 0 0 1 397.8898 507 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (20) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 489 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Build-time Messages) Tj T* ET Q Q q 1 0 0 1 397.8898 489 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (20) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 471 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Build-Time Python Errors) Tj T* ET Q Q q 1 0 0 1 397.8898 471 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (20) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 453 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Getting Debug Messages) Tj T* ET Q Q q 1 0 0 1 397.8898 453 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 435 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Getting Python's Verbose Imports) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Helping PyInstaller Find Modules) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Extending the Path) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Listing Hidden Imports) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Extending a Package's ) Tj /F4 10 Tf 0 0 0 rg (__path__) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (22) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Changing Runtime Behavior) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (22) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Advanced Topics) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (The Bootstrap Process in Detail) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Bootloader) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Running Python code) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Python imports in a frozen app) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (24) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Adapting to being "frozen") Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (24) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Accessing Data Files) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (25) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Capturing Version Data) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (25) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Inspecting Archives) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (26) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (ZlibArchive) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (26) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (CArchive) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (26) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Using pyi-archive_viewer) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (27) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Inspecting Executables) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (27) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Multipackage Bundles) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (27) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (MERGE Function) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (28) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Example MERGE spec file) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (28) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Using Hook Files) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (29) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Hooks in Detail) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (29) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building the Bootloader) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 196.7649 0 Td (PyInstaller Manual -) Tj T* -196.7649 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (3) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R439': class PDFStream 439 0 obj % page stream << /Length 9581 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 303.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 435 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Development tools) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Linux Standard Base \(LSB\) binary) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (32) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Modulefinder Replacement - ImportTracker) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (33) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (ImportTracker) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (33) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (analyze_one\(\)) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (33) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Module Classes) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (33) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (code scanning) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (33) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Hooks) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (34) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Warnings) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (34) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Cross Reference) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (34) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Outdated Features) Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 60.88 0 Td (34) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Windows COM Server Support) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (34) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building Optimized) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (35) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 20 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (iu.py) Tj /F1 10 Tf 0 0 .501961 rg (: An ) Tj /F5 10 Tf (imputil ) Tj /F1 10 Tf (Replacement) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (35) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (ImportManager) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (36) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (ImportDirector) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (36) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (PathImportDirector) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (36) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 40 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (Owner) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (36) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Packages) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (36) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Possibilities) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (37) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Compatibility) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (37) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Performance) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (37) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Limitations) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (37) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (iu Usage) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (37) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 62.69291 270.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Requirements) Tj T* ET Q Q q 1 0 0 1 62.69291 252.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Windows) Tj T* ET Q Q q 1 0 0 1 62.69291 213.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Windows XP or newer.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (PyWin32 ) Tj 0 0 0 rg (Python extensions for Windows is needed for users of Python 2.6 and later.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 197.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Mac OS X) Tj T* ET Q Q q 1 0 0 1 62.69291 176.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 8 Tm T* ET q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Mac OS X 10.4 \(Tiger\) or newer \(Leopard, Snow Leopard, Lion, Mountain Lion\).) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 160.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Linux) Tj T* ET Q Q q 1 0 0 1 62.69291 121.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ldd - Console application to print the shared libraries required by each program or shared library.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (objdump - Console application to display information from object files.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 105.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Solaris) Tj T* ET Q Q q 1 0 0 1 287.6378 90.02362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 6 cm Q q 1 0 0 1 20 6 cm Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 164.2549 0 Td (PyInstaller Manual - Requirements) Tj T* -164.2549 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (4) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R440': class PDFStream 440 0 obj % page stream << /Length 7035 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 720.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 20 Tm T* ET q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ldd) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (objdump) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 704.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (AIX) Tj T* ET Q Q q 1 0 0 1 62.69291 635.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 56 Tm T* ET q 1 0 0 1 20 60 cm Q q 1 0 0 1 20 60 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .593318 Tw (AIX 6.1 or newer. Python executables created using PyInstaller on AIX 6.1 should work on AIX) Tj T* 0 Tw (5.2/5.3.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ldd) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (objdump) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 602.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (License) Tj T* ET Q Q q 1 0 0 1 62.69291 572.0236 cm q BT 1 0 0 1 0 14 Tm .01104 Tw 12 TL /F1 10 Tf 0 0 0 rg (PyInstaller is distributed under the ) Tj 0 0 .501961 rg (GPL License ) Tj 0 0 0 rg (but it has an exception such that you can use it to compile) Tj T* 0 Tw (commercial products.) Tj T* ET Q Q q 1 0 0 1 62.69291 554.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In a nutshell, the license is GPL for the source code with the exception that:) Tj T* ET Q Q q 1 0 0 1 62.69291 548.0236 cm Q q 1 0 0 1 62.69291 458.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 84 cm Q q 1 0 0 1 20 84 cm Q q 1 0 0 1 20 72 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You may use PyInstaller to compile commercial applications out of your source code.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 66 cm Q q 1 0 0 1 20 42 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.097674 Tw (The resulting binaries generated by PyInstaller from your source code can be shipped with) Tj T* 0 Tw (whatever license you want.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 36 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .705984 Tw (You may modify PyInstaller for your own needs but changes to the PyInstaller source code fall) Tj T* 0 Tw 2.485318 Tw (under the terms of the GPL license. That is, if you distribute your modifications you must) Tj T* 0 Tw (distribute them under GPL terms.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 458.0236 cm Q q 1 0 0 1 62.69291 440.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (For updated information or clarification see our ) Tj 0 0 .501961 rg (FAQ ) Tj 0 0 0 rg (at the ) Tj 0 0 .501961 rg (PyInstaller ) Tj 0 0 0 rg (home page.) Tj T* ET Q Q q 1 0 0 1 62.69291 407.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (How To Contribute) Tj T* ET Q Q q 1 0 0 1 62.69291 353.0236 cm q BT 1 0 0 1 0 38 Tm .652126 Tw 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (is an open-source project that is created and maintained by volunteers. At ) Tj 0 0 .501961 rg (Pyinstaller.org ) Tj 0 0 0 rg (you) Tj T* 0 Tw 1.289986 Tw (find links to the mailing list, IRC channel, and Git repository, and the important ) Tj 0 0 .501961 rg (How to Contribute ) Tj 0 0 0 rg (link.) Tj T* 0 Tw 2.676412 Tw (Contributions to code and documentation are welcome, as well as tested hooks for installing other) Tj T* 0 Tw (packages.) Tj T* ET Q Q q 1 0 0 1 62.69291 320.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Installing ) Tj /F3 17.5 Tf (PyInstaller) Tj T* ET Q Q q 1 0 0 1 62.69291 302.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Beginning with version 2.1 ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (is a Python package and is installed like other Python packages.) Tj T* ET Q Q q 1 0 0 1 62.69291 272.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Installing Using pip) Tj T* ET Q Q q 1 0 0 1 62.69291 230.0236 cm q BT 1 0 0 1 0 26 Tm 2.48061 Tw 12 TL /F1 10 Tf 0 0 0 rg (The recommended method for Windows, Linux, or Mac OS is to use one of the standard package) Tj T* 0 Tw 1.321751 Tw (installers such as ) Tj 0 0 .501961 rg (pip ) Tj 0 0 0 rg (\(or the earlier ) Tj 0 0 .501961 rg (easy_install) Tj 0 0 0 rg (\). When you have installed one of these tools you can) Tj T* 0 Tw (download and install ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (in one command, for example:) Tj T* ET Q Q q 1 0 0 1 62.69291 196.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (pip install pyinstaller) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 176.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (and upgrade to a newer version in one command:) Tj T* ET Q Q q 1 0 0 1 62.69291 143.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (pip install --upgrade pyinstaller) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 178.1449 0 Td (PyInstaller Manual - License) Tj T* -178.1449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (5) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R441': class PDFStream 441 0 obj % page stream << /Length 9066 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Installing in Windows) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 26 Tm 1.37186 Tw 12 TL /F1 10 Tf 0 0 0 rg (For Windows, ) Tj 0 0 .501961 rg (PyWin32 ) Tj 0 0 0 rg (is a prerequisite. Follow that link and carefully read the instructions; there is a) Tj T* 0 Tw .889986 Tw (different version of PyWin32 for each version of Python. With this done you can continue to install ) Tj /F4 10 Tf (pip) Tj T* 0 Tw /F1 10 Tf (using the MS-DOS command line.) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q BT 1 0 0 1 0 26 Tm .571098 Tw 12 TL /F1 10 Tf 0 0 0 rg (However it is particularly easy to use ) Tj 0 0 .501961 rg (pip-Win) Tj 0 0 0 rg (, which sets up both ) Tj 0 0 .501961 rg (pip ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (virtualenv ) Tj 0 0 0 rg (and makes it simple) Tj T* 0 Tw 2.979318 Tw (to install packages and to switch between different Python interpreters. \(For more on the uses of) Tj T* 0 Tw (virtualenv, see ) Tj 0 0 .501961 rg (Supporting Multiple Platforms ) Tj 0 0 0 rg (below.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 636.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When pip-Win is working, enter this command in its Command field and click Run:) Tj T* ET Q Q q 1 0 0 1 62.69291 630.0236 cm Q q 1 0 0 1 62.69291 618.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (venv) Tj ( ) Tj (-c) Tj ( ) Tj (-i) Tj ( ) Tj ( ) Tj (pyi-env-name) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 618.0236 cm Q q 1 0 0 1 62.69291 576.0236 cm q BT 1 0 0 1 0 26 Tm .647674 Tw 12 TL /F1 10 Tf 0 0 0 rg (This creates a new virtual environment rooted at ) Tj /F4 10 Tf (C:\\Python\\pyi-env-name ) Tj /F1 10 Tf (and makes it the current) Tj T* 0 Tw 3.790697 Tw (environment. A new command shell window opens in which you can run commands within this) Tj T* 0 Tw (environment. Enter the command) Tj T* ET Q Q q 1 0 0 1 62.69291 570.0236 cm Q q 1 0 0 1 62.69291 558.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pip) Tj ( ) Tj (install) Tj ( ) Tj (PyInstaller) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 558.0236 cm Q q 1 0 0 1 62.69291 540.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Whenever you want to use ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (,) Tj T* ET Q Q q 1 0 0 1 62.69291 534.0236 cm Q q 1 0 0 1 62.69291 534.0236 cm Q q 1 0 0 1 62.69291 522.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Start pip-Win) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 516.0236 cm Q q 1 0 0 1 62.69291 504.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (In the Command field enter ) Tj /F4 10 Tf (venv) Tj ( ) Tj (pyi-env-name) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 498.0236 cm Q q 1 0 0 1 62.69291 486.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Click Run) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 486.0236 cm Q q 1 0 0 1 62.69291 468.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Then you have a command shell window in which commands execute in that environment.) Tj T* ET Q Q q 1 0 0 1 62.69291 438.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Installing from the archive) Tj T* ET Q Q q 1 0 0 1 62.69291 408.0236 cm q BT 1 0 0 1 0 14 Tm 1.524983 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can also install ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (by downloading the compressed archive from ) Tj 0 0 .501961 rg (PyPI ) Tj 0 0 0 rg (and expanding the) Tj T* 0 Tw (archive.) Tj T* ET Q Q q 1 0 0 1 62.69291 378.0236 cm q BT 1 0 0 1 0 14 Tm 4.67748 Tw 12 TL /F1 10 Tf 0 0 0 rg (Inside the archive is a script named ) Tj /F4 10 Tf (setup.py) Tj /F1 10 Tf (. Execute ) Tj /F4 10 Tf (python) Tj ( ) Tj (setup.py) Tj ( ) Tj (install ) Tj /F1 10 Tf (with) Tj T* 0 Tw (administrator privilege to install or upgrade ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 348.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.68311 Tw (For platforms other than Windows, Linux and Mac OS, you must build a bootloader program for your) Tj T* 0 Tw (platform before installing the Python package.) Tj T* ET Q Q q 1 0 0 1 62.69291 342.0236 cm Q q 1 0 0 1 62.69291 342.0236 cm Q q 1 0 0 1 62.69291 330.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (cd ) Tj /F1 10 Tf (into the distribution folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 324.0236 cm Q q 1 0 0 1 62.69291 312.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (cd) Tj ( ) Tj (bootloader) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 306.0236 cm Q q 1 0 0 1 62.69291 294.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Make a bootloader with: ) Tj /F4 10 Tf (python) Tj ( ) Tj (./waf) Tj ( ) Tj (configure) Tj ( ) Tj (build) Tj ( ) Tj (install) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 294.0236 cm Q q 1 0 0 1 62.69291 252.0236 cm q BT 1 0 0 1 0 26 Tm .788488 Tw 12 TL /F1 10 Tf 0 0 0 rg (If this reports an error, read ) Tj 0 0 .501961 rg (Building the Bootloader ) Tj 0 0 0 rg (below, then ask for technical help. It is of no use to) Tj T* 0 Tw 2.950697 Tw (continue the installation without a bootloader. After the bootloader has been created, you can run) Tj T* 0 Tw /F4 10 Tf (python) Tj ( ) Tj (setup.py) Tj ( ) Tj (install ) Tj /F1 10 Tf (with administrator privileges to complete the installation.) Tj T* ET Q Q q 1 0 0 1 62.69291 222.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Verifying the installation) Tj T* ET Q Q q 1 0 0 1 62.69291 192.0236 cm q BT 1 0 0 1 0 14 Tm 1.440651 Tw 12 TL /F1 10 Tf 0 0 0 rg (On all platforms, the command ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (should now exist on the execution path. To verify this,) Tj T* 0 Tw (enter the command) Tj T* ET Q Q q 1 0 0 1 62.69291 186.0236 cm Q q 1 0 0 1 62.69291 174.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller) Tj ( ) Tj (--version) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 174.0236 cm Q q 1 0 0 1 62.69291 156.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The result should resemble ) Tj /F4 10 Tf (2.n ) Tj /F1 10 Tf (for a released version, and ) Tj /F4 10 Tf (2.1dev-xxxxxx ) Tj /F1 10 Tf (for a development branch.) Tj T* ET Q Q q 1 0 0 1 62.69291 138.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If the command is not found, make sure the execution path includes the proper directory:) Tj T* ET Q Q q 1 0 0 1 62.69291 132.0236 cm Q q 1 0 0 1 62.69291 132.0236 cm Q q 1 0 0 1 62.69291 108.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.979979 Tw 12 TL /F1 10 Tf 0 0 0 rg (Windows: ) Tj /F4 10 Tf (C:\\PythonXY\\Scripts ) Tj /F1 10 Tf (\(where ) Tj /F5 10 Tf (XY ) Tj /F1 10 Tf (stands for the major and minor Python verysion) Tj T* 0 Tw (number, for example ) Tj /F4 10 Tf (C:\\Python27\\Scripts ) Tj /F1 10 Tf (for Python 2.7\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 102.0236 cm Q q 1 0 0 1 62.69291 90.02362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Linux: ) Tj /F4 10 Tf (/usr/bin/) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 88.86614 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 138.4099 0 Td (PyInstaller Manual - Installing from the archive) Tj T* -138.4099 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (6) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R442': class PDFStream 442 0 obj % page stream << /Length 9264 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 741.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (OS X \(using the default Apple-supplied Python\) ) Tj /F4 10 Tf (/usr/local/bin) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 735.0236 cm Q q 1 0 0 1 62.69291 723.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (OS X \(using Python installed by macports\) ) Tj /F4 10 Tf (/opt/local/bin) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 723.0236 cm Q q 1 0 0 1 62.69291 693.0236 cm q BT 1 0 0 1 0 14 Tm 3.627984 Tw 12 TL /F1 10 Tf 0 0 0 rg (To display the current path in Windows the command is ) Tj /F4 10 Tf (echo) Tj ( ) Tj (%path% ) Tj /F1 10 Tf (and in other systems,) Tj T* 0 Tw /F4 10 Tf (echo) Tj ( ) Tj ($PATH) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 663.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Installed commands) Tj T* ET Q Q q 1 0 0 1 62.69291 645.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The complete installation places these commands on the execution path:) Tj T* ET Q Q q 1 0 0 1 62.69291 639.0236 cm Q q 1 0 0 1 62.69291 639.0236 cm Q q 1 0 0 1 62.69291 627.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller ) Tj /F1 10 Tf (is the main command to build a bundled application. See ) Tj 0 0 .501961 rg (Using PyInstaller) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 621.0236 cm Q q 1 0 0 1 62.69291 609.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-makespec ) Tj /F1 10 Tf (is used to create a spec file. See ) Tj 0 0 .501961 rg (Using Spec Files) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 603.0236 cm Q q 1 0 0 1 62.69291 591.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-build ) Tj /F1 10 Tf (is used to execute a spec file that already exists. See ) Tj 0 0 .501961 rg (Using Spec Files) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 585.0236 cm Q q 1 0 0 1 62.69291 573.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-archive_viewer ) Tj /F1 10 Tf (is used to inspect a bundled application. See ) Tj 0 0 .501961 rg (Inspecting Archives) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 567.0236 cm Q q 1 0 0 1 62.69291 555.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-bindepend ) Tj /F1 10 Tf (is used to display dependencies of an executable. See ) Tj 0 0 .501961 rg (Inspecting Executables) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 549.0236 cm Q q 1 0 0 1 62.69291 525.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 3.211647 Tw 12 TL /F4 10 Tf 0 0 0 rg (pyi-grab_version ) Tj /F1 10 Tf (is used to extract a version resource from a Windows executable. See) Tj T* 0 Tw 0 0 .501961 rg (Capturing Version Data) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 519.0236 cm Q q 1 0 0 1 62.69291 495.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 3.00248 Tw 12 TL /F4 10 Tf 0 0 0 rg (pyi-make_comserver ) Tj /F1 10 Tf (is used to build a Windows COM server. See ) Tj 0 0 .501961 rg (Windows COM Server) Tj T* 0 Tw (Support) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 495.0236 cm Q q 1 0 0 1 62.69291 429.0236 cm q BT 1 0 0 1 0 50 Tm .136235 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you do not perform the complete installation \() Tj /F4 10 Tf (setup.py ) Tj /F1 10 Tf (or installing via ) Tj /F4 10 Tf (pip) Tj /F1 10 Tf (\), these commands will not) Tj T* 0 Tw .275318 Tw (exist as commands. However you can still execute all the functions documented below by running Python) Tj T* 0 Tw .25229 Tw (scripts found in the distribution folder. The equivalent of the ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command is ) Tj /F5 10 Tf (pyinstaller-folder) Tj /F1 10 Tf T* 0 Tw 2.432976 Tw /F4 10 Tf (/pyinstaller.py) Tj /F1 10 Tf (. The other commands are found in ) Tj /F5 10 Tf (pyinstaller-folder) Tj /F1 10 Tf ( ) Tj /F4 10 Tf (/cliutils/ ) Tj /F1 10 Tf (with obvious) Tj T* 0 Tw (names \() Tj /F4 10 Tf (makespec.py) Tj /F1 10 Tf (, etc.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 396.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Overview: What ) Tj /F3 17.5 Tf (PyInstaller ) Tj /F2 17.5 Tf (Does and How It Does It) Tj T* ET Q Q q 1 0 0 1 62.69291 330.0236 cm q BT 1 0 0 1 0 50 Tm 1.474985 Tw 12 TL /F1 10 Tf 0 0 0 rg (This section covers the basic ideas of ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (. These ideas apply to all platforms. There are many) Tj T* 0 Tw .446136 Tw (options, exceptions, and special cases covered under ) Tj 0 0 .501961 rg (Using PyInstaller) Tj 0 0 0 rg (. ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (reads a Python script) Tj T* 0 Tw 2.237765 Tw (written by you. First it analyzes your code to discover every other file your script needs in order to) Tj T* 0 Tw .242927 Tw (execute. Then it finds, copies, and collects all those other files -- including the active Python interpreter! --) Tj T* 0 Tw (and puts them with your script in a single folder, or optionally in a single executable file.) Tj T* ET Q Q q 1 0 0 1 62.69291 288.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .450514 Tw (You distribute this folder or file to other people, and they can execute your program. As far as your users) Tj T* 0 Tw 1.254692 Tw (can tell, your app is self-contained; they do not need to install any support packages, or any particular) Tj T* 0 Tw (version of Python. They do not need to have Python installed at all.) Tj T* ET Q Q q 1 0 0 1 62.69291 246.0236 cm q BT 1 0 0 1 0 26 Tm 1.026457 Tw 12 TL /F1 10 Tf 0 0 0 rg (The output of ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (is specific to the active operating system and the active version of Python. To) Tj T* 0 Tw .069461 Tw (prepare a distribution for a different OS, or for a dfferent version of Python, you run ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (on that OS,) Tj T* 0 Tw (under that version of Python.) Tj T* ET Q Q q 1 0 0 1 62.69291 216.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Analysis: Finding the Files Your Program Needs) Tj T* ET Q Q q 1 0 0 1 62.69291 174.0236 cm q BT 1 0 0 1 0 26 Tm .413876 Tw 12 TL /F1 10 Tf 0 0 0 rg (What does your script need in order to run, besides a Python interpreter? To find out, ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (looks at) Tj T* 0 Tw .924692 Tw (all the ) Tj /F4 10 Tf (import ) Tj /F1 10 Tf (statements in your script. It finds those Python modules and looks in them for ) Tj /F4 10 Tf (import) Tj T* 0 Tw /F1 10 Tf (statements, and so on recursively, until it has a complete list of Python modules your script requires.) Tj T* ET Q Q q 1 0 0 1 62.69291 144.0236 cm q BT 1 0 0 1 0 14 Tm .064983 Tw 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (understands the "egg" distribution format often used for Python packages. If your script imports) Tj T* 0 Tw (a module from an "egg" ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (adds the egg and its dependencies to the set of needed files.) Tj T* ET Q Q q 1 0 0 1 62.69291 114.0236 cm q BT 1 0 0 1 0 14 Tm 1.527126 Tw 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (also knows about the GUI packages ) Tj 0 0 .501961 rg (Qt ) Tj 0 0 0 rg (\(imported via ) Tj 0 0 .501961 rg (PyQt ) Tj 0 0 0 rg (or ) Tj 0 0 .501961 rg (PySide) Tj 0 0 0 rg (\), ) Tj 0 0 .501961 rg (WxPython) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (TkInter) Tj 0 0 0 rg (,) Tj T* 0 Tw 0 0 .501961 rg (Django) Tj 0 0 0 rg (, and other major packages.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 150.9149 0 Td (PyInstaller Manual - Installed commands) Tj T* -150.9149 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (7) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R443': class PDFStream 443 0 obj % page stream << /Length 7997 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 717.0236 cm q BT 1 0 0 1 0 26 Tm 1.461318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Some Python scripts import modules in ways that ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (cannot detect: for example, by using the) Tj T* 0 Tw 1.774983 Tw /F4 10 Tf (__import__\(\) ) Tj /F1 10 Tf (function with variable data, or manipulating the ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (value at run time. If your) Tj T* 0 Tw (script requires files that ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (does not know about, you must help it:) Tj T* ET Q Q q 1 0 0 1 62.69291 711.0236 cm Q q 1 0 0 1 62.69291 711.0236 cm Q q 1 0 0 1 62.69291 699.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can give additional files on the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (command line.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 693.0236 cm Q q 1 0 0 1 62.69291 681.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can give additional import paths on the command line.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 675.0236 cm Q q 1 0 0 1 62.69291 651.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .586457 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can edit the ) Tj /F4 10 Tf (myscript.spec ) Tj /F1 10 Tf (file that ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (writes the first time you run it for your script.) Tj T* 0 Tw (In the spec file you can tell ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (about code and data files that are unique to your script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 645.0236 cm Q q 1 0 0 1 62.69291 621.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 2.206235 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can write "hook" files that inform ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (of hidden imports. If you "hook" imports for a) Tj T* 0 Tw (package that other users might also use, you can contribute your hook file to ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 621.0236 cm Q q 1 0 0 1 62.69291 591.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Bundling to One Folder) Tj T* ET Q Q q 1 0 0 1 62.69291 549.0236 cm q BT 1 0 0 1 0 26 Tm .352651 Tw 12 TL /F1 10 Tf 0 0 0 rg (When you apply ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (to ) Tj /F4 10 Tf (myscript.py ) Tj /F1 10 Tf (the default result is a single folder named ) Tj /F4 10 Tf (myscript) Tj /F1 10 Tf (. This) Tj T* 0 Tw 4.54229 Tw (folder contains all the necessary support files, and an executable file also named ) Tj /F4 10 Tf (myscript) Tj T* 0 Tw /F1 10 Tf (\() Tj /F4 10 Tf (myscript.exe ) Tj /F1 10 Tf (in Windows\).) Tj T* ET Q Q q 1 0 0 1 62.69291 507.0236 cm q BT 1 0 0 1 0 26 Tm .143735 Tw 12 TL /F1 10 Tf 0 0 0 rg (You compress the folder to ) Tj /F4 10 Tf (myscript.zip ) Tj /F1 10 Tf (and transmit it to your users. They install the program simply) Tj T* 0 Tw 1.534985 Tw (by unzipping it. A user runs your app by opening the folder and launching the ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (executable) Tj T* 0 Tw (inside it.) Tj T* ET Q Q q 1 0 0 1 62.69291 477.0236 cm q BT 1 0 0 1 0 14 Tm .871488 Tw 12 TL /F1 10 Tf 0 0 0 rg (A small advantage of one-folder mode is that it is easier to debug a failure in building the app. You can) Tj T* 0 Tw (see exactly what files ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (collected.) Tj T* ET Q Q q 1 0 0 1 62.69291 423.0236 cm q BT 1 0 0 1 0 38 Tm .128409 Tw 12 TL /F1 10 Tf 0 0 0 rg (Another small advantage is that when you change your code, as long as it imports ) Tj /F5 10 Tf (exactly the same set of) Tj T* 0 Tw .565318 Tw (support files) Tj /F1 10 Tf (, you could send out only the updated ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (executable. That is typically much smaller) Tj T* 0 Tw .304724 Tw (than the entire folder. \(Of course, if you change the script so that it imports more or different support files,) Tj T* 0 Tw (or if the support libraries are upgraded, you must redistribute the whole bundle.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 381.0236 cm q BT 1 0 0 1 0 26 Tm .351654 Tw 12 TL /F1 10 Tf 0 0 0 rg (A small disadvantage of the one-folder format is that the one folder contains a large number of files. Your) Tj T* 0 Tw .868988 Tw (user must find the ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (executable in a long list of names or a big array of icons. Also your user) Tj T* 0 Tw (can create a problem by accidentally dragging files out of the folder.) Tj T* ET Q Q q 1 0 0 1 62.69291 351.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Bundling to One File) Tj T* ET Q Q q 1 0 0 1 62.69291 321.0236 cm q BT 1 0 0 1 0 14 Tm 3.03152 Tw 12 TL /F1 10 Tf 0 0 0 rg (An option of ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (is to produce a single executable named ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (\() Tj /F4 10 Tf (myscript.exe ) Tj /F1 10 Tf (in) Tj T* 0 Tw (Windows\). All the support files needed to run your program are embedded in the one program file.) Tj T* ET Q Q q 1 0 0 1 62.69291 279.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.088735 Tw (The advantage of this is that your users get something they understand, a single executable to launch.) Tj T* 0 Tw 1.127318 Tw (One disadvantage is that any related files such as README must be distributed separately. Another is) Tj T* 0 Tw (that the single executable is a little slower to start up than the executable in one folder.) Tj T* ET Q Q q 1 0 0 1 62.69291 249.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (How the One-Folder Program Works) Tj T* ET Q Q q 1 0 0 1 62.69291 219.0236 cm q BT 1 0 0 1 0 14 Tm 3.164651 Tw 12 TL /F1 10 Tf 0 0 0 rg (A bundled program always starts execution in the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (bootloader. This is the heart of the) Tj T* 0 Tw /F4 10 Tf (myscript ) Tj /F1 10 Tf (executable in the one folder, and of the one-file executable.) Tj T* ET Q Q q 1 0 0 1 62.69291 165.0236 cm q BT 1 0 0 1 0 38 Tm 1.011412 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (bootloader is a binary executable program for the active platform \(Windows, Linux, Mac) Tj T* 0 Tw 2.334692 Tw (OS X, etc.\). When the user launches your program, it is the bootloader that runs. For a one-folder) Tj T* 0 Tw .135697 Tw (program, the bootloader creates a temporary Python environment such that the Python interpreter will find) Tj T* 0 Tw (all imported modules and libraries in the ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (folder.) Tj T* ET Q Q q 1 0 0 1 62.69291 135.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .571984 Tw (The bootloader starts a copy of the Python interpreter to execute your script. Everything follows normally) Tj T* 0 Tw (from there, provided that all the necessary support files were included.) Tj T* ET Q Q q 1 0 0 1 62.69291 117.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\(This is an overview. For more detail, see ) Tj 0 0 .501961 rg (The Bootstrap Process in Detail ) Tj 0 0 0 rg (below.\)) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 143.9599 0 Td (PyInstaller Manual - Bundling to One Folder) Tj T* -143.9599 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (8) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R444': class PDFStream 444 0 obj % page stream << /Length 6867 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (How the One-File Program Works) Tj T* ET Q Q q 1 0 0 1 62.69291 705.0236 cm q BT 1 0 0 1 0 14 Tm 2.082126 Tw 12 TL /F1 10 Tf 0 0 0 rg (For a one-file program, the bootloader first creates a temporary folder in the appropriate temp-folder) Tj T* 0 Tw (location for this OS. The folder is named ) Tj /F4 10 Tf (_MEI) Tj /F5 10 Tf (xxxxxx) Tj /F1 10 Tf (, where ) Tj /F5 10 Tf (xxxxxx ) Tj /F1 10 Tf (is a random number.) Tj T* ET Q Q q 1 0 0 1 62.69291 651.0236 cm q BT 1 0 0 1 0 38 Tm 1.525542 Tw 12 TL /F1 10 Tf 0 0 0 rg (The one file contains an embedded archive of all the Python modules used by your script, as well as) Tj T* 0 Tw 1.164597 Tw (compressed copies of any non-Python support files \(e.g. ) Tj /F4 10 Tf (.so ) Tj /F1 10 Tf (files\). The bootloader uncompresses the) Tj T* 0 Tw 1.475777 Tw (support files and writes copies into the the temporary folder. This can take a little time. That is why a) Tj T* 0 Tw (one-file app is a little slower to start than a one-folder app.) Tj T* ET Q Q q 1 0 0 1 62.69291 621.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.051318 Tw (After creating the temporary folder, the bootloader proceeds exactly as for the one-folder bundle, in the) Tj T* 0 Tw (context of the temporary folder. When the bundled code terminates, it deletes the temporary folder.) Tj T* ET Q Q q 1 0 0 1 62.69291 579.0236 cm q BT 1 0 0 1 0 26 Tm 1.427633 Tw 12 TL /F1 10 Tf 0 0 0 rg (\(Note that in Linux and related systems, it is possible to mount the ) Tj /F4 10 Tf (/tmp ) Tj /F1 10 Tf (folder with a "no-execution") Tj T* 0 Tw 1.188221 Tw (option. That option is not compatible with a ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (one-file bundle. It needs to execute code out of) Tj T* 0 Tw /F4 10 Tf (/tmp) Tj /F1 10 Tf (.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 537.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.09186 Tw (Because the program makes a temporary folder with a unique name, you can run multiple copies; they) Tj T* 0 Tw 1.787126 Tw (won't interfere with each other. However, running multiple copies is expensive in disk space because) Tj T* 0 Tw (nothing is shared.) Tj T* ET Q Q q 1 0 0 1 62.69291 495.0236 cm q BT 1 0 0 1 0 26 Tm .065488 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (_MEI) Tj /F5 10 Tf (xxxxxx ) Tj /F1 10 Tf (folder is not removed if the program crashes or is killed \(kill -9 on Unix, killed by the Task) Tj T* 0 Tw .350574 Tw (Manager on Windows, "Force Quit" on Mac OS\). Thus if your app crashes frequently, your users will lose) Tj T* 0 Tw (disk space to multiple ) Tj /F4 10 Tf (_MEI) Tj /F5 10 Tf (xxxxxx ) Tj /F1 10 Tf (temporary folders.) Tj T* ET Q Q q 1 0 0 1 62.69291 441.0236 cm q BT 1 0 0 1 0 38 Tm .595984 Tw 12 TL /F1 10 Tf 0 0 0 rg (Do ) Tj /F5 10 Tf (not ) Tj /F1 10 Tf (give administrator privileges to a one-file executable \(setuid root in Unix/Linux, "Run this program) Tj T* 0 Tw 1.96528 Tw (as an administrator" property in Windows 7\). There is an unlikely but not impossible way in which a) Tj T* 0 Tw 1.78686 Tw (malicious attacker could corrupt one of the shared libraries in the temp folder while the bootloader is) Tj T* 0 Tw (preparing it. Distribute a privileged program in one-folder mode instead.) Tj T* ET Q Q q 1 0 0 1 62.69291 411.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Console or not?) Tj T* ET Q Q q 1 0 0 1 62.69291 357.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 1.196235 Tw (By default the bootloader creates a command-line console \(a terminal window in Linux and Mac OS, a) Tj T* 0 Tw 1.127485 Tw (command window in Windows\). It gives this window to the Python interpreter for its standard input and) Tj T* 0 Tw .154985 Tw (output. Error messages from Python and print statements in your script will appear in the console window.) Tj T* 0 Tw (If your script reads from standard input, the user can enter data in the window.) Tj T* ET Q Q q 1 0 0 1 62.69291 315.0236 cm q BT 1 0 0 1 0 26 Tm .414431 Tw 12 TL /F1 10 Tf 0 0 0 rg (An option for Windows and Mac OS is to tell ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (to not provide a console window. The bootloader) Tj T* 0 Tw .333672 Tw (starts Python with no target for standard output or input. Do this if your script has a graphical interface for) Tj T* 0 Tw (user input and can properly report its own diagnostics.) Tj T* ET Q Q q 1 0 0 1 62.69291 285.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Hiding the Source Code) Tj T* ET Q Q q 1 0 0 1 62.69291 255.0236 cm q BT 1 0 0 1 0 14 Tm 2.410751 Tw 12 TL /F1 10 Tf 0 0 0 rg (The bundled app does not include any source code. However, ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (bundles compiled Python) Tj T* 0 Tw (scripts \() Tj /F4 10 Tf (.pyc ) Tj /F1 10 Tf (files\). These could in principle be decompiled to reveal the logic of your code.) Tj T* ET Q Q q 1 0 0 1 62.69291 201.0236 cm q BT 1 0 0 1 0 38 Tm 1.309431 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you want to hide your source code more thoroughly, one possible option is to compile some of your) Tj T* 0 Tw 2.516235 Tw (modules with ) Tj 0 0 .501961 rg (Cython) Tj 0 0 0 rg (. Using Cython you can convert Python modules into C and compile the C to) Tj T* 0 Tw 1.327126 Tw (machine language. ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (can follow import statements that refer to Cython C object modules and) Tj T* 0 Tw (bundle them.) Tj T* ET Q Q q 1 0 0 1 62.69291 168.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Using PyInstaller) Tj T* ET Q Q q 1 0 0 1 62.69291 150.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The syntax of the ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command is:) Tj T* ET Q Q q 1 0 0 1 62.69291 144.0236 cm Q q 1 0 0 1 62.69291 132.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller ) Tj /F1 10 Tf ([) Tj /F5 10 Tf (options) Tj /F1 10 Tf (] ) Tj /F5 10 Tf (script ) Tj /F1 10 Tf ([) Tj /F5 10 Tf (script ) Tj /F1 10 Tf (...] | ) Tj /F5 10 Tf (specfile) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 132.0236 cm Q q 1 0 0 1 62.69291 102.0236 cm q BT 1 0 0 1 0 14 Tm 1.52436 Tw 12 TL /F1 10 Tf 0 0 0 rg (In the most simple case, set the current directory to the location of your program ) Tj /F4 10 Tf (myscript.py ) Tj /F1 10 Tf (and) Tj T* 0 Tw (execute:) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 120.3599 0 Td (PyInstaller Manual - How the One-File Program Works) Tj T* -120.3599 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 238.1649 0 Td (9) Tj T* -238.1649 0 Td ET Q Q endstream endobj % 'R445': class PDFStream 445 0 obj % page stream << /Length 9180 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 727.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (pyinstaller myscript.py) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 707.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (analyzes ) Tj /F4 10 Tf (myscript.py ) Tj /F1 10 Tf (and:) Tj T* ET Q Q q 1 0 0 1 62.69291 701.8236 cm Q q 1 0 0 1 62.69291 701.8236 cm Q q 1 0 0 1 62.69291 689.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Writes ) Tj /F4 10 Tf (myscript.spec ) Tj /F1 10 Tf (in the same folder as the script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 683.8236 cm Q q 1 0 0 1 62.69291 671.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Creates a folder ) Tj /F4 10 Tf (build ) Tj /F1 10 Tf (in the same folder as the script if it does not exist.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 665.8236 cm Q q 1 0 0 1 62.69291 653.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Writes some log files and working files in the ) Tj /F4 10 Tf (build ) Tj /F1 10 Tf (folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 647.8236 cm Q q 1 0 0 1 62.69291 635.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Creates a folder ) Tj /F4 10 Tf (dist ) Tj /F1 10 Tf (in the same folder as the script if it does not exist.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 629.8236 cm Q q 1 0 0 1 62.69291 617.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Writes the ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (executable folder in the ) Tj /F4 10 Tf (dist ) Tj /F1 10 Tf (folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 617.8236 cm Q q 1 0 0 1 62.69291 599.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (In the ) Tj /F4 10 Tf (dist ) Tj /F1 10 Tf (folder you find the bundled app you distribute to your users.) Tj T* ET Q Q q 1 0 0 1 62.69291 557.8236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .723876 Tw (Normally you name one script on the command line. If you name more, all are analyzed and included in) Tj T* 0 Tw 1.516457 Tw (the output. However, the first script named supplies the name for the spec file and for the executable) Tj T* 0 Tw (folder or file. Its code is the first to execute at run-time.) Tj T* ET Q Q q 1 0 0 1 62.69291 527.8236 cm q BT 1 0 0 1 0 14 Tm .048651 Tw 12 TL /F1 10 Tf 0 0 0 rg (For certain uses you may edit the contents of ) Tj /F4 10 Tf (myscript.spec ) Tj /F1 10 Tf (\(described under ) Tj 0 0 .501961 rg (Using Spec Files) Tj 0 0 0 rg (\). After) Tj T* 0 Tw (you do this, you name the spec file to ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (instead of the script:) Tj T* ET Q Q q 1 0 0 1 62.69291 521.8236 cm Q q 1 0 0 1 62.69291 509.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller) Tj ( ) Tj (myscript.spec) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 509.8236 cm Q q 1 0 0 1 62.69291 491.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You may give a path to the script or spec file, for example) Tj T* ET Q Q q 1 0 0 1 62.69291 485.8236 cm Q q 1 0 0 1 62.69291 473.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (options...) Tj /F1 10 Tf ( ) Tj /F4 10 Tf (~/myproject/source/myscript.py) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 473.8236 cm Q q 1 0 0 1 62.69291 455.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (or, on Windows,) Tj T* ET Q Q q 1 0 0 1 62.69291 449.8236 cm Q q 1 0 0 1 62.69291 437.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller) Tj ( ) Tj ("C:\\Documents) Tj ( ) Tj (and) Tj ( ) Tj (Settings\\project\\myscript.spec") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 437.8236 cm Q q 1 0 0 1 62.69291 407.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Options) Tj T* ET Q Q q 1 0 0 1 62.69291 380.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (General Options) Tj T* ET Q Q q 1 0 0 1 62.69291 359.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-h, --help) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print a summary of the options and exit.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 344.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-v, --version) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Print the version of the program as 2.) Tj /F5 10 Tf (n) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 305.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-a, --ascii) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm .359269 Tw 12 TL /F1 10 Tf 0 0 0 rg (Do ) Tj /F5 10 Tf (not ) Tj /F1 10 Tf (include Python module ) Tj /F4 10 Tf (codecs ) Tj /F1 10 Tf (and other) Tj T* 0 Tw .77186 Tw (Unicode support. The default is to include them if) Tj T* 0 Tw (available, whether the script imports them or not.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 266.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 30.28787 cm q q .714109 0 0 .714109 0 0 cm q 1 0 0 1 .1 .140035 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--distpath=path_to_executable, -o path_to_executable) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm .28186 Tw 12 TL /F1 10 Tf 0 0 0 rg (Specify where to put the bundled app. The default) Tj T* 0 Tw 1.842488 Tw (is a ) Tj /F4 10 Tf (dist ) Tj /F1 10 Tf (folder in the same folder as the first) Tj T* 0 Tw (script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 239.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--specpath=path_to_spec_file) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 14 Tm 2.85561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Specify where to put the ) Tj /F5 10 Tf (name) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (.spec ) Tj /F1 10 Tf (file. The) Tj T* 0 Tw (default is the same folder as the first script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 200.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--workpath=path_to_work_files) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm .84186 Tw 12 TL /F1 10 Tf 0 0 0 rg (Specify where to put the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (log and work) Tj T* 0 Tw 2.552765 Tw (files for this run. The default path is a ) Tj /F4 10 Tf (build) Tj T* 0 Tw /F1 10 Tf (folder in the same folder as the first script or spec.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 125.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 62.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--clean) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 62 Tm 3.20686 Tw 12 TL /F1 10 Tf 0 0 0 rg (Tell ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (to erase all log and work files) Tj T* 0 Tw .066098 Tw (before it starts. The default is to take advantage of) Tj T* 0 Tw .133876 Tw (any work files existing in the workpath from a prior) Tj T* 0 Tw 1.042126 Tw (run to possibly shorten the building process. Use) Tj T* 0 Tw .840488 Tw (--clean to make sure all parts of the app are built) Tj T* 0 Tw (fresh.) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 178.1449 0 Td (PyInstaller Manual - Options) Tj T* -178.1449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (10) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R446': class PDFStream 446 0 obj % page stream << /Length 7406 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 714.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-y, --noconfirm) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 4.920814 Tw (Replace an existing executable folder or file) Tj T* 0 Tw 6.282126 Tw (without warning. The default is to ask for) Tj T* 0 Tw (permission before deleting.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 639.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 62.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--log-level=keyword) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 62 Tm 2.58061 Tw 12 TL /F1 10 Tf 0 0 0 rg (Tell ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (how much detail you want it to) Tj T* 0 Tw 1.303876 Tw (report on the console as it runs. For more about) Tj T* 0 Tw .238976 Tw (these messages, see ) Tj 0 0 .501961 rg (Build-time Messages ) Tj 0 0 0 rg (below.) Tj T* 0 Tw 2.473555 Tw (The keywords, from most verbose to least, are) Tj T* 0 Tw 3.472976 Tw (DEBUG INFO WARN ERROR CRITICAL. The) Tj T* 0 Tw (default is INFO.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 612.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Options for Finding Imported Modules and Libraries) Tj T* ET Q Q q 1 0 0 1 62.69291 519.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 74.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-p dir_list, --paths=dir_list) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 74 Tm .964983 Tw 12 TL /F1 10 Tf 0 0 0 rg (Set the search path\(s\) for imported modules \(like) Tj T* 0 Tw 3.349147 Tw (using PYTHONPATH\). Use this option to help) Tj T* 0 Tw .28686 Tw /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (to search in the right places when your) Tj T* 0 Tw 1.944147 Tw (code modifies ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (for imports. Give one) Tj T* 0 Tw 1.473555 Tw (or more paths separated by ) Tj /F4 10 Tf (; ) Tj /F1 10 Tf (\(under Windows\)) Tj T* 0 Tw .590542 Tw (or ) Tj /F4 10 Tf (: ) Tj /F1 10 Tf (\(all other platforms\), or give the option more) Tj T* 0 Tw (than once to give multiple paths to search.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 468.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 38.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--hidden-import=modulename) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 38 Tm 3.582126 Tw 12 TL /F1 10 Tf 0 0 0 rg (Name an imported Python module that is not) Tj T* 0 Tw 1.12186 Tw (visible in your code. The module will be included) Tj T* 0 Tw .590542 Tw (as if it was named in an ) Tj /F4 10 Tf (import ) Tj /F1 10 Tf (statement. This) Tj T* 0 Tw (option can be given more than once.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 429.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--additional-hooks-dir=hook-path) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm .28561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Additional path to search for hook files. Hooks are) Tj T* 0 Tw 3.07248 Tw (discussed under ) Tj 0 0 .501961 rg (Using Hook Files ) Tj 0 0 0 rg (below. This) Tj T* 0 Tw (option may be given more than once.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 366.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 50.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--runtime-hook=path-to-hook-file) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 50 Tm 5.569269 Tw 12 TL /F1 10 Tf 0 0 0 rg (Specify a file with a custom runtime hook.) Tj T* 0 Tw 4.774983 Tw (Runtime hooks \(which are not the same as) Tj T* 0 Tw 9.74872 Tw (analysis-time hooks\) are discussed under) Tj T* 0 Tw 2.904976 Tw 0 0 .501961 rg (Changing Runtime Behavior ) Tj 0 0 0 rg (below. This option) Tj T* 0 Tw (may be given more than once.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 339.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Options for the Executable Output) Tj T* ET Q Q q 1 0 0 1 62.69291 294.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-n name, --name=name) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm 1.39561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Give a ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (for the specfile and the executable) Tj T* 0 Tw 2.08936 Tw (output. The default is the basename of the first) Tj T* 0 Tw (script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 267.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-D, --onedir) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 14 Tm 2.60248 Tw 12 TL /F1 10 Tf 0 0 0 rg (Create a folder ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (containing an executable) Tj T* 0 Tw /F5 10 Tf (name ) Tj /F1 10 Tf (and all support files. This is the default.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 240.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-F, --onefile) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 14 Tm 2.630697 Tw 12 TL /F1 10 Tf 0 0 0 rg (Create a single executable file ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (\(or ) Tj /F5 10 Tf (name) Tj /F1 10 Tf T* 0 Tw /F4 10 Tf (.exe ) Tj /F1 10 Tf (or ) Tj /F5 10 Tf (name) Tj /F1 10 Tf ( ) Tj /F4 10 Tf (.app) Tj /F1 10 Tf (\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 201.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-c, --console, --nowindowed) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 6.95748 Tw (Set up a console subsystem for standard) Tj T* 0 Tw .004987 Tw (input/output at run time. This is the default for both) Tj T* 0 Tw (one-file and one-folder modes.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 126.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 62.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-w, --windowed, --noconsole) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 62 Tm /F1 10 Tf 12 TL 2.909431 Tw (On Windows and Mac OS X, do not create a) Tj T* 0 Tw 7.700814 Tw (console window at run time for standard) Tj T* 0 Tw 4.455814 Tw (input/output. \(This option is ignored for other) Tj T* 0 Tw 2.869269 Tw (operating systems.\) On Mac OS X, this option) Tj T* 0 Tw 4.613555 Tw (triggers the creation of an OS X application) Tj T* 0 Tw (bundle.) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 178.1449 0 Td (PyInstaller Manual - Options) Tj T* -178.1449 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (11) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R447': class PDFStream 447 0 obj % page stream << /Length 7973 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 714.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-d, --debug) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm .010814 Tw 12 TL /F1 10 Tf 0 0 0 rg (Cause the bootloader to issue progress messages) Tj T* 0 Tw 2.57936 Tw (as it initializes at run time. See ) Tj 0 0 .501961 rg (Getting Debug) Tj T* 0 Tw (Messages ) Tj 0 0 0 rg (below.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 651.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 50.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-s, --strip) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 50 Tm .506412 Tw 12 TL /F1 10 Tf 0 0 0 rg (Apply ) Tj /F4 10 Tf (strip ) Tj /F1 10 Tf (\(symbol table stripper to reduce file) Tj T* 0 Tw 2.392126 Tw (size\) to the executable and all shared libraries.) Tj T* 0 Tw 2.605814 Tw (Not recommended with the cygwin package on) Tj T* 0 Tw 2.794147 Tw (Windows, which tends to render normal Win32) Tj T* 0 Tw (dlls unusable.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 624.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--upx-dir=upx_dir) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 14 Tm 4.910976 Tw 12 TL /F1 10 Tf 0 0 0 rg (Directory containing UPX. \(UPX is discussed) Tj T* 0 Tw (under ) Tj 0 0 .501961 rg (Using UPX ) Tj 0 0 0 rg (below.\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 608.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--noupx) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Do not use UPX even if available.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 581.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Options for Windows apps) Tj T* ET Q Q q 1 0 0 1 62.69291 524.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 38.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--version-file=version_text_file) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 38 Tm .374987 Tw 12 TL /F1 10 Tf 0 0 0 rg (Add a Version resource to the .exe output using a) Tj T* 0 Tw 26.51496 Tw /F5 10 Tf (version_text_file ) Tj /F1 10 Tf (as produced by) Tj T* 0 Tw 6.928294 Tw /F4 10 Tf (pyi-grab_version) Tj /F1 10 Tf (. See ) Tj 0 0 .501961 rg (Capturing Version) Tj T* 0 Tw (Data ) Tj 0 0 0 rg (below.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 497.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 19.6923 cm q q .598992 0 0 .598992 0 0 cm q 1 0 0 1 .1 .166947 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-m file, -m xml_string, --manifest=file, --manifest=xml_string) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 14 Tm 1.610542 Tw 12 TL /F1 10 Tf 0 0 0 rg (Add a manifest to the .exe output, either from a) Tj T* 0 Tw /F5 10 Tf (file ) Tj /F1 10 Tf (or from a string of XML.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 446.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 44.70678 cm q q .515837 0 0 .515837 0 0 cm q 1 0 0 1 .1 .19386 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (-i ) Tj (<) Tj (FILE.ico) Tj (>) Tj (, -i ) Tj (<) Tj (FILE.exe,ID) Tj (>) Tj (, --icon=) Tj (<) Tj (FILE.ico) Tj (>) Tj (, --icon=) Tj (<) Tj (FILE.exe,ID) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 38 Tm 1.04561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Add an icon to the output executable. Specify an) Tj T* 0 Tw .70186 Tw (icon ) Tj /F5 10 Tf (FILE) Tj /F1 10 Tf (.ico to use that icon. Specify an existing) Tj T* 0 Tw .329488 Tw /F4 10 Tf (.exe ) Tj /F1 10 Tf (file giving the ) Tj /F5 10 Tf (ID ) Tj /F1 10 Tf (to extract the icon with that) Tj T* 0 Tw (ID.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 287.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 153.1907 cm q q .476174 0 0 .476174 0 0 cm q 1 0 0 1 .1 .210007 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (-r ) Tj (<) Tj (FILE[,TYPE[,NAME[,LANGUAGE]]]) Tj (>) Tj (, --resource=) Tj (<) Tj (FILE[,TYPE[,NAME[,LANGUAGE]]]) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 146 Tm .374987 Tw 12 TL /F1 10 Tf 0 0 0 rg (Add or update a resource of the given type, name) Tj T* 0 Tw 1.114983 Tw (and language in the output executable. ) Tj /F5 10 Tf (FILE ) Tj /F1 10 Tf (can) Tj T* 0 Tw 1.007717 Tw (be a data file or a ) Tj /F4 10 Tf (.exe ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (.dll) Tj /F1 10 Tf (. For data files,) Tj T* 0 Tw 3.900697 Tw (at least ) Tj /F5 10 Tf (TYPE ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (NAME ) Tj /F1 10 Tf (must be specified.) Tj T* 0 Tw .91186 Tw /F5 10 Tf (LANGUAGE ) Tj /F1 10 Tf (defaults to 0 or may be specified as) Tj T* 0 Tw 1.98186 Tw (wildcard ) Tj /F4 10 Tf (* ) Tj /F1 10 Tf (to update all resources of the given) Tj T* 0 Tw 3.905814 Tw /F5 10 Tf (TYPE ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (NAME) Tj /F1 10 Tf (. For exe/dll files, resources) Tj T* 0 Tw 4.55248 Tw (given by ) Tj /F5 10 Tf (TYPE) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (NAME ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (LANGUAGE ) Tj /F1 10 Tf (are) Tj T* 0 Tw .84186 Tw (added or updated; or all resources from ) Tj /F5 10 Tf (FILE ) Tj /F1 10 Tf (are) Tj T* 0 Tw 8.994147 Tw (added or updated if ) Tj /F5 10 Tf (TYPE) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (NAME ) Tj /F1 10 Tf (and) Tj T* 0 Tw 4.236412 Tw /F5 10 Tf (LANGUAGE ) Tj /F1 10 Tf (are omitted or given as ) Tj /F4 10 Tf (*) Tj /F1 10 Tf (. This) Tj T* 0 Tw .067209 Tw (option an be used more than once to specify more) Tj T* 0 Tw (resources.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 260.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Options for Mac OS X apps) Tj T* ET Q Q q 1 0 0 1 62.69291 215.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (-i ) Tj (<) Tj (FILE.icns) Tj (>) Tj (, --icon=) Tj (<) Tj (FILE.icns) Tj (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 26 Tm 2.106098 Tw 12 TL /F1 10 Tf 0 0 0 rg (Specify a Mac icon-set file to be applied to the) Tj T* 0 Tw 5.564147 Tw (output ) Tj /F5 10 Tf (name) Tj /F1 10 Tf (.app that is created when both) Tj T* 0 Tw /F4 10 Tf (--onefile ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (--windowed ) Tj /F1 10 Tf (are specified.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 185.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Building Mac OS X App Bundles) Tj T* ET Q Q q 1 0 0 1 62.69291 143.8236 cm q BT 1 0 0 1 0 26 Tm .281098 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you specify only ) Tj /F4 10 Tf (--onefile ) Tj /F1 10 Tf (under Mac OS X, the output in ) Tj /F4 10 Tf (dist ) Tj /F1 10 Tf (is a UNIX executable ) Tj /F4 10 Tf (myscript) Tj /F1 10 Tf (. It) Tj T* 0 Tw .882485 Tw (can be executed from a Terminal command line. Standard input and output work as normal through the) Tj T* 0 Tw (Terminal window.) Tj T* ET Q Q q 1 0 0 1 62.69291 113.8236 cm q BT 1 0 0 1 0 14 Tm .48784 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you specify ) Tj /F4 10 Tf (--windowed) Tj /F1 10 Tf (, the ) Tj /F4 10 Tf (dist ) Tj /F1 10 Tf (folder contains two outputs: the UNIX executable ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (and) Tj T* 0 Tw (also an OS X application named ) Tj /F4 10 Tf (myscript.app) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 123.6749 0 Td (PyInstaller Manual - Building Mac OS X App Bundles) Tj T* -123.6749 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (12) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R448': class PDFStream 448 0 obj % page stream << /Length 8356 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 14 Tm .969431 Tw 12 TL /F1 10 Tf 0 0 0 rg (As you probably know, an application is a special type of folder. The one built by ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (contains a) Tj T* 0 Tw (folder always named ) Tj /F4 10 Tf (Contents) Tj /F1 10 Tf (. It contains:) Tj T* ET Q Q q 1 0 0 1 62.69291 723.0236 cm Q q 1 0 0 1 62.69291 651.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 66 cm Q q 1 0 0 1 20 66 cm Q q 1 0 0 1 20 54 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A folder ) Tj /F4 10 Tf (Frameworks ) Tj /F1 10 Tf (which is empty.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 48 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A folder ) Tj /F4 10 Tf (MacOS ) Tj /F1 10 Tf (that contains a copy of the same ) Tj /F4 10 Tf (myscript ) Tj /F1 10 Tf (UNIX executable.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A folder ) Tj /F4 10 Tf (Resources ) Tj /F1 10 Tf (that contains an icon file ) Tj /F4 10 Tf (icon-windowed.icns) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A file ) Tj /F4 10 Tf (Info.plist ) Tj /F1 10 Tf (that describes the app.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 651.0236 cm Q q 1 0 0 1 62.69291 621.0236 cm q BT 1 0 0 1 0 14 Tm 3.064104 Tw 12 TL /F4 10 Tf 0 0 0 rg (Info.plist ) Tj /F1 10 Tf (is an ) Tj 0 0 .501961 rg (Info Property List ) Tj 0 0 0 rg (XML file \(or "plist"\). Its contents tell Mac OS X about your) Tj T* 0 Tw (application. You can inspect and edit a plist with the Property List Editor that is part of XCode.) Tj T* ET Q Q q 1 0 0 1 62.69291 594.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Setting a Custom Icon) Tj T* ET Q Q q 1 0 0 1 62.69291 540.0236 cm q BT 1 0 0 1 0 38 Tm 7.559983 Tw 12 TL /F1 10 Tf 0 0 0 rg (The minimal plist provided by ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (designates the icon file for the app as the) Tj T* 0 Tw 1.626412 Tw /F4 10 Tf (icon-windowed.icns ) Tj /F1 10 Tf (file in ) Tj /F4 10 Tf (Resources) Tj /F1 10 Tf (. This is the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (logo in icns format. Support for the) Tj T* 0 Tw 1.162765 Tw /F4 10 Tf (--icon-file ) Tj /F1 10 Tf (option is promised for the future. For now you can apply your own icon after the app is) Tj T* 0 Tw (built in several ways:) Tj T* ET Q Q q 1 0 0 1 62.69291 534.0236 cm Q q 1 0 0 1 62.69291 534.0236 cm Q q 1 0 0 1 62.69291 510.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .135366 Tw 12 TL /F1 10 Tf 0 0 0 rg (Prepare another ) Tj /F4 10 Tf (.icns ) Tj /F1 10 Tf (file with your own graphic, save it as ) Tj /F4 10 Tf (icon-windowed.icns ) Tj /F1 10 Tf (replacing the) Tj T* 0 Tw (default one in ) Tj /F4 10 Tf (Resources) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 504.0236 cm Q q 1 0 0 1 62.69291 480.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .401235 Tw 12 TL /F1 10 Tf 0 0 0 rg (Prepare an ) Tj /F4 10 Tf (.icns ) Tj /F1 10 Tf (file with your own graphic, place it in ) Tj /F4 10 Tf (Resources ) Tj /F1 10 Tf (and edit the ) Tj /F4 10 Tf (Info.plist ) Tj /F1 10 Tf (to) Tj T* 0 Tw (name it.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 474.0236 cm Q q 1 0 0 1 62.69291 450.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.50311 Tw 12 TL /F1 10 Tf 0 0 0 rg (Prepare an ) Tj /F4 10 Tf (.icns ) Tj /F1 10 Tf (file with your own graphic; open in it Preview.app; select-all and copy; in the) Tj T* 0 Tw (Finder, Get Info on your app; click the icon in the info display and paste.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 450.0236 cm Q q 1 0 0 1 62.69291 420.0236 cm q BT 1 0 0 1 0 14 Tm 1.933735 Tw 12 TL /F1 10 Tf 0 0 .501961 rg (GraphicConverter ) Tj 0 0 0 rg (is one of several applications that can save a JPEG or PNG image in the ) Tj /F4 10 Tf (.icns) Tj T* 0 Tw /F1 10 Tf (format.) Tj T* ET Q Q q 1 0 0 1 62.69291 393.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Setting the Supported Document Types) Tj T* ET Q Q q 1 0 0 1 62.69291 363.0236 cm q BT 1 0 0 1 0 14 Tm 2.309398 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can also edit the ) Tj /F4 10 Tf (Info.plist ) Tj /F1 10 Tf (file to tell the Mac OS X Launcher what document types your) Tj T* 0 Tw (application supports. Refer to the Mac OS developer documentation for these keywords.) Tj T* ET Q Q q 1 0 0 1 62.69291 336.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Getting the Opened Document Names) Tj T* ET Q Q q 1 0 0 1 62.69291 282.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 2.040574 Tw (When a user double-clicks a document of a type your application supports, or when a user drags a) Tj T* 0 Tw .519985 Tw (document icon and drops it on your application's icon, Mac OS X launches your application and provides) Tj T* 0 Tw .273984 Tw (the name\(s\) of the opened document\(s\) in the form of an OpenDocument AppleEvent. This AppleEvent is) Tj T* 0 Tw (received by the bootloader before your code has started executing.) Tj T* ET Q Q q 1 0 0 1 62.69291 240.0236 cm q BT 1 0 0 1 0 26 Tm .569269 Tw 12 TL /F1 10 Tf 0 0 0 rg (The bootloader gets the names of opened documents from the OpenDocument event and encodes them) Tj T* 0 Tw .161654 Tw (into the ) Tj /F4 10 Tf (argv ) Tj /F1 10 Tf (string before starting your code. Thus your code can query ) Tj /F4 10 Tf (sys.argv ) Tj /F1 10 Tf (to get the names of) Tj T* 0 Tw (documents that should be opened at startup.) Tj T* ET Q Q q 1 0 0 1 62.69291 210.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.568651 Tw (OpenDocument is the only AppleEvent the bootloader handles. If you want to handle other events, or) Tj T* 0 Tw (events that are delivered after the program has launched, you must set up the appropriate handlers.) Tj T* ET Q Q q 1 0 0 1 62.69291 180.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Shortening the Command) Tj T* ET Q Q q 1 0 0 1 62.69291 138.0236 cm q BT 1 0 0 1 0 26 Tm .308735 Tw 12 TL /F1 10 Tf 0 0 0 rg (Because of its numerous options, a full ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command can become very long. You will run the) Tj T* 0 Tw .158409 Tw (same command again and again as you develop your script. You can put the command in a shell script or) Tj T* 0 Tw (batch file, using line continuations to make it readable. For example, in Linux:) Tj T* ET Q Q q 1 0 0 1 62.69291 92.82362 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (pyinstaller --noconfirm --log-level=WARN \\) Tj T* ( --onefile --nowindow \\) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 138.4049 0 Td (PyInstaller Manual - Shortening the Command) Tj T* -138.4049 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (13) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R449': class PDFStream 449 0 obj % page stream << /Length 7098 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 691.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL ( --hidden-import=secret1 \\) Tj T* ( --hidden-import=secret2 \\) Tj T* ( --upx-dir=/usr/local/share/ \\) Tj T* ( myscript.spec) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 671.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Or in Windows, use the little-known BAT file line continuation:) Tj T* ET Q Q q 1 0 0 1 62.69291 578.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 84 re B* Q q 0 0 0 rg BT 1 0 0 1 0 62 Tm /F4 10 Tf 12 TL (pyinstaller --noconfirm --log-level=WARN ^) Tj T* ( --onefile --nowindow ^) Tj T* ( --hidden-import=secret1 ^) Tj T* ( --hidden-import=secret2 ^) Tj T* ( --icon-file=..\\MLNMFLCN.ICO ^) Tj T* ( myscript.spec) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 548.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Using UPX) Tj T* ET Q Q q 1 0 0 1 62.69291 482.6236 cm q BT 1 0 0 1 0 50 Tm .389318 Tw 12 TL /F1 10 Tf 0 0 .501961 rg (UPX ) Tj 0 0 0 rg (is a free utility available for most operating systems. UPX compresses executable files and libraries,) Tj T* 0 Tw 1.569983 Tw (making them smaller, sometimes much smaller. UPX is available for most operating systems and can) Tj T* 0 Tw .470574 Tw (compress a large number of executable file formats. See the ) Tj 0 0 .501961 rg (UPX ) Tj 0 0 0 rg (home page for downloads, and for the) Tj T* 0 Tw 2.37686 Tw (list of supported executable formats. As of May 2013, the only major absence is 64-bit binaries for) Tj T* 0 Tw (Windows and Mac OS X. UPX has no effect on these.) Tj T* ET Q Q q 1 0 0 1 62.69291 428.6236 cm q BT 1 0 0 1 0 38 Tm 1.003059 Tw 12 TL /F1 10 Tf 0 0 0 rg (A compressed executable program is wrapped in UPX startup code that dynamically decompresses the) Tj T* 0 Tw .868651 Tw (program when the program is launched. After it has been decompressed, the program runs normally. In) Tj T* 0 Tw .372126 Tw (the case of a ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (one-file executable that has been UPX-compressed, the full execution sequence) Tj T* 0 Tw (is:) Tj T* ET Q Q q 1 0 0 1 62.69291 426.8661 cm Q q 1 0 0 1 62.69291 426.8661 cm Q q 1 0 0 1 62.69291 414.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The compressed program start up in the UPX decompressor code.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 408.8661 cm Q q 1 0 0 1 62.69291 384.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.266342 Tw 12 TL /F1 10 Tf 0 0 0 rg (After decompression, the program executes the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (bootloader, which creates a temporary) Tj T* 0 Tw (environment for Python.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 378.8661 cm Q q 1 0 0 1 62.69291 366.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The Python interpreter executes your script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 366.8661 cm Q q 1 0 0 1 62.69291 324.8661 cm q BT 1 0 0 1 0 26 Tm .373516 Tw 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (looks for UPX on the execution path or the path specified with the ) Tj /F4 10 Tf (--upx-dir ) Tj /F1 10 Tf (option. If UPX) Tj T* 0 Tw .20936 Tw (exists, ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (applies it to the final executable, unless the ) Tj /F4 10 Tf (--noupx ) Tj /F1 10 Tf (option was given. UPX has been) Tj T* 0 Tw (used with ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (output often, usually with no problems.) Tj T* ET Q Q q 1 0 0 1 62.69291 294.8661 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Supporting Multiple Platforms) Tj T* ET Q Q q 1 0 0 1 62.69291 264.8661 cm q BT 1 0 0 1 0 14 Tm .013516 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you distribute your application for only one combination of OS and Python, just install ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (like any) Tj T* 0 Tw (other package and use it in your normal development setup.) Tj T* ET Q Q q 1 0 0 1 62.69291 237.8661 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Supporting Multiple Python Environments) Tj T* ET Q Q q 1 0 0 1 62.69291 171.8661 cm q BT 1 0 0 1 0 50 Tm .436457 Tw 12 TL /F1 10 Tf 0 0 0 rg (When you need to bundle your application within one OS but for different versions of Python and support) Tj T* 0 Tw .070514 Tw (libraries -- for example, a Python 3 version and a Python 2.7 version; or a supported version that uses Qt4) Tj T* 0 Tw .918735 Tw (and a development version that uses Qt5 -- we recommend you use ) Tj 0 0 .501961 rg (virtualenv) Tj 0 0 0 rg (. With virtualenv you can) Tj T* 0 Tw 1.470751 Tw (maintain different combinations of Python and installed packages, and switch from one combination to) Tj T* 0 Tw (another easily.) Tj T* ET Q Q q 1 0 0 1 62.69291 165.8661 cm Q q 1 0 0 1 62.69291 165.8661 cm Q q 1 0 0 1 62.69291 141.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .038651 Tw (Use virtualenv to create as many different development environments as you need, each with its own) Tj T* 0 Tw (combination of Python and installed packages.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 135.8661 cm Q q 1 0 0 1 62.69291 123.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Install ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (in each environment.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 117.8661 cm Q q 1 0 0 1 62.69291 105.8661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Use ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (to build your application in each environment.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 105.8661 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 170.9249 0 Td (PyInstaller Manual - Using UPX) Tj T* -170.9249 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (14) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R450': class PDFStream 450 0 obj % page stream << /Length 7991 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 741.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Note that when using virtualenv, the path to the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (commands is:) Tj T* ET Q Q q 1 0 0 1 62.69291 735.0236 cm Q q 1 0 0 1 62.69291 735.0236 cm Q q 1 0 0 1 62.69291 723.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Windows: ENV_ROOT\\Scripts) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 717.0236 cm Q q 1 0 0 1 62.69291 705.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Others: ENV_ROOT/bin) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 705.0236 cm Q q 1 0 0 1 62.69291 663.0236 cm q BT 1 0 0 1 0 26 Tm .906651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Under Windows, the ) Tj 0 0 .501961 rg (pip-Win ) Tj 0 0 0 rg (package installs virtualenv and makes it especially easy to set up different) Tj T* 0 Tw 2.399269 Tw (environments and switch between them. Under Linux and Mac OS, you switch environments at the) Tj T* 0 Tw (command line.) Tj T* ET Q Q q 1 0 0 1 62.69291 636.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Supporting Multiple Operating Systems) Tj T* ET Q Q q 1 0 0 1 62.69291 606.0236 cm q BT 1 0 0 1 0 14 Tm .011567 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you need to distribute your application for more than one OS, for example both Windows and Mac OS X,) Tj T* 0 Tw (you must install ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (on each platform and bundle your app separately on each.) Tj T* ET Q Q q 1 0 0 1 62.69291 564.0236 cm q BT 1 0 0 1 0 26 Tm .864692 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can do this from a single machine using virtualization. The free ) Tj 0 0 .501961 rg (virtualBox ) Tj 0 0 0 rg (or the paid ) Tj 0 0 .501961 rg (VMWare ) Tj 0 0 0 rg (and) Tj T* 0 Tw .707633 Tw 0 0 .501961 rg (Parallels ) Tj 0 0 0 rg (allow you to run another complete operating system as a "guest". You set up a virtual machine) Tj T* 0 Tw (for each "guest" OS. In it you install Python, the support packages your application needs, and PyInstaller.) Tj T* ET Q Q q 1 0 0 1 62.69291 522.0236 cm q BT 1 0 0 1 0 26 Tm .95561 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj 0 0 .501961 rg (Dropbox ) Tj 0 0 0 rg (system is useful with virtual machines. Install a Dropbox client in each virtual machine, all) Tj T* 0 Tw 1.217209 Tw (linked to your Dropbox account. Keep a single copy of your script\(s\) in a Dropbox folder. Then on any) Tj T* 0 Tw (virtual machine you can run ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (thus:) Tj T* ET Q Q q 1 0 0 1 62.69291 440.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 72 re B* Q q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F4 10 Tf 12 TL (cd ~/Dropbox/project_folder/src # Linux, Mac -- Windows similar) Tj T* (pyinstaller --workpath=path-to-local-temp-folder \\) Tj T* ( --distpath=path-to-local-dist-folder \\) Tj T* ( ...other options as required... \\) Tj T* ( ./myscript.py) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 384.8236 cm q BT 1 0 0 1 0 38 Tm .41686 Tw 12 TL /F1 10 Tf 0 0 0 rg (Your bundled app is in ) Tj /F5 10 Tf (path-to-local-dist-folder ) Tj /F1 10 Tf (on the virtual machine's local disk. After testing it, you can) Tj T* 0 Tw 2.335251 Tw (compress the app to a zip file and copy it to the ) Tj /F4 10 Tf (Public ) Tj /F1 10 Tf (folder of your Dropbox. Your users can) Tj T* 0 Tw 1.99561 Tw (download it from there. \(Pro tip: Do not shut down the virtual machine until Dropbox has completely) Tj T* 0 Tw (uploaded the .zip to the cloud.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 354.8236 cm q BT 1 0 0 1 0 14 Tm .88436 Tw 12 TL /F1 10 Tf 0 0 0 rg (It is claimed to be possible to cross-develop for Windows under Linux using the free ) Tj 0 0 .501961 rg (Wine ) Tj 0 0 0 rg (environment.) Tj T* 0 Tw (Further details are needed, see ) Tj 0 0 .501961 rg (How to Contribute) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 321.8236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Using Spec Files) Tj T* ET Q Q q 1 0 0 1 62.69291 279.8236 cm q BT 1 0 0 1 0 26 Tm 1.96311 Tw 12 TL /F1 10 Tf 0 0 0 rg (The spec \(specification\) file tells ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (how to process your script. When you name a script \(or) Tj T* 0 Tw .274431 Tw (scripts\) to the ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command, the first thing it does is to build a spec file ) Tj /F5 10 Tf (name) Tj /F1 10 Tf (.spec. The spec) Tj T* 0 Tw (file encodes the script names and most of the options you give to the ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command.) Tj T* ET Q Q q 1 0 0 1 62.69291 225.8236 cm q BT 1 0 0 1 0 38 Tm .205988 Tw 12 TL /F1 10 Tf 0 0 0 rg (For many uses of ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (you do not need to examine or modify the spec file. Editing the spec file was) Tj T* 0 Tw .541417 Tw (once a common way to help ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (find all the parts of a program, but this is now less common. It is) Tj T* 0 Tw 2.34061 Tw (usually enough to give all the needed information \(such as hidden imports\) as option values to the) Tj T* 0 Tw /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command and let it run.) Tj T* ET Q Q q 1 0 0 1 62.69291 207.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (There are three cases where it may be useful to modify the spec file:) Tj T* ET Q Q q 1 0 0 1 62.69291 201.8236 cm Q q 1 0 0 1 62.69291 201.8236 cm Q q 1 0 0 1 62.69291 189.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When you want to bundle data files with the app.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 183.8236 cm Q q 1 0 0 1 62.69291 171.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When you want to add Python run-time options to the executable.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 165.8236 cm Q q 1 0 0 1 62.69291 153.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When you want to create a multiprogram bundle with merged common modules.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 153.8236 cm Q q 1 0 0 1 62.69291 135.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (These uses are covered in topics below.) Tj T* ET Q Q q 1 0 0 1 62.69291 117.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can create a spec file using this command:) Tj T* ET Q Q q 1 0 0 1 62.69291 111.8236 cm Q q 1 0 0 1 62.69291 99.82362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-makespec) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (options) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (script ) Tj /F1 10 Tf ([) Tj /F5 10 Tf (script ) Tj /F1 10 Tf (...]) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 99.82362 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 157.8649 0 Td (PyInstaller Manual - Using Spec Files) Tj T* -157.8649 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (15) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R451': class PDFStream 451 0 obj % page stream << /Length 9187 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 14 Tm .977674 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (options ) Tj /F1 10 Tf (are the same options documented above for the ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command. This command) Tj T* 0 Tw (creates the ) Tj /F5 10 Tf (name) Tj /F1 10 Tf (.spec file but does not go on to build the executable.) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .714198 Tw (After you have created a spec file and modified it as necessary, you can build your application from it in) Tj T* 0 Tw (either of two ways:) Tj T* ET Q Q q 1 0 0 1 62.69291 693.0236 cm Q q 1 0 0 1 62.69291 681.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (specfile) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 681.0236 cm Q q 1 0 0 1 62.69291 663.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (or) Tj T* ET Q Q q 1 0 0 1 62.69291 657.0236 cm Q q 1 0 0 1 62.69291 645.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-build) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (specfile) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 645.0236 cm Q q 1 0 0 1 62.69291 627.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The latter executes the part of ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (that follows creation of a spec file.) Tj T* ET Q Q q 1 0 0 1 62.69291 573.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .24683 Tw (When you create a spec file, many command options are written into the spec file. When you build from a) Tj T* 0 Tw .751098 Tw (spec file, those options cannot be changed. If they are given on the command line they are ignored and) Tj T* 0 Tw 1.40311 Tw (replaced by the options in the spec file. Only the following command-line options have an effect when) Tj T* 0 Tw (building from a spec file:) Tj T* ET Q Q q 1 0 0 1 62.69291 567.0236 cm Q q 1 0 0 1 62.69291 567.0236 cm Q q 1 0 0 1 62.69291 555.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (--upx-dir=) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 549.0236 cm Q q 1 0 0 1 62.69291 537.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (--distpath=) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 531.0236 cm Q q 1 0 0 1 62.69291 519.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (--workpath=) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 513.0236 cm Q q 1 0 0 1 62.69291 501.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (--noconfirm) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 495.0236 cm Q q 1 0 0 1 62.69291 483.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (--ascii) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 483.0236 cm Q q 1 0 0 1 62.69291 453.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Spec File Operation) Tj T* ET Q Q q 1 0 0 1 62.69291 399.0236 cm q BT 1 0 0 1 0 38 Tm 2.117882 Tw 12 TL /F1 10 Tf 0 0 0 rg (After ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (creates a spec file, or opens a spec file when one is given instead of a script, the) Tj T* 0 Tw 1.247318 Tw /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (command ) Tj /F5 10 Tf (executes the spec file as code) Tj /F1 10 Tf (. This is important to understand: the spec file) Tj T* 0 Tw .74186 Tw (contents are the central part of the code executed by ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (. Your bundled application is created by) Tj T* 0 Tw (the execution of the spec file.) Tj T* ET Q Q q 1 0 0 1 62.69291 369.0236 cm q BT 1 0 0 1 0 14 Tm 2.133735 Tw 12 TL /F1 10 Tf 0 0 0 rg (The statements in a spec file create objects from classes that are defined in the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (module) Tj T* 0 Tw /F4 10 Tf (build.py) Tj /F1 10 Tf (. Here is an unrealistically simplified spec file for one-folder mode:) Tj T* ET Q Q q 1 0 0 1 62.69291 299.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (a = Analysis\(['myscript.py']\)) Tj T* (pyz = PYZ\(a.pure\)) Tj T* (exe = EXE\(a.scripts, pyz, name="myscript", exclude_binaries=1\)) Tj T* (dist = COLLECT\(exe, a.binaries, name="dist"\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 267.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .764692 Tw (If you compare an actual spec file you will find about the same statements, but differently formatted and) Tj T* 0 Tw (with more arguments. The statements do the following:) Tj T* ET Q Q q 1 0 0 1 62.69291 261.8236 cm Q q 1 0 0 1 62.69291 261.8236 cm Q q 1 0 0 1 62.69291 183.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 63 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 51 cm q BT 1 0 0 1 0 14 Tm .650574 Tw 12 TL /F1 10 Tf 0 0 0 rg (A new instance of class ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (takes a list of script names as input. The resulting object \(here) Tj T* 0 Tw (named ) Tj /F4 10 Tf (a) Tj /F1 10 Tf (\) contains three lists, held in object properties named) Tj T* ET Q Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 33 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (scripts) Tj /F1 10 Tf (: the python scripts named on the command line;) Tj T* ET Q Q q Q Q q 1 0 0 1 23 27 cm Q q 1 0 0 1 23 15 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pure) Tj /F1 10 Tf (: pure python modules needed by the scripts;) Tj T* ET Q Q q Q Q q 1 0 0 1 23 9 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (binaries) Tj /F1 10 Tf (: non-python modules needed by the scripts.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 177.8236 cm Q q 1 0 0 1 62.69291 153.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .440651 Tw 12 TL /F1 10 Tf 0 0 0 rg (An instance of ) Tj /F4 10 Tf (PYZ ) Tj /F1 10 Tf (\(a ) Tj /F4 10 Tf (.pyz ) Tj /F1 10 Tf (archive, described under ) Tj 0 0 .501961 rg (Inspecting Archives ) Tj 0 0 0 rg (below\) is built to contain) Tj T* 0 Tw (the modules listed in ) Tj /F4 10 Tf (a.pure) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 147.8236 cm Q q 1 0 0 1 62.69291 123.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .087633 Tw 12 TL /F1 10 Tf 0 0 0 rg (An instance of ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (is built from the analyzed scripts and the ) Tj /F4 10 Tf (PYZ ) Tj /F1 10 Tf (archive. This object contains what) Tj T* 0 Tw (will be the executable file ) Tj /F4 10 Tf (myscript) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 117.8236 cm Q q 1 0 0 1 62.69291 105.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (An instance of ) Tj /F4 10 Tf (COLLECT ) Tj /F1 10 Tf (creates the output folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 105.8236 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 151.1899 0 Td (PyInstaller Manual - Spec File Operation) Tj T* -151.1899 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (16) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R452': class PDFStream 452 0 obj % page stream << /Length 9983 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 14 Tm .761654 Tw 12 TL /F1 10 Tf 0 0 0 rg (In one-file mode, there is no call to ) Tj /F4 10 Tf (COLLECT) Tj /F1 10 Tf (, and the ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (instance receives all of the scripts, modules) Tj T* 0 Tw (and binaries.) Tj T* ET Q Q q 1 0 0 1 62.69291 675.0236 cm q BT 1 0 0 1 0 38 Tm .039988 Tw 12 TL /F1 10 Tf 0 0 0 rg (In order to read or modify a spec file you must understand some of the classes it uses. However, the class) Tj T* 0 Tw 1.18881 Tw (definitions and the exact contents of the spec file might change in future releases. For this reason, the) Tj T* 0 Tw 2.159983 Tw (following contains only the most useful and reliable detail. Some further details are under Advanced) Tj T* 0 Tw (Topics below; and you can find the complete definition of these classes in the module ) Tj /F4 10 Tf (build.py) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (TOC Class \(Table of Contents\)) Tj T* ET Q Q q 1 0 0 1 62.69291 606.0236 cm q BT 1 0 0 1 0 26 Tm 1.827633 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (\(Table Of Contents\) class is used by all of the target classes. For example, the ) Tj /F4 10 Tf (scripts) Tj T* 0 Tw .331894 Tw /F1 10 Tf (member of an Analysis object is a TOC containing a list of scripts; the ) Tj /F4 10 Tf (pure ) Tj /F1 10 Tf (member is a TOC with a list) Tj T* 0 Tw (of modules, and so on.) Tj T* ET Q Q q 1 0 0 1 62.69291 588.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Basically a ) Tj /F4 10 Tf (TOC ) Tj /F1 10 Tf (object contains a list of tuples of the form) Tj T* ET Q Q q 1 0 0 1 62.69291 582.0236 cm Q q 1 0 0 1 62.69291 570.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (\() Tj /F5 10 Tf (name) Tj /F4 10 Tf (,) Tj /F5 10 Tf (path) Tj /F4 10 Tf (,) Tj /F5 10 Tf (typecode) Tj /F4 10 Tf (\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 570.0236 cm Q q 1 0 0 1 62.69291 540.0236 cm q BT 1 0 0 1 0 14 Tm .204488 Tw 12 TL /F1 10 Tf 0 0 0 rg (In fact, it acts as an ordered set of tuples; that is, it contains no duplicates \(where uniqueness is based on) Tj T* 0 Tw (the ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (element of each tuple\). Within this constraint, a TOC preserves the order of tuples added to it.) Tj T* ET Q Q q 1 0 0 1 62.69291 498.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 2.583059 Tw (Besides the normal list methods \(appending, indexing, etc\), a TOC supports taking differences and) Tj T* 0 Tw 1.821235 Tw (intersections. For these operations a simple list of tuples can be used as one argument. This makes) Tj T* 0 Tw (excluding modules quite easy. For example,) Tj T* ET Q Q q 1 0 0 1 62.69291 492.0236 cm Q q 1 0 0 1 62.69291 480.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (a.binaries) Tj ( ) Tj (-) Tj ( ) Tj ([\('badmodule',) Tj ( ) Tj (None,) Tj ( ) Tj (None\)]) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 480.0236 cm Q q 1 0 0 1 62.69291 462.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (is an expression that yields a TOC from which any tuple named ) Tj /F4 10 Tf (badmodule ) Tj /F1 10 Tf (has been removed.) Tj T* ET Q Q q 1 0 0 1 62.69291 408.0236 cm q BT 1 0 0 1 0 38 Tm 1.582339 Tw 12 TL /F1 10 Tf 0 0 0 rg (The right-hand argument to the subtraction operator is a list that contains one tuple in which ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (is) Tj T* 0 Tw 1.001318 Tw /F4 10 Tf (badmodule ) Tj /F1 10 Tf (and the ) Tj /F5 10 Tf (path ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (typecode ) Tj /F1 10 Tf (elements are ) Tj /F4 10 Tf (None) Tj /F1 10 Tf (. \(Because set membership is based on the) Tj T* 0 Tw 1.614104 Tw /F5 10 Tf (name ) Tj /F1 10 Tf (element of a tuple only, it is not necessary to give accurate ) Tj /F5 10 Tf (path ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (typecode ) Tj /F1 10 Tf (elements when) Tj T* 0 Tw (subtracting.\) So, if you modify this line in a one-folder spec file:) Tj T* ET Q Q q 1 0 0 1 62.69291 374.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (dist = COLLECT\(..., a.binaries - [\('badmodule', None, None\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 354.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (or this line in a one-file spec:) Tj T* ET Q Q q 1 0 0 1 62.69291 321.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (exe = EXE\(..., a.binaries - [\('badmodule', None, None\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 301.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (you remove ) Tj /F4 10 Tf (badmodule ) Tj /F1 10 Tf (from the output executable.) Tj T* ET Q Q q 1 0 0 1 62.69291 259.6236 cm q BT 1 0 0 1 0 26 Tm 1.204488 Tw 12 TL /F1 10 Tf 0 0 0 rg (In order to add files to a TOC, you need to know the ) Tj /F5 10 Tf (typecode ) Tj /F1 10 Tf (values and their related ) Tj /F5 10 Tf (path ) Tj /F1 10 Tf (values. A) Tj T* 0 Tw .327485 Tw /F5 10 Tf (typecode ) Tj /F1 10 Tf (is a one-word string. ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (uses a number of ) Tj /F5 10 Tf (typecode ) Tj /F1 10 Tf (values internally, but for the normal) Tj T* 0 Tw (case you need to know only three:) Tj T* ET Q Q q 1 0 0 1 62.69291 253.6236 cm Q q 1 0 0 1 62.69291 181.6236 cm 1 1 1 rg n 0 72 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 54 469.8898 -18 re f* 1 1 1 rg n 0 36 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 18 469.8898 -18 re f* .960784 .960784 .862745 rg n 0 72 469.8898 -18 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 57 cm q .960784 .960784 .862745 rg n 0 0 49.8276 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 2.9638 0 Td (typecode) Tj T* -2.9638 0 Td ET Q Q q 1 0 0 1 67.8276 57 cm q .960784 .960784 .862745 rg n 0 0 144.6299 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 45.36496 0 Td (description) Tj T* -45.36496 0 Td ET Q Q q 1 0 0 1 224.4575 57 cm q .960784 .960784 .862745 rg n 0 0 82.80232 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 28.34116 0 Td (name) Tj T* -28.34116 0 Td ET Q Q q 1 0 0 1 319.2598 57 cm q .960784 .960784 .862745 rg n 0 0 144.6299 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 61.75996 0 Td (path) Tj T* -61.75996 0 Td ET Q Q 0 0 0 rg q 1 0 0 1 6 39 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('BINARY') Tj T* ET Q Q q 1 0 0 1 67.8276 39 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A shared library.) Tj T* ET Q Q q 1 0 0 1 224.4575 39 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Run-time name.) Tj T* ET Q Q q 1 0 0 1 319.2598 39 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('DATA') Tj T* ET Q Q q 1 0 0 1 67.8276 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Arbitrary files.) Tj T* ET Q Q q 1 0 0 1 224.4575 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Run-time name.) Tj T* ET Q Q q 1 0 0 1 319.2598 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Full path name in build.) Tj T* ET Q Q q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ('OPTION') Tj T* ET Q Q q 1 0 0 1 67.8276 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A Python run-time option.) Tj T* ET Q Q q 1 0 0 1 224.4575 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Option code) Tj T* ET Q Q q 1 0 0 1 319.2598 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ignored.) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 54 m 469.8898 54 l S n 0 36 m 469.8898 36 l S n 0 18 m 469.8898 18 l S n 61.8276 0 m 61.8276 72 l S n 218.4575 0 m 218.4575 72 l S n 313.2598 0 m 313.2598 72 l S n 0 72 m 469.8898 72 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 72 l S n 469.8898 0 m 469.8898 72 l S Q Q q 1 0 0 1 62.69291 181.6236 cm Q q 1 0 0 1 62.69291 154.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (The Tree Class) Tj T* ET Q Q q 1 0 0 1 62.69291 136.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The Tree class is a way of creating a TOC that describes some or all of the files within a directory:) Tj T* ET Q Q q 1 0 0 1 62.69291 130.6236 cm Q q 1 0 0 1 62.69291 118.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (Tree\() Tj /F5 10 Tf (root) Tj /F4 10 Tf (,) Tj ( ) Tj (prefix=) Tj /F5 10 Tf (run-time-folder) Tj /F4 10 Tf (,) Tj ( ) Tj (excludes=) Tj /F5 10 Tf (match) Tj /F4 10 Tf (\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 118.6236 cm Q q 1 0 0 1 62.69291 112.6236 cm Q q 1 0 0 1 62.69291 112.6236 cm Q q 1 0 0 1 62.69291 100.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (root ) Tj /F1 10 Tf (argument is a path string to a directory. It may be absolute or relative to the build directory.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 94.62362 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 151.1899 0 Td (PyInstaller Manual - Spec File Operation) Tj T* -151.1899 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (17) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R453': class PDFStream 453 0 obj % page stream << /Length 7759 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .526098 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (prefix ) Tj /F1 10 Tf (argument, if given, is a name for a subfolder within the run-time folder to contain the tree) Tj T* 0 Tw (files. If you omit ) Tj /F5 10 Tf (prefix ) Tj /F1 10 Tf (or give ) Tj /F4 10 Tf (None) Tj /F1 10 Tf (, the tree files will be at the top level of the run-time folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 723.0236 cm Q q 1 0 0 1 62.69291 663.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 45 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 33 cm q BT 1 0 0 1 0 14 Tm .000988 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (excludes ) Tj /F1 10 Tf (argument, if given, is a list of one or more strings that match files in the ) Tj /F5 10 Tf (root ) Tj /F1 10 Tf (that should) Tj T* 0 Tw (be omitted from the Tree. An item in the list can be either:) Tj T* ET Q Q q 1 0 0 1 23 27 cm Q q 1 0 0 1 23 27 cm Q q 1 0 0 1 23 15 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (a name, which causes files or folders with this basename to be excluded) Tj T* ET Q Q q Q Q q 1 0 0 1 23 9 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (*.ext) Tj /F1 10 Tf (, which causes files with this extension to be excluded) Tj T* ET Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 663.0236 cm Q q 1 0 0 1 62.69291 645.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example:) Tj T* ET Q Q q 1 0 0 1 62.69291 611.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (extra_tree = Tree\('../src/extras', prefix='extras', excludes=['tmp']\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 579.8236 cm q BT 1 0 0 1 0 14 Tm 1.421984 Tw 12 TL /F1 10 Tf 0 0 0 rg (This creates ) Tj /F4 10 Tf (extra_tree ) Tj /F1 10 Tf (as a TOC object that lists all files from the relative path ) Tj /F4 10 Tf (../src/extras) Tj /F1 10 Tf (,) Tj T* 0 Tw (omitting those that have the basename \(or are in a folder named\) ) Tj /F4 10 Tf (tmp) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 561.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Each tuple in this TOC has:) Tj T* ET Q Q q 1 0 0 1 62.69291 555.8236 cm Q q 1 0 0 1 62.69291 555.8236 cm Q q 1 0 0 1 62.69291 543.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F5 10 Tf (typecode ) Tj /F1 10 Tf (of ) Tj /F4 10 Tf (DATA) Tj /F1 10 Tf (,) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 537.8236 cm Q q 1 0 0 1 62.69291 525.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F5 10 Tf (path ) Tj /F1 10 Tf (consisting of a complete, absolute path to one file in the ) Tj /F5 10 Tf (root ) Tj /F1 10 Tf (folder,) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 519.8236 cm Q q 1 0 0 1 62.69291 507.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (consisting of the filename of this file, or, if you specify a ) Tj /F5 10 Tf (prefix) Tj /F1 10 Tf (, the ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (is ) Tj /F5 10 Tf (prefix) Tj /F4 10 Tf (/) Tj /F5 10 Tf (filename) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 507.8236 cm Q q 1 0 0 1 62.69291 477.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Adding Files to the Bundle) Tj T* ET Q Q q 1 0 0 1 62.69291 435.8236 cm q BT 1 0 0 1 0 26 Tm .643672 Tw 12 TL /F1 10 Tf 0 0 0 rg (To add files to the bundle, you insert them into the argument list of the ) Tj /F4 10 Tf (COLLECT ) Tj /F1 10 Tf (object for a one-folder) Tj T* 0 Tw 2.140514 Tw (bundle, or to the argument list of the ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (object for a one-file bundle. You can add files as single) Tj T* 0 Tw (TOC-style tuples, or you can add an entire Tree object by name.) Tj T* ET Q Q q 1 0 0 1 62.69291 417.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To add a README file at the top level of a one-folder bundle:) Tj T* ET Q Q q 1 0 0 1 62.69291 372.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (collect = COLLECT\(a.binaries +) Tj T* ( [\('README', '/my/project/readme', 'DATA'\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 340.6236 cm q BT 1 0 0 1 0 14 Tm .507984 Tw 12 TL /F1 10 Tf 0 0 0 rg (This adds one tuple to the ) Tj /F4 10 Tf (a.binaries ) Tj /F1 10 Tf (TOC. However, the COLLECT class takes a variable-length list) Tj T* 0 Tw (of arguments, so it is possible to just append a list of one tuple to the argument list:) Tj T* ET Q Q q 1 0 0 1 62.69291 295.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (collect = COLLECT\(a.binaries,) Tj T* ( [\('README', '/my/project/readme', 'DATA'\)], ...\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 275.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (\(You can use a list of tuples in place of a TOC object in most cases\).) Tj T* ET Q Q q 1 0 0 1 62.69291 257.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To add a folder of files, prepare a Tree and name it to the COLLECT:) Tj T* ET Q Q q 1 0 0 1 62.69291 176.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 72 re B* Q q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F4 10 Tf 12 TL (# Include all spellcheck dictionary files, as a folder named dict) Tj T* (dict_tree = Tree\('../../aspell/dict', prefix = 'dict'\)) Tj T* (# add README to that TOC for convenience) Tj T* (dict_tree += [\('README', '/my/project/readme', 'DATA'\)]) Tj T* (dist = COLLECT\(exe, a.binaries, dict_tree\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 144.2236 cm q BT 1 0 0 1 0 14 Tm .761488 Tw 12 TL /F1 10 Tf 0 0 0 rg (In this example, you have inserted the first four lines into a generated spec file. The fifth line is from the) Tj T* 0 Tw (generated spec file but with the ) Tj /F4 10 Tf (dict_tree ) Tj /F1 10 Tf (argument added.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 137.0099 0 Td (PyInstaller Manual - Adding Files to the Bundle) Tj T* -137.0099 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (18) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R454': class PDFStream 454 0 obj % page stream << /Length 8500 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Giving Run-time Python Options) Tj T* ET Q Q q 1 0 0 1 62.69291 681.0236 cm q BT 1 0 0 1 0 38 Tm 1.355251 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can pass a run-time option to the Python interpreter by adding a tuple to the creation of the EXE) Tj T* 0 Tw .184431 Tw (object. The ) Tj /F5 10 Tf (typecode ) Tj /F1 10 Tf (element of the tuple is ) Tj /F4 10 Tf ('OPTION') Tj /F1 10 Tf (. The ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (element of the tuple is the option code) Tj T* 0 Tw .502339 Tw (as it would appear on a python command line. The ) Tj /F5 10 Tf (path ) Tj /F1 10 Tf (element is ignored. The options the executables) Tj T* 0 Tw (understand are:) Tj T* ET Q Q q 1 0 0 1 62.69291 675.0236 cm Q q 1 0 0 1 62.69291 525.0236 cm 1 1 1 rg n 0 150 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 132 469.8898 -30 re f* 1 1 1 rg n 0 102 469.8898 -30 re f* .878431 .878431 .878431 rg n 0 72 469.8898 -42 re f* 1 1 1 rg n 0 30 469.8898 -30 re f* .960784 .960784 .862745 rg n 0 150 469.8898 -18 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 4.379379 135 cm q .960784 .960784 .862745 rg n 0 0 32.22 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL -1.620621 0 Td (Option) Tj T* 1.620621 0 Td ET Q Q q 1 0 0 1 44.89081 135 cm q .960784 .960784 .862745 rg n 0 0 55.01 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL -2.087952 0 Td (Description) Tj T* 2.087952 0 Td ET Q Q q 1 0 0 1 109.8129 135 cm q .960784 .960784 .862745 rg n 0 0 72.68943 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 15.77972 0 Td (Example) Tj T* -15.77972 0 Td ET Q Q q 1 0 0 1 194.5023 135 cm q .960784 .960784 .862745 rg n 0 0 269.3875 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 120.8037 0 Td (Notes) Tj T* -120.8037 0 Td ET Q Q 0 0 0 rg q 1 0 0 1 6 117 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (v) Tj T* ET Q Q q 1 0 0 1 46.97876 105 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Verbose) Tj T* (imports) Tj T* ET Q Q q 1 0 0 1 109.8129 105 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (\('v', None,) Tj T* ('OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 117 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Same as Python -v ...) Tj T* ET Q Q q 1 0 0 1 6 87 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (u) Tj T* ET Q Q q 1 0 0 1 46.97876 75 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Unbuffered) Tj T* (stdio) Tj T* ET Q Q q 1 0 0 1 109.8129 75 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (\('u', None,) Tj T* ('OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 87 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Same as Python -u ...) Tj T* ET Q Q q 1 0 0 1 6 45 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (W) Tj T* (spec) Tj T* ET Q Q q 1 0 0 1 46.97876 45 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (Warning) Tj T* (option) Tj T* ET Q Q q 1 0 0 1 109.8129 33 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL (\('W ignore',) Tj T* (None,) Tj T* ('OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 57 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Python 2.1+ only.) Tj T* ET Q Q q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (s) Tj T* ET Q Q q 1 0 0 1 46.97876 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Use site.py) Tj T* ET Q Q q 1 0 0 1 109.8129 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (\('s', None,) Tj T* ('OPTION'\)) Tj T* ET Q Q q 1 0 0 1 194.5023 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL (The opposite of Python's -S flag. Note that site.py must be in) Tj T* (the executable's directory to be used.) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 132 m 469.8898 132 l S n 0 102 m 469.8898 102 l S n 0 72 m 469.8898 72 l S n 0 30 m 469.8898 30 l S n 40.97876 0 m 40.97876 150 l S n 103.8129 0 m 103.8129 150 l S n 188.5023 0 m 188.5023 150 l S n 0 150 m 469.8898 150 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 150 l S n 469.8898 0 m 469.8898 150 l S Q Q q 1 0 0 1 62.69291 525.0236 cm Q q 1 0 0 1 62.69291 507.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example:) Tj T* ET Q Q q 1 0 0 1 62.69291 449.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (exe = EXE\(a.scripts, pyz,) Tj T* ( [\('v', None, 'OPTION'\),\('W ignore', None, 'OPTION'\)],) Tj T* ( name="myapp.exe", exclude_binaries=1\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 429.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In this example, you have inserted a list of two tuples into the EXE call.) Tj T* ET Q Q q 1 0 0 1 62.69291 396.8236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (When Things Go Wrong) Tj T* ET Q Q q 1 0 0 1 62.69291 366.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Recipes and Examples for Specific Problems) Tj T* ET Q Q q 1 0 0 1 62.69291 336.8236 cm q BT 1 0 0 1 0 14 Tm 2.320697 Tw 12 TL /F1 10 Tf 0 0 0 rg (Code examples for some advanced uses and some common problems are available on our ) Tj 0 0 .501961 rg (Recipe) Tj T* 0 Tw 0 0 0 rg (web-page. Some of the recipes there include:) Tj T* ET Q Q q 1 0 0 1 62.69291 330.8236 cm Q q 1 0 0 1 62.69291 330.8236 cm Q q 1 0 0 1 62.69291 306.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.59811 Tw 12 TL /F1 10 Tf 0 0 0 rg (A more sophisticated way of collecting data files than the one shown above \() Tj 0 0 .501961 rg (Adding Files to the) Tj T* 0 Tw (Bundle) Tj 0 0 0 rg (\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 300.8236 cm Q q 1 0 0 1 62.69291 288.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A use of a run-time hook to set the Qt API level.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 282.8236 cm Q q 1 0 0 1 62.69291 270.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A workaround for a multiprocessing constraint under Windows.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 270.8236 cm Q q 1 0 0 1 62.69291 252.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (and others. Please feel free to contribute more recipes!) Tj T* ET Q Q q 1 0 0 1 62.69291 222.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Getting the Latest Version) Tj T* ET Q Q q 1 0 0 1 62.69291 180.8236 cm q BT 1 0 0 1 0 26 Tm .653672 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you have some reason to think you have found a bug in ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (you can try downloading the latest) Tj T* 0 Tw .144104 Tw (development version. This version might have fixes or features that are not yet at ) Tj 0 0 .501961 rg (PyPI) Tj 0 0 0 rg (. Links to download) Tj T* 0 Tw (the latest stable version and the latest development version are at ) Tj 0 0 .501961 rg (PyInstaller.org) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 150.8236 cm q BT 1 0 0 1 0 14 Tm .479461 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you have ) Tj 0 0 .501961 rg (Git ) Tj 0 0 0 rg (installed on your development system, you can use it together with pip to install the latest) Tj T* 0 Tw (version of ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (directly:) Tj T* ET Q Q q 1 0 0 1 62.69291 117.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (pip install -e git://github.com/pyinstaller/pyinstaller.git#egg=PyInstaller) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 123.9599 0 Td (PyInstaller Manual - Giving Run-time Python Options) Tj T* -123.9599 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (19) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R455': class PDFStream 455 0 obj % page stream << /Length 6915 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Finding out What Went Wrong) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Build-time Messages) Tj T* ET Q Q q 1 0 0 1 62.69291 666.0236 cm q BT 1 0 0 1 0 26 Tm 2.948555 Tw 12 TL /F1 10 Tf 0 0 0 rg (When an ) Tj /F4 10 Tf (Analysis ) Tj /F1 10 Tf (step runs, it produces error and warning messages. These display after the) Tj T* 0 Tw 2.109318 Tw (command line if the ) Tj /F4 10 Tf (--log-level ) Tj /F1 10 Tf (option allows it. Analysis also puts messages in a warnings file) Tj T* 0 Tw (named ) Tj /F4 10 Tf (warn) Tj (<) Tj (name) Tj (>) Tj (.txt ) Tj /F1 10 Tf (in the spec file's directory.) Tj T* ET Q Q q 1 0 0 1 62.69291 624.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .222485 Tw (An error message appears if Analysis detects an unconditional import and the module it names cannot be) Tj T* 0 Tw 1.649488 Tw (found. An unconditional import is one that appears at the top level of the script, so it is certain to be) Tj T* 0 Tw (executed.) Tj T* ET Q Q q 1 0 0 1 62.69291 570.0236 cm q BT 1 0 0 1 0 38 Tm .655251 Tw 12 TL /F1 10 Tf 0 0 0 rg (A warning is given if the module named in an import cannot be found, but the import itself is conditional.) Tj T* 0 Tw 2.37832 Tw (An import is conditional when it appears in a function definition or in an ) Tj /F4 10 Tf (if ) Tj /F1 10 Tf (statement. There is a) Tj T* 0 Tw .01104 Tw (reasonable chance that such an import will not be executed, so it will not matter that the module cannot be) Tj T* 0 Tw (found.) Tj T* ET Q Q q 1 0 0 1 62.69291 528.0236 cm q BT 1 0 0 1 0 26 Tm .408735 Tw 12 TL /F1 10 Tf 0 0 0 rg (For example, ) Tj /F4 10 Tf (os.py ) Tj /F1 10 Tf (\(which is cross-platform\) works by figuring out what platform it is on, then importing) Tj T* 0 Tw 3.638443 Tw (and rebinding names from the appropriate platform-specific module. If your script imports ) Tj /F4 10 Tf (os ) Tj /F1 10 Tf (or) Tj T* 0 Tw /F4 10 Tf (os.path) Tj /F1 10 Tf (, the warning file will have lines like:) Tj T* ET Q Q q 1 0 0 1 62.69291 470.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (WARNING: no module named dos \(conditional import by os\)) Tj T* (WARNING: no module named ce \(conditional import by os\)) Tj T* (WARNING: no module named os2 \(conditional import by os\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 426.8236 cm q BT 1 0 0 1 0 26 Tm .167765 Tw 12 TL /F1 10 Tf 0 0 0 rg (The analysis has detected that the import is within a conditional block \(an if statement\). You will know that) Tj T* 0 Tw 2.064987 Tw (in this system, ) Tj /F4 10 Tf (os ) Tj /F1 10 Tf (will never need to import the ) Tj /F4 10 Tf (os2 ) Tj /F1 10 Tf (module, for example, so that warning can be) Tj T* 0 Tw (ignored.) Tj T* ET Q Q q 1 0 0 1 62.69291 384.8236 cm q BT 1 0 0 1 0 26 Tm 1.03811 Tw 12 TL /F1 10 Tf 0 0 0 rg (Warnings may also be produced when a class or function is declared in a package \(an ) Tj /F4 10 Tf (__init__.py) Tj T* 0 Tw .15436 Tw /F1 10 Tf (module\), and the import specifies ) Tj /F4 10 Tf (package.name) Tj /F1 10 Tf (. In this case, the analysis can't tell if name is supposed) Tj T* 0 Tw (to refer to a submodule or package.) Tj T* ET Q Q q 1 0 0 1 62.69291 330.8236 cm q BT 1 0 0 1 0 38 Tm 1.560751 Tw 12 TL /F1 10 Tf 0 0 0 rg (Warnings are also produced when an ) Tj /F4 10 Tf (__import__) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (exec ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (eval ) Tj /F1 10 Tf (statement is encountered. Either) Tj T* 0 Tw .335868 Tw /F4 10 Tf (exec ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (eval ) Tj /F1 10 Tf (could be used to implement a dynamic import, but normally they are used for something) Tj T* 0 Tw .499213 Tw (else. However, an ) Tj /F4 10 Tf (__import__ ) Tj /F1 10 Tf (warning should certainly be investigated. It probably represents a place) Tj T* 0 Tw (where the script is importing code that ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (cannot see.) Tj T* ET Q Q q 1 0 0 1 62.69291 300.8236 cm q BT 1 0 0 1 0 14 Tm .612126 Tw 12 TL /F1 10 Tf 0 0 0 rg (Problems detected through these messages can be corrected; see ) Tj 0 0 .501961 rg (Listing Hidden Imports ) Tj 0 0 0 rg (below for how) Tj T* 0 Tw (to do it.) Tj T* ET Q Q q 1 0 0 1 62.69291 273.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Build-Time Python Errors) Tj T* ET Q Q q 1 0 0 1 62.69291 231.8236 cm q BT 1 0 0 1 0 26 Tm .981318 Tw 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (sometimes terminates by raising a Python exception. In most cases the reason is clear from) Tj T* 0 Tw 2.075697 Tw (the exception message, for example "Your system is not supported", or "Pyinstaller requires at least) Tj T* 0 Tw (Python 2.4". Others clearly indicate a bug that should be reported.) Tj T* ET Q Q q 1 0 0 1 62.69291 153.8236 cm q BT 1 0 0 1 0 62 Tm 3.940888 Tw 12 TL /F1 10 Tf 0 0 0 rg (One of these errors can be puzzling, however: ) Tj /F4 10 Tf (IOError\("Python) Tj ( ) Tj (library) Tj ( ) Tj (not) Tj ( ) Tj (found!"\)) Tj /F1 10 Tf T* 0 Tw .166654 Tw /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (needs to bundle the Python library, which is the main part of the Python interpreter, linked as a) Tj T* 0 Tw 1.12528 Tw (dynamic load library. The name and location of this file varies depending on the platform in use. Some) Tj T* 0 Tw .118735 Tw (Python installations do not include a dynamic Python library by default \(a static-linked one may be present) Tj T* 0 Tw .876654 Tw (but cannot be used\). You may need to install a development package of some kind. Or, the library may) Tj T* 0 Tw (exist but is not in a folder where ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (is searching.) Tj T* ET Q Q q 1 0 0 1 62.69291 99.82362 cm q BT 1 0 0 1 0 38 Tm .831318 Tw 12 TL /F1 10 Tf 0 0 0 rg (The places where ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (looks for the python library are different in different operating systems, but) Tj T* 0 Tw .427045 Tw /F4 10 Tf (/lib ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (/usr/lib ) Tj /F1 10 Tf (are checked in most systems. If you cannot put the python library there, try setting) Tj T* 0 Tw 1.175814 Tw (the correct path in the environment variable ) Tj /F4 10 Tf (LD_LIBRARY_PATH ) Tj /F1 10 Tf (in Linux or ) Tj /F4 10 Tf (DYLD_LIBRARY_PATH ) Tj /F1 10 Tf (in) Tj T* 0 Tw (OS X.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 128.4049 0 Td (PyInstaller Manual - Finding out What Went Wrong) Tj T* -128.4049 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (20) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R456': class PDFStream 456 0 obj % page stream << /Length 5691 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Getting Debug Messages) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 26 Tm 1.669269 Tw 12 TL /F1 10 Tf 0 0 0 rg (Giving the ) Tj /F4 10 Tf (--debug ) Tj /F1 10 Tf (option causes the bundled executable itself to write progress messages when it) Tj T* 0 Tw .18332 Tw (runs. This can be useful during development of a complex package, or when your app doesn't seem to be) Tj T* 0 Tw (starting, or just to learn how the runtime works.) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q BT 1 0 0 1 0 26 Tm .727318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Normally the debug progress messages go to standard output. If the ) Tj /F4 10 Tf (--windowed ) Tj /F1 10 Tf (option is used when) Tj T* 0 Tw .987984 Tw (bundling a Windows app, they are displayed as MessageBoxes. For a ) Tj /F4 10 Tf (--windowed ) Tj /F1 10 Tf (Mac OS app they) Tj T* 0 Tw (are not displayed.) Tj T* ET Q Q q 1 0 0 1 62.69291 624.0236 cm q BT 1 0 0 1 0 14 Tm 2.184597 Tw 12 TL /F1 10 Tf 0 0 0 rg (Remember to bundle without ) Tj /F4 10 Tf (--debug ) Tj /F1 10 Tf (for your production version. Users would find the messages) Tj T* 0 Tw (annoying.) Tj T* ET Q Q q 1 0 0 1 62.69291 597.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Getting Python's Verbose Imports) Tj T* ET Q Q q 1 0 0 1 62.69291 543.0236 cm q BT 1 0 0 1 0 38 Tm .34936 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can also pass a ) Tj /F4 10 Tf (-v ) Tj /F1 10 Tf (\(verbose imports\) flag to the embedded Python interpreter \(see ) Tj 0 0 .501961 rg (Giving Run-time) Tj T* 0 Tw 2.09811 Tw (Python Options ) Tj 0 0 0 rg (above\). This can be extremely useful. It can be informative even with apps that are) Tj T* 0 Tw .536654 Tw (apparently working, to make sure that they are getting all imports from the bundle, and not leaking out to) Tj T* 0 Tw (the local installed Python.) Tj T* ET Q Q q 1 0 0 1 62.69291 513.0236 cm q BT 1 0 0 1 0 14 Tm 2.459318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Python verbose and warning messages always go to standard output and are not visible when the) Tj T* 0 Tw /F4 10 Tf (--windowed ) Tj /F1 10 Tf (option is used. Remember to not use this in the distributed program.) Tj T* ET Q Q q 1 0 0 1 62.69291 483.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Helping PyInstaller Find Modules) Tj T* ET Q Q q 1 0 0 1 62.69291 456.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Extending the Path) Tj T* ET Q Q q 1 0 0 1 62.69291 414.0236 cm q BT 1 0 0 1 0 26 Tm .44332 Tw 12 TL /F1 10 Tf 0 0 0 rg (If Analysis recognizes that a module is needed, but cannot find that module, it is often because the script) Tj T* 0 Tw .698409 Tw (is manipulating ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. The easiest thing to do in this case is to use the ) Tj /F4 10 Tf (--paths= ) Tj /F1 10 Tf (option to list all) Tj T* 0 Tw (the other places that the script might be searching for imports:) Tj T* ET Q Q q 1 0 0 1 62.69291 368.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (pyi-makespec --paths=/path/to/thisdir \\) Tj T* ( --paths=/path/to/otherdir myscript.py) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 348.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (These paths will be added to the current ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (during analysis.) Tj T* ET Q Q q 1 0 0 1 62.69291 321.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Listing Hidden Imports) Tj T* ET Q Q q 1 0 0 1 62.69291 291.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .064274 Tw (If Analysis thinks it has found all the imports, but the app fails with an import error, the problem is a hidden) Tj T* 0 Tw (import; that is, an import that is not visible to the analysis phase.) Tj T* ET Q Q q 1 0 0 1 62.69291 261.8236 cm q BT 1 0 0 1 0 14 Tm 1.684985 Tw 12 TL /F1 10 Tf 0 0 0 rg (Hidden imports can occur when the code is using ) Tj /F4 10 Tf (__import__ ) Tj /F1 10 Tf (or perhaps ) Tj /F4 10 Tf (exec ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (eval) Tj /F1 10 Tf (. You get) Tj T* 0 Tw (warnings of these \(see ) Tj 0 0 .501961 rg (Build-time Messages) Tj 0 0 0 rg (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 231.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .536457 Tw (Hidden imports can also occur when an extension module uses the Python/C API to do an import. When) Tj T* 0 Tw (this occurs, Analysis can detect nothing. There will be no warnings, only a crash at run-time.) Tj T* ET Q Q q 1 0 0 1 62.69291 213.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (To find these hidden imports, set the ) Tj /F4 10 Tf (-v ) Tj /F1 10 Tf (flag \() Tj 0 0 .501961 rg (Getting Python's Verbose Imports ) Tj 0 0 0 rg (above\).) Tj T* ET Q Q q 1 0 0 1 62.69291 171.8236 cm q BT 1 0 0 1 0 26 Tm 6.644651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Once you know what they are, you add the needed modules to the bundle using the) Tj T* 0 Tw .546235 Tw /F4 10 Tf (--hidden-import= ) Tj /F1 10 Tf (command option, by editing the spec file, or with a hook file \(see ) Tj 0 0 .501961 rg (Using Hook Files) Tj T* 0 Tw 0 0 0 rg (below\).) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 122.2949 0 Td (PyInstaller Manual - Helping PyInstaller Find Modules) Tj T* -122.2949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (21) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R457': class PDFStream 457 0 obj % page stream << /Length 7548 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Extending a Package's ) Tj /F6 12.5 Tf (__path__) Tj T* ET Q Q q 1 0 0 1 62.69291 660.0236 cm q BT 1 0 0 1 0 62 Tm 1.269318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Python allows a script to extend the search path used for imports through the ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (mechanism.) Tj T* 0 Tw 3.604651 Tw (Normally, the ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (of an imported module has only one entry, the directory in which the) Tj T* 0 Tw 3.930751 Tw /F4 10 Tf (__init__.py ) Tj /F1 10 Tf (was found. But ) Tj /F4 10 Tf (__init__.py ) Tj /F1 10 Tf (is free to extend its ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (to include other) Tj T* 0 Tw 11.72497 Tw (directories. For example, the ) Tj /F4 10 Tf (win32com.shell.shell ) Tj /F1 10 Tf (module actually resolves to) Tj T* 0 Tw 2.343953 Tw /F4 10 Tf (win32com/win32comext/shell/shell.pyd) Tj /F1 10 Tf (. This is because ) Tj /F4 10 Tf (win32com/__init__.py ) Tj /F1 10 Tf (appends) Tj T* 0 Tw /F4 10 Tf (../win32comext ) Tj /F1 10 Tf (to its ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 618.0236 cm q BT 1 0 0 1 0 26 Tm .907126 Tw 12 TL /F1 10 Tf 0 0 0 rg (Because the ) Tj /F4 10 Tf (__init__.py ) Tj /F1 10 Tf (of an imported module is not actually executed during analysis, changes it) Tj T* 0 Tw .402339 Tw (makes to ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (are not seen by ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (. We fix the problem with the same hook mechanism we) Tj T* 0 Tw (use for hidden imports, with some additional logic; see ) Tj 0 0 .501961 rg (Using Hook Files ) Tj 0 0 0 rg (below.) Tj T* ET Q Q q 1 0 0 1 62.69291 576.0236 cm q BT 1 0 0 1 0 26 Tm .858221 Tw 12 TL /F1 10 Tf 0 0 0 rg (Note that manipulations of ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (hooked in this way apply only to the analysis. That is, at runtime) Tj T* 0 Tw 13.31122 Tw /F4 10 Tf (win32com.shell ) Tj /F1 10 Tf (is resolved the same way as ) Tj /F4 10 Tf (win32com.anythingelse) Tj /F1 10 Tf (, and) Tj T* 0 Tw /F4 10 Tf (win32com.__path__ ) Tj /F1 10 Tf (knows nothing of ) Tj /F4 10 Tf (../win32comext) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 558.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Once in a while, that's not enough.) Tj T* ET Q Q q 1 0 0 1 62.69291 531.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Changing Runtime Behavior) Tj T* ET Q Q q 1 0 0 1 62.69291 501.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .534983 Tw (More bizarre situations can be accomodated with runtime hooks. These are small scripts that manipulate) Tj T* 0 Tw (the environment before your main script runs, effectively providing additional top-level code to your script.) Tj T* ET Q Q q 1 0 0 1 62.69291 471.0236 cm q BT 1 0 0 1 0 14 Tm 7.16284 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are two ways of providing runtime hooks. You can name them with the option) Tj T* 0 Tw /F4 10 Tf (--runtime-hook=) Tj /F5 10 Tf (path-to-script) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 405.0236 cm q BT 1 0 0 1 0 50 Tm 2.170574 Tw 12 TL /F1 10 Tf 0 0 0 rg (Second, some runtime hooks are provided. At the end of an analysis, the names in the module list) Tj T* 0 Tw .329269 Tw (produced by the Analysis phase are looked up in ) Tj /F4 10 Tf (loader/rthooks.dat ) Tj /F1 10 Tf (in the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (install folder.) Tj T* 0 Tw .011567 Tw (This text file is the string representation of a Python dictionary. The key is the module name, and the value) Tj T* 0 Tw .830514 Tw (is a list of hook-script pathnames. If there is a match, those scripts are included in the bundled app and) Tj T* 0 Tw (will be called before your main script starts.) Tj T* ET Q Q q 1 0 0 1 62.69291 363.0236 cm q BT 1 0 0 1 0 26 Tm .404692 Tw 12 TL /F1 10 Tf 0 0 0 rg (Hooks you name with the option are executed in the order given, and before any installed runtime hooks.) Tj T* 0 Tw .198863 Tw (If you specify ) Tj /F4 10 Tf (--runtime-hook=file1.py) Tj ( ) Tj (--runtime-hook=file2.py ) Tj /F1 10 Tf (then the execution order at) Tj T* 0 Tw (runtime will be:) Tj T* ET Q Q q 1 0 0 1 62.69291 357.0236 cm Q q 1 0 0 1 62.69291 357.0236 cm Q q 1 0 0 1 62.69291 345.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Code of ) Tj /F4 10 Tf (file1.py) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 339.0236 cm Q q 1 0 0 1 62.69291 327.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Code of ) Tj /F4 10 Tf (file2.py) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 321.0236 cm Q q 1 0 0 1 62.69291 309.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Any hook specified for an included module that is found in ) Tj /F4 10 Tf (rthooks/rthooks.dat) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 303.0236 cm Q q 1 0 0 1 62.69291 291.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Your main script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 291.0236 cm Q q 1 0 0 1 62.69291 201.0236 cm q BT 1 0 0 1 0 74 Tm .122488 Tw 12 TL /F1 10 Tf 0 0 0 rg (Hooks called in this way, while they need to be careful of what they import, are free to do almost anything.) Tj T* 0 Tw 1.356457 Tw (One reason to write a run-time hook is to override some functions or variables from some modules. A) Tj T* 0 Tw .70248 Tw (good example of this is the Django runtime hook \(see ) Tj /F4 10 Tf (loader/rthooks/pyi_rth_django.py ) Tj /F1 10 Tf (in the) Tj T* 0 Tw 2.554269 Tw /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (folder\). Django imports some modules dynamically and it is looking for some ) Tj /F4 10 Tf (.py ) Tj /F1 10 Tf (files.) Tj T* 0 Tw 4.269318 Tw (However ) Tj /F4 10 Tf (.py ) Tj /F1 10 Tf (files are not available in the one-file bundle. We need to override the function) Tj T* 0 Tw .463059 Tw /F4 10 Tf (django.core.management.find_commands ) Tj /F1 10 Tf (in a way that will just return a list of values. The runtime) Tj T* 0 Tw (hook does this as follows:) Tj T* ET Q Q q 1 0 0 1 62.69291 131.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (import django.core.management) Tj T* (def _find_commands\(_\):) Tj T* ( return """cleanup shell runfcgi runserver""".split\(\)) Tj T* (django.core.management.find_commands = _find_commands) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 122.2949 0 Td (PyInstaller Manual - Helping PyInstaller Find Modules) Tj T* -122.2949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (22) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R458': class PDFStream 458 0 obj % page stream << /Length 9277 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 732.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Advanced Topics) Tj T* ET Q Q q 1 0 0 1 62.69291 702.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (The Bootstrap Process in Detail) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 38 Tm .503516 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are many steps that must take place before the bundled script can begin execution. A summary of) Tj T* 0 Tw 2.093984 Tw (these steps was given in the Overview \() Tj 0 0 .501961 rg (How the One-Folder Program Works ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (How the One-File) Tj T* 0 Tw .504104 Tw (Program Works) Tj 0 0 0 rg (\). Here is more detail to help you understand what the bootloader does and how to figure) Tj T* 0 Tw (out problems.) Tj T* ET Q Q q 1 0 0 1 62.69291 621.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Bootloader) Tj T* ET Q Q q 1 0 0 1 62.69291 567.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .53311 Tw (The bootloader prepares everything for running Python code. It begins the setup and then reruns itself in) Tj T* 0 Tw .322209 Tw (another process. This approach of using two processes allows a lot of flexibility and is used in all bundles) Tj T* 0 Tw 2.143876 Tw (except one-folder mode in Windows. So do not be surprised if you will see your frozen app as two) Tj T* 0 Tw (processes in your system task manager.) Tj T* ET Q Q q 1 0 0 1 62.69291 549.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (What happens during execution of bootloader:) Tj T* ET Q Q q 1 0 0 1 62.69291 543.0236 cm Q q 1 0 0 1 62.69291 543.0236 cm Q q 1 0 0 1 62.69291 405.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 123 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 4.55 0 Td (A.) Tj T* -4.55 0 Td ET Q Q q 1 0 0 1 23 123 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (First process: bootloader starts.) Tj T* ET Q Q q 1 0 0 1 23 117 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 114 cm Q q 1 0 0 1 20 114 cm Q q 1 0 0 1 20 102 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If one-file mode, extract bundled files to ) Tj /F5 10 Tf (temppath) Tj /F4 10 Tf (_MEI) Tj /F5 10 Tf (xxxxxx) Tj T* ET Q Q q Q Q q 1 0 0 1 20 96 cm Q q 1 0 0 1 20 72 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.834418 Tw (Set/unset various environment variables, e.g. override LD_LIBRARY_PATH on Linux or) Tj T* 0 Tw (LIBPATH on AIX; unset DYLD_LIBRARY_PATH on OSX.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 66 cm Q q 1 0 0 1 20 54 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Set up to handle signals for both processes.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 48 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Run the child process.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (5.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Wait for the child process to finish.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (6.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If one-file mode, delete ) Tj /F5 10 Tf (temppath) Tj /F4 10 Tf (_MEI) Tj /F5 10 Tf (xxxxxx) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 399.0236 cm Q q 1 0 0 1 62.69291 297.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 87 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 4.55 0 Td (B.) Tj T* -4.55 0 Td ET Q Q q 1 0 0 1 23 87 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Second process: bootloader itself started as a child process.) Tj T* ET Q Q q 1 0 0 1 23 81 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 78 cm Q q 1 0 0 1 20 78 cm Q q 1 0 0 1 20 66 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (On Windows set the ) Tj 0 0 .501961 rg (activation context) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 60 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.813555 Tw (Load the Python dynamic library. The name of the dynamic library is embedded in the) Tj T* 0 Tw (executable file.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Initialize Python interpreter: set PYTHONPATH, PYTHONHOME.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Run python code.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 297.0236 cm Q q 1 0 0 1 62.69291 270.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Running Python code) Tj T* ET Q Q q 1 0 0 1 62.69291 252.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Running Python code consists of several steps:) Tj T* ET Q Q q 1 0 0 1 62.69291 246.0236 cm Q q 1 0 0 1 62.69291 246.0236 cm Q q 1 0 0 1 62.69291 198.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 38 Tm 1.993828 Tw 12 TL /F1 10 Tf 0 0 0 rg (Run Python initialization code which prepares everything for running the user's main script. The) Tj T* 0 Tw .042126 Tw (initialization code can use only the Python built-in modules because the general import mechanism is) Tj T* 0 Tw .557318 Tw (not yet available. It sets up the python import mechanism to load modules from archives embedded) Tj T* 0 Tw (in the executable. It also adds the attributes ) Tj /F4 10 Tf (frozen ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (_MEIPASS ) Tj /F1 10 Tf (to the ) Tj /F4 10 Tf (sys ) Tj /F1 10 Tf (built-in module.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 192.0236 cm Q q 1 0 0 1 62.69291 180.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Execute run run-time hooks: first those specified by the user, then any standard ones.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 174.0236 cm Q q 1 0 0 1 62.69291 138.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 26 Tm 1.439461 Tw 12 TL /F1 10 Tf 0 0 0 rg (Install python "egg" files. When a module is part of a zip file \(.egg\), it has been bundled into the) Tj T* 0 Tw 1.106342 Tw /F4 10 Tf (./eggs ) Tj /F1 10 Tf (directory. Installing means appending .egg file names to ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. Python automatically) Tj T* 0 Tw (detects whether an item in ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (is a zip file or a directory.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 132.0236 cm Q q 1 0 0 1 62.69291 120.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Run the main script.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 120.0236 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 157.0249 0 Td (PyInstaller Manual - Advanced Topics) Tj T* -157.0249 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (23) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R459': class PDFStream 459 0 obj % page stream << /Length 7079 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Python imports in a frozen app) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 26 Tm .833059 Tw 12 TL /F5 10 Tf 0 0 0 rg (PyInstaller ) Tj /F1 10 Tf (embeds compiled python code \() Tj /F4 10 Tf (.pyc ) Tj /F1 10 Tf (files\) within the executable. ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (injects its code) Tj T* 0 Tw .55811 Tw (into the normal Python import mechanism. Python allows this; the support is described in ) Tj 0 0 .501961 rg (PEP 302 ) Tj 0 0 0 rg ("New) Tj T* 0 Tw (Import Hooks".) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q BT 1 0 0 1 0 26 Tm .300814 Tw 12 TL /F1 10 Tf 0 0 0 rg (PyInstaller implements the PEP 302 specification for importing built-in modules, importing frozen modules) Tj T* 0 Tw 4.163984 Tw (\(compiled python code bundled with the app\) and for C-extensions. The code can be read in) Tj T* 0 Tw /F4 10 Tf (./PyInstaller/loader/pyi_importers.py) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 600.0236 cm q BT 1 0 0 1 0 38 Tm .371984 Tw 12 TL /F1 10 Tf 0 0 0 rg (At runtime the PyInstaller PEP 302 hooks are appended to the variable ) Tj /F4 10 Tf (sys.meta_path) Tj /F1 10 Tf (. When trying to) Tj T* 0 Tw 2.355697 Tw (import modules the interpreter will first try PEP 302 hooks in ) Tj /F4 10 Tf (sys.meta_path ) Tj /F1 10 Tf (before searching in) Tj T* 0 Tw .081412 Tw /F4 10 Tf (sys.path) Tj /F1 10 Tf (. As a result, the Python interpreter loads imported python modules from the archive embedded) Tj T* 0 Tw (in the bundled executable.) Tj T* ET Q Q q 1 0 0 1 62.69291 582.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This is the resolution order of import statements in a bundled app:) Tj T* ET Q Q q 1 0 0 1 62.69291 576.0236 cm Q q 1 0 0 1 62.69291 576.0236 cm Q q 1 0 0 1 62.69291 564.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Is it a built-in module? A list of built-in modules is in variable ) Tj /F4 10 Tf (sys.builtin_module_names) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 558.0236 cm Q q 1 0 0 1 62.69291 546.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Is it a module embedded in the executable? Then load it from embedded archive.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 540.0236 cm Q q 1 0 0 1 62.69291 516.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.151318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Is it a C-extension? The app will try to find a file with name ) Tj /F5 10 Tf (package.subpackage.module) Tj /F4 10 Tf (.pyd ) Tj /F1 10 Tf (or) Tj T* 0 Tw /F5 10 Tf (package.subpackage.module) Tj /F4 10 Tf (.so) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 510.0236 cm Q q 1 0 0 1 62.69291 486.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .38152 Tw 12 TL /F1 10 Tf 0 0 0 rg (Next examine paths in the ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (\(PYTHONPATH\). There could be any additional location with) Tj T* 0 Tw (python modules or ) Tj /F4 10 Tf (.egg ) Tj /F1 10 Tf (filenames.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 480.0236 cm Q q 1 0 0 1 62.69291 468.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (5.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If the module was not found then raise ) Tj /F4 10 Tf (ImportError) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 468.0236 cm Q q 1 0 0 1 62.69291 438.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Adapting to being "frozen") Tj T* ET Q Q q 1 0 0 1 62.69291 396.0236 cm q BT 1 0 0 1 0 26 Tm 2.090542 Tw 12 TL /F1 10 Tf 0 0 0 rg (In some apps it is necessary to learn at run-time whether the app is running "live" \(from source\) or) Tj T* 0 Tw .878221 Tw ("frozen" \(part of a bundle\). For example, you might have a configuration file that, when running "live", is) Tj T* 0 Tw (found based on a module's ) Tj /F4 10 Tf (__file__ ) Tj /F1 10 Tf (attribute. That won't work when the code is bundled.) Tj T* ET Q Q q 1 0 0 1 62.69291 366.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .722765 Tw (When your application needs access to a data file, for example a configuration file or an icon image file,) Tj T* 0 Tw (you get the path to the file with the following code:) Tj T* ET Q Q q 1 0 0 1 62.69291 236.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 120 re B* Q q 0 0 0 rg BT 1 0 0 1 0 98 Tm /F4 10 Tf 12 TL (import sys) Tj T* (import os) Tj T* (...) Tj T* (if getattr\(sys, 'frozen', False\):) Tj T* ( # we are running in a |PyInstaller| bundle) Tj T* ( basedir = sys._MEIPASS) Tj T* (else:) Tj T* ( # we are running in a normal Python environment) Tj T* ( basedir = os.path.dirname\(__file__\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 168.8236 cm q BT 1 0 0 1 0 50 Tm 1.393984 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (bootloader adds the attribute ) Tj /F4 10 Tf (frozen ) Tj /F1 10 Tf (to the ) Tj /F4 10 Tf (sys ) Tj /F1 10 Tf (module. If that attribute exists, your) Tj T* 0 Tw .741984 Tw (script has been launched by the bootloader. When that is true, ) Tj /F4 10 Tf (sys._MEIPASS ) Tj /F1 10 Tf (\(note the underscore in) Tj T* 0 Tw .289431 Tw (the name\) contains the path to the folder containing your script and any other files or folders bundled with) Tj T* 0 Tw .076098 Tw (it. For one-folder mode this is the distribution folder. For one-file mode it is the temporary folder created by) Tj T* 0 Tw (the bootloader .) Tj T* ET Q Q q 1 0 0 1 62.69291 126.8236 cm q BT 1 0 0 1 0 26 Tm .112485 Tw 12 TL /F1 10 Tf 0 0 0 rg (When your program was not started by the bootloader, the standard Python variable ) Tj /F4 10 Tf (__file__ ) Tj /F1 10 Tf (is the full) Tj T* 0 Tw .482651 Tw (path to the script now executing, and ) Tj /F4 10 Tf (os.path.dirname\(\) ) Tj /F1 10 Tf (extracts the path to the folder that contains) Tj T* 0 Tw (it.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 137.6249 0 Td (PyInstaller Manual - Adapting to being "frozen") Tj T* -137.6249 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (24) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R460': class PDFStream 460 0 obj % page stream << /Length 7258 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Accessing Data Files) Tj T* ET Q Q q 1 0 0 1 62.69291 705.0236 cm q BT 1 0 0 1 0 14 Tm .274724 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can include related files in either type of distribution. Data files and folders of files can be included by) Tj T* 0 Tw (editing the spec file; see ) Tj 0 0 .501961 rg (Adding Files to the Bundle) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 663.0236 cm q BT 1 0 0 1 0 26 Tm .20881 Tw 12 TL /F1 10 Tf 0 0 0 rg (In the one-folder distribution, bundled files are in the distribution folder. You can direct your users to these) Tj T* 0 Tw .704431 Tw (files, for example to see the ) Tj /F4 10 Tf (README ) Tj /F1 10 Tf (or edit a configuration file. Your code can make useful changes to) Tj T* 0 Tw (files in the folder.) Tj T* ET Q Q q 1 0 0 1 62.69291 621.0236 cm q BT 1 0 0 1 0 26 Tm .678876 Tw 12 TL /F1 10 Tf 0 0 0 rg (In the one-file mode, the ) Tj /F4 10 Tf (basedir ) Tj /F1 10 Tf (path discovered by the code above is the path to a temporary folder) Tj T* 0 Tw 1.256457 Tw (that will be deleted. Your users cannot easily access any included files. Any files your code creates or) Tj T* 0 Tw (modifies in that folder are available only while the app is running. When it ends they will be deleted.) Tj T* ET Q Q q 1 0 0 1 62.69291 579.0236 cm q BT 1 0 0 1 0 26 Tm .432927 Tw 12 TL /F1 10 Tf 0 0 0 rg (Another way to access data files in one-file mode is to refer to ) Tj /F4 10 Tf (sys.executable) Tj /F1 10 Tf (. In an un-bundled app,) Tj T* 0 Tw .37528 Tw (that is, when running your script from the command line or a debugger, ) Tj /F4 10 Tf (sys.executable ) Tj /F1 10 Tf (is the path to) Tj T* 0 Tw (the Python interpreter. In a bundled app, it is the path to the bundled executable. The expression) Tj T* ET Q Q q 1 0 0 1 62.69291 573.0236 cm Q q 1 0 0 1 62.69291 561.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (os.path.dirname\(sys.executable\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 561.0236 cm Q q 1 0 0 1 62.69291 543.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (gives the path of the folder containing the executable file that was launched to start the app.) Tj T* ET Q Q q 1 0 0 1 62.69291 513.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Capturing Version Data) Tj T* ET Q Q q 1 0 0 1 62.69291 501.0236 cm Q q 1 0 0 1 62.69291 489.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-grab_version) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (executable_with_version_resource) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 489.0236 cm Q q 1 0 0 1 62.69291 435.0236 cm q BT 1 0 0 1 0 38 Tm .107318 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (pyi-grab_version ) Tj /F1 10 Tf (command is invoked with the full path name of a Windows executable that has) Tj T* 0 Tw 1.92284 Tw (a Version resource. \(A Version resource contains a group of data structures, some containing binary) Tj T* 0 Tw .903318 Tw (integers and some containing strings, that describe the properties of the executable. For details see the) Tj T* 0 Tw 0 0 .501961 rg (Version Information Structures ) Tj 0 0 0 rg (page.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 345.0236 cm q BT 1 0 0 1 0 74 Tm .50311 Tw 12 TL /F1 10 Tf 0 0 0 rg (The command writes text that represents a Version resource in readable form. The version text is written) Tj T* 0 Tw .486179 Tw (to standard output. You can copy it from the console window or redirect it to a file. Then you can edit the) Tj T* 0 Tw 1.498651 Tw (version information to adapt it to your program. This approach is used because version resources are) Tj T* 0 Tw 1.349984 Tw (complex. Some elements are optional, others required. When you view the version tab of a Properties) Tj T* 0 Tw .368651 Tw (dialog, there's no simple relationship between the data displayed and the structure of the resource. Using) Tj T* 0 Tw .691318 Tw /F4 10 Tf (pyi-grab_version ) Tj /F1 10 Tf (you can find an executable that displays the kind of information you want, copy its) Tj T* 0 Tw (resource data, and modify it to suit your package.) Tj T* ET Q Q q 1 0 0 1 62.69291 303.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.011412 Tw (The version text file is encoded UTF-8 and may contain non-ASCII characters. \(Unicode characters are) Tj T* 0 Tw .861567 Tw (allowed in Version resource string fields.\) Be sure to edit and save the text file in UTF-8 unless you are) Tj T* 0 Tw (certain it contains only ASCII string values.) Tj T* ET Q Q q 1 0 0 1 62.69291 273.0236 cm q BT 1 0 0 1 0 14 Tm 3.141412 Tw 12 TL /F1 10 Tf 0 0 0 rg (The edited version text file can be given with a ) Tj /F4 10 Tf (--version-file= ) Tj /F1 10 Tf (option to ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (or) Tj T* 0 Tw /F4 10 Tf (pyi-makespec) Tj /F1 10 Tf (. The text data is converted to a Version resource and installed in the executable output.) Tj T* ET Q Q q 1 0 0 1 62.69291 243.0236 cm q BT 1 0 0 1 0 14 Tm .902126 Tw 12 TL /F1 10 Tf 0 0 0 rg (In a Version resource there are two 64-bit binary values, ) Tj /F4 10 Tf (FileVersion ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (ProductVersion) Tj /F1 10 Tf (. In the) Tj T* 0 Tw (version text file these are given as four-element tuples, for example:) Tj T* ET Q Q q 1 0 0 1 62.69291 197.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (filevers=\(2, 0, 4, 0\),) Tj T* (prodvers=\(2, 0, 4, 0\),) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 165.8236 cm q BT 1 0 0 1 0 14 Tm .447674 Tw 12 TL /F1 10 Tf 0 0 0 rg (The elements of each tuple represent 16-bit values from most-significant to least-significant. For example) Tj T* 0 Tw (the ) Tj /F4 10 Tf (FileVersion ) Tj /F1 10 Tf (value given resolves to ) Tj /F4 10 Tf (0002000000040000 ) Tj /F1 10 Tf (in hex.) Tj T* ET Q Q q 1 0 0 1 62.69291 159.8236 cm Q q 1 0 0 1 62.69291 147.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (set_version) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (version_text_file) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (executable_file) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 147.8236 cm Q q 1 0 0 1 62.69291 117.8236 cm q BT 1 0 0 1 0 14 Tm 1.414651 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (set_version ) Tj /F1 10 Tf (utility reads a version text file as written by ) Tj /F4 10 Tf (pyi-grab_version) Tj /F1 10 Tf (, converts it to a) Tj T* 0 Tw (Version resource, and installs that resource in the ) Tj /F5 10 Tf (executable_file ) Tj /F1 10 Tf (specified.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 148.6949 0 Td (PyInstaller Manual - Accessing Data Files) Tj T* -148.6949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (25) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R461': class PDFStream 461 0 obj % page stream << /Length 7137 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 669.0236 cm q BT 1 0 0 1 0 74 Tm 5.119985 Tw 12 TL /F1 10 Tf 0 0 0 rg (For advanced uses, examine a version text file. You find it is Python code that creates a) Tj T* 0 Tw 13.82997 Tw /F4 10 Tf (VSVersionInfo ) Tj /F1 10 Tf (object. The class definition for ) Tj /F4 10 Tf (VSVersionInfo ) Tj /F1 10 Tf (is found in) Tj T* 0 Tw .407674 Tw /F4 10 Tf (utils/versioninfo.py ) Tj /F1 10 Tf (in the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (distribution folder. You can write a program that imports that) Tj T* 0 Tw 4.262927 Tw (module. In that program you can ) Tj /F4 10 Tf (eval ) Tj /F1 10 Tf (the contents of a version info text file to produce a) Tj T* 0 Tw 2.81284 Tw /F4 10 Tf (VSVersionInfo ) Tj /F1 10 Tf (object. You can use the ) Tj /F4 10 Tf (.toRaw\(\) ) Tj /F1 10 Tf (method of that object to produce a Version) Tj T* 0 Tw .243516 Tw (resource in binary form. Or you can apply the ) Tj /F4 10 Tf (unicode\(\) ) Tj /F1 10 Tf (function to the object to reproduce the version) Tj T* 0 Tw (text file.) Tj T* ET Q Q q 1 0 0 1 62.69291 639.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Inspecting Archives) Tj T* ET Q Q q 1 0 0 1 62.69291 561.0236 cm q BT 1 0 0 1 0 62 Tm 1.045703 Tw 12 TL /F1 10 Tf 0 0 0 rg (An archive is a file that contains other files, for example a ) Tj /F4 10 Tf (.tar ) Tj /F1 10 Tf (file, a ) Tj /F4 10 Tf (.jar ) Tj /F1 10 Tf (file, or a ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file. Two) Tj T* 0 Tw .407633 Tw (kinds of archives are used in ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (. One is a ZlibArchive, which allows Python modules to be stored) Tj T* 0 Tw .246457 Tw (efficiently and, with some import hooks, imported directly. The other, a CArchive, is similar to a ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file,) Tj T* 0 Tw .136654 Tw (a general way of packing up \(and optionally compressing\) arbitrary blobs of data. It gets its name from the) Tj T* 0 Tw .262488 Tw (fact that it can be manipulated easily from C as well as from Python. Both of these derive from a common) Tj T* 0 Tw (base class, making it fairly easy to create new kinds of archives.) Tj T* ET Q Q q 1 0 0 1 62.69291 534.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (ZlibArchive) Tj T* ET Q Q q 1 0 0 1 62.69291 504.0236 cm q BT 1 0 0 1 0 14 Tm .463735 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ZlibArchive contains compressed ) Tj /F4 10 Tf (.pyc ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (.pyo ) Tj /F1 10 Tf (files. The ) Tj /F4 10 Tf (PYZ ) Tj /F1 10 Tf (class invocation in a spec file creates) Tj T* 0 Tw (a ZlibArchive.) Tj T* ET Q Q q 1 0 0 1 62.69291 462.0236 cm q BT 1 0 0 1 0 26 Tm .864987 Tw 12 TL /F1 10 Tf 0 0 0 rg (The table of contents in a ZlibArchive is a Python dictionary that associates a key, which is a member's) Tj T* 0 Tw .022988 Tw (name as given in an ) Tj /F4 10 Tf (import ) Tj /F1 10 Tf (statement, with a seek position and a length in the ZlibArchive. All parts of a) Tj T* 0 Tw (ZlibArchive are stored in the ) Tj 0 0 .501961 rg (marshalled ) Tj 0 0 0 rg (format and so are platform-independent.) Tj T* ET Q Q q 1 0 0 1 62.69291 408.0236 cm q BT 1 0 0 1 0 38 Tm 1.290697 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ZlibArchive is used at run-time to import bundled python modules. Even with maximum compression) Tj T* 0 Tw 3.023984 Tw (this works faster than the normal import. Instead of searching ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (, there's a lookup in the) Tj T* 0 Tw .771098 Tw (dictionary. There are no directory operations and no file to open \(the file is already open\). There's just a) Tj T* 0 Tw (seek, a read and a decompress.) Tj T* ET Q Q q 1 0 0 1 62.69291 366.0236 cm q BT 1 0 0 1 0 26 Tm .256654 Tw 12 TL /F1 10 Tf 0 0 0 rg (A Python error trace will point to the source file from which the archive entry was created \(the ) Tj /F4 10 Tf (__file__) Tj T* 0 Tw .447209 Tw /F1 10 Tf (attribute from the time the ) Tj /F4 10 Tf (.pyc ) Tj /F1 10 Tf (was compiled, captured and saved in the archive\). This will not tell your) Tj T* 0 Tw (user anything useful, but if they send you a Python error trace, you can make sense of it.) Tj T* ET Q Q q 1 0 0 1 62.69291 348.0236 cm q q 314.88 0 0 312.96 0 0 cm /FormXob.b0457f0a414020c0d759fda1eca85a59 Do Q BT 1 0 0 1 0 2 Tm 12 TL 314.88 0 Td /F1 10 Tf 12 TL T* -314.88 0 Td ET Q Q q 1 0 0 1 62.69291 321.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (CArchive) Tj T* ET Q Q q 1 0 0 1 62.69291 267.0236 cm q BT 1 0 0 1 0 38 Tm .265227 Tw 12 TL /F1 10 Tf 0 0 0 rg (A CArchive can contain any kind of file. It's very much like a ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file. They are easy to create in Python) Tj T* 0 Tw .121488 Tw (and easy to unpack from C code. A CArchive can be appended to another file, such as an ELF and COFF) Tj T* 0 Tw .232988 Tw (executable. To allow this, the archive is made with its table of contents at the end of the file, followed only) Tj T* 0 Tw (by a cookie that tells where the table of contents starts and where the archive itself starts.) Tj T* ET Q Q q 1 0 0 1 62.69291 237.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.71561 Tw (A CArchive can be embedded within another CArchive. An inner archive can be opened and used in) Tj T* 0 Tw (place, without having to extract it.) Tj T* ET Q Q q 1 0 0 1 62.69291 195.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .829461 Tw (Each table of contents entry has variable length. The first field in the entry gives the length of the entry.) Tj T* 0 Tw .635868 Tw (The last field is the name of the corresponding packed file. The name is null terminated. Compression is) Tj T* 0 Tw (optional for each member.) Tj T* ET Q Q q 1 0 0 1 62.69291 165.0236 cm q BT 1 0 0 1 0 14 Tm .732927 Tw 12 TL /F1 10 Tf 0 0 0 rg (There is also a type code associated with each member. The type codes are used by the self-extracting) Tj T* 0 Tw (executables. If you're using a ) Tj /F4 10 Tf (CArchive ) Tj /F1 10 Tf (as a ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file, you don't need to worry about the code.) Tj T* ET Q Q q 1 0 0 1 62.69291 111.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .089984 Tw (The ELF executable format \(Windows, Linux and some others\) allows arbitrary data to be concatenated to) Tj T* 0 Tw 2.407318 Tw (the end of the executable without disturbing its functionality. For this reason, a CArchive's Table of) Tj T* 0 Tw .379036 Tw (Contents is at the end of the archive. The executable can open itself as a binary file, seek to the end and) Tj T* 0 Tw ('open' the CArchive.) Tj T* ET Q Q q 1 0 0 1 62.69291 93.02362 cm q q 288 0 0 312.96 0 0 cm /FormXob.0fb62db63e29f7a22c3f1467db7a707b Do Q BT 1 0 0 1 0 2 Tm 12 TL 288 0 Td /F1 10 Tf 12 TL T* -288 0 Td ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 152.0249 0 Td (PyInstaller Manual - Inspecting Archives) Tj T* -152.0249 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (26) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R462': class PDFStream 462 0 obj % page stream << /Length 7573 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Using pyi-archive_viewer) Tj T* ET Q Q q 1 0 0 1 62.69291 720.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Use the ) Tj /F4 10 Tf (pyi-archive_viewer ) Tj /F1 10 Tf (command to inspect any type of archive:) Tj T* ET Q Q q 1 0 0 1 62.69291 714.0236 cm Q q 1 0 0 1 62.69291 702.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-archive_viewer) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (archivefile) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 702.0236 cm Q q 1 0 0 1 62.69291 660.0236 cm q BT 1 0 0 1 0 26 Tm .39832 Tw 12 TL /F1 10 Tf 0 0 0 rg (With this command you can examine the contents of any archive built with ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (\(a ) Tj /F4 10 Tf (PYZ ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (PKG) Tj /F1 10 Tf (\), or) Tj T* 0 Tw 2.586235 Tw (any executable \() Tj /F4 10 Tf (.exe ) Tj /F1 10 Tf (file or an ELF or COFF binary\). The archive can be navigated using these) Tj T* 0 Tw (commands:) Tj T* ET Q Q q 1 0 0 1 62.69291 644.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (O ) Tj /F3 10 Tf (name) Tj T* ET Q Q q 1 0 0 1 62.69291 617.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm 1.240651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Open the embedded archive ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (\(will prompt if omitted\). For example when looking in a one-file) Tj T* 0 Tw (executable, you can open the ) Tj /F4 10 Tf (outPYZ.pyz ) Tj /F1 10 Tf (archive inside it.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 601.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (U) Tj T* ET Q Q q 1 0 0 1 62.69291 586.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Go up one level \(back to viewing the containing archive\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 570.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (X ) Tj /F3 10 Tf (name) Tj T* ET Q Q q 1 0 0 1 62.69291 543.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm 1.02436 Tw 12 TL /F1 10 Tf 0 0 0 rg (Extract ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (\(will prompt if omitted\). Prompts for an output filename. If none given, the member is) Tj T* 0 Tw (extracted to stdout.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 527.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Q) Tj T* ET Q Q q 1 0 0 1 62.69291 512.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Quit.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 494.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (pyi-archive_viewer ) Tj /F1 10 Tf (command has these options:) Tj T* ET Q Q q 1 0 0 1 62.69291 478.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-h, --help) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Show help.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 463.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-l, --log) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Quick contents log.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 448.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-b, --brief) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print a python evaluable list of contents filenames.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 433.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-r, --recursive) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Used with -l or -b, applies recursive behaviour.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 403.2236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Inspecting Executables) Tj T* ET Q Q q 1 0 0 1 62.69291 385.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can inspect any executable file with ) Tj /F4 10 Tf (pyi-bindepend) Tj /F1 10 Tf (:) Tj T* ET Q Q q 1 0 0 1 62.69291 379.2236 cm Q q 1 0 0 1 62.69291 367.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-bindepend) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (executable_or_dynamic_library) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 367.2236 cm Q q 1 0 0 1 62.69291 325.2236 cm q BT 1 0 0 1 0 26 Tm 1.159318 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (pyi-bindepend ) Tj /F1 10 Tf (command analyzes the executable or DLL you name and writes to stdout all its) Tj T* 0 Tw .89528 Tw (binary dependencies. This is handy to find out which DLLs are required by an executable or by another) Tj T* 0 Tw (DLL.) Tj T* ET Q Q q 1 0 0 1 62.69291 295.2236 cm q BT 1 0 0 1 0 14 Tm .954983 Tw 12 TL /F4 10 Tf 0 0 0 rg (pyi-bindepend ) Tj /F1 10 Tf (is used by ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (to follow the chain of dependencies of binary extensions during) Tj T* 0 Tw (Analysis.) Tj T* ET Q Q q 1 0 0 1 62.69291 265.2236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Multipackage Bundles) Tj T* ET Q Q q 1 0 0 1 62.69291 211.2236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 1.614692 Tw (Some products are made of several different apps, each of which might depend on a common set of) Tj T* 0 Tw .908876 Tw (third-party libraries, or share code in other ways. When packaging such an product it would be a pity to) Tj T* 0 Tw 1.495984 Tw (treat each app in isolation, bundling it with all its dependencies, because that means storing duplicate) Tj T* 0 Tw (copies of code and libraries.) Tj T* ET Q Q q 1 0 0 1 62.69291 157.2236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .226098 Tw (You can use the multipackage feature to bundle a set of executable apps so that they share single copies) Tj T* 0 Tw .505542 Tw (of libraries. Each dependency \(a DLL, for example\) is packaged only once, in one of the apps. Any other) Tj T* 0 Tw 1.348488 Tw (apps in the set that depend on that DLL have an "external reference" to it, telling them to go find that) Tj T* 0 Tw (dependency in the executable file of the app that contains it.) Tj T* ET Q Q q 1 0 0 1 62.69291 115.2236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.608651 Tw (This saves disk space because each dependency is stored only once. However, to follow an external) Tj T* 0 Tw .067488 Tw (reference takes extra time when an app is starting up. Some of the apps in the set will have slightly slower) Tj T* 0 Tw (launch times.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 143.9599 0 Td (PyInstaller Manual - Inspecting Executables) Tj T* -143.9599 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (27) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R463': class PDFStream 463 0 obj % page stream << /Length 6565 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 705.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .17284 Tw (The external references between binaries include hard-coded paths to the output directory, and cannot be) Tj T* 0 Tw .778735 Tw (rearranged. If you use one-folder mode, you must install all the application folders within a single parent) Tj T* 0 Tw .341163 Tw (directory. If you use one-file mode, you must place all the related applications in the same directory when) Tj T* 0 Tw (you install the application.) Tj T* ET Q Q q 1 0 0 1 62.69291 663.0236 cm q BT 1 0 0 1 0 26 Tm .142846 Tw 12 TL /F1 10 Tf 0 0 0 rg (To build such a set of apps you must code a custom spec file that contains a call to the ) Tj 0 0 .501961 rg (MERGE Function) Tj 0 0 0 rg (.) Tj T* 0 Tw .089984 Tw (This function takes a list of analyzed scripts, finds their common dependencies, and modifies the analyses) Tj T* 0 Tw (to minimize the storage cost.) Tj T* ET Q Q q 1 0 0 1 62.69291 609.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 2.127984 Tw (The order of the analysis objects in the argument list matters. The MERGE function packages each) Tj T* 0 Tw .691098 Tw (dependency into the first script from left to right that needs that dependency. A script that comes later in) Tj T* 0 Tw .598876 Tw (the list and needs the same file will have an external reference. You might sequence the scripts to place) Tj T* 0 Tw (the most-used scripts first in the list.) Tj T* ET Q Q q 1 0 0 1 62.69291 582.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (MERGE Function) Tj T* ET Q Q q 1 0 0 1 62.69291 564.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A custom spec file for a multipackage bundle contains one call to the MERGE function:) Tj T* ET Q Q q 1 0 0 1 62.69291 530.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (MERGE\(*args\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 498.8236 cm q BT 1 0 0 1 0 14 Tm 2.729318 Tw 12 TL /F1 10 Tf 0 0 0 rg (MERGE is used after the analysis phase and before ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (COLLECT) Tj /F1 10 Tf (. Its variable-length list of) Tj T* 0 Tw (arguments consists of a list of tuples, each tuple having three elements:) Tj T* ET Q Q q 1 0 0 1 62.69291 492.8236 cm Q q 1 0 0 1 62.69291 492.8236 cm Q q 1 0 0 1 62.69291 480.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The first element is an Analysis object, an instance of class Analysis.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 474.8236 cm Q q 1 0 0 1 62.69291 462.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The second element is the script name \(without the ) Tj /F4 10 Tf (.py ) Tj /F1 10 Tf (extension\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 458.4661 cm Q q 1 0 0 1 62.69291 446.4661 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The third element is the name for the executable \(usually the same as the script\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 446.4661 cm Q q 1 0 0 1 62.69291 416.4661 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .046457 Tw (MERGE examines the Analysis objects to learn the dependencies of each script. It modifies the total list to) Tj T* 0 Tw (avoid duplication of libraries and modules. As a result the packages generated will be connected.) Tj T* ET Q Q q 1 0 0 1 62.69291 389.4661 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Example MERGE spec file) Tj T* ET Q Q q 1 0 0 1 62.69291 347.4661 cm q BT 1 0 0 1 0 26 Tm .616353 Tw 12 TL /F1 10 Tf 0 0 0 rg (One way to construct a spec file for a multipackage bundle is to first build a spec file for each app in the) Tj T* 0 Tw 3.587126 Tw (package. Suppose you have a product that comprises three apps named \(because we have no) Tj T* 0 Tw (imagination\) ) Tj /F4 10 Tf (foo) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (bar ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (zap) Tj /F1 10 Tf (:) Tj T* ET Q Q q 1 0 0 1 62.69291 290.2661 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (pyi-makespec options as appropriate... foo.py) Tj T* (pyi-makespec options as appropriate... bar.py) Tj T* (pyi-makespec options as appropriate... zap.py) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 234.2661 cm q BT 1 0 0 1 0 38 Tm 1.831984 Tw 12 TL /F1 10 Tf 0 0 0 rg (Check for warnings and test the apps individually. Deal with any hidden imports and other problems.) Tj T* 0 Tw 1.102126 Tw (When all three work correctly, edit the three files ) Tj /F4 10 Tf (foo.spec) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (bar.spec ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (zap.spec ) Tj /F1 10 Tf (and combine) Tj T* 0 Tw 1.906651 Tw (them as follows. First copy the Analysis statements from each, changing them to give each Analysis) Tj T* 0 Tw (object a unique name:) Tj T* ET Q Q q 1 0 0 1 62.69291 117.0661 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 108 re B* Q q 0 0 0 rg BT 1 0 0 1 0 86 Tm /F4 10 Tf 12 TL (foo_a = Analysis\(['foo.py'],) Tj T* ( pathex=['/the/path/to/foo'],) Tj T* ( hiddenimports=[],) Tj T* ( hookspath=None\)) Tj T* T* (bar_a = Analysis\(['bar.py'], etc., etc...) Tj T* T* (zap_a = Analysis\(['zap.py'], etc., etc...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 97.06614 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Now code the call to MERGE to process the three Analysis objects:) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 143.9599 0 Td (PyInstaller Manual - Inspecting Executables) Tj T* -143.9599 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (28) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R464': class PDFStream 464 0 obj % page stream << /Length 7486 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 727.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (MERGE\( \(foo_a, 'foo', 'foo'\), \(bar_a, 'bar', 'bar'\), \(zap_a, 'zap', 'zap'\) \)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 695.8236 cm q BT 1 0 0 1 0 14 Tm 1.05936 Tw 12 TL /F1 10 Tf 0 0 0 rg (Following this you can copy the ) Tj /F4 10 Tf (PYZ) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (COLLECT ) Tj /F1 10 Tf (statements from the original three spec files,) Tj T* 0 Tw (substituting the unique names of the Analysis objects where the original spec files have ) Tj /F4 10 Tf (a.) Tj /F1 10 Tf (, for example:) Tj T* ET Q Q q 1 0 0 1 62.69291 650.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (foo_pyz = PYZ\(foo_a.pure\)) Tj T* (foo_exe = EXE\(foo_pyz, foo_a.scripts, ... etc.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 630.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Save the merged spec file as ) Tj /F4 10 Tf (foobarzap.spec ) Tj /F1 10 Tf (and then build it:) Tj T* ET Q Q q 1 0 0 1 62.69291 597.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (pyi-build foobarzap.spec) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 565.4236 cm q BT 1 0 0 1 0 14 Tm 3.452706 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are several multipackage examples in the ) Tj /F4 10 Tf (tests/multipackage ) Tj /F1 10 Tf (folder of the ) Tj /F5 10 Tf (PyInstaller) Tj T* 0 Tw /F1 10 Tf (distribution folder.) Tj T* ET Q Q q 1 0 0 1 62.69291 523.4236 cm q BT 1 0 0 1 0 26 Tm 1.087045 Tw 12 TL /F1 10 Tf 0 0 0 rg (Remember that a spec file is executable Python. You can use all the Python facilities \() Tj /F4 10 Tf (for ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (with) Tj T* 0 Tw 1.505868 Tw /F1 10 Tf (and the members of ) Tj /F4 10 Tf (sys ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (io) Tj /F1 10 Tf (\) in creating the Analysis objects and performing the ) Tj /F4 10 Tf (PYZ) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (EXE ) Tj /F1 10 Tf (and) Tj T* 0 Tw /F4 10 Tf (COLLECT ) Tj /F1 10 Tf (statements.) Tj T* ET Q Q q 1 0 0 1 62.69291 493.4236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Using Hook Files) Tj T* ET Q Q q 1 0 0 1 62.69291 439.4236 cm q BT 1 0 0 1 0 38 Tm .087633 Tw 12 TL /F1 10 Tf 0 0 0 rg (In summary, a "hook" file tells ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (about hidden imports called by a particular module. The name of) Tj T* 0 Tw .66436 Tw (the hook file is ) Tj /F4 10 Tf (hook-) Tj (<) Tj (module) Tj (>) Tj (.py ) Tj /F1 10 Tf (where ") Tj (<) Tj (module) Tj (>) Tj (" is the name of a script or imported module that) Tj T* 0 Tw 1.883516 Tw (will be found by Analysis. You should browse through the existing hooks in the ) Tj /F4 10 Tf (hooks ) Tj /F1 10 Tf (folder of the) Tj T* 0 Tw /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (distribution folder, if only to see the names of the many supported imports.) Tj T* ET Q Q q 1 0 0 1 62.69291 397.4236 cm q BT 1 0 0 1 0 26 Tm 3.203555 Tw 12 TL /F1 10 Tf 0 0 0 rg (For example ) Tj /F4 10 Tf (hook-cPickle.py ) Tj /F1 10 Tf (is a hook file telling about hidden imports used by the module) Tj T* 0 Tw 1.404104 Tw /F4 10 Tf (cPickle) Tj /F1 10 Tf (. When your script has ) Tj /F4 10 Tf (import) Tj ( ) Tj (cPickle ) Tj /F1 10 Tf (the Analysis will note it and check for a hook file) Tj T* 0 Tw /F4 10 Tf (hook-cPickle.py) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 379.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Typically a hook module has only one line; in ) Tj /F4 10 Tf (hook-cPickle.py ) Tj /F1 10 Tf (it is) Tj T* ET Q Q q 1 0 0 1 62.69291 373.4236 cm Q q 1 0 0 1 62.69291 361.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (hiddenimports) Tj ( ) Tj (=) Tj ( ) Tj (['copy_reg',) Tj ( ) Tj ('types',) Tj ( ) Tj ('string']) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 361.4236 cm Q q 1 0 0 1 62.69291 331.4236 cm q BT 1 0 0 1 0 14 Tm .974985 Tw 12 TL /F1 10 Tf 0 0 0 rg (assigning a list of one or more module names to ) Tj /F4 10 Tf (hiddenimports) Tj /F1 10 Tf (. These module names are added to) Tj T* 0 Tw (the Analysis list exactly as if the script being analyzed had imported them by name.) Tj T* ET Q Q q 1 0 0 1 62.69291 277.4236 cm q BT 1 0 0 1 0 38 Tm 3.17561 Tw 12 TL /F1 10 Tf 0 0 0 rg (When the module that needs these hidden imports is local to your project, store the hook file\(s\)) Tj T* 0 Tw 1.049982 Tw (somewhere near your source file. Then specify their location to the ) Tj /F4 10 Tf (pyinstaller ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (pyi-makespec) Tj T* 0 Tw .641984 Tw /F1 10 Tf (command with the ) Tj /F4 10 Tf (--additional-hooks-dir= ) Tj /F1 10 Tf (option. If the hook file\(s\) are at the same level as the) Tj T* 0 Tw (script, the command could be simply) Tj T* ET Q Q q 1 0 0 1 62.69291 271.4236 cm Q q 1 0 0 1 62.69291 259.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyinstaller) Tj ( ) Tj (--additional-hooks-dir=.) Tj ( ) Tj (myscript.py) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 259.4236 cm Q q 1 0 0 1 62.69291 229.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .45104 Tw (If you successfully hook a publicly distributed module in this way, please send us the hook file so we can) Tj T* 0 Tw (make it available to others.) Tj T* ET Q Q q 1 0 0 1 62.69291 199.4236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Hooks in Detail) Tj T* ET Q Q q 1 0 0 1 62.69291 169.4236 cm q BT 1 0 0 1 0 14 Tm .285318 Tw 12 TL /F1 10 Tf 0 0 0 rg (A hook is a module named ) Tj /F4 10 Tf (hook-) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (fully.qualified.import.name) Tj /F1 10 Tf ( ) Tj /F4 10 Tf (.py ) Tj /F1 10 Tf (in the ) Tj /F4 10 Tf (hooks ) Tj /F1 10 Tf (folder of the ) Tj /F5 10 Tf (PyInstaller) Tj T* 0 Tw /F1 10 Tf (folder \(or in a folder specified with ) Tj /F4 10 Tf (--additional-hooks-dir) Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 151.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A hook is executable Python code that should define one or more of the following three global names:) Tj T* ET Q Q q 1 0 0 1 62.69291 135.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F7 10 Tf 12 TL (hiddenimports) Tj T* ET Q Q q 1 0 0 1 62.69291 108.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .918735 Tw (A list of module names \(relative or absolute\) that the hooked module imports in some opaque way.) Tj T* 0 Tw (These names extend the list of imported modules created by scanning the code. Example:) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 157.5899 0 Td (PyInstaller Manual - Using Hook Files) Tj T* -157.5899 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (29) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R465': class PDFStream 465 0 obj % page stream << /Length 6484 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 627.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 112.4 Tm T* ET q 1 0 0 1 20 97.2 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (hiddenimports = ['_proxy', 'utils', 'defs']) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 71.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A way to simplify adding all submodules of a package is to use:) Tj T* ET Q Q q 1 0 0 1 20 26 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 448.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (from hookutils import collect_submodules) Tj T* (hiddenimports = collect_submodules\('package'\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (For an example see ) Tj /F4 10 Tf (hook-docutils.py ) Tj /F1 10 Tf (in the hooks folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 611.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F7 10 Tf 12 TL (datas) Tj T* ET Q Q q 1 0 0 1 62.69291 358.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 240.4 Tm T* ET q 1 0 0 1 20 226.4 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.156098 Tw (A list of globs of files or directories to bundle as datafiles. For each glob, a destination directory is) Tj T* 0 Tw (specified.) Tj T* ET Q Q q 1 0 0 1 20 208.4 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Example:) Tj T* ET Q Q q 1 0 0 1 20 139.2 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (datas = [) Tj T* ( \('/usr/share/icons/education_*.png', 'icons'\),) Tj T* ( \('/usr/share/libsmi/mibs/*', 'mibs'\),) Tj T* ( ]) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 101.2 cm q BT 1 0 0 1 0 14 Tm .234597 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will copy all files matching ) Tj /F5 10 Tf (education_*.png ) Tj /F1 10 Tf (into the subdirectory ) Tj /F5 10 Tf (icons) Tj /F1 10 Tf (, and recursively \(because) Tj T* 0 Tw (of the ) Tj /F4 10 Tf (* ) Tj /F1 10 Tf (wildcard\) copy the content of ) Tj /F5 10 Tf (/usr/share/libsmi/mibs ) Tj /F1 10 Tf (into ) Tj /F5 10 Tf (mibs) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 20 83.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A way to simplify collecting a folder of files is to use:) Tj T* ET Q Q q 1 0 0 1 20 38 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 448.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (from hookutils import collect_data_files) Tj T* (datas = collect_data_files\('package_name'\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm 2.681984 Tw 12 TL /F1 10 Tf 0 0 0 rg (to collect all package-related data files into a folder ) Tj /F5 10 Tf (package_name ) Tj /F1 10 Tf (in the app bundle. For an) Tj T* 0 Tw (example see hook-pytz.py in the hooks folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 342.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F7 10 Tf 12 TL (attrs) Tj T* ET Q Q q 1 0 0 1 62.69291 255.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 74 Tm T* ET q 1 0 0 1 20 72 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A list of ) Tj /F4 10 Tf (\() Tj /F1 10 Tf ( ) Tj /F5 10 Tf (name) Tj /F1 10 Tf ( ) Tj /F4 10 Tf (,) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (value) Tj /F1 10 Tf ( ) Tj /F4 10 Tf (\) ) Tj /F1 10 Tf (pairs \(where value is normally meaningless\).) Tj T* ET Q Q q 1 0 0 1 20 42 cm q BT 1 0 0 1 0 14 Tm 2.761751 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will set the module-attribute ) Tj /F5 10 Tf (name ) Tj /F1 10 Tf (to ) Tj /F5 10 Tf (value ) Tj /F1 10 Tf (for each pair in the list. The value is usually) Tj T* 0 Tw (unimportant because the modules are not executed.) Tj T* ET Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 26 Tm .425984 Tw 12 TL /F1 10 Tf 0 0 0 rg (The main purpose is so that ImportTracker will not issue spurious warnings when the rightmost node) Tj T* 0 Tw .858935 Tw (in a dotted name turns out to be an attribute in a package, instead of a missing submodule. For an) Tj T* 0 Tw (example see the hook file ) Tj /F4 10 Tf (hook-xml.sax.py) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 239.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F7 10 Tf 0 0 0 rg (def) Tj ( ) Tj (hook\(mod\):) Tj T* ET Q Q q 1 0 0 1 62.69291 176.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 50 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 50 Tm .87811 Tw 12 TL /F1 10 Tf 0 0 0 rg (Defines a function that takes a ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (object. It must return a ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (object, possibly the same) Tj T* 0 Tw 6.939983 Tw (one unchanged, or a modified one. A ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (object is an instance of the class) Tj T* 0 Tw .28664 Tw /F4 10 Tf (PyInstaller.depend.modules.Module\(\) ) Tj /F1 10 Tf (which you can read. If defined, ) Tj /F4 10 Tf (hook\(mod\) ) Tj /F1 10 Tf (is called) Tj T* 0 Tw .86152 Tw (before ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (tests ) Tj /F4 10 Tf (hiddenimports) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (datas) Tj /F1 10 Tf (, or ) Tj /F4 10 Tf (attrs) Tj /F1 10 Tf (. So one use of a ) Tj /F4 10 Tf (hook\(mod\) ) Tj /F1 10 Tf (function) Tj T* 0 Tw (would be to test ) Tj /F4 10 Tf (sys.version ) Tj /F1 10 Tf (and adjust ) Tj /F4 10 Tf (hiddenimports ) Tj /F1 10 Tf (based on that.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 134.2236 cm q BT 1 0 0 1 0 26 Tm .549269 Tw 12 TL /F1 10 Tf 0 0 0 rg (This function is supported to handle cases like dynamic modification of a package's ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (variable.) Tj T* 0 Tw .86311 Tw (A static list of names won't suffice because the new entry on ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (may well require computation.) Tj T* 0 Tw (See ) Tj /F4 10 Tf (hook-win32com.py ) Tj /F1 10 Tf (in the hooks folder for an example.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 157.5899 0 Td (PyInstaller Manual - Using Hook Files) Tj T* -157.5899 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (30) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R466': class PDFStream 466 0 obj % page stream << /Length 7316 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Building the Bootloader) Tj T* ET Q Q q 1 0 0 1 62.69291 705.0236 cm q BT 1 0 0 1 0 14 Tm .187126 Tw 12 TL /F1 10 Tf 0 0 0 rg (PyInstaller comes with binary bootloaders for most platforms in the ) Tj /F4 10 Tf (bootloader ) Tj /F1 10 Tf (folder of the distribution) Tj T* 0 Tw (folder. For most cases, these precompiled bootloaders are all you need.) Tj T* ET Q Q q 1 0 0 1 62.69291 675.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .136098 Tw (If there is no precompiled bootloader for your platform, or if you want to modify the bootloader source, you) Tj T* 0 Tw (need to build the bootloader.) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Development tools) Tj T* ET Q Q q 1 0 0 1 62.69291 630.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On Debian/Ubuntu systems, you can run the following to install everything required:) Tj T* ET Q Q q 1 0 0 1 62.69291 596.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (sudo apt-get install build-essential) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 576.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On Fedora/RHEL and derivates, you can run the following:) Tj T* ET Q Q q 1 0 0 1 62.69291 531.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (su) Tj T* (yum groupinstall "Development Tools") Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 487.6236 cm q BT 1 0 0 1 0 26 Tm .060898 Tw 12 TL /F1 10 Tf 0 0 0 rg (On Mac OS X you can get gcc by installing ) Tj 0 0 .501961 rg (Xcode) Tj 0 0 0 rg (. It is a suite of tools for developing software for Mac OS) Tj T* 0 Tw .718626 Tw (X. It can be also installed from your Mac OS X Install DVD. It is not necessary to install the version 4 of) Tj T* 0 Tw (Xcode.) Tj T* ET Q Q q 1 0 0 1 62.69291 469.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (On Solaris and AIX the bootloader is tested with gcc.) Tj T* ET Q Q q 1 0 0 1 62.69291 439.6236 cm q BT 1 0 0 1 0 14 Tm .918735 Tw 12 TL /F1 10 Tf 0 0 0 rg (On Windows you can use the Visual Studio C++ compiler \(Visual Studio 2008 is recommended\). A free) Tj T* 0 Tw (version you can download is ) Tj 0 0 .501961 rg (Visual Studio Express) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 385.6236 cm q BT 1 0 0 1 0 38 Tm .811235 Tw 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (There is no connection between the Visual Studio version used to compile the bootloader and the) Tj T* 0 Tw 1.206412 Tw (Visual Studio version used to compile Python. The bootloader is a self-contained static executable that) Tj T* 0 Tw .928221 Tw (imposes no restrictions on the version of Python being used. So you can use any Visual Studio version) Tj T* 0 Tw (you have around.) Tj T* ET Q Q q 1 0 0 1 62.69291 367.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can download and install or unpack MinGW distribution from one of the following locations:) Tj T* ET Q Q q 1 0 0 1 62.69291 361.6236 cm Q q 1 0 0 1 62.69291 361.6236 cm Q q 1 0 0 1 62.69291 349.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (MinGW ) Tj 0 0 0 rg (- stable and mature, uses gcc 3.4 as its base) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 343.6236 cm Q q 1 0 0 1 62.69291 331.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (MinGW-w64 ) Tj 0 0 0 rg (- more recent, uses gcc 4.4 and up.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 325.6236 cm Q q 1 0 0 1 62.69291 313.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (TDM-GCC ) Tj 0 0 0 rg (- MinGW and MinGW-w64 installers) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 313.6236 cm Q q 1 0 0 1 62.69291 286.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Building) Tj T* ET Q Q q 1 0 0 1 62.69291 256.6236 cm q BT 1 0 0 1 0 14 Tm 2.02284 Tw 12 TL /F1 10 Tf 0 0 0 rg (On Windows, when using MinGW, it is needed to add ) Tj /F4 10 Tf (PATH_TO_MINGW\\bin ) Tj /F1 10 Tf (to your system ) Tj /F4 10 Tf (PATH) Tj /F1 10 Tf (.) Tj T* 0 Tw (variable. In command prompt before building bootloader run for example:) Tj T* ET Q Q q 1 0 0 1 62.69291 223.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (set PATH=C:\\MinGW\\bin;%PATH%) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 203.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Change to the ) Tj /F4 10 Tf (bootloader ) Tj /F1 10 Tf (subdirectory. Run:) Tj T* ET Q Q q 1 0 0 1 62.69291 170.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python ./waf configure build install) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 150.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This will produce) Tj T* ET Q Q q 1 0 0 1 62.69291 144.2236 cm Q q 1 0 0 1 62.69291 144.2236 cm Q q 1 0 0 1 62.69291 132.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (./PyInstaller/bootloader/YOUR_OS/run) Tj /F1 10 Tf (,) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 126.2236 cm Q q 1 0 0 1 62.69291 114.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (./PyInstaller/bootloader/YOUR_OS/run_d) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 108.2236 cm Q q 1 0 0 1 62.69291 96.22362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (./PyInstaller/bootloader/YOUR_OS/runw ) Tj /F1 10 Tf (and) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 90.22362 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 143.6799 0 Td (PyInstaller Manual - Building the Bootloader) Tj T* -143.6799 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (31) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R467': class PDFStream 467 0 obj % page stream << /Length 6326 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 741.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (./PyInstaller/bootloader/YOUR_OS/runw_d) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 741.0236 cm Q q 1 0 0 1 62.69291 723.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (which are the bootloaders.) Tj T* ET Q Q q 1 0 0 1 62.69291 693.0236 cm q BT 1 0 0 1 0 14 Tm 1.795529 Tw 12 TL /F1 10 Tf 0 0 0 rg (On Windows this will produce in the ) Tj /F4 10 Tf (./PyInstaller/bootloader/YOUR_OS ) Tj /F1 10 Tf (directory: ) Tj /F4 10 Tf (run*.exe) Tj T* 0 Tw /F1 10 Tf (\(bootloader for regular programs\), and ) Tj /F4 10 Tf (inprocsrvr*.dll ) Tj /F1 10 Tf (\(bootloader for in-process COM servers\).) Tj T* ET Q Q q 1 0 0 1 62.69291 663.0236 cm q BT 1 0 0 1 0 14 Tm 2.815542 Tw 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (If you have multiple versions of Python, the Python you use to run ) Tj /F4 10 Tf (waf ) Tj /F1 10 Tf (is the one whose) Tj T* 0 Tw (configuration is used.) Tj T* ET Q Q q 1 0 0 1 62.69291 645.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (On AIX the bootloader builds with gcc and is tested with gcc 4.2.0 on AIX 6.1.) Tj T* ET Q Q q 1 0 0 1 62.69291 618.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Linux Standard Base \(LSB\) binary) Tj T* ET Q Q q 1 0 0 1 62.69291 600.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (By default, the bootloaders on Linux are LSB binaries.) Tj T* ET Q Q q 1 0 0 1 62.69291 558.0236 cm q BT 1 0 0 1 0 26 Tm 1.088555 Tw 12 TL /F1 10 Tf 0 0 0 rg (LSB is a set of open standards that should increase compatibility among Linux distributions. ) Tj /F5 10 Tf (PyInstaller) Tj T* 0 Tw 2.080697 Tw /F1 10 Tf (produces a bootloader as an LSB binary in order to increase compatibility for packaged applications) Tj T* 0 Tw (among distributions.) Tj T* ET Q Q q 1 0 0 1 62.69291 540.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (Note: ) Tj /F1 10 Tf (LSB version 4.0 is required for successfull building of bootloader.) Tj T* ET Q Q q 1 0 0 1 62.69291 510.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .499985 Tw (On Debian- and Ubuntu-based distros, you can install LSB 4.0 tools by adding the following repository to) Tj T* 0 Tw (the sources.list file:) Tj T* ET Q Q q 1 0 0 1 62.69291 476.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (deb http://ftp.linux-foundation.org/pub/lsb/repositories/debian lsb-4.0 main) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 456.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (then after having update the apt repository:) Tj T* ET Q Q q 1 0 0 1 62.69291 423.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (sudo apt-get update) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 403.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (you can install LSB 4.0:) Tj T* ET Q Q q 1 0 0 1 62.69291 370.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (sudo apt-get install lsb lsb-build-cc) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 338.4236 cm q BT 1 0 0 1 0 14 Tm 1.056235 Tw 12 TL /F1 10 Tf 0 0 0 rg (Most other distributions contain only LSB 3.0 in their software repositories and thus LSB build tools 4.0) Tj T* 0 Tw (must be downloaded by hand. From Linux Foundation download ) Tj 0 0 .501961 rg (LSB sdk 4.0 ) Tj 0 0 0 rg (for your architecture.) Tj T* ET Q Q q 1 0 0 1 62.69291 320.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Unpack it by:) Tj T* ET Q Q q 1 0 0 1 62.69291 287.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (tar -xvzf lsb-sdk-4.0.3-1.ia32.tar.gz) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 267.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To install it run:) Tj T* ET Q Q q 1 0 0 1 62.69291 222.0236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (cd lsb-sdk) Tj T* (./install.sh) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 202.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (After having installed the LSB tools, you can follow the standard building instructions.) Tj T* ET Q Q q 1 0 0 1 62.69291 172.0236 cm q BT 1 0 0 1 0 14 Tm .275777 Tw 12 TL /F5 10 Tf 0 0 0 rg (NOTE: ) Tj /F1 10 Tf (if for some reason you want to avoid LSB compilation, you can do so by specifying --no-lsb on the) Tj T* 0 Tw (waf command line, as follows:) Tj T* ET Q Q q 1 0 0 1 62.69291 138.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python waf configure --no-lsb build install) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 94.82362 cm q BT 1 0 0 1 0 26 Tm 7.837953 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will also produce ) Tj /F4 10 Tf (support/loader/YOUR_OS/run) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (support/loader/YOUR_OS/run_d) Tj /F1 10 Tf (,) Tj T* 0 Tw .19872 Tw /F4 10 Tf (support/loader/YOUR_OS/runw ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (support/loader/YOUR_OS/runw_d) Tj /F1 10 Tf (, but they will not be LSB) Tj T* 0 Tw (binaries.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 143.6799 0 Td (PyInstaller Manual - Building the Bootloader) Tj T* -143.6799 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (32) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R468': class PDFStream 468 0 obj % page stream << /Length 6800 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Modulefinder Replacement - ImportTracker) Tj T* ET Q Q q 1 0 0 1 62.69291 693.0236 cm q BT 1 0 0 1 0 26 Tm 3.820976 Tw 12 TL /F1 10 Tf 0 0 0 rg (The Imptracker package \(defined in ) Tj /F4 10 Tf (depend/imptracker.py ) Tj /F1 10 Tf (in the ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (folder\) replaces) Tj T* 0 Tw .473555 Tw 0 0 .501961 rg (Modulefinder ) Tj 0 0 0 rg (but is modelled after ) Tj 0 0 .501961 rg (iu.py) Tj 0 0 0 rg (. The ) Tj /F4 10 Tf (modulegraph ) Tj /F1 10 Tf (package, which is similar, will be supported) Tj T* 0 Tw (in a future release.) Tj T* ET Q Q q 1 0 0 1 62.69291 663.0236 cm q BT 1 0 0 1 0 14 Tm .053314 Tw 12 TL /F1 10 Tf 0 0 0 rg (Imptracker, like Modulefinder, uses ) Tj /F4 10 Tf (ImportDirectors ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (Owners ) Tj /F1 10 Tf (to partition the import name space.) Tj T* 0 Tw (Except for the fact that these return ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (instances instead of real module objects, they are identical.) Tj T* ET Q Q q 1 0 0 1 62.69291 645.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Instead of an ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf (, it has an ) Tj /F4 10 Tf (ImportTracker ) Tj /F1 10 Tf (managing things.) Tj T* ET Q Q q 1 0 0 1 62.69291 618.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (ImportTracker) Tj T* ET Q Q q 1 0 0 1 62.69291 540.0236 cm q BT 1 0 0 1 0 62 Tm 4.364418 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportTracker ) Tj /F1 10 Tf (can be called in two ways: ) Tj /F4 10 Tf (analyze_one\(name, importername=None\) ) Tj /F1 10 Tf (or) Tj T* 0 Tw 2.465976 Tw /F4 10 Tf (analyze_r\(name,) Tj ( ) Tj (importername=None\)) Tj /F1 10 Tf (. The second method does what modulefinder does - it) Tj T* 0 Tw .247984 Tw (recursively finds all the module names that importing name would cause to appear in ) Tj /F4 10 Tf (sys.modules) Tj /F1 10 Tf (. The) Tj T* 0 Tw 1.015868 Tw (first method is non-recursive. This is useful, because it is the only way of answering the question "Who) Tj T* 0 Tw 1.359985 Tw (imports name?" But since it is somewhat unrealistic \(very few real imports do not involve recursion\), it) Tj T* 0 Tw (deserves some explanation.) Tj T* ET Q Q q 1 0 0 1 62.69291 513.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F6 12.5 Tf 0 0 0 rg (analyze_one\(\)) Tj T* ET Q Q q 1 0 0 1 62.69291 459.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .896457 Tw (When a name is imported, there are structural and dynamic effects. The dynamic effects are due to the) Tj T* 0 Tw .012927 Tw (execution of the top-level code in the module \(or modules\) that get imported. The structural effects have to) Tj T* 0 Tw .483988 Tw (do with whether the import is relative or absolute, and whether the name is a dotted name \(if there are N) Tj T* 0 Tw (dots in the name, then N+1 modules will be imported even without any code running\).) Tj T* ET Q Q q 1 0 0 1 62.69291 405.0236 cm q BT 1 0 0 1 0 38 Tm .487674 Tw 12 TL /F1 10 Tf 0 0 0 rg (The analyze_one method determines the structural effects, and defers the dynamic effects. For example,) Tj T* 0 Tw 2.125976 Tw /F4 10 Tf (analyze_one\("B.C",) Tj ( ) Tj ("A"\) ) Tj /F1 10 Tf (could return ) Tj /F4 10 Tf (["B",) Tj ( ) Tj ("B.C"] ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (["A.B",) Tj ( ) Tj ("A.B.C"] ) Tj /F1 10 Tf (depending on) Tj T* 0 Tw .417485 Tw (whether the import turns out to be relative or absolute. In addition, ImportTracker's modules dict will have) Tj T* 0 Tw (Module instances for them.) Tj T* ET Q Q q 1 0 0 1 62.69291 378.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Module Classes) Tj T* ET Q Q q 1 0 0 1 62.69291 324.0236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 2.568314 Tw (There are Module subclasses for builtins, extensions, packages and \(normal\) modules. Besides the) Tj T* 0 Tw 2.369982 Tw (normal module object attributes, they have an attribute imports. For packages and normal modules,) Tj T* 0 Tw .187882 Tw (imports is a list populated by scanning the code object \(and therefor, the names in this list may be relative) Tj T* 0 Tw (or absolute names - we don't know until they have been analyzed\).) Tj T* ET Q Q q 1 0 0 1 62.69291 258.0236 cm q BT 1 0 0 1 0 50 Tm 1.087045 Tw 12 TL /F1 10 Tf 0 0 0 rg (The highly astute will notice that there is a hole in ) Tj /F4 10 Tf (analyze_one\(\) ) Tj /F1 10 Tf (here. The first thing that happens) Tj T* 0 Tw 1.099986 Tw (when ) Tj /F4 10 Tf (B.C ) Tj /F1 10 Tf (is being imported is that ) Tj /F4 10 Tf (B ) Tj /F1 10 Tf (is imported and its top-level code executed. That top-level code) Tj T* 0 Tw 2.121318 Tw (can do various things so that when the import of ) Tj /F4 10 Tf (B.C ) Tj /F1 10 Tf (finally occurs, something completely different) Tj T* 0 Tw 2.795318 Tw (happens \(from what a structural analysis would predict\). But mf can handle this through its hooks) Tj T* 0 Tw (mechanism.) Tj T* ET Q Q q 1 0 0 1 62.69291 231.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (code scanning) Tj T* ET Q Q q 1 0 0 1 62.69291 165.0236 cm q BT 1 0 0 1 0 50 Tm .713984 Tw 12 TL /F1 10 Tf 0 0 0 rg (Like modulefinder, ) Tj /F4 10 Tf (ImportTracker ) Tj /F1 10 Tf (scans the byte code of a module, looking for imports. In addition it) Tj T* 0 Tw .837608 Tw (will pick out a module's ) Tj /F4 10 Tf (__all__ ) Tj /F1 10 Tf (attribute, if it is built as a list of constant names. This means that if a) Tj T* 0 Tw .984692 Tw (package declares an ) Tj /F4 10 Tf (__all__ ) Tj /F1 10 Tf (list as a list of names, ImportTracker will track those names if asked to) Tj T* 0 Tw 1.313555 Tw (analyze ) Tj /F4 10 Tf (package.*) Tj /F1 10 Tf (. The code scan also notes the occurance of ) Tj /F4 10 Tf (__import__) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (exec ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (eval) Tj /F1 10 Tf (, and) Tj T* 0 Tw (can issue warnings when they are found.) Tj T* ET Q Q q 1 0 0 1 62.69291 123.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.211567 Tw (The code scanning also keeps track \(as well as it can\) of the context of an import. It recognizes when) Tj T* 0 Tw 1.053318 Tw (imports are found at the top-level, and when they are found inside definitions \(deferred imports\). Within) Tj T* 0 Tw (that, it also tracks whether the import is inside a condition \(conditional imports\).) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 100.0699 0 Td (PyInstaller Manual - Modulefinder Replacement - ImportTracker) Tj T* -100.0699 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (33) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R469': class PDFStream 469 0 obj % page stream << /Length 7073 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Hooks) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q BT 1 0 0 1 0 14 Tm .103555 Tw 12 TL /F1 10 Tf 0 0 0 rg (In modulefinder, scanning the code takes the place of executing the code object. ) Tj /F4 10 Tf (ExtensionModules) Tj /F1 10 Tf (, of) Tj T* 0 Tw (course, don't get scanned, so there needs to be a way of recording any imports they do.) Tj T* ET Q Q q 1 0 0 1 62.69291 690.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Please read ) Tj 0 0 .501961 rg (Listing Hidden Imports ) Tj 0 0 0 rg (for more information.) Tj T* ET Q Q q 1 0 0 1 62.69291 660.0236 cm q BT 1 0 0 1 0 14 Tm .76436 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportTracker ) Tj /F1 10 Tf (goes further and allows a module to be hooked \(after it has been scanned, but before) Tj T* 0 Tw (analyze_one is done with it\).) Tj T* ET Q Q q 1 0 0 1 62.69291 633.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Warnings) Tj T* ET Q Q q 1 0 0 1 62.69291 579.0236 cm q BT 1 0 0 1 0 38 Tm 2.451647 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportTracker ) Tj /F1 10 Tf (has a ) Tj /F4 10 Tf (getwarnings\(\) ) Tj /F1 10 Tf (method that returns all the warnings accumulated by the) Tj T* 0 Tw 1.361984 Tw (instance, and by the ) Tj /F4 10 Tf (Module ) Tj /F1 10 Tf (instances in its modules dict. Generally, it is ) Tj /F4 10 Tf (ImportTracker ) Tj /F1 10 Tf (who will) Tj T* 0 Tw .557126 Tw (accumulate the warnings generated during the structural phase, and ) Tj /F4 10 Tf (Modules ) Tj /F1 10 Tf (that will get the warnings) Tj T* 0 Tw (generated during the code scan.) Tj T* ET Q Q q 1 0 0 1 62.69291 549.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.419986 Tw (Note that by using a hook module, you can silence some particularly tiresome warnings, but not all of) Tj T* 0 Tw (them.) Tj T* ET Q Q q 1 0 0 1 62.69291 522.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Cross Reference) Tj T* ET Q Q q 1 0 0 1 62.69291 468.0236 cm q BT 1 0 0 1 0 38 Tm .334724 Tw 12 TL /F1 10 Tf 0 0 0 rg (Once a full analysis \(that is, an ) Tj /F4 10 Tf (analyze_r ) Tj /F1 10 Tf (call\) has been done, you can get a cross reference by using) Tj T* 0 Tw .199269 Tw /F4 10 Tf (getxref\(\)) Tj /F1 10 Tf (. This returns a list of tuples. Each tuple is ) Tj /F4 10 Tf (\(modulename,) Tj ( ) Tj (importers\)) Tj /F1 10 Tf (, where importers is) Tj T* 0 Tw .734104 Tw (a list of the \(fully qualified\) names of the modules importing ) Tj /F4 10 Tf (modulename) Tj /F1 10 Tf (. Both the returned list and the) Tj T* 0 Tw (importers list are sorted.) Tj T* ET Q Q q 1 0 0 1 62.69291 435.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Outdated Features) Tj T* ET Q Q q 1 0 0 1 62.69291 405.0236 cm q BT 1 0 0 1 0 14 Tm 1.36936 Tw 12 TL /F1 10 Tf 0 0 0 rg (The following sections document features of ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (that are still present in the code but are rarely) Tj T* 0 Tw (used and may no longer work.) Tj T* ET Q Q q 1 0 0 1 62.69291 375.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Windows COM Server Support) Tj T* ET Q Q q 1 0 0 1 62.69291 363.0236 cm Q q 1 0 0 1 62.69291 318.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 33 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL (Recent rename:) Tj T* ET Q Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (./utils/MakeComServer.py - ./utils/make_comserver.py) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (and after python setup.py install there will be command 'pyi-make_comserver') Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 318.0236 cm Q q 1 0 0 1 62.69291 276.0236 cm q BT 1 0 0 1 0 26 Tm 2.04784 Tw 12 TL /F1 10 Tf 0 0 0 rg (A Windows COM server is a Windows program the uses ) Tj 0 0 .501961 rg (Microsoft COM ) Tj 0 0 0 rg (\(Component Object Model\)) Tj T* 0 Tw .136098 Tw (technology. If you write such a program in Python you can bundle it with ) Tj /F5 10 Tf (PyInstaller) Tj /F1 10 Tf (, but you must prepare) Tj T* 0 Tw (a special spec file and name the spec file, not your script, to the pyinstaller command.) Tj T* ET Q Q q 1 0 0 1 62.69291 258.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To prepare the spec file use the command) Tj T* ET Q Q q 1 0 0 1 62.69291 252.0236 cm Q q 1 0 0 1 62.69291 240.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (pyi-make_comserver ) Tj /F1 10 Tf ([) Tj /F5 10 Tf (options) Tj /F1 10 Tf (] myscript.py) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 240.0236 cm Q q 1 0 0 1 62.69291 210.0236 cm q BT 1 0 0 1 0 14 Tm .74152 Tw 12 TL /F1 10 Tf 0 0 0 rg (Alternatively you can use the ) Tj /F4 10 Tf (make_comserver.py ) Tj /F1 10 Tf (script in the ) Tj /F4 10 Tf (utils ) Tj /F1 10 Tf (subdirectory of the ) Tj /F5 10 Tf (PyInstaller) Tj T* 0 Tw /F1 10 Tf (folder.) Tj T* ET Q Q q 1 0 0 1 62.69291 180.0236 cm q BT 1 0 0 1 0 14 Tm .488651 Tw 12 TL /F1 10 Tf 0 0 0 rg (This will generate a spec file ) Tj /F4 10 Tf (myscript.spec ) Tj /F1 10 Tf (and a new script ) Tj /F4 10 Tf (drivescript.py) Tj /F1 10 Tf (. From this point you) Tj T* 0 Tw (build your project using the pyinstaller command, naming the spec file as its input.) Tj T* ET Q Q q 1 0 0 1 62.69291 150.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.271318 Tw (pyi-make_comserver assumes that your top level code \(registration etc.\) is "normal". If it's not, you will) Tj T* 0 Tw (have to edit the generated script.) Tj T* ET Q Q q 1 0 0 1 62.69291 132.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (These options are allowed with the pyi-make_comserver command:) Tj T* ET Q Q q 1 0 0 1 62.69291 105.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--debug) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .00784 Tw (Use the debug \(verbose\) version of the bootloader) Tj T* 0 Tw (in the executable.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 89.82362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--verbose) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Register the COM server\(s\) with the quiet flag off.) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 153.6849 0 Td (PyInstaller Manual - Outdated Features) Tj T* -153.6849 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (34) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R470': class PDFStream 470 0 obj % page stream << /Length 6463 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 737.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--ascii) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (do not include Unicode support modules.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 710.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--out=output_path) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3 cm q BT 1 0 0 1 0 14 Tm .849147 Tw 12 TL /F1 10 Tf 0 0 0 rg (Generate ) Tj /F4 10 Tf (drivescript.py ) Tj /F1 10 Tf (and the spec file in) Tj T* 0 Tw /F5 10 Tf (output_path) Tj /F1 10 Tf (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 680.8236 cm q BT 1 0 0 1 0 14 Tm 3.48686 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you have the win32dbg package installed, you can use it with the generated COM server. In) Tj T* 0 Tw /F4 10 Tf (drivescript.py) Tj /F1 10 Tf (, set ) Tj /F4 10 Tf (debug=1 ) Tj /F1 10 Tf (in the registration line.) Tj T* ET Q Q q 1 0 0 1 62.69291 602.8236 cm q 0 0 0 rg BT 1 0 0 1 0 62 Tm /F1 10 Tf 12 TL 1.647984 Tw (Caution: the inprocess COM server support will not work when the client process already has Python) Tj T* 0 Tw 3.348651 Tw (loaded. It would be rather tricky to non-obtrusively hook into an already running Python, but the) Tj T* 0 Tw .492765 Tw (show-stopper is that the Python/C API won't let us find out which interpreter instance to hook into. \(If this) Tj T* 0 Tw 3.27284 Tw (is important to you, you might experiment with using apartment threading, which seems the best) Tj T* 0 Tw .368488 Tw (possibility to get this to work\). To use a "frozen" COM server from a Python process, you'll have to load it) Tj T* 0 Tw (as an exe:) Tj T* ET Q Q q 1 0 0 1 62.69291 557.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (o = win32com.client.Dispatch\(progid,) Tj T* ( clsctx=pythoncom.CLSCTX_LOCAL_SERVER\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 527.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Building Optimized) Tj T* ET Q Q q 1 0 0 1 62.69291 497.6236 cm q BT 1 0 0 1 0 14 Tm .036136 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are two facets to running optimized: gathering ) Tj /F4 10 Tf (.pyo) Tj /F1 10 Tf ('s, and setting the ) Tj /F4 10 Tf (Py_OptimizeFlag) Tj /F1 10 Tf (. Installer) Tj T* 0 Tw (will gather ) Tj /F4 10 Tf (.pyo) Tj /F1 10 Tf ('s if it is run optimized:) Tj T* ET Q Q q 1 0 0 1 62.69291 464.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (python -O pyinstaller.py ...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 432.4236 cm q BT 1 0 0 1 0 14 Tm .394985 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (Py_OptimizeFlag ) Tj /F1 10 Tf (will be set if you use a ) Tj /F4 10 Tf (\('O','','OPTION'\) ) Tj /F1 10 Tf (in one of the ) Tj /F4 10 Tf (TOCs ) Tj /F1 10 Tf (building the) Tj T* 0 Tw /F4 10 Tf (EXE) Tj /F1 10 Tf (:) Tj T* ET Q Q q 1 0 0 1 62.69291 375.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (exe = EXE\(pyz,) Tj T* ( a.scripts + [\('O','','OPTION'\)],) Tj T* ( ...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 355.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (See ) Tj 0 0 .501961 rg (Using Spec Files ) Tj 0 0 0 rg (for details.) Tj T* ET Q Q q 1 0 0 1 62.69291 325.2236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F7 15 Tf 0 0 0 rg (iu.py) Tj /F2 15 Tf (: An ) Tj /F3 15 Tf (imputil ) Tj /F2 15 Tf (Replacement) Tj T* ET Q Q q 1 0 0 1 62.69291 283.2236 cm q BT 1 0 0 1 0 26 Tm .950574 Tw 12 TL /F1 10 Tf 0 0 0 rg (Module ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (grows out of the pioneering work that Greg Stein did with ) Tj 0 0 .501961 rg (imputil ) Tj 0 0 0 rg (\(actually, it includes some) Tj T* 0 Tw .63186 Tw (verbatim ) Tj /F4 10 Tf (imputil ) Tj /F1 10 Tf (code, but since Greg didn't copyright it, we won't mention it\). Both modules can take) Tj T* 0 Tw (over Python's builtin import and ease writing of at least certain kinds of import hooks.) Tj T* ET Q Q q 1 0 0 1 62.69291 265.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (iu ) Tj /F1 10 Tf (differs from ) Tj /F4 10 Tf (imputil ) Tj /F1 10 Tf (in that it:) Tj T* ET Q Q q 1 0 0 1 62.69291 259.2236 cm Q q 1 0 0 1 62.69291 259.2236 cm Q q 1 0 0 1 62.69291 247.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (is faster) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 241.2236 cm Q q 1 0 0 1 62.69291 229.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (better emulates the builtin import) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 223.2236 cm Q q 1 0 0 1 62.69291 211.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (is more manageable) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 211.2236 cm Q q 1 0 0 1 62.69291 181.2236 cm q BT 1 0 0 1 0 14 Tm .011984 Tw 12 TL /F1 10 Tf 0 0 0 rg (There is an ) Tj /F4 10 Tf (ImportManager ) Tj /F1 10 Tf (which provides the replacement for builtin import and hides all the semantic) Tj T* 0 Tw (complexities of a Python import request from its delegates.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 153.6949 0 Td (PyInstaller Manual - Building Optimized) Tj T* -153.6949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (35) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R471': class PDFStream 471 0 obj % page stream << /Length 7205 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 738.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F6 12.5 Tf 0 0 0 rg (ImportManager) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 74 Tm .679269 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportManager ) Tj /F1 10 Tf (formalizes the concept of a metapath. This concept implicitly exists in native Python in) Tj T* 0 Tw 1.097318 Tw (that builtins and frozen modules are searched before ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (, \(on Windows there's also a search of) Tj T* 0 Tw 3.648651 Tw (the registry, while on Mac, resources may be searched\). This metapath is a list populated with) Tj T* 0 Tw .743976 Tw /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (instances. There are ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (subclasses for builtins, frozen modules, \(on) Tj T* 0 Tw .044147 Tw (Windows\) modules found through the registry and a ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (for handling ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. For) Tj T* 0 Tw .565868 Tw (a top-level import \(that is, not an import of a module in a package\), ) Tj /F4 10 Tf (ImportManager ) Tj /F1 10 Tf (tries each director) Tj T* 0 Tw (on its metapath until one succeeds.) Tj T* ET Q Q q 1 0 0 1 62.69291 606.0236 cm q BT 1 0 0 1 0 26 Tm 3.783318 Tw 12 TL /F4 10 Tf 0 0 0 rg (ImportManager ) Tj /F1 10 Tf (hides the semantic complexity of an import from the directors. It is up to the) Tj T* 0 Tw 1.571163 Tw /F4 10 Tf (ImportManager ) Tj /F1 10 Tf (to decide if an import is relative or absolute; to see if the module has already been) Tj T* 0 Tw (imported; to keep ) Tj /F4 10 Tf (sys.modules ) Tj /F1 10 Tf (up to date; to handle the fromlist and return the correct module object.) Tj T* ET Q Q q 1 0 0 1 62.69291 579.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F6 12.5 Tf 0 0 0 rg (ImportDirector) Tj T* ET Q Q q 1 0 0 1 62.69291 537.0236 cm q BT 1 0 0 1 0 26 Tm .712126 Tw 12 TL /F1 10 Tf 0 0 0 rg (An ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (just needs to respond to ) Tj /F4 10 Tf (getmod\(name\) ) Tj /F1 10 Tf (by returning a module object or ) Tj /F4 10 Tf (None) Tj /F1 10 Tf (.) Tj T* 0 Tw .072619 Tw (As you will see, an ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (can consider name to be atomic - it has no need to examine name) Tj T* 0 Tw (to see if it is dotted.) Tj T* ET Q Q q 1 0 0 1 62.69291 519.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (To see how this works, we need to examine the ) Tj /F4 10 Tf (PathImportDirector) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 492.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F6 12.5 Tf 0 0 0 rg (PathImportDirector) Tj T* ET Q Q q 1 0 0 1 62.69291 414.0236 cm q BT 1 0 0 1 0 62 Tm 1.268555 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (subclass manages a list of names, most notably ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. To do so, it) Tj T* 0 Tw 3.297126 Tw (maintains a shadowpath, a dictionary mapping the names on its pathlist \(eg, ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (\) to their) Tj T* 0 Tw 2.098651 Tw (associated ) Tj /F4 10 Tf (Owners) Tj /F1 10 Tf (. \(It could do this directly, but the assumption that sys.path is occupied solely by) Tj T* 0 Tw 1.107318 Tw (strings seems ineradicable.\) ) Tj /F4 10 Tf (Owners ) Tj /F1 10 Tf (of the appropriate kind are created as needed \(if all your imports) Tj T* 0 Tw .91152 Tw (are satisfied by the first two elements of ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (, the ) Tj /F4 10 Tf (PathImportDirector) Tj /F1 10 Tf ('s shadowpath will only) Tj T* 0 Tw (have two entries\).) Tj T* ET Q Q q 1 0 0 1 62.69291 387.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F6 12.5 Tf 0 0 0 rg (Owner) Tj T* ET Q Q q 1 0 0 1 62.69291 321.0236 cm q BT 1 0 0 1 0 50 Tm 1.51936 Tw 12 TL /F1 10 Tf 0 0 0 rg (An ) Tj /F4 10 Tf (Owner ) Tj /F1 10 Tf (is much like an ) Tj /F4 10 Tf (ImportDirector ) Tj /F1 10 Tf (but manages a much more concrete piece of turf. For) Tj T* 0 Tw 4.968314 Tw (example, a ) Tj /F4 10 Tf (DirOwner ) Tj /F1 10 Tf (manages one directory. Since there are no other officially recognized) Tj T* 0 Tw 3.476412 Tw (filesystem-like namespaces for importing, that's all that's included in ) Tj /F4 10 Tf (iu) Tj /F1 10 Tf (, but it's easy to imagine) Tj T* 0 Tw 1.886651 Tw /F4 10 Tf (Owner``s) Tj ( ) Tj (for) Tj ( ) Tj (zip) Tj ( ) Tj (files) Tj ( ) Tj (\(and) Tj ( ) Tj (I) Tj ( ) Tj (have one) Tj ( ) Tj (for) Tj ( ) Tj (my) Tj ( ) Tj (own) Tj ( ) Tj (``.pyz ) Tj /F1 10 Tf (archive format\) or even) Tj T* 0 Tw (URLs.) Tj T* ET Q Q q 1 0 0 1 62.69291 291.0236 cm q BT 1 0 0 1 0 14 Tm .371412 Tw 12 TL /F1 10 Tf 0 0 0 rg (As with ) Tj /F4 10 Tf (ImportDirectors) Tj /F1 10 Tf (, an ) Tj /F4 10 Tf (Owner ) Tj /F1 10 Tf (just needs to respond to ) Tj /F4 10 Tf (getmod\(name\) ) Tj /F1 10 Tf (by returning a module) Tj T* 0 Tw (object or ) Tj /F4 10 Tf (None) Tj /F1 10 Tf (, and it can consider name to be atomic.) Tj T* ET Q Q q 1 0 0 1 62.69291 237.0236 cm q BT 1 0 0 1 0 38 Tm 2.100542 Tw 12 TL /F1 10 Tf 0 0 0 rg (So structurally, we have a tree, rooted at the ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf (. At the next level, we have a set of) Tj T* 0 Tw 4.86816 Tw /F4 10 Tf (ImportDirectors) Tj /F1 10 Tf (. At least one of those directors, the ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (in charge of) Tj T* 0 Tw 1.08561 Tw /F4 10 Tf (sys.path) Tj /F1 10 Tf (, has another level beneath it, consisting of ) Tj /F4 10 Tf (Owners) Tj /F1 10 Tf (. This much of the tree covers the entire) Tj T* 0 Tw (top-level import namespace.) Tj T* ET Q Q q 1 0 0 1 62.69291 207.0236 cm q BT 1 0 0 1 0 14 Tm 3.27936 Tw 12 TL /F1 10 Tf 0 0 0 rg (The rest of the import namespace is covered by treelets, each rooted in a package module \(an) Tj T* 0 Tw /F4 10 Tf (__init__.py) Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 180.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Packages) Tj T* ET Q Q q 1 0 0 1 62.69291 114.0236 cm q BT 1 0 0 1 0 50 Tm 1.847045 Tw 12 TL /F1 10 Tf 0 0 0 rg (To make this work, ) Tj /F4 10 Tf (Owners ) Tj /F1 10 Tf (need to recognize when a module is a package. For a ) Tj /F4 10 Tf (DirOwner) Tj /F1 10 Tf (, this) Tj T* 0 Tw .774983 Tw (means that name is a subdirectory which contains an ) Tj /F4 10 Tf (__init__.py) Tj /F1 10 Tf (. The ) Tj /F4 10 Tf (__init__ ) Tj /F1 10 Tf (module is loaded) Tj T* 0 Tw 2.10229 Tw (and its ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (is initialized with the subdirectory. Then, a ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (is created to) Tj T* 0 Tw .384147 Tw (manage this ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (. Finally the new ) Tj /F4 10 Tf (PathImportDirector) Tj /F1 10 Tf ('s ) Tj /F4 10 Tf (getmod ) Tj /F1 10 Tf (is assigned to the package's) Tj T* 0 Tw /F4 10 Tf (__importsub__ ) Tj /F1 10 Tf (function.) Tj T* ET Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 153.6949 0 Td (PyInstaller Manual - Building Optimized) Tj T* -153.6949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (36) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R472': class PDFStream 472 0 obj % page stream << /Length 7062 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 681.0236 cm q BT 1 0 0 1 0 62 Tm .17686 Tw 12 TL /F1 10 Tf 0 0 0 rg (When a module within the package is imported, the request is routed \(by the ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf (\) directly to) Tj T* 0 Tw 3.644147 Tw (the package's ) Tj /F4 10 Tf (__importsub__) Tj /F1 10 Tf (. In a hierarchical namespace \(like a filesystem\), this means that) Tj T* 0 Tw 2.474524 Tw /F4 10 Tf (__importsub__ ) Tj /F1 10 Tf (\(which is really the bound getmod method of a ) Tj /F4 10 Tf (PathImportDirector ) Tj /F1 10 Tf (instance\)) Tj T* 0 Tw .275542 Tw (needs only the module name, not the package name or the fully qualified name. And that's exactly what it) Tj T* 0 Tw 1.706988 Tw (gets. \(In a flat namespace - like most archives - it is perfectly easy to route the request back up the) Tj T* 0 Tw (package tree to the archive ) Tj /F4 10 Tf (Owner) Tj /F1 10 Tf (, qualifying the name at each step.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Possibilities) Tj T* ET Q Q q 1 0 0 1 62.69291 564.0236 cm q BT 1 0 0 1 0 74 Tm .273876 Tw 12 TL /F1 10 Tf 0 0 0 rg (Let's say we want to import from zip files. So, we subclass ) Tj /F4 10 Tf (Owner) Tj /F1 10 Tf (. The ) Tj /F4 10 Tf (__init__ ) Tj /F1 10 Tf (method should take a) Tj T* 0 Tw 1.750542 Tw (filename, and raise a ) Tj /F4 10 Tf (ValueError ) Tj /F1 10 Tf (if the file is not an acceptable ) Tj /F4 10 Tf (.zip ) Tj /F1 10 Tf (file. \(When a new name is) Tj T* 0 Tw .493555 Tw (encountered on ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (or a package's ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (, registered Owners are tried until one accepts the) Tj T* 0 Tw 1.779398 Tw (name.\) The ) Tj /F4 10 Tf (getmod ) Tj /F1 10 Tf (method would check the zip file's contents and return ) Tj /F4 10 Tf (None ) Tj /F1 10 Tf (if the name is not) Tj T* 0 Tw 1.05686 Tw (found. Otherwise, it would extract the marshalled code object from the zip, create a new module object) Tj T* 0 Tw .189461 Tw (and perform a bit of initialization \(12 lines of code all told for my own archive format, including initializing a) Tj T* 0 Tw (package with its ) Tj /F4 10 Tf (__subimporter__) Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 534.0236 cm q BT 1 0 0 1 0 14 Tm .692619 Tw 12 TL /F1 10 Tf 0 0 0 rg (Once the new ) Tj /F4 10 Tf (Owner ) Tj /F1 10 Tf (class is registered with ) Tj /F4 10 Tf (iu) Tj /F1 10 Tf (, you can put a zip file on ) Tj /F4 10 Tf (sys.path) Tj /F1 10 Tf (. A package could) Tj T* 0 Tw (even put a zip file on its ) Tj /F4 10 Tf (__path__) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 507.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Compatibility) Tj T* ET Q Q q 1 0 0 1 62.69291 453.0236 cm q BT 1 0 0 1 0 38 Tm .50061 Tw 12 TL /F1 10 Tf 0 0 0 rg (This code has been tested with the PyXML, mxBase and Win32 packages, covering over a dozen import) Tj T* 0 Tw 1.45784 Tw (hacks from manipulations of ) Tj /F4 10 Tf (__path__ ) Tj /F1 10 Tf (to replacing a module in ) Tj /F4 10 Tf (sys.modules ) Tj /F1 10 Tf (with a different one.) Tj T* 0 Tw .573555 Tw (Emulation of Python's native import is nearly exact, including the names recorded in ) Tj /F4 10 Tf (sys.modules ) Tj /F1 10 Tf (and) Tj T* 0 Tw (module attributes \(packages imported through ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (have an extra attribute - ) Tj /F4 10 Tf (__importsub__) Tj /F1 10 Tf (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 426.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Performance) Tj T* ET Q Q q 1 0 0 1 62.69291 372.0236 cm q BT 1 0 0 1 0 38 Tm .546988 Tw 12 TL /F1 10 Tf 0 0 0 rg (In most cases, ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (is slower than builtin import \(by 15 to 20%\) but faster than ) Tj /F4 10 Tf (imputil ) Tj /F1 10 Tf (\(by 15 to 20%\).) Tj T* 0 Tw .353735 Tw (By inserting archives at the front of ) Tj /F4 10 Tf (sys.path ) Tj /F1 10 Tf (containing the standard lib and the package being tested,) Tj T* 0 Tw .77856 Tw (this can be reduced to 5 to 10% slower \(or, on my 1.52 box, 10% faster!\) than builtin import. A bit more) Tj T* 0 Tw (can be shaved off by manipulating the ) Tj /F4 10 Tf (ImportManager) Tj /F1 10 Tf ('s metapath.) Tj T* ET Q Q q 1 0 0 1 62.69291 345.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (Limitations) Tj T* ET Q Q q 1 0 0 1 62.69291 303.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.159986 Tw (This module makes no attempt to facilitate policy import hacks. It is easy to implement certain kinds of) Tj T* 0 Tw .795318 Tw (policies within a particular domain, but fundamentally iu works by dividing up the import namespace into) Tj T* 0 Tw (independent domains.) Tj T* ET Q Q q 1 0 0 1 62.69291 249.0236 cm q BT 1 0 0 1 0 38 Tm .35332 Tw 12 TL /F1 10 Tf 0 0 0 rg (Quite simply, I think cross-domain import hacks are a very bad idea. As author of the original package on) Tj T* 0 Tw .852485 Tw (which ) Tj /F5 10 Tf (PyInstaller ) Tj /F1 10 Tf (is based, McMillan worked with import hacks for many years. Many of them are highly) Tj T* 0 Tw 3.909147 Tw (fragile; they often rely on undocumented \(maybe even accidental\) features of implementation. A) Tj T* 0 Tw (cross-domain import hack is not likely to work with PyXML, for example.) Tj T* ET Q Q q 1 0 0 1 62.69291 195.0236 cm q BT 1 0 0 1 0 38 Tm .719269 Tw 12 TL /F1 10 Tf 0 0 0 rg (That rant aside, you can modify ) Tj /F4 10 Tf (ImportManger ) Tj /F1 10 Tf (to implement different policies. For example, a version) Tj T* 0 Tw .720814 Tw (that implements three import primitives: absolute import, relative import and recursive-relative import. No) Tj T* 0 Tw 6.209147 Tw (idea what the Python syntax for those should be, but ) Tj /F4 10 Tf (__aimport__) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (__rimport__ ) Tj /F1 10 Tf (and) Tj T* 0 Tw /F4 10 Tf (__rrimport__ ) Tj /F1 10 Tf (were easy to implement.) Tj T* ET Q Q q 1 0 0 1 62.69291 168.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F3 12.5 Tf 0 0 0 rg (iu Usage) Tj T* ET Q Q q 1 0 0 1 62.69291 150.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Here's a simple example of using ) Tj /F4 10 Tf (iu ) Tj /F1 10 Tf (as a builtin import replacement.) Tj T* ET Q Q q 1 0 0 1 62.69291 144.0236 cm Q q 1 0 0 1 62.69291 88.86614 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 36 re B* Q q BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( import iu) Tj T* (>) Tj (>) Tj (>) Tj ( iu.ImportManager\(\).install\(\)) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 153.6949 0 Td (PyInstaller Manual - Building Optimized) Tj T* -153.6949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (37) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R473': class PDFStream 473 0 obj % page stream << /Length 959 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 667.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 84 re B* Q q BT 1 0 0 1 0 62 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( import DateTime) Tj T* (>) Tj (>) Tj (>) Tj ( DateTime.__importsub__) Tj T* (<) Tj (method PathImportDirector.getmod) Tj T* ( of PathImportDirector instance at 825900) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 62.69291 667.8236 cm Q q 1 0 0 1 56.69291 773.1969 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 153.6949 0 Td (PyInstaller Manual - Building Optimized) Tj T* -153.6949 0 Td ET Q Q q 1 0 0 1 56.69291 56.69291 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 235.3849 0 Td (38) Tj T* -235.3849 0 Td ET Q Q endstream endobj % 'R474': class PDFPageLabels 474 0 obj % Document Root << /Nums [ 0 475 0 R 1 476 0 R 2 477 0 R 3 478 0 R 4 479 0 R 5 480 0 R 6 481 0 R 7 482 0 R 8 483 0 R 9 484 0 R 10 485 0 R 11 486 0 R 12 487 0 R 13 488 0 R 14 489 0 R 15 490 0 R 16 491 0 R 17 492 0 R 18 493 0 R 19 494 0 R 20 495 0 R 21 496 0 R 22 497 0 R 23 498 0 R 24 499 0 R 25 500 0 R 26 501 0 R 27 502 0 R 28 503 0 R 29 504 0 R 30 505 0 R 31 506 0 R 32 507 0 R 33 508 0 R 34 509 0 R 35 510 0 R 36 511 0 R 37 512 0 R ] >> endobj % 'R475': class PDFPageLabel 475 0 obj % None << /S /D /St 1 >> endobj % 'R476': class PDFPageLabel 476 0 obj % None << /S /D /St 2 >> endobj % 'R477': class PDFPageLabel 477 0 obj % None << /S /D /St 3 >> endobj % 'R478': class PDFPageLabel 478 0 obj % None << /S /D /St 4 >> endobj % 'R479': class PDFPageLabel 479 0 obj % None << /S /D /St 5 >> endobj % 'R480': class PDFPageLabel 480 0 obj % None << /S /D /St 6 >> endobj % 'R481': class PDFPageLabel 481 0 obj % None << /S /D /St 7 >> endobj % 'R482': class PDFPageLabel 482 0 obj % None << /S /D /St 8 >> endobj % 'R483': class PDFPageLabel 483 0 obj % None << /S /D /St 9 >> endobj % 'R484': class PDFPageLabel 484 0 obj % None << /S /D /St 10 >> endobj % 'R485': class PDFPageLabel 485 0 obj % None << /S /D /St 11 >> endobj % 'R486': class PDFPageLabel 486 0 obj % None << /S /D /St 12 >> endobj % 'R487': class PDFPageLabel 487 0 obj % None << /S /D /St 13 >> endobj % 'R488': class PDFPageLabel 488 0 obj % None << /S /D /St 14 >> endobj % 'R489': class PDFPageLabel 489 0 obj % None << /S /D /St 15 >> endobj % 'R490': class PDFPageLabel 490 0 obj % None << /S /D /St 16 >> endobj % 'R491': class PDFPageLabel 491 0 obj % None << /S /D /St 17 >> endobj % 'R492': class PDFPageLabel 492 0 obj % None << /S /D /St 18 >> endobj % 'R493': class PDFPageLabel 493 0 obj % None << /S /D /St 19 >> endobj % 'R494': class PDFPageLabel 494 0 obj % None << /S /D /St 20 >> endobj % 'R495': class PDFPageLabel 495 0 obj % None << /S /D /St 21 >> endobj % 'R496': class PDFPageLabel 496 0 obj % None << /S /D /St 22 >> endobj % 'R497': class PDFPageLabel 497 0 obj % None << /S /D /St 23 >> endobj % 'R498': class PDFPageLabel 498 0 obj % None << /S /D /St 24 >> endobj % 'R499': class PDFPageLabel 499 0 obj % None << /S /D /St 25 >> endobj % 'R500': class PDFPageLabel 500 0 obj % None << /S /D /St 26 >> endobj % 'R501': class PDFPageLabel 501 0 obj % None << /S /D /St 27 >> endobj % 'R502': class PDFPageLabel 502 0 obj % None << /S /D /St 28 >> endobj % 'R503': class PDFPageLabel 503 0 obj % None << /S /D /St 29 >> endobj % 'R504': class PDFPageLabel 504 0 obj % None << /S /D /St 30 >> endobj % 'R505': class PDFPageLabel 505 0 obj % None << /S /D /St 31 >> endobj % 'R506': class PDFPageLabel 506 0 obj % None << /S /D /St 32 >> endobj % 'R507': class PDFPageLabel 507 0 obj % None << /S /D /St 33 >> endobj % 'R508': class PDFPageLabel 508 0 obj % None << /S /D /St 34 >> endobj % 'R509': class PDFPageLabel 509 0 obj % None << /S /D /St 35 >> endobj % 'R510': class PDFPageLabel 510 0 obj % None << /S /D /St 36 >> endobj % 'R511': class PDFPageLabel 511 0 obj % None << /S /D /St 37 >> endobj % 'R512': class PDFPageLabel 512 0 obj % None << /S /D /St 38 >> endobj xref 0 513 0000000000 65535 f 0000000113 00000 n 0000000290 00000 n 0000000455 00000 n 0000000642 00000 n 0000000886 00000 n 0000001114 00000 n 0000001438 00000 n 0000001680 00000 n 0000001922 00000 n 0000002164 00000 n 0000002407 00000 n 0000002650 00000 n 0000002880 00000 n 0000003083 00000 n 0000003327 00000 n 0000003571 00000 n 0000003815 00000 n 0000004059 00000 n 0000004303 00000 n 0000004547 00000 n 0000004791 00000 n 0000005035 00000 n 0000005279 00000 n 0000005523 00000 n 0000005767 00000 n 0000006011 00000 n 0000006255 00000 n 0000006499 00000 n 0000006743 00000 n 0000006987 00000 n 0000007231 00000 n 0000007475 00000 n 0000007719 00000 n 0000007963 00000 n 0000008207 00000 n 0000008451 00000 n 0000008695 00000 n 0000008939 00000 n 0000009183 00000 n 0000009427 00000 n 0000009671 00000 n 0000009915 00000 n 0000010159 00000 n 0000010403 00000 n 0000010647 00000 n 0000010891 00000 n 0000011135 00000 n 0000011379 00000 n 0000011623 00000 n 0000011867 00000 n 0000012111 00000 n 0000012355 00000 n 0000012599 00000 n 0000012843 00000 n 0000013087 00000 n 0000013331 00000 n 0000013575 00000 n 0000013819 00000 n 0000014063 00000 n 0000014307 00000 n 0000014551 00000 n 0000014795 00000 n 0000015039 00000 n 0000015283 00000 n 0000015527 00000 n 0000015771 00000 n 0000016015 00000 n 0000016259 00000 n 0000016503 00000 n 0000016747 00000 n 0000016991 00000 n 0000017235 00000 n 0000017479 00000 n 0000017723 00000 n 0000017967 00000 n 0000018211 00000 n 0000018455 00000 n 0000018699 00000 n 0000018943 00000 n 0000019187 00000 n 0000019415 00000 n 0000020379 00000 n 0000020623 00000 n 0000020867 00000 n 0000021111 00000 n 0000021355 00000 n 0000021599 00000 n 0000021843 00000 n 0000022087 00000 n 0000022331 00000 n 0000022575 00000 n 0000022819 00000 n 0000023063 00000 n 0000023307 00000 n 0000023551 00000 n 0000023795 00000 n 0000024039 00000 n 0000024283 00000 n 0000024527 00000 n 0000024771 00000 n 0000025016 00000 n 0000025261 00000 n 0000025506 00000 n 0000025751 00000 n 0000025996 00000 n 0000026242 00000 n 0000026488 00000 n 0000026734 00000 n 0000026980 00000 n 0000027226 00000 n 0000027472 00000 n 0000027703 00000 n 0000027881 00000 n 0000028127 00000 n 0000028373 00000 n 0000028619 00000 n 0000028865 00000 n 0000029111 00000 n 0000029357 00000 n 0000029603 00000 n 0000029849 00000 n 0000030095 00000 n 0000030341 00000 n 0000030587 00000 n 0000030833 00000 n 0000031079 00000 n 0000031325 00000 n 0000031571 00000 n 0000031817 00000 n 0000032063 00000 n 0000032309 00000 n 0000032555 00000 n 0000032801 00000 n 0000033047 00000 n 0000033293 00000 n 0000033539 00000 n 0000033785 00000 n 0000034031 00000 n 0000034277 00000 n 0000034523 00000 n 0000034769 00000 n 0000035015 00000 n 0000035261 00000 n 0000035507 00000 n 0000035753 00000 n 0000035999 00000 n 0000036245 00000 n 0000036491 00000 n 0000036737 00000 n 0000036983 00000 n 0000037229 00000 n 0000037475 00000 n 0000037721 00000 n 0000037967 00000 n 0000038213 00000 n 0000038442 00000 n 0000039466 00000 n 0000039712 00000 n 0000039958 00000 n 0000040204 00000 n 0000040450 00000 n 0000040696 00000 n 0000040942 00000 n 0000041188 00000 n 0000041434 00000 n 0000041680 00000 n 0000041926 00000 n 0000042172 00000 n 0000042418 00000 n 0000042664 00000 n 0000042910 00000 n 0000043156 00000 n 0000043402 00000 n 0000043648 00000 n 0000043894 00000 n 0000044140 00000 n 0000044386 00000 n 0000044632 00000 n 0000044878 00000 n 0000045124 00000 n 0000045370 00000 n 0000045616 00000 n 0000045862 00000 n 0000046108 00000 n 0000046339 00000 n 0000046537 00000 n 0000046783 00000 n 0000047029 00000 n 0000047275 00000 n 0000047521 00000 n 0000047767 00000 n 0000048013 00000 n 0000048259 00000 n 0000048505 00000 n 0000048751 00000 n 0000048997 00000 n 0000049243 00000 n 0000049489 00000 n 0000049735 00000 n 0000049981 00000 n 0000050227 00000 n 0000050473 00000 n 0000050719 00000 n 0000050965 00000 n 0000051211 00000 n 0000051457 00000 n 0000051703 00000 n 0000051949 00000 n 0000052194 00000 n 0000052446 00000 n 0000053277 00000 n 0000053565 00000 n 0000053822 00000 n 0000054070 00000 n 0000054319 00000 n 0000054600 00000 n 0000054851 00000 n 0000055108 00000 n 0000055489 00000 n 0000055757 00000 n 0000056041 00000 n 0000056292 00000 n 0000056541 00000 n 0000056786 00000 n 0000057050 00000 n 0000057279 00000 n 0000057661 00000 n 0000057907 00000 n 0000058153 00000 n 0000058399 00000 n 0000058645 00000 n 0000058891 00000 n 0000059137 00000 n 0000059383 00000 n 0000059629 00000 n 0000059873 00000 n 0000060120 00000 n 0000060397 00000 n 0000060658 00000 n 0000060904 00000 n 0000061161 00000 n 0000061397 00000 n 0000061859 00000 n 0000062088 00000 n 0000062409 00000 n 0000062637 00000 n 0000062959 00000 n 0000063188 00000 n 0000063510 00000 n 0000063756 00000 n 0000064002 00000 n 0000064232 00000 n 0000064574 00000 n 0000064820 00000 n 0000065066 00000 n 0000065312 00000 n 0000065558 00000 n 0000065788 00000 n 0000066149 00000 n 0000066485 00000 n 0000066746 00000 n 0000067077 00000 n 0000067326 00000 n 0000067575 00000 n 0000067808 00000 n 0000068149 00000 n 0000068433 00000 n 0000068681 00000 n 0000068942 00000 n 0000069189 00000 n 0000069439 00000 n 0000069683 00000 n 0000069949 00000 n 0000070331 00000 n 0000070561 00000 n 0000070867 00000 n 0000071151 00000 n 0000071450 00000 n 0000071710 00000 n 0000071956 00000 n 0000072201 00000 n 0000072464 00000 n 0000072713 00000 n 0000072948 00000 n 0000073320 00000 n 0000073549 00000 n 0000073871 00000 n 0000074117 00000 n 0000074363 00000 n 0000074609 00000 n 0000074855 00000 n 0000075085 00000 n 0000075432 00000 n 0000075634 00000 n 0000075864 00000 n 0000076186 00000 n 0000076432 00000 n 0000076678 00000 n 0000076922 00000 n 0000077209 00000 n 0000077560 00000 n 0000077807 00000 n 0000078129 00000 n 0000078374 00000 n 0000078645 00000 n 0000078976 00000 n 0000079263 00000 n 0000085239 00000 n 0000092283 00000 n 0000092708 00000 n 0000093008 00000 n 0000093238 00000 n 0000093545 00000 n 0000093717 00000 n 0000094001 00000 n 0000094300 00000 n 0000094554 00000 n 0000094809 00000 n 0000095070 00000 n 0000095325 00000 n 0000095559 00000 n 0000095920 00000 n 0000096193 00000 n 0000096514 00000 n 0000096789 00000 n 0000097019 00000 n 0000097351 00000 n 0000097596 00000 n 0000097843 00000 n 0000098175 00000 n 0000098420 00000 n 0000098673 00000 n 0000098989 00000 n 0000099273 00000 n 0000099557 00000 n 0000099842 00000 n 0000100006 00000 n 0000100381 00000 n 0000100511 00000 n 0000100688 00000 n 0000100876 00000 n 0000101074 00000 n 0000101324 00000 n 0000101556 00000 n 0000101729 00000 n 0000101940 00000 n 0000102150 00000 n 0000102333 00000 n 0000102611 00000 n 0000102825 00000 n 0000103031 00000 n 0000103235 00000 n 0000103451 00000 n 0000103665 00000 n 0000103864 00000 n 0000104051 00000 n 0000104298 00000 n 0000104518 00000 n 0000104702 00000 n 0000104937 00000 n 0000105155 00000 n 0000105364 00000 n 0000105558 00000 n 0000105816 00000 n 0000106006 00000 n 0000106227 00000 n 0000106429 00000 n 0000106636 00000 n 0000106830 00000 n 0000107072 00000 n 0000107280 00000 n 0000107482 00000 n 0000107727 00000 n 0000107959 00000 n 0000108159 00000 n 0000108342 00000 n 0000108553 00000 n 0000108748 00000 n 0000108998 00000 n 0000109209 00000 n 0000109420 00000 n 0000109676 00000 n 0000109864 00000 n 0000110073 00000 n 0000110280 00000 n 0000110481 00000 n 0000110726 00000 n 0000110913 00000 n 0000111120 00000 n 0000111335 00000 n 0000111525 00000 n 0000111770 00000 n 0000112014 00000 n 0000112193 00000 n 0000112397 00000 n 0000112596 00000 n 0000112807 00000 n 0000113012 00000 n 0000113219 00000 n 0000113467 00000 n 0000113647 00000 n 0000113840 00000 n 0000114033 00000 n 0000114240 00000 n 0000114489 00000 n 0000114672 00000 n 0000114864 00000 n 0000115065 00000 n 0000115265 00000 n 0000115517 00000 n 0000115703 00000 n 0000115896 00000 n 0000116100 00000 n 0000116353 00000 n 0000116535 00000 n 0000116735 00000 n 0000116934 00000 n 0000117132 00000 n 0000117322 00000 n 0000117515 00000 n 0000117695 00000 n 0000117926 00000 n 0000118121 00000 n 0000118324 00000 n 0000118567 00000 n 0000118749 00000 n 0000118948 00000 n 0000119151 00000 n 0000119341 00000 n 0000119534 00000 n 0000119732 00000 n 0000119930 00000 n 0000120126 00000 n 0000120322 00000 n 0000120480 00000 n 0000120959 00000 n 0000123838 00000 n 0000133545 00000 n 0000143283 00000 n 0000152965 00000 n 0000160101 00000 n 0000169268 00000 n 0000178633 00000 n 0000186731 00000 n 0000193699 00000 n 0000202980 00000 n 0000210487 00000 n 0000218561 00000 n 0000227018 00000 n 0000234217 00000 n 0000242309 00000 n 0000251597 00000 n 0000261681 00000 n 0000269541 00000 n 0000278142 00000 n 0000285158 00000 n 0000290950 00000 n 0000298599 00000 n 0000307977 00000 n 0000315157 00000 n 0000322516 00000 n 0000329754 00000 n 0000337428 00000 n 0000344094 00000 n 0000351681 00000 n 0000358266 00000 n 0000365683 00000 n 0000372110 00000 n 0000379011 00000 n 0000386185 00000 n 0000392749 00000 n 0000400055 00000 n 0000407218 00000 n 0000408281 00000 n 0000408923 00000 n 0000409002 00000 n 0000409081 00000 n 0000409160 00000 n 0000409239 00000 n 0000409318 00000 n 0000409397 00000 n 0000409476 00000 n 0000409555 00000 n 0000409634 00000 n 0000409714 00000 n 0000409794 00000 n 0000409874 00000 n 0000409954 00000 n 0000410034 00000 n 0000410114 00000 n 0000410194 00000 n 0000410274 00000 n 0000410354 00000 n 0000410434 00000 n 0000410514 00000 n 0000410594 00000 n 0000410674 00000 n 0000410754 00000 n 0000410834 00000 n 0000410914 00000 n 0000410994 00000 n 0000411074 00000 n 0000411154 00000 n 0000411234 00000 n 0000411314 00000 n 0000411394 00000 n 0000411474 00000 n 0000411554 00000 n 0000411634 00000 n 0000411714 00000 n 0000411794 00000 n 0000411874 00000 n trailer << /ID % ReportLab generated PDF document -- digest (http://www.reportlab.com) [(\211*\246\355\215\201\374\331\207\236\204P^\316\352\302) (\211*\246\355\215\201\374\331\207\236\204P^\316\352\302)] /Info 337 0 R /Root 336 0 R /Size 513 >> startxref 411923 %%EOF