Permalink
Browse files

Some tweaking before alpha release.

  • Loading branch information...
1 parent 27d86bf commit 1b925ab68cb4494fe59d93d824d58c2417e6e9c4 @dchenbecker dchenbecker committed Dec 22, 2008
Showing with 2,040 additions and 206 deletions.
  1. +1 −0 .gitignore
  2. +379 −0 Inconsolata.afm
  3. +1,095 −0 Inconsolata.pfa
  4. BIN Inconsolata.tfm
  5. BIN Inconsolata.ttf
  6. +1 −1 Makefile
  7. +128 −0 T1-WGL4.enc
  8. +8 −0 T1Inconsolata.fd
  9. +420 −201 chap-JPA.lyx
  10. +2 −2 chap-welcome.lyx
  11. +5 −2 master.lyx
  12. +1 −0 ttfonts.map
View
1 .gitignore
@@ -16,3 +16,4 @@ master/
*.log
*.out
*.toc
+*pk
View
379 Inconsolata.afm
@@ -0,0 +1,379 @@
+StartFontMetrics 2.0
+Comment AFM Generated by Ghostscript/pf2afm
+FontName Inconsolata
+FullName Inconsolata
+FamilyName Inconsolata
+Weight Medium
+Notice Created by Raph Levien using his own tools and FontForge. Copyright 2006 Raph Levien. Released under the SIL Open Font License, http://scripts.sil.org/OFL.
+ItalicAngle 0
+IsFixedPitch true
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.009
+EncodingScheme FontSpecific
+FontBBox -1 -177 510 835
+StartCharMetrics 362
+C 1 ; WX 500 ; N NameMe.1 ; B 0 0 0 0 ;
+C 2 ; WX 500 ; N NameMe.2 ; B 0 0 0 0 ;
+C 3 ; WX 500 ; N NameMe.3 ; B 0 0 0 0 ;
+C 4 ; WX 500 ; N NameMe.4 ; B 0 0 0 0 ;
+C 5 ; WX 500 ; N NameMe.5 ; B 0 0 0 0 ;
+C 6 ; WX 500 ; N NameMe.6 ; B 0 0 0 0 ;
+C 7 ; WX 500 ; N NameMe.7 ; B 0 0 0 0 ;
+C 8 ; WX 500 ; N NameMe.8 ; B 0 0 0 0 ;
+C 9 ; WX 500 ; N NameMe.9 ; B 0 0 0 0 ;
+C 10 ; WX 500 ; N NameMe.10 ; B 0 0 0 0 ;
+C 11 ; WX 500 ; N NameMe.11 ; B 0 0 0 0 ;
+C 12 ; WX 500 ; N NameMe.12 ; B 0 0 0 0 ;
+C 13 ; WX 500 ; N NameMe.13 ; B 0 0 0 0 ;
+C 14 ; WX 500 ; N NameMe.14 ; B 0 0 0 0 ;
+C 15 ; WX 500 ; N NameMe.15 ; B 0 0 0 0 ;
+C 16 ; WX 500 ; N NameMe.16 ; B 0 0 0 0 ;
+C 17 ; WX 500 ; N NameMe.17 ; B 0 0 0 0 ;
+C 18 ; WX 500 ; N NameMe.18 ; B 0 0 0 0 ;
+C 19 ; WX 500 ; N NameMe.19 ; B 0 0 0 0 ;
+C 20 ; WX 500 ; N NameMe.20 ; B 0 0 0 0 ;
+C 21 ; WX 500 ; N NameMe.21 ; B 0 0 0 0 ;
+C 22 ; WX 500 ; N NameMe.22 ; B 0 0 0 0 ;
+C 23 ; WX 500 ; N NameMe.23 ; B 0 0 0 0 ;
+C 24 ; WX 500 ; N NameMe.24 ; B 0 0 0 0 ;
+C 25 ; WX 500 ; N NameMe.25 ; B 0 0 0 0 ;
+C 26 ; WX 500 ; N NameMe.26 ; B 0 0 0 0 ;
+C 27 ; WX 500 ; N NameMe.27 ; B 0 0 0 0 ;
+C 28 ; WX 500 ; N NameMe.28 ; B 0 0 0 0 ;
+C 29 ; WX 500 ; N NameMe.29 ; B 0 0 0 0 ;
+C 30 ; WX 500 ; N NameMe.30 ; B 0 0 0 0 ;
+C 31 ; WX 500 ; N NameMe.31 ; B 0 0 0 0 ;
+C 32 ; WX 500 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 500 ; N exclam ; B 180 -11 299 668 ;
+C 34 ; WX 500 ; N quotedbl ; B 111 412 397 666 ;
+C 35 ; WX 500 ; N numbersign ; B 25 10 476 627 ;
+C 36 ; WX 500 ; N dollar ; B 60 -47 460 651 ;
+C 37 ; WX 500 ; N percent ; B 28 -10 482 634 ;
+C 38 ; WX 500 ; N ampersand ; B 36 -12 481 629 ;
+C 39 ; WX 500 ; N quotesingle ; B 206 412 319 666 ;
+C 40 ; WX 500 ; N parenleft ; B 139 -173 425 666 ;
+C 41 ; WX 500 ; N parenright ; B 72 -174 364 665 ;
+C 42 ; WX 500 ; N asterisk ; B 41 106 458 519 ;
+C 43 ; WX 500 ; N plus ; B 45 104 456 523 ;
+C 44 ; WX 500 ; N comma ; B 165 -168 306 103 ;
+C 45 ; WX 500 ; N hyphen ; B 71 281 431 348 ;
+C 46 ; WX 500 ; N period ; B 179 -11 298 104 ;
+C 47 ; WX 500 ; N slash ; B 64 -42 437 665 ;
+C 48 ; WX 500 ; N zero ; B 50 -11 450 627 ;
+C 49 ; WX 500 ; N one ; B 91 -1 410 624 ;
+C 50 ; WX 500 ; N two ; B 73 0 439 627 ;
+C 51 ; WX 500 ; N three ; B 69 -11 425 625 ;
+C 52 ; WX 500 ; N four ; B 48 0 452 624 ;
+C 53 ; WX 500 ; N five ; B 64 -11 445 623 ;
+C 54 ; WX 500 ; N six ; B 67 -10 439 630 ;
+C 55 ; WX 500 ; N seven ; B 79 0 432 623 ;
+C 56 ; WX 500 ; N eight ; B 60 -10 441 631 ;
+C 57 ; WX 500 ; N nine ; B 68 -10 437 629 ;
+C 58 ; WX 500 ; N colon ; B 179 -11 298 423 ;
+C 59 ; WX 500 ; N semicolon ; B 165 -168 306 423 ;
+C 60 ; WX 500 ; N less ; B 35 47 461 567 ;
+C 61 ; WX 500 ; N equal ; B 45 170 456 438 ;
+C 62 ; WX 500 ; N greater ; B 40 47 466 567 ;
+C 63 ; WX 500 ; N question ; B 64 -13 434 665 ;
+C 64 ; WX 500 ; N at ; B 31 -11 465 633 ;
+C 65 ; WX 500 ; N A ; B 15 -1 483 634 ;
+C 66 ; WX 500 ; N B ; B 48 0 457 623 ;
+C 67 ; WX 500 ; N C ; B 41 -10 469 628 ;
+C 68 ; WX 500 ; N D ; B 54 -1 460 623 ;
+C 69 ; WX 500 ; N E ; B 59 0 441 624 ;
+C 70 ; WX 500 ; N F ; B 78 0 437 624 ;
+C 71 ; WX 500 ; N G ; B 36 -10 460 629 ;
+C 72 ; WX 500 ; N H ; B 54 -1 448 623 ;
+C 73 ; WX 500 ; N I ; B 81 -1 403 623 ;
+C 74 ; WX 500 ; N J ; B 49 -11 457 623 ;
+C 75 ; WX 500 ; N K ; B 42 -4 471 628 ;
+C 76 ; WX 500 ; N L ; B 66 -1 439 623 ;
+C 77 ; WX 500 ; N M ; B 41 -1 460 624 ;
+C 78 ; WX 500 ; N N ; B 50 -1 454 624 ;
+C 79 ; WX 500 ; N O ; B 29 -10 471 630 ;
+C 80 ; WX 500 ; N P ; B 59 0 456 623 ;
+C 81 ; WX 500 ; N Q ; B 29 -145 471 630 ;
+C 82 ; WX 500 ; N R ; B 56 0 464 623 ;
+C 83 ; WX 500 ; N S ; B 52 -10 455 627 ;
+C 84 ; WX 500 ; N T ; B 31 -1 463 624 ;
+C 85 ; WX 500 ; N U ; B 50 -11 454 623 ;
+C 86 ; WX 500 ; N V ; B 25 -4 478 624 ;
+C 87 ; WX 500 ; N W ; B 17 -4 488 623 ;
+C 88 ; WX 500 ; N X ; B 41 0 468 624 ;
+C 89 ; WX 500 ; N Y ; B 28 0 473 624 ;
+C 90 ; WX 500 ; N Z ; B 50 -1 463 623 ;
+C 91 ; WX 500 ; N bracketleft ; B 131 -89 418 670 ;
+C 92 ; WX 500 ; N backslash ; B 64 -42 437 665 ;
+C 93 ; WX 500 ; N bracketright ; B 83 -89 369 670 ;
+C 94 ; WX 500 ; N asciicircum ; B 93 343 403 623 ;
+C 95 ; WX 500 ; N underscore ; B 35 -80 466 -19 ;
+C 96 ; WX 500 ; N grave ; B 139 434 307 671 ;
+C 97 ; WX 500 ; N a ; B 49 -11 435 467 ;
+C 98 ; WX 500 ; N b ; B 60 -11 457 665 ;
+C 99 ; WX 500 ; N c ; B 56 -11 457 466 ;
+C 100 ; WX 500 ; N d ; B 45 -10 448 665 ;
+C 101 ; WX 500 ; N e ; B 49 -10 444 468 ;
+C 102 ; WX 500 ; N f ; B 63 0 483 671 ;
+C 103 ; WX 500 ; N g ; B 38 -172 475 472 ;
+C 104 ; WX 500 ; N h ; B 70 0 433 665 ;
+C 105 ; WX 500 ; N i ; B 100 0 396 656 ;
+C 106 ; WX 500 ; N j ; B 48 -174 385 656 ;
+C 107 ; WX 500 ; N k ; B 66 -4 479 665 ;
+C 108 ; WX 500 ; N l ; B 79 0 421 665 ;
+C 109 ; WX 500 ; N m ; B 38 -1 470 468 ;
+C 110 ; WX 500 ; N n ; B 68 0 432 468 ;
+C 111 ; WX 500 ; N o ; B 40 -12 460 467 ;
+C 112 ; WX 500 ; N p ; B 60 -167 463 467 ;
+C 113 ; WX 500 ; N q ; B 42 -167 442 469 ;
+C 114 ; WX 500 ; N r ; B 99 -1 458 468 ;
+C 115 ; WX 500 ; N s ; B 57 -10 440 468 ;
+C 116 ; WX 500 ; N t ; B 70 -9 444 592 ;
+C 117 ; WX 500 ; N u ; B 62 -11 440 457 ;
+C 118 ; WX 500 ; N v ; B 40 -3 457 457 ;
+C 119 ; WX 500 ; N w ; B 16 -1 481 457 ;
+C 120 ; WX 500 ; N x ; B 47 0 456 457 ;
+C 121 ; WX 500 ; N y ; B 22 -174 463 457 ;
+C 122 ; WX 500 ; N z ; B 50 -1 450 457 ;
+C 123 ; WX 500 ; N braceleft ; B 53 -159 408 637 ;
+C 124 ; WX 500 ; N bar ; B 217 -151 284 652 ;
+C 125 ; WX 500 ; N braceright ; B 92 -159 448 637 ;
+C 126 ; WX 500 ; N asciitilde ; B 41 324 476 464 ;
+C 127 ; WX 500 ; N NameMe.127 ; B 0 0 0 0 ;
+C 128 ; WX 500 ; N NameMe.128 ; B 0 0 0 0 ;
+C 129 ; WX 500 ; N NameMe.129 ; B 0 0 0 0 ;
+C 130 ; WX 500 ; N NameMe.130 ; B 0 0 0 0 ;
+C 131 ; WX 500 ; N NameMe.131 ; B 0 0 0 0 ;
+C 132 ; WX 500 ; N NameMe.132 ; B 0 0 0 0 ;
+C 133 ; WX 500 ; N NameMe.133 ; B 0 0 0 0 ;
+C 134 ; WX 500 ; N NameMe.134 ; B 0 0 0 0 ;
+C 135 ; WX 500 ; N NameMe.135 ; B 0 0 0 0 ;
+C 136 ; WX 500 ; N NameMe.136 ; B 0 0 0 0 ;
+C 137 ; WX 500 ; N NameMe.137 ; B 0 0 0 0 ;
+C 138 ; WX 500 ; N NameMe.138 ; B 0 0 0 0 ;
+C 139 ; WX 500 ; N NameMe.139 ; B 0 0 0 0 ;
+C 140 ; WX 500 ; N NameMe.140 ; B 0 0 0 0 ;
+C 141 ; WX 500 ; N NameMe.141 ; B 0 0 0 0 ;
+C 142 ; WX 500 ; N NameMe.142 ; B 0 0 0 0 ;
+C 143 ; WX 500 ; N NameMe.143 ; B 0 0 0 0 ;
+C 144 ; WX 500 ; N NameMe.144 ; B 0 0 0 0 ;
+C 145 ; WX 500 ; N NameMe.145 ; B 0 0 0 0 ;
+C 146 ; WX 500 ; N NameMe.146 ; B 0 0 0 0 ;
+C 147 ; WX 500 ; N NameMe.147 ; B 0 0 0 0 ;
+C 148 ; WX 500 ; N NameMe.148 ; B 0 0 0 0 ;
+C 149 ; WX 500 ; N NameMe.149 ; B 0 0 0 0 ;
+C 150 ; WX 500 ; N NameMe.150 ; B 0 0 0 0 ;
+C 151 ; WX 500 ; N NameMe.151 ; B 0 0 0 0 ;
+C 152 ; WX 500 ; N NameMe.152 ; B 0 0 0 0 ;
+C 153 ; WX 500 ; N NameMe.153 ; B 0 0 0 0 ;
+C 154 ; WX 500 ; N NameMe.154 ; B 0 0 0 0 ;
+C 155 ; WX 500 ; N NameMe.155 ; B 0 0 0 0 ;
+C 156 ; WX 500 ; N NameMe.156 ; B 0 0 0 0 ;
+C 157 ; WX 500 ; N NameMe.157 ; B 0 0 0 0 ;
+C 158 ; WX 500 ; N NameMe.158 ; B 0 0 0 0 ;
+C 159 ; WX 500 ; N NameMe.159 ; B 0 0 0 0 ;
+C 160 ; WX 500 ; N nonbreakingspace ; B 0 0 0 0 ;
+C 161 ; WX 500 ; N exclamdown ; B 180 -11 299 668 ;
+C 162 ; WX 500 ; N cent ; B 48 -79 451 624 ;
+C 163 ; WX 500 ; N sterling ; B 39 -15 470 623 ;
+C 164 ; WX 500 ; N euro ; B 33 -11 464 628 ;
+C 165 ; WX 500 ; N yen ; B 36 0 466 624 ;
+C 166 ; WX 500 ; N Scaron ; B 52 -10 455 791 ;
+C 167 ; WX 500 ; N section ; B 65 -54 418 672 ;
+C 168 ; WX 500 ; N scaron ; B 57 -10 440 694 ;
+C 169 ; WX 500 ; N copyright ; B 14 19 498 530 ;
+C 170 ; WX 500 ; N ordfeminine ; B 76 152 425 622 ;
+C 171 ; WX 500 ; N guillemotleft ; B 67 61 446 400 ;
+C 172 ; WX 500 ; N logicalnot ; B 91 157 414 347 ;
+C 173 ; WX 500 ; N softhyphen ; B 71 281 431 348 ;
+C 174 ; WX 500 ; N registered ; B 14 19 498 530 ;
+C 175 ; WX 500 ; N macron ; B 123 565 377 621 ;
+C 176 ; WX 500 ; N degree ; B 121 370 391 639 ;
+C 177 ; WX 500 ; N plusminus ; B 45 17 457 575 ;
+C 178 ; WX 500 ; N uni00B2 ; B 111 253 400 637 ;
+C 179 ; WX 500 ; N uni00B3 ; B 112 251 406 638 ;
+C 180 ; WX 500 ; N Zcaron ; B 50 -1 463 791 ;
+C 181 ; WX 500 ; N micro ; B 24 -167 494 457 ;
+C 182 ; WX 500 ; N paragraph ; B 64 -68 436 665 ;
+C 183 ; WX 500 ; N periodcentered ; B 179 274 298 388 ;
+C 184 ; WX 500 ; N zcaron ; B 50 -1 450 694 ;
+C 185 ; WX 500 ; N uni00B9 ; B 123 253 391 633 ;
+C 186 ; WX 500 ; N ordmasculine ; B 76 152 425 622 ;
+C 187 ; WX 500 ; N guillemotright ; B 67 61 446 400 ;
+C 188 ; WX 500 ; N OE ; B 9 -7 484 632 ;
+C 189 ; WX 500 ; N oe ; B 6 -12 494 466 ;
+C 190 ; WX 500 ; N Ydieresis ; B 28 0 473 789 ;
+C 191 ; WX 500 ; N questiondown ; B 67 -13 438 665 ;
+C 192 ; WX 500 ; N Agrave ; B 15 -1 483 791 ;
+C 193 ; WX 500 ; N Aacute ; B 15 -1 483 791 ;
+C 194 ; WX 500 ; N Acircumflex ; B 15 -1 483 791 ;
+C 195 ; WX 500 ; N Atilde ; B 15 -1 483 802 ;
+C 196 ; WX 500 ; N Adieresis ; B 15 -1 483 789 ;
+C 197 ; WX 500 ; N Aring ; B 15 -1 483 795 ;
+C 198 ; WX 500 ; N AE ; B 4 0 484 624 ;
+C 199 ; WX 500 ; N Ccedilla ; B 41 -177 469 628 ;
+C 200 ; WX 500 ; N Egrave ; B 59 0 441 791 ;
+C 201 ; WX 500 ; N Eacute ; B 59 0 441 791 ;
+C 202 ; WX 500 ; N Ecircumflex ; B 59 0 441 791 ;
+C 203 ; WX 500 ; N Edieresis ; B 59 0 441 789 ;
+C 204 ; WX 500 ; N Igrave ; B 81 -1 403 791 ;
+C 205 ; WX 500 ; N Iacute ; B 81 -1 403 791 ;
+C 206 ; WX 500 ; N Icircumflex ; B 81 -1 403 791 ;
+C 207 ; WX 500 ; N Idieresis ; B 81 -1 403 789 ;
+C 208 ; WX 500 ; N Eth ; B 30 -1 466 623 ;
+C 209 ; WX 500 ; N Ntilde ; B 50 -1 454 802 ;
+C 210 ; WX 500 ; N Ograve ; B 29 -10 471 791 ;
+C 211 ; WX 500 ; N Oacute ; B 29 -10 471 791 ;
+C 212 ; WX 500 ; N Ocircumflex ; B 29 -10 471 791 ;
+C 213 ; WX 500 ; N Otilde ; B 29 -10 471 802 ;
+C 214 ; WX 500 ; N Odieresis ; B 29 -10 471 789 ;
+C 215 ; WX 500 ; N multiply ; B 85 145 430 503 ;
+C 216 ; WX 500 ; N Oslash ; B 29 -63 471 677 ;
+C 217 ; WX 500 ; N Ugrave ; B 50 -11 454 791 ;
+C 218 ; WX 500 ; N Uacute ; B 50 -11 454 791 ;
+C 219 ; WX 500 ; N Ucircumflex ; B 50 -11 454 791 ;
+C 220 ; WX 500 ; N Udieresis ; B 50 -11 454 789 ;
+C 221 ; WX 500 ; N Yacute ; B 28 0 473 791 ;
+C 222 ; WX 500 ; N Thorn ; B 59 0 456 623 ;
+C 223 ; WX 500 ; N germandbls ; B 55 -10 464 669 ;
+C 224 ; WX 500 ; N agrave ; B 49 -11 435 699 ;
+C 225 ; WX 500 ; N aacute ; B 49 -11 435 699 ;
+C 226 ; WX 500 ; N acircumflex ; B 49 -11 435 685 ;
+C 227 ; WX 500 ; N atilde ; B 49 -11 438 676 ;
+C 228 ; WX 500 ; N adieresis ; B 49 -11 435 665 ;
+C 229 ; WX 500 ; N aring ; B 49 -11 435 693 ;
+C 230 ; WX 500 ; N ae ; B 10 -11 494 467 ;
+C 231 ; WX 500 ; N ccedilla ; B 56 -177 457 466 ;
+C 232 ; WX 500 ; N egrave ; B 49 -10 444 699 ;
+C 233 ; WX 500 ; N eacute ; B 49 -10 444 699 ;
+C 234 ; WX 500 ; N ecircumflex ; B 49 -10 444 685 ;
+C 235 ; WX 500 ; N edieresis ; B 49 -10 444 665 ;
+C 236 ; WX 500 ; N igrave ; B 100 0 396 699 ;
+C 237 ; WX 500 ; N iacute ; B 100 0 396 699 ;
+C 238 ; WX 500 ; N icircumflex ; B 100 0 396 685 ;
+C 239 ; WX 500 ; N idieresis ; B 100 0 396 665 ;
+C 240 ; WX 500 ; N eth ; B 40 -12 460 672 ;
+C 241 ; WX 500 ; N ntilde ; B 68 0 432 676 ;
+C 242 ; WX 500 ; N ograve ; B 40 -12 460 699 ;
+C 243 ; WX 500 ; N oacute ; B 40 -12 460 699 ;
+C 244 ; WX 500 ; N ocircumflex ; B 40 -12 460 685 ;
+C 245 ; WX 500 ; N otilde ; B 40 -12 460 676 ;
+C 246 ; WX 500 ; N odieresis ; B 40 -12 460 665 ;
+C 247 ; WX 500 ; N divide ; B 71 114 431 512 ;
+C 248 ; WX 500 ; N oslash ; B 40 -64 460 519 ;
+C 249 ; WX 500 ; N ugrave ; B 62 -11 440 699 ;
+C 250 ; WX 500 ; N uacute ; B 62 -11 440 699 ;
+C 251 ; WX 500 ; N ucircumflex ; B 62 -11 440 685 ;
+C 252 ; WX 500 ; N udieresis ; B 62 -11 440 665 ;
+C 253 ; WX 500 ; N yacute ; B 22 -174 463 699 ;
+C 254 ; WX 500 ; N thorn ; B 60 -167 463 665 ;
+C 255 ; WX 500 ; N ydieresis ; B 22 -174 463 665 ;
+C -1 ; WX 500 ; N dcroat ; B 38 -10 476 665 ;
+C -1 ; WX 500 ; N kgreenlandic ; B 66 -4 479 459 ;
+C -1 ; WX 500 ; N visiblespace ; B 48 -66 452 70 ;
+C -1 ; WX 500 ; N dcaron ; B 0 -10 509 671 ;
+C -1 ; WX 500 ; N downarrow ; B 59 -34 441 640 ;
+C -1 ; WX 500 ; N uparrow ; B 59 -34 441 640 ;
+C -1 ; WX 500 ; N zacute ; B 50 -1 450 699 ;
+C -1 ; WX 500 ; N omacron ; B 40 -12 460 621 ;
+C -1 ; WX 500 ; N uni02C9 ; B 123 565 377 621 ;
+C -1 ; WX 500 ; N grave.cap ; B 167 541 360 672 ;
+C -1 ; WX 500 ; N acute.cap ; B 173 541 365 672 ;
+C -1 ; WX 500 ; N tcaron ; B 44 -9 483 706 ;
+C -1 ; WX 500 ; N caron.cap ; B 114 532 390 668 ;
+C -1 ; WX 500 ; N ncaron ; B 68 0 432 694 ;
+C -1 ; WX 500 ; N circumflex.cap ; B 114 532 390 668 ;
+C -1 ; WX 500 ; N Tcedilla ; B 31 -177 463 624 ;
+C -1 ; WX 500 ; N eogonek ; B 49 -175 444 468 ;
+C -1 ; WX 500 ; N uni02CB ; B 180 522 331 699 ;
+C -1 ; WX 500 ; N eng ; B 68 -176 432 468 ;
+C -1 ; WX 500 ; N nacute ; B 68 0 432 699 ;
+C -1 ; WX 500 ; N uring ; B 62 -11 440 693 ;
+C -1 ; WX 500 ; N sacute ; B 57 -10 440 699 ;
+C -1 ; WX 500 ; N ecaron ; B 49 -10 444 694 ;
+C -1 ; WX 500 ; N dotlessj ; B 48 -174 369 457 ;
+C -1 ; WX 500 ; N aogonek ; B 49 -176 436 467 ;
+C -1 ; WX 500 ; N rcaron ; B 99 -1 458 694 ;
+C -1 ; WX 500 ; N racute ; B 99 -1 458 699 ;
+C -1 ; WX 500 ; N NameMe.329 ; B 0 0 0 0 ;
+C -1 ; WX 500 ; N zero.noslash ; B 63 -11 438 627 ;
+C -1 ; WX 500 ; N uni2074 ; B 102 252 404 641 ;
+C -1 ; WX 500 ; N lcaron ; B 61 0 475 671 ;
+C -1 ; WX 500 ; N hungarumlaut.cap ; B 102 645 457 810 ;
+C -1 ; WX 500 ; N lacute ; B 79 0 421 835 ;
+C -1 ; WX 500 ; N r.serif ; B 63 -1 469 467 ;
+C -1 ; WX 500 ; N gbreve ; B 38 -172 475 646 ;
+C -1 ; WX 500 ; N Zdotaccent ; B 50 -1 463 783 ;
+C -1 ; WX 500 ; N Gbreve ; B 36 -10 460 790 ;
+C -1 ; WX 500 ; N Dcroat ; B 30 -1 466 623 ;
+C -1 ; WX 500 ; N Zacute ; B 50 -1 463 791 ;
+C -1 ; WX 500 ; N caron ; B 134 518 377 694 ;
+C -1 ; WX 500 ; N quoteleft ; B 182 367 323 638 ;
+C -1 ; WX 500 ; N Dcaron ; B 54 -1 460 791 ;
+C -1 ; WX 500 ; N daggerdbl ; B 49 -151 450 652 ;
+C -1 ; WX 500 ; N ogonek ; B 276 -176 424 0 ;
+C -1 ; WX 500 ; N dagger ; B 49 -151 450 652 ;
+C -1 ; WX 500 ; N hungarumlaut ; B 126 522 432 699 ;
+C -1 ; WX 500 ; N cedilla ; B 157 -177 384 0 ;
+C -1 ; WX 500 ; N ring ; B 165 517 348 693 ;
+C -1 ; WX 500 ; N Ncaron ; B 50 -1 454 791 ;
+C -1 ; WX 500 ; N dieresis ; B 112 564 391 665 ;
+C -1 ; WX 500 ; N Nacute ; B 50 -1 454 791 ;
+C -1 ; WX 500 ; N Aogonek ; B 15 -176 486 634 ;
+C -1 ; WX 500 ; N uhungarumlaut ; B 62 -11 440 699 ;
+C -1 ; WX 500 ; N guilsinglright ; B 145 61 343 400 ;
+C -1 ; WX 500 ; N dotaccent ; B 203 553 306 656 ;
+C -1 ; WX 500 ; N brokenbar ; B 217 -151 284 652 ;
+C -1 ; WX 500 ; N udblacute ; B 62 -11 440 699 ;
+C -1 ; WX 500 ; N guilsinglleft ; B 145 61 343 400 ;
+C -1 ; WX 500 ; N breve ; B 101 524 397 646 ;
+C -1 ; WX 500 ; N minus ; B 45 282 456 343 ;
+C -1 ; WX 500 ; N ohungarumlaut ; B 40 -12 460 699 ;
+C -1 ; WX 500 ; N Uring ; B 50 -11 454 795 ;
+C -1 ; WX 500 ; N odblacute ; B 40 -12 460 699 ;
+C -1 ; WX 500 ; N quotedblleft ; B 79 367 426 638 ;
+C -1 ; WX 500 ; N tilde ; B 91 543 429 676 ;
+C -1 ; WX 500 ; N Lcaron ; B 66 -1 439 628 ;
+C -1 ; WX 500 ; N quoteright ; B 165 367 306 638 ;
+C -1 ; WX 500 ; N Abreve ; B 15 -1 483 784 ;
+C -1 ; WX 500 ; N Uhungarumlaut ; B 50 -11 457 810 ;
+C -1 ; WX 500 ; N circumflex ; B 134 509 377 685 ;
+C -1 ; WX 500 ; N Lacute ; B 66 -1 439 791 ;
+C -1 ; WX 500 ; N Udblacute ; B 50 -11 457 810 ;
+C -1 ; WX 500 ; N currency ; B 68 164 432 527 ;
+C -1 ; WX 500 ; N acute ; B 204 522 355 699 ;
+C -1 ; WX 500 ; N Ohungarumlaut ; B 29 -10 471 810 ;
+C -1 ; WX 500 ; N lslash ; B 79 0 421 665 ;
+C -1 ; WX 500 ; N Odblacute ; B 29 -10 471 810 ;
+C -1 ; WX 500 ; N florin ; B 18 -175 480 673 ;
+C -1 ; WX 500 ; N Eogonek ; B 59 -176 441 624 ;
+C -1 ; WX 500 ; N tcedilla ; B 70 -177 444 592 ;
+C -1 ; WX 500 ; N dotlessi ; B 100 0 396 457 ;
+C -1 ; WX 500 ; N ccaron ; B 56 -11 457 694 ;
+C -1 ; WX 500 ; N Eng ; B 51 -11 449 634 ;
+C -1 ; WX 500 ; N Ccaron ; B 41 -10 469 791 ;
+C -1 ; WX 500 ; N fraction ; B 76 -42 437 665 ;
+C -1 ; WX 500 ; N zdot ; B 50 -1 450 656 ;
+C -1 ; WX 500 ; N ellipsis ; B 7 -11 470 104 ;
+C -1 ; WX 500 ; N cacute ; B 56 -11 457 699 ;
+C -1 ; WX 500 ; N Tcaron ; B 31 -1 463 791 ;
+C -1 ; WX 500 ; N Cacute ; B 41 -10 469 791 ;
+C -1 ; WX 500 ; N Ecaron ; B 59 0 441 791 ;
+C -1 ; WX 500 ; N quotedblright ; B 61 367 409 638 ;
+C -1 ; WX 500 ; N Rcaron ; B 56 0 464 791 ;
+C -1 ; WX 500 ; N trademark ; B 18 320 483 635 ;
+C -1 ; WX 500 ; N scedilla ; B 57 -177 440 468 ;
+C -1 ; WX 500 ; N threequarters ; B 11 -70 477 684 ;
+C -1 ; WX 500 ; N quotedblbase ; B 61 -168 409 103 ;
+C -1 ; WX 500 ; N Lslash ; B 20 -1 446 623 ;
+C -1 ; WX 500 ; N Racute ; B 56 0 464 791 ;
+C -1 ; WX 500 ; N onehalf ; B 6 -73 494 677 ;
+C -1 ; WX 500 ; N Scedilla ; B 52 -177 455 627 ;
+C -1 ; WX 500 ; N quotesinglbase ; B 165 -168 306 103 ;
+C -1 ; WX 500 ; N onequarter ; B 6 -70 477 677 ;
+C -1 ; WX 500 ; N Idotaccent ; B 81 -1 403 791 ;
+C -1 ; WX 500 ; N Sacute ; B 52 -10 455 791 ;
+C -1 ; WX 500 ; N bullet ; B 171 213 341 380 ;
+C -1 ; WX 500 ; N abreve ; B 49 -11 435 646 ;
+EndCharMetrics
+EndFontMetrics
View
1,095 Inconsolata.pfa
@@ -0,0 +1,1095 @@
+%!PS-AdobeFont-1.0: Inconsolata 001.009
+%%Title: Inconsolata
+%Version: 001.009
+%%CreationDate: Wed Aug 15 21:49:23 2007
+%%Creator: Raph Levien
+%Copyright: Created by Raph Levien using his own tools and FontForge.
+%Copyright: Copyright 2006 Raph Levien. Released under the SIL Open
+%Copyright: Font License, http://scripts.sil.org/OFL.
+% 2005-8-26: Created.
+% Generated by FontForge 20070607 (http://fontforge.sf.net/)
+%%EndComments
+
+FontDirectory/Inconsolata known{/Inconsolata findfont dup/UniqueID known{dup
+/UniqueID get 4154911 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+12 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /Inconsolata def
+/FontBBox {-1 -177 510 835 }readonly def
+/UniqueID 4154911 def
+/XUID [1021 77 1780377399 11264578] def
+/PaintType 0 def
+/FontInfo 11 dict dup begin
+ /version (001.009) readonly def
+ /Notice (Created by Raph Levien using his own tools and FontForge. Copyright 2006 Raph Levien. Released under the SIL Open Font License, http://scripts.sil.org/OFL.) readonly def
+ /FullName (Inconsolata) readonly def
+ /FamilyName (Inconsolata) readonly def
+ /Weight (Medium) readonly def
+ /FSType 8 def
+ /ItalicAngle 0 def
+ /isFixedPitch true def
+ /UnderlinePosition -100 def
+ /UnderlineThickness 50 def
+ /ascent 820 def
+end readonly def
+/Encoding 256 array
+ 0 1 255 { 1 index exch /.notdef put} for
+dup 1/NameMe.1 put
+dup 2/NameMe.2 put
+dup 3/NameMe.3 put
+dup 4/NameMe.4 put
+dup 5/NameMe.5 put
+dup 6/NameMe.6 put
+dup 7/NameMe.7 put
+dup 8/NameMe.8 put
+dup 9/NameMe.9 put
+dup 10/NameMe.10 put
+dup 11/NameMe.11 put
+dup 12/NameMe.12 put
+dup 13/NameMe.13 put
+dup 14/NameMe.14 put
+dup 15/NameMe.15 put
+dup 16/NameMe.16 put
+dup 17/NameMe.17 put
+dup 18/NameMe.18 put
+dup 19/NameMe.19 put
+dup 20/NameMe.20 put
+dup 21/NameMe.21 put
+dup 22/NameMe.22 put
+dup 23/NameMe.23 put
+dup 24/NameMe.24 put
+dup 25/NameMe.25 put
+dup 26/NameMe.26 put
+dup 27/NameMe.27 put
+dup 28/NameMe.28 put
+dup 29/NameMe.29 put
+dup 30/NameMe.30 put
+dup 31/NameMe.31 put
+dup 32/space put
+dup 33/exclam put
+dup 34/quotedbl put
+dup 35/numbersign put
+dup 36/dollar put
+dup 37/percent put
+dup 38/ampersand put
+dup 39/quotesingle put
+dup 40/parenleft put
+dup 41/parenright put
+dup 42/asterisk put
+dup 43/plus put
+dup 44/comma put
+dup 45/hyphen put
+dup 46/period put
+dup 47/slash put
+dup 48/zero put
+dup 49/one put
+dup 50/two put
+dup 51/three put
+dup 52/four put
+dup 53/five put
+dup 54/six put
+dup 55/seven put
+dup 56/eight put
+dup 57/nine put
+dup 58/colon put
+dup 59/semicolon put
+dup 60/less put
+dup 61/equal put
+dup 62/greater put
+dup 63/question put
+dup 64/at put
+dup 65/A put
+dup 66/B put
+dup 67/C put
+dup 68/D put
+dup 69/E put
+dup 70/F put
+dup 71/G put
+dup 72/H put
+dup 73/I put
+dup 74/J put
+dup 75/K put
+dup 76/L put
+dup 77/M put
+dup 78/N put
+dup 79/O put
+dup 80/P put
+dup 81/Q put
+dup 82/R put
+dup 83/S put
+dup 84/T put
+dup 85/U put
+dup 86/V put
+dup 87/W put
+dup 88/X put
+dup 89/Y put
+dup 90/Z put
+dup 91/bracketleft put
+dup 92/backslash put
+dup 93/bracketright put
+dup 94/asciicircum put
+dup 95/underscore put
+dup 96/grave put
+dup 97/a put
+dup 98/b put
+dup 99/c put
+dup 100/d put
+dup 101/e put
+dup 102/f put
+dup 103/g put
+dup 104/h put
+dup 105/i put
+dup 106/j put
+dup 107/k put
+dup 108/l put
+dup 109/m put
+dup 110/n put
+dup 111/o put
+dup 112/p put
+dup 113/q put
+dup 114/r put
+dup 115/s put
+dup 116/t put
+dup 117/u put
+dup 118/v put
+dup 119/w put
+dup 120/x put
+dup 121/y put
+dup 122/z put
+dup 123/braceleft put
+dup 124/bar put
+dup 125/braceright put
+dup 126/asciitilde put
+dup 127/NameMe.127 put
+dup 128/NameMe.128 put
+dup 129/NameMe.129 put
+dup 130/NameMe.130 put
+dup 131/NameMe.131 put
+dup 132/NameMe.132 put
+dup 133/NameMe.133 put
+dup 134/NameMe.134 put
+dup 135/NameMe.135 put
+dup 136/NameMe.136 put
+dup 137/NameMe.137 put
+dup 138/NameMe.138 put
+dup 139/NameMe.139 put
+dup 140/NameMe.140 put
+dup 141/NameMe.141 put
+dup 142/NameMe.142 put
+dup 143/NameMe.143 put
+dup 144/NameMe.144 put
+dup 145/NameMe.145 put
+dup 146/NameMe.146 put
+dup 147/NameMe.147 put
+dup 148/NameMe.148 put
+dup 149/NameMe.149 put
+dup 150/NameMe.150 put
+dup 151/NameMe.151 put
+dup 152/NameMe.152 put
+dup 153/NameMe.153 put
+dup 154/NameMe.154 put
+dup 155/NameMe.155 put
+dup 156/NameMe.156 put
+dup 157/NameMe.157 put
+dup 158/NameMe.158 put
+dup 159/NameMe.159 put
+dup 160/nonbreakingspace put
+dup 161/exclamdown put
+dup 162/cent put
+dup 163/sterling put
+dup 164/euro put
+dup 165/yen put
+dup 166/Scaron put
+dup 167/section put
+dup 168/scaron put
+dup 169/copyright put
+dup 170/ordfeminine put
+dup 171/guillemotleft put
+dup 172/logicalnot put
+dup 173/softhyphen put
+dup 174/registered put
+dup 175/macron put
+dup 176/degree put
+dup 177/plusminus put
+dup 178/uni00B2 put
+dup 179/uni00B3 put
+dup 180/Zcaron put
+dup 181/micro put
+dup 182/paragraph put
+dup 183/periodcentered put
+dup 184/zcaron put
+dup 185/uni00B9 put
+dup 186/ordmasculine put
+dup 187/guillemotright put
+dup 188/OE put
+dup 189/oe put
+dup 190/Ydieresis put
+dup 191/questiondown put
+dup 192/Agrave put
+dup 193/Aacute put
+dup 194/Acircumflex put
+dup 195/Atilde put
+dup 196/Adieresis put
+dup 197/Aring put
+dup 198/AE put
+dup 199/Ccedilla put
+dup 200/Egrave put
+dup 201/Eacute put
+dup 202/Ecircumflex put
+dup 203/Edieresis put
+dup 204/Igrave put
+dup 205/Iacute put
+dup 206/Icircumflex put
+dup 207/Idieresis put
+dup 208/Eth put
+dup 209/Ntilde put
+dup 210/Ograve put
+dup 211/Oacute put
+dup 212/Ocircumflex put
+dup 213/Otilde put
+dup 214/Odieresis put
+dup 215/multiply put
+dup 216/Oslash put
+dup 217/Ugrave put
+dup 218/Uacute put
+dup 219/Ucircumflex put
+dup 220/Udieresis put
+dup 221/Yacute put
+dup 222/Thorn put
+dup 223/germandbls put
+dup 224/agrave put
+dup 225/aacute put
+dup 226/acircumflex put
+dup 227/atilde put
+dup 228/adieresis put
+dup 229/aring put
+dup 230/ae put
+dup 231/ccedilla put
+dup 232/egrave put
+dup 233/eacute put
+dup 234/ecircumflex put
+dup 235/edieresis put
+dup 236/igrave put
+dup 237/iacute put
+dup 238/icircumflex put
+dup 239/idieresis put
+dup 240/eth put
+dup 241/ntilde put
+dup 242/ograve put
+dup 243/oacute put
+dup 244/ocircumflex put
+dup 245/otilde put
+dup 246/odieresis put
+dup 247/divide put
+dup 248/oslash put
+dup 249/ugrave put
+dup 250/uacute put
+dup 251/ucircumflex put
+dup 252/udieresis put
+dup 253/yacute put
+dup 254/thorn put
+dup 255/ydieresis put
+readonly def
+currentdict end
+currentfile eexec
+743F8413F3636CA85A9FFEFB50B4BB27302A5A63F932884E18BF5153AD36053037D1C6CD
+04294AF6A35612DB9108AC8514CB5C4A8469971B75A09F9E662068B0685490EA8C73F2DE
+2FBBCF85D15AB9385E529DAB15A40D408002E88D0C107F711BC66BF0F2E92FDDC6B188F9
+1EEB6B86050D5032E6ABCB11E343C6D795217B5973972E99A9420651ACF3B8FD4CAD1DA4
+B00642AD077A5B86240F89F2BC011009CB2CF173FF68E9A88F0018F187D5E036FE8D904F
+211842FF01AA7CAADDEB9E5A534FA3F90BDB8F6FFE24F7AC6E7BD0A74CF29EBBA568F06F
+491BA5EC7A075932EF19BB5D9331CD66863950F7528823C01341931321B3CE711E0594F6
+446D0F43353FC20A582F4A24689CD4EA601B6E2ABD1B4FCB0ECD3CE503D68722B6185C96
+1ACF25BAD279A5022FEB6B33E3B670AA8FB8E978C78CD1062BD22C87EE604E2BB0FAA092
+06DBE95810FB252D0D038EAAA7A658DB22DD799B3E1DCC9C3FACF863E7C5475EA265CBF1
+F7F2C83CFD72F046BA54D80F46EDF0F2BDABB316C4DBA89AFC36EAE4FFF50E38EB059E90
+78B9A95798627894E7578599D10854FBF9E24D1B270FD6984610281303E98865BEA2F608
+064540F951827B35286AD31284865A417B1578115F36D1A9D20AC0E51C69D6B57DE75462
+6072C8ED3C72F6C5EEDA502A01F931CC4D4CFCDB34C5D4922076F68223AE50D77E652D6E
+85A412C0A4EC456DBAD0DA9CE061E1862E8699D85FCA50AACFBE090E73924F5309B04BAF
+EBD162EC1CB92D3E1698455379971497B77F86A3431F7F17C55A5E0D033415E4B5A64507
+E1BAE97854116900702C3E76F1E5054AB50CAC71F7F42962DC43D0C08EE0E2DD28EDB989
+75F54216046067FDB441C14B9A416570FC3F72A03E80C230B6638A9A21D7DAB7C06BE8EF
+7ADBFD4CB3B9E330D5B7C3F94CED30FBA0B43ED2622570D17FAFEFDE4CFA20F1CFC8946C
+082F6818EDE0780F8DC2A96933DDCC53501CB9D440DEB9B4FEC939F7B7103A2A7C51AB92
+6735479CFA765AB5EECCBC384DA877BFD4EB2D8EABAB0DFCCEEC5F1113274F19C95E617F
+7A558A2F01A9EA26A8F12A79552C59F8BE5CDA0DAEB9B3210548802256FEAC4509225018
+4132E6E2DD73A261621C7F866BF797E7FEA159A40DE56AB52E9287B81E248924D0CB1D29
+133A8A343E18AE14EF37FC9FBEC920318656FB73D7612791AE48A2CD2BA254D2E4B70160
+9E72A508E242A0E0412D6C4AEB27DC5CFB99D6DDF881DC775EBA4E9CCF6E07742F27F558
+B15068A95446B5AADC2BF18D3D410499E68E3439C9BD2123871630AFEA0C237583506CFC
+A266B9F3E2851A3FB2A2A8E72890BAB7CC179BFA886AEF82309048B85BBF7C79C0FD1CE3
+BA96638B21885D56F5D0B27430B2A60EB890D67E4A160AA0AB6FE03025305632B3B1A673
+662B3E1C1D25A06263FEEA7213E2F558360E37488540CFAD523B0CD6D89512103A09ADC3
+72A53056AA362943D2CEADD3ED2DD8DB5C5FF3B454365A4A9445A71FC40AC9622D30EBD4
+0C8A8805817463F594BD70EA0DBFB150DF85A7A0D954ECE94F9AD36F97C0BE425FB64CAB
+EE9DB5D5F94F4D4619B9BAFB7D332DB4F7DBD56228D9930C9DCC8B8F86C4C59E30E58885
+199F9F1F78EE7B8969FF7BC7A0A32D8F5976F7CA9EBD37D1981A8C7C2A67F4088F27C78E
+F081D803172CD2B9FFCCA1E3119FB63074E71F723FAF2F5C0040A4732F2D40A66756F97E
+E0840C35E7B75905871DE4703232A05C0813304FB4DDC5FC1CF4481212D30B7A0BE1574D
+E9428C47AE870B25311257C763613B187D5E6ED2A90E053DB341AFBDED0639E1F5CEF7C4
+5ECDCD10DE220370D3FB5A7470538ADE350693CCF61763216CC23879F715F35A8C2A5D4F
+E62868AFB1C61425F820C9D2D361E8CBA855AFDEBEA9D196ACA885A9BE15EBE92177FF6F
+411968FA07E3BE28577299FAF90989AEDB7CC4C96F08B34DE8E1CE08FE23B4083E660156
+03FFAE0A32E2E90ED36496F0D96C7891FAA63F5CD21FD10C45830150093E6F664ACD4EBB
+EDE669AFC3F2C71A72C0957A07A51E96BE1A5D288602A41A4C315BB4A244DD891F20C5C7
+E9010E0A0B75226FC30DE2682CCCDD98915DB7EF9795A58B2A56214B073FC83DBB69FD1C
+C9BC9E802E5DF7FC7C0C4F09B768C7176FC26BFBE255AD6275C57485D4C45BDB3AC7CBAD
+D798921EB94B887ACC9E8DB9D808442148F756FDD81BC0FE2F17E6C5678B84D6870D20D2
+60F7A88953CCBB2B5DB90DF88314139A7A4FA0D56410A9961B784D6E6FD1A99239752174
+502E3003D1F387C7F7DFC8E4F0B2A1A1F7BF13E2B8064CF34BCAEC10C2B15213BB0702AD
+01823F48FB533DA49A8617A9C612CC1E01894C133659D1723F744EE406B785D8881C3C52
+241766A0343461110EF71D48056718A70A3C6A650EBB8622D57127CB3EDB7150C1C3E75C
+C79CF53B49EC258ADC51DDABB05F4FBF00C538D1F63AD8688325E8CDC6BEC9D205765682
+EFE70416356E5D7898BA453025EB03A769D84C9E5724A964F91E61AC326E9ED094E25733
+945B30843CB6D3B8944B0E3651C8338246B603B234B7BE64BD94A21D69D37C9130CAEA91
+DFF6D918BEBEBDDBCA5E9945C1442ACF6C50909738C735E97EDADEC5459DE6D40355E342
+6776A849A4FB3A0175F3FD468E89DFD89C39D2C97F2D0CEE53891E9BAAC822A686A2ABEA
+F090A9398817AEFDE91F7387A2F99E3CD4C30A77E5758E06E012A61382E83E5DD263D113
+D74EBD9B8BE465E6CCFEAA51447B644EB190D9E07C0E7EE0DB18ABF26B9E1439111A23B8
+513B71B6C8F2F2C87511BE3896FA407DFB964A5B943BAA5AE3EF16388E15DB67573D6CDA
+43540B9A10B49A271D935205EA5E0D31A826C8B727074D85178D3B59E482BAE741D17C06
+F19BC47928219AEA4EB5E1C7F4E03F670123A5249595B52B1E0031010E12B61C06199AA4
+7C7D7B01F037BC8A6765575960DF90B340E72A5741184C18E967C972FBE9127A3A472804
+07D3ED353EAD1E4637D54CCECB3C7CFFC6A17DF1A84EE5063B20858E6F18BF54D3862846
+B4634D7BBCD3CE105E89909D76D034C9A410155ACF07AC8B9EA28DBE29ABB971DE1FEFFD
+DFBE794D1915EBDF660BA0E0454484CDA735B701529A14AD593940C3BAE9AD84A8A020B8
+623D328112B4E0E96BC0FF6BE135891504111D6C456490DC50C4E5055B56A9EE9E136FB3
+5E38C3CDBAA0CAA047FADA06BAB9B3F7480D818603CA96FBEF1764BC8F5A825B1D3D3C7E
+360E6D1D0D45A0F9BCEE1A11FEAF9907D58344846C03969EA00FDF3A80368756F63ECD9E
+F1ED74FCED582A8FBEEE84B636DD1768EDB3C6F00EF2696A76EEE34D5D68E2B79EC9F378
+5C66102E8305A1BF4F9F2ABADFD70E3ACBECED84BE759881DF1A3AE6EA0AE3F53E236C9A
+626E5D3CF5F7B0749DA3AA507A7EB25D5B9F01337A332DFA574D17F0D0E861C5A26F2DD3
+84AC9CD5068DCC3F562EDE1036BCFB8C5F1F092D7BF2F090A54144E0717F9611959206FB
+57C9008EEA4F990890CFA369C41E7C3737D3CD79E69BAAEA62D009AF68731360CDD9B72B
+0340F5ABEB5452271DCF8A932B1B1606788AF87441BAB9F29D8F53903D0D1DDB62253D36
+98DD1EEE190790EA5F94867E6CCD087145BAD728AF9FDA795529C7A84BE59865CFF04D93
+8FBB74B18BF8D07A2C70D1BDFEB399E6EBB0701DD67CF41A00F83D92D64F46123FDD5E8B
+95F24542687480ABDF1BA064D99D8D37844DC57C86799F3FAAC735AE1FD22A99174E422D
+534B587F04D4BEFD3889F5B7B04D1AEE54042F3750D1F04CF95A31B837A6E6A8D887EF45
+2F7C605541B839C3DE8253CF2E95F4FCB93B436731513CC847A698E066DA7E3A6655D468
+01979BF4D84690B6A4017DFB8C82880D1D6C655273D81255F9EDBE3AF92AADC6E1C8CEC9
+6EB075EA87D0F5AA7D87C098651D0457FD98E1AF689A22DDB15B308F2430924E37612524
+1EEB78B2E864BF83A1F573665A9C6010AD1BC3FCC86FA32A5E447C660843C220AA6498F2
+4D295187B91751CF9549817187D26642B0710E89309AD16528A5F097C4BC921D5FB78FED
+F8B9D6B1CA62896E1FA498AA976E4329A9684942603C497D16DD6D494DD2B7B7B6A69737
+6D2700F4997AB3E89BD5BCFBBAAB5FDD1601A6CC854EBB703293933D2C0C9B6E55C3C802
+EA78F812A28897A0A1FAFDC5DD945B954BC6C690C45B76DFEC55ADC0B82E5626247F13AF
+95961584F614407DDF7FA0389E625BE67E7CDCEB57D8472935F85E54D122BAC295864162
+5FCD192E231FEC73CEEEC048585546259645C53477B41FFCC295B24D17BF1ACDC9B090F0
+8B8B2F2116AEACAF019F736B0BE1F89C9815372686B160A6B31164486815B8AC7650E826
+6E1F3BA4B8DA5FDA66747872A3358B4724A80831580C3208028AEF740B5118811BD82D5E
+21A5252638E44CE1ACAF549B71250373D880F92266682B059927F29F5C97CB6B5F121F2C
+E26834A59C87C1CCC16BA94C55CAADC5701E615AE8EF156B9D5EC69C8D84107CEAB1C582
+ACEE1D3848E8B39DDCD05BC6B61516DB4DB6FA1BC65AA934024694AA0FDF526BDB2C7A38
+E5E0FD6150E4A8F792294AEB2D42E7DF6692DE65A9E1A268D3CC0B3E9B178A1E639BA216
+731D4EBE9B8AE8A4583AF5925608991F068271A5EA0E29938F70FC3E5576AE447199D33C
+4DCF0C31BA0579473AA7408AFD2B12368E45CA3395790238E48D3D951EE81BAB86703C8E
+ECDB306FCED227FC562762D21EEDCC3A65E1C5E78AAF4592F0CE9F6C032D8573B0531909
+CE753FF2E9F428E8C3FD2714C1F7D23B8F65B8014A23353BDB0ED9F3BF41BD3E58C78F06
+F1DF7EFF1EE244291CFEE226B10D0F46E61F1AC8B5C5A7C616B54DAEBCF7D962164EF917
+013D5DE1461C1113968ED8893A6AE94632209346545DE70A7F1D09FC308393EA7AEF53FE
+F3085777C4179FAF24443CFE12D85553FCA292A1C4DB82ED8D24BE2E5E550B4DA286672B
+B168CBDE3661A9F251F7FC770D1B943814232709B134511BF8298C13FCFB73F05BF1F18D
+7386D17E010BB07F98BC58105EFA99DCDFFEDB3327BD82D4A78B11F60949ED9224B6B8D2
+34D7BDBA7116C1EF130B7010D733B5510790EB1451E53799D231A1D3A0FD9C16807C504A
+5655D24A6AD97808C7112ECC140AC7B96E670788FA0F0A5CB3742E726EB45F9246B388A0
+BC8C6600D5BFBD48BF0EC1B12FC9D44ABF9B29D9924F827472A6E6E46F329AA8B0C6FD93
+041D0FC17259FC91A621C83EF2CFC4B7FB1060CF072D79559B35A18A45725CE175B94096
+3AD7A867C4071DF9015D62FA79F106BB7E60303EB06D65BB427C0793F09B162324CAD029
+F47A1BF5F5019F3611CB0A51F6AAD0A5B01E955F45484C83A1E06D533D9A1A2DBF59454B
+136E4BAE592132D34D541940DEFA22D807F8037B7AB2DD6E1BADEC43FBE3D1864C020347
+84C8955C10A1701C331643A46AB2AC3F568E5FF9A665667628C2257AA76355516EE1BF08
+471CAFE1BA5A6F534AE71009AFD1471C799919369223465FDFFA2B6848E9F99AC99C0B23
+98BD03ADAC1C8227CCC96A278AFEA0F1735F3D951CCBB4099C9218E68624F115F91B647E
+372D4F94BFF11BEF97A5317CDA137B203DCD65CD6998E813BAF9B723D5E00D0904CD90B6
+129A8C2EB802008E89E4C98D7C73A64CD04A5D9B3BF34FA4BC8D835A183E082F73525B72
+CF5D06B4DCED3C527BBF233814E5C642F80A021CF322EA5989BC69CB734607DEC3321054
+992AFA7332D3F968EA33540A689FEC00BD09E2C7EE5D8E739BD39B9171A82FC1B891FCED
+A8900A691248186505576FE500505C9AAFF3CEDBA26C4DE9A3BBEDE28E10934884BAF3A7
+82717947CB0352AAB4B121E5B4EA1F4A5D731E12C49F946EBA6DD7247CE568F2200D8DD4
+F315488319018CD0052785292C9C62995B33CF8A9C1FA124EEF126552A853B253267001D
+50886F07C2095811037AE4FC75B267DFCAED3DD2F2BB17660DC82DC6138089C09969EE13
+DDFEB97246FBA66C8C1F06C04CFCAF4BB38DE94C20B635F42667A897EFE543612F7B9CC9
+F764BD868F3E98E8EF1439DA3528FFAF1BC052CF9919315D1523F6969632B57EB0F4FB79
+9A4AC1D2BEAF670324EAF926DCFAB530FA2F48F50CC85A17B638757DE579270BC5F4E1BB
+B790AC6BF73862F8BF6E722237CB15882255C0821F4D8FD801662A1ACD2F4915C3C81654
+1E9DBD9E66A4FAD7158862BF349F08F72DE515BB0C9B8CF9138635B2CF45CA5B558CC3B1
+8FF894469C291224C95ACADA9E1877962847FDE3A89BC54417B2E7A4856C9E7F166D88E9
+27127A8076FCB731B1742DADD9B9E33C8D789DB0598D2318D02967C41D077ED159D19418
+9DED47E016BF57AEAC65498CD0E3F9D9503A8786F622692375ABCFAECB9642FF51949F6F
+A10F61BA247988816A346D6ED1AEDBAEC121B6F46D0580D118CF08A41C402CADEE712798
+624AD96B2068CEFEAF1367F92F46D12D083054625CCD2A5D1CE3CFF8349F5A6CE6B9A4DA
+5CF110E60C4E6131497BF23198074FE8A785B4CCFB16637B5DBB469F4E0B876536FDD71F
+CAB996CB87F7399866B36EA6A93BD3A26B7EAF801890266FA3903183DC2CFC97ECD2962E
+04D8D7501DD1BECD6896016578BED8969448CD6C5B56143F387F97298B795081162F20B1
+365C710023F65DB2EC525F5151F2F92701ECF91E49F9E09147086427FC677F6847001E11
+236D97630AA2352459F85D2CC218D800EB1EFA6107B9CABF76320E1F08B258E1CF65D049
+1B0AB34CFDADD181AF5C62AF4F2CEA37DD5D6B27E85EBF6919546D0A453440EBBDB46EA3
+39B76E3A6FBF6F550941C14470509F0CD9E9320F73020D743F5A6200A16C6B0059603116
+56C2DC19F9DBDBF7EA306E7966B99C7AF9FF509527E7EBB70CA218C13967DA7A5FAEE2F5
+EF4021A2C54467F9E2829D2DCD3FC46125D77DD16F60226F3636A18E1E52B065794E0AF2
+060DE1E74D759347FBBCC7BE87F4B4EF9F68EE9269E79D7317353F09382DFC08EC728941
+95CB0CC53D9D546DD0FE00F53BE257157609C8F05EC2DE5E0158E3ED7E329E22AD803A4E
+C48F05D6FEE7E141963D70D0ABB1A6B585E6D48D5125A229306D6FFA634B1EDC2FC98871
+9D07B43E7B8F5722DAE0889FDC8E63B449BFC9E0FAD43531292A274DF8B2239C319BC223
+56AAB0AAE9002D1D9EC2200622D39774435C4E0E2CED2A4A192C34B495452418A4C6AD14
+47A924CFF8DE6E68BDB7B7611D4AB5706872E4AB793A58CDB4EF04B3ED57E0D1205B26A7
+B1A9D2D8FA3385E3FF519B1584AC4DAEF5483A8C429C0B04C3250209994924C5F5202DFF
+AA3E40A5F6B6C9329423A41E2FD0A45DD7BD3358504D3ECC3F36273AC93ED4E0FF98227F
+132E610AC1E84DF89C4FD0BFD9CDD2BB424737608410B9612CA125A68EC09672AC0C4C41
+19E5DE188E7B6C766E56BDA97B0751E644C6CB65F42EE344C3021863F56FF25B51E0D349
+12E1CD9CF0340308A595653FD4F1E493DD76964BABFC57B982256346F9D7CCCB86100CD3
+5E1C0C1C11373F982A3A9A29B7E76A0EC95685718C6796F108827B95D5B650F996138EC5
+79DBDDEA1971F229F50C61543038BD02F2CFFA0E3D263BC1FBC13164FE4A34A7294BAA67
+01F99A4B2D7D588D9393B0A199BDD8CFF61B3A5989C01F3E70E97719CF4176785F884AB9
+6CB65CA2B31506572566ED497C68329A1A39AB4D7340D121C64BC12C354CD192436BE6CC
+F44625F59B90EADAF3405D474F0265FD73F25204B85F311CD3E6D9FC19163194B3336C61
+12076B0F704A27E07DD20ED863F675431FAD9EB8EBBAD493D0C8133CF9977299E410E023
+9265D54339208A5E22845051643647271C4C8D5BE7B382312B5BA0C9CC2A6CEE64704CC5
+A504B4B106F3808F9BB63964703E140A2E200808A8743515438E4DAEA96CCA073367D2D1
+364B56054445B588F7C447507DA1F8C107294A6FDE3839BAB84A967181EE049CB99AA30E
+CCE2EF10767E1912A05AD56E0C323AAB9A58293E6A722F522AF6BE849AE2D1BDBC67FDA8
+92E6C6A9B49AC7CA5EA4D492154F48725025354598015FA6534257CFC3ED917400F06C2D
+C032ECB57F8FEB888BD9406FCEE673F4B38B07E0A56948F36038C32F2093935F6F1969C0
+DA97D1BA9122D65AA8BBAF137CE163C3C9A65DA94D595ACF3C4DAFF534C458B8D4E86B90
+A9CD737AE4651BCDB95BFA2931FAA116F398F4140C8FF27610F02D3B6D39668F596D25EC
+385FF780C5A99A8FABA60E13B2791B0B10FCA116403370411A2E5965F92A7E4944FEB6FA
+4393842420A8B9B847738E13C0AB3D51C759938DDE6538E34B078E24FC21A6DF29E82370
+FAA64B30127200C44FA129D9E89F5F0DAC27F242F69FAD2E8F541A91C3F04A9A5379E071
+3101BD0B8C46F21A7C32A2B5677AC2AFA826F82B6FAC52A4FF46439EC77683167CD0D3B5
+FB31244448396D9F7459E699AC3FB1E246C01406F5516D76CE5C85545A4107F8F159FEFF
+584B40AF977AD7C8EF0F49D7ABDE1C26DD692FBC07951FFBC139BFD2FAFF1EE4C83C5A86
+ED0A588CBDFD1976AF8AFF7EC0330C107C3B84660D65EE03A3EEA98912B710636AFF151F
+8FBA9ED923657815822EDFA7FCC70DD4605F8A88F588866416A36D51E92CDBAAA41701A1
+C0E8B2F1056E42151B9583509EFB0204F2943A85406CCC9C5AE3663C330B7925F19C9D72
+1F5649B03D5A01F09912DE5545E822FFB46E22FEEBBEEF398DD99A01F9B732A673840715
+3E857881A1E782874E20EF526E48B478159E0447F5EFCB5936C142BD7F438305E891CBC8
+4F9753B8BAA26BCAE471BA3D4330F6713E0A5E6A4F91CE984B7B5911FBAD81363032F83E
+3DCC082FC4778ABD7204E80FEA33C3F0C35FA7F8BFA06B540C1B4FD3EEEA29ED18EFE541
+D2B4DA5BF152A47403CC19D4F22C01DCB7D6E5091EB2DD904C0945EAA9C6BC1CD0FCE5B2
+76583D7178739B3AFFF7D9FD72157770255EA7FE69DF48970AE40ED2D5E7416DD866082E
+9A7538D4BD61A6DC07E500E89D34CB7BF58FE6684687869932F4384CEF33EB6C8EFC3A47
+5E11B00A79F5BA028AE7242C23E8519237C9DC5EBF9B27B7AE7FF92B6EAC948C4E3EE159
+FF4C20E8A4E47A05BCA9D5FA08DD0A5E4F5C314CF4CD5EA0B9C0E05F268B2B4582D8DE60
+5D2D9C5B3C5BC08044F15CF110931CA8A1632D3300F81FC9BE53FDD4040C4A713B2EA2E1
+B80737B86B9DBEB00778C4794119D38B395B895E41820E0A7A7E1346B13E9DFAB76E6EB1
+CD172ADDFEAB5CF7A5082F337406B1DB28C62D8396139F0365F62B7DE7F3C2994F7B4C6B
+6CE8DADFCB1B46ADF8FA06691B16D02D19D91F507D0A9265B12493C62265EB8D1D7717CC
+DC460CF829511C7004D356C1F595AF32C03C7A6B33DE35151E6F31336B53D6A2908FAC57
+1DB57F8055414CD6B118822B10718354D88785606832C109BAD7FE0AE27C8D5B8E729BDF
+86DC70986909D792D212AE12FFCA8A3B0C3162D5082A14867D420912F31D1846CE92478B
+407AB1B30B8D5E4FCE394A82B51F8E84C10F8C01A4AFE1A8DA38B1C0E1B8F4827710EA15
+73A0DE239A8EE81274074DF5500F5EC4EA89B342F55911299A45C936B20EFB1EBF57A868
+19A5A3F5039251BC3E7015E09CC29498A2AF806AC17ABE466F2B57A8580B4C3AB676B9BC
+C5F86AAF052B580D49F0E95067C1E1FAA93730523F49C69E3DDF7C3F52C40A840D9AFFA9
+D3E5974E967BB53099EC2FDE33124E3507B45966A95C380E9862C4B79063C4380602CAA4
+F02F827F477F1C44D097A400F4ACEDBD5F55D699408926CF921504778C71C5C129959F11
+8B1ADF9DF60F85075F187A0E42264AAB22331AA3B60F193D3774B6CEE4BD79AEE0BBF620
+A0135984DBE87E79D77337C653FA920A2152913108DD9D146915E7A5596F735A9804EBD3
+D55CB04B73A1BB787AA4CFE72969864D062B6F8434D7B95AAD2060B4218B1F239C0D7997
+7D5767889206A856C3B7790E5E728C0208B6F4E6603296F7FCE4D164B1503D09BA159DDF
+7B5EF00EBCDFB9CE9076DA023060B7675089C0592C60AF930B24ED26D18A77AB1199FD95
+66AED1BECB8C8841035A5C942EDF0F02F97F3E9FE211FB44FD540D90FF94D21D289827B0
+8D428136FC625A5CE250EA1BBB90737942ED23E628A858634CE11DCCAF431A4C5EAB433D
+E40367EAAFA1BB9397D439D2A2F55873321CEEF9CF124D0965A3E27D17E7C0B1EDCFFFDA
+592F92C1E571F89A146D100678A7C8AC7325CBE0F9FEF224CE22002CF9EF4ED8DA3A0502
+B8745D789B55FCACA729D70D25E2BB45A4F3F9C02AE3AFBCF2C940EF9A39EBF933B54369
+9A845DDA32FC0933ED035DB0E23C45E69DE03039D0F02192CF9A61615D846F3EA5B8F9AA
+75C75CC58155C1D9D50D7FB660050228CF016B7BF947A40FC1EE70920DF700BAC5B85B89
+D8683349790D32938A99874AFC552ED49F6D6E649FF6DD0CA3416EFF7A905FE01FBAC234
+DB4285AF581E2EDFCE31AD7895E543CD38BF0D6D2AE8473EAE94D03D3808B190DE95FDD3
+61E7696D09591ABD2E6D4F882A25F5EAE95C53774FCDA4CB3F1765E9DFF6D2FBB8441610
+06F6EC19510C7B2DFAF141AED3CA55957EF9326ED14055F71B7213DA1EEF0318AEF5C28E
+B7C287B170DCBE5DCC45D5ACF52A0735944BDCA02EA1666AC1B9E3C82EC36305AD8D2122
+F016BF1338C10411A94F561961F3CFA9F1AB4F761A9A67BE652825DA5DA07A52C361C8B8
+90B2CD68B9D1160917F926FD9D8BC8A0842B65603415D6B2068C5B5AB00F14EB668E4197
+59537F6663D049E0440A99EF71C37E97DDBF2E06687C5603833DB1241E1619365BA68A06
+3C8DF5349A083EF8AC5E85AC9711597F5143E6AAF70EA5F85FA31E54A2DA6B60B9413F7C
+8CFD4BBD1CD5CF26D84608B061217E41F0E9218FC41801E18A4CE34DE989551D8217CDA3
+ED6C777623C71861BFBA3EAE745C348D57503B7A259EDF47799C678CB9C9AE6EC32020F5
+D4FD14A16694690D6EB268B35CF6AB6C80548F2DDCA1478D4491251E8FA09C214EF66264
+8307D3BBF1BAC974DEC7FB5085A3FC77E2ACB4E21800A58B07FB996F659965F505532142
+C9F496B332430F0EFD75BA4C79F72B26CFC836F3FFDCEBBD51B148F3AF671E30548DD4F7
+8D29375A9CAD72F24683FA1E53D904B9CCA21FF083876C1B5D9C772B39B0BF788FEA5148
+2CAE0FCF52D9EF51B55301CC2D4313D6DE980C7480037FE48817DB82283B7EE6DB7F132A
+3F0F665F33F18096E8E5977F1040C07D1ED8F4CB367ACB2C784311437400833883CFDC17
+D97C051E4D21F685113AE2B63BD8377A7FCE29872BC174B667B76E3EDDD1FFE30A86AF6E
+C53C39F753A9B6AB9B85AA7A3E1B4B48200611A1489964E05513F258B77E0DED4C9FCAD2
+CAFF3B27BD3B16A950551D6056661670B39918496CA4C0D06663FAE7D6F244C2321DF46F
+EF01455E90DE29679F3018EC9191644079F09DCA877AB4BDF3E56E5FBAB57F9E9DA8E39C
+0E3F373F3BBD14A1F4164B562871A7EF916B6A7D2E78C6D2F1E25F8CE09A11872D6D987B
+F5852F48434AF6B75075F19CC23BE4583939A2CF0251330F03AB07E67FBD5AABD6192ABF
+B1F3D6B9231825A870731F0D7A94795D05712324B38A574CE352EDC4616D905B3314EE49
+3DE6105CABB928CF312D5ED7AB77A355955A7DCC551487FDB08E0EA375547BED643EDAAD
+24F34AF075F70AE68D258FD2F0FA7DBECCF9EC4F3CE41EC018CE11860D8E6AA548809B9A
+80DB423A4EC71DC32015E93C48FDABFC189F54A61D525CCB637A4FE5DE61922B496A550A
+86F728A779A181BC1F929EAE6CEAF663CA5FAC1E7773910A22751CC656A9700186123072
+175597B30BB751278709789F08EF0C3F62B900FD2F57AE110CB910491E6685565AAF1B95
+7BD95D8CB31DB356CD1008F9CF23F0D041E8EFD762F656A93F1E9A7C80FD93CC8C64F2E7
+59766C199555E53186036E94D073554BFF371F5B5BCE8AA55BC412743AC7656145A4971E
+173B0AFC24C987D445818C0BC40A1308EC63D8949155BCF5DBFE91778449DBFFF9ED4E7A
+3183D4BF73F817F2C141A345A7B6C171EA091E6885E0DA350B89DF294CF6A8956AE86BBD
+6A8B852DBC0D8E440B09E15407330CE9B5E92C6CDAF3050BD17249FF6D0A4A6081D1DE6A
+F89A3FD4185DF3AB0845ABB4B3D1D1510D10F131A74B3CC98D7B6DCB8283493EFCB688BC
+434A55E0D1C155B45831882E6C09AEA0734ED955696F5BBCAD8C64AADBCAF3AB2C3029F2
+B7F2A161EA1BABDAABE3EA45D1F1BA5BBAEE1C2F2179FA1148AF801BD5D7AB101C56527F
+FB027EC85AF9FDA2E9A6B42C2FC3C1168D38C34F69784892C2B450121CB2D5D3EE61B490
+9DFDC2B92A11ED7820428CC720AAC6A2B2B629994031A884DD20B88203D913D496896E31
+90A54791A38114FCAB5FC2B8BD51FDC4C513E964FD3349C4BE7E982BA54F516CBB52F1E1
+24974E825F8D28491CCBCDBED4EA9D3EE7852005774F33402B0FC58E1BE95A8371E3FF1C
+3BDD8BE70978313D2CBD0FA601D5D79BA595BAEE3A6BF1FA010773D576D9164C346F59E3
+BF856D05EF1F0034AB9482C059911F0A3EA60B3F4367EBFC7CD4CEAD84A07C83624ADD69
+B6E3AC9AE88B69048570A46EC93D06BFF0920EA2C10BB21F550692D713BB201476E54D9C
+454791E596848E70FD74EB51DF03266B0604E69F8297225FE39925FED981478FBAD45F7C
+10A2732E3944652674CAF528285B6294444B9DF08D57714FC21A5C0F068825AED85715BC
+A2FA0046129A9AB902298C361CCEF084BD947150C28C1A59EF98CE6C2F67388DEEDFFF9A
+7D725DDD7571AFD1A6D8D2F5FF6123C3944201EADD6C205F78430C91E5A54FCBE8E9CEA4
+A6A2EF9FF11CB20734366E6910B9FE8F2AD9D9954D8D42D8CB80092A1189144F4E880E3E
+AFE4ABF020B93E515E336A31662A4A8F2CADAF4D9FC7686CB857A9D89BF13AEF356AC273
+FD1E2488CC113EE65B6100797CCE03475365534E817E05057DAC6C4E394BC1C004F64D27
+0763F196E956DC1EF222DEE42B9388E34CFA0679A6B7FEB57FC62D1C45BB0E57B19E24E8
+93FC4C7D5D0563239E64F3CA97085930150D1CF95E0969459A072F9CC4675A4AE5E7F9D4
+4482F94042644EE9B290C716944BEBDBF3C2EFF1EC9081D035E218A160664299D02F198D
+DFC0173B7F27340FA5A40D6D104D965D0A0A4A7E2B4E2841119782CF2D5F7F7808D4D293
+C82E9B068A2C683120CBD5BBCE991398AC1C04854A66AD96ECDF9A2E6338D4FD5AAA15A9
+ACD5FFB6C1B31A485CEB909DE8C527F22207355C3C2E22AC3FE4FA4C78A55EA9097CB71F
+07268E60419B6FF0B2CD8F657CAC82CB8999A9307E6622870C0194B04B0CA099A71C81F8
+38484559ABFC5085CF650D79B4820D0F0E38F9F6E9F2215305F336B511E1DDF921C1C914
+5DEFB2DB140EDDABAAC5CE60D09052EC655978BA433CEB19BE3A8BB7FEB054FBCB62C421
+CDEDB868F12B65E7E9853B63CC00FC650345CB3876527263D128D17267F684D7933909FF
+9E35C08B07ABA3D996EDC3393B630838072108156885DA01AF8FA756A1CC01C3EEFC5C27
+1B348D65C79129B60FB716D0C0BFAEB4C71A8EE64F6F0C65AEDB3C7B1AB7FEF904337DD3
+7CE60E33B9C1EC44EC9F062ABB7E9124A1F7453648B473CF7EA18D7C4D35689FF19E5611
+D180FF909C43710B49C25D49DD2847E2101127D86F9B962DC94F47FB7565C6E173FBCAD3
+45146EF31662EF4B405EF07BC6791CC3E719F280263C895E4D23727BD1C2F667FC004633
+08161A6A768C3104761842E5B329720B604F3D21E379CFC44A7EE0B8A4BEE4122DA25BD6
+C7AE2E1C9F2EEAA07A833F577DA3A29EAB5502676427719001CAFEB2560AD5E67C9873FF
+E8A621A53DF8E4D89109312D24EC39A88E3BD6860388877FC4CB95FCCC015357D5AB230F
+AA6AC176BCB71B33F0E4E09558370B90B39A7077817D68922366DC8183D72F9056C2A6AC
+C2F6DDAB81926BE459F2BA62CDA9FB2D8F91D267690445B87A43E8C247F912FF8F0C665F
+867FD9D6CD002FAE74B4B5F7CF3AB5F61B91A6124794CAE15780D2F1F0E853FF840D48C3
+A7449CBDDD966C8B307A31AA25A48D862CF656D69303DBB8DF2BE21A7DE1A216BFDA7F12
+52A39D95C33EB05E5A238AC72428743164189806D7EF1C096B28DE7FCBB94AD9533BC0BD
+75F1F337770CCF5B79B20A0902D9B47C5CCE8E361E1DA68CB28296A7DB137E91BF2E0F5B
+85A744F5531535F57227499F574C429E76BE37A74878EDF4999B3A059173C3A57423D408
+A10940024EF1E5EE334E76E9617881E070BE368750423503A4ABB49183C1775F12331B28
+1648368B397CDF812C361D8368530930B7A78C164A62907D4579A596DDA10DE8B4FB4412
+6FAD4534A8B50F01F20C1E069CCB08C7A7D29EB0425EF6DDF6C486165A842CC30B090CB5
+652D8927396158C437118324CE9D16806CD56F740624752FE74AD5A7F4C7D64360BDC7C6
+33BA3EA46C78BC7AEA63A62D61C83361DFE930ABCD5068B3E0DAD8EB183309BC8501693E
+94679EDCDAFAAC1AA0EC5E86421B284549253F235F1B8C8D3567A136E8245A4E8F38B062
+998C66113B50EB0E1073A5FA05665F076CD9F69BABAFE73164E746EF418511925EA36881
+8DF30EE0BB86767988B589CA34DA9C10526B16456FB2E28D9E6B25200308605490F419D7
+BD628B210AC6E7B7C636D6D1D155610F538B0B89D53127E7CBEE6793AE18FBC0D5AAFDBB
+B1D163E22BA46ABB3EC7FAF4BE89908E9DACE987DE041E18F283F0E0546613EC33CF2810
+DB2E727FE0593FA0362A14F54B6C8D1AE8B616F2A1AE4F569A030D5C161B5DB773E73568
+16A65E0F384C703EC11589C71058DD48686A20FE1D78A48BECA734541C9E3CA5DA8AB408
+ADCE75A0D889E89844CD1BF8E201AE9132EC21897B208B94B107E5097C027E9F11B85679
+F667E7FE31EA0F5A173F524BAF2A5EC719EC2B5500EB576B71DE8018D0E4D6EFF774B97A
+27013C344DA3560C254C8CE9DDB200760AF95B6592235C3EC80C93BFE57A930C191AA7F6
+16993C65BCD50245A36EE3E7D8333E5FDFB0E056FE4273BDFA9385C1B22D6DD58AA7AA52
+525A0791D92A4C19FE24CDB0AE61C0C9AB0B3AB7AB14D483187BC0FCEC470357A4062892
+A423438F58B2921B3278659D9A45761A60F4064FAF0B8AE00C488B6B253D9A23A56C9517
+984A6FC5F95C855429F1C7FA02877568ADBBBDAC69AA8A46F28CAA853234CB3E3811030C
+B7DC1902F6FB674606E5CE4F10F73CB8BE048EB92188F02149644BE8F8CF68BD444FD242
+0FC995F48773479D6334DF080025C5C6332BA4A1599FA596EF085F35716F22D512F816BE
+6C87C496C3FBAEFA1F3137438E04273F209AB89D012A99DA94AE2B5FDFDFD3DCCCDE34C1
+8A5C64291BAC458D2A63BCA8D5BDAA24294B55C6309749FAEE5AC10F7E72094A067AAA5F
+297B454CD86214D5387A43D40E5C990217DBBABBB3F8DE441405AA662601BEDD99515374
+3DB3FB99AAA272A4BBA654B5DE2587A35DEB21650320EF12A82A0AFA47BFAA48FDB01E7A
+C50152BBAB233459B44CD77A9AE7AEA770C4C7ED53D0A532AB02FF7FD4C7F31D52E53378
+DE48B82DBF3B9BBC75BD272C3712AA6FFA8EC12A402F4CDFC6170B5F7794C036FA8B0ED8
+9E3B718548E22E25F02958496410BECC36710EDAD35F4093CE87D0B05E723FBD4D21BD11
+26F591F78F1DA1F8562C12657ECAEED759A8CDF93766DE7B44995D98C7AFE22B583B7085
+41FF071A5B5AF8B55E729313AFA4B0AB8A280EA633D64490ECE08BB5A3ACF8DA522D4512
+3829BD783314F2D158AA5A12BA9C706CACBA2AF718A660F682FBA74054A603045E7605DA
+330CBB56A7013889C7C71C228233E359B0730B8A9590FEA544749E253A0C731C44D505B2
+B1BAFDC5C0A1BA7DC8BD3D0D5B9D461D3DB617A6F3A064F026355633DABC70C185B94953
+5BDC821FBAC5E68334F1FB0622EF5F2D6BD0F0D6DC8D5CF37D05A753D4E79598B62C42EE
+C7AB01F63AD0D36867B618F92F2619B455B89205E9A16606A75C510A3A1C17CAFCED7807
+D9D5D0B5F56CEBC73AE003C639DD4384691DCB351B3B5A5DE9FC97C0260AD9D81FAB17DB
+93D9C087E694FCB17E0A626377A1A6358DEE2241AE2DF0F513C759B99FA901AA245EEA95
+79BAAE1BECDD2E8219D2D7C85826AA11B94AA918BB7FEF044D421534AC48629406C6F3C4
+EE1EBCCC64A89BBC346D50EBBE741E2A6B12621F148389A0DB22450130080ADEA9C0593F
+E6E7627E66F8A0971E082CB6432EDFEB5792A9ADEB73984176064CE16A0678984F29E708
+E444F9E3B0DAE94B8B8C8E4BC6B30F0587E8498F3B7C3C7F522D07C071F8A4F0DF87458A
+62F73F452C8C06351F75BBEE24C26606E3D722CBE61E3991EEE3E2D0D05E2013EBD812D5
+382E362E461D1FE4CEF3A19A4D768A982BE0F5CFA02D4B76D13CFC718C407F36F7A93F4B
+86091679E08063956DF67F69EB18BA4DA736CFC2296753D93912D61E616BB3220D50CD84
+0343387496F3D60B936A42E0C07B13B70DF45854DD187050D66174CF00755FB0B8C2B042
+6E75594ED3143C59753698F1140128E73B3901D51AFF94C3149DA74BACFCB7EF178DBBE2
+BD72E3377F884204C913ED0B1765F77B9DA5C075460286CF821B2A7143D5EAB8DAFDE72E
+77E6E59817D76DE7041C074698E2DB80E022ABA5DA155F767E7EAD7611BE3F5B187D0155
+60A6CAF424F370FCF0C7150AFBE81FC905012ADDD6B2CB159E09178E22BD19DF5E0CFCA1
+F61345489D4CF29CBF41E1A84DAA19EDA8D831BF244E6B795470C2F4EB5328FC845B1384
+99523FEFEB712310B902E4EC12F60EE9F337B22622FA77ABAA550FA910F26CE5D43D15C7
+E74D09B731FFC551932E8581338E4FCD9D073037DEC67CC2A27470A927EE5091A123A5C6
+54C9B7276B87D545AA49027DA83ECBC1745611DAF5796D7C62A2F090DD7033093E249A4C
+C1BC27F0601F1A8FC2994D03415FCD795EBA589FDAEA3B595B69F812DD68F2BC0337A824
+54968F9D492C927D1572ADA64A40C16C86D8DCE5B9853752FD23CFE88CC65160E07576D6
+8108F1354536ABCC86C385AEFE0A17FEC2E14B54960473CA7D29F9B2A27674F54CAD0D64
+AA8817D261997EEB54A9580C1679BE18F68B57DCF4D7318904FA2FEEAE362A7C23A30479
+A2234241D6C8540450002CE332689C767C5E7DE12FA4B6DDAA1172A0D2F298B4E1464E96
+65E733835270BCBAD1472432CA7DC752BD76C4056D527A7FCA0CC539DC48933680B4747A
+A165E85E6DFA5B1245E98C53CFC09445A40551191F6DE752410D8825F1F88EC10A552FCF
+03D0489FCD817BB204F60573B3166826DAC691B662FB4A36F41C4BBDF80AF45B8E9DCBC9
+B7FF69CFA9549B0E04D41DB1D5718AD4709E0B2D43AC26F4847E6E134DEEA83558D8990D
+4D5262BAC13BC080DBB66FBEC2E7FCC5F5C6D92824A3E29376849E92E4B6218C09426DE4
+E3918ED803C6047ACFCEECFCC934AA2F2BD7C32F7F917851383F822C746A89A657A8DD4A
+643C35DBD164688772CB8FF75FF33908CE4018CA987C7A11CB15868BE7F741DF097BC96B
+6A92411F54AA9A6E1C0E87BF73C4E1FE5052F64E2D910E84C211102DC3FE96AFA78801DF
+21FE28A30F1EF73FF9EEB05FBE3F9532C6454184D3D9F3C75D58CE7D1E609125862F7E82
+CC50E5D0A3CAEBC0B42230ADBDA90D17C30E43B49302E4AC1665FB2EE8AB6735C5124D9E
+385FCB3852BED6E4268126D6D526A8BA785A1DF9E89C2118337E94BD6AC5EB53F50C7677
+92EFC3168E8BCDEA32E9E9040F599AC698DAA9179358BC1767E073FCFFB589083BB1DE63
+B2289551912042CA023FB1C3CC2B89419529C433E443E63CEDD0E57C218826F0DF333281
+957AE98761B454AAEAC1EDA5D85DC4F5220FAE0819AAD286ADD0C6E5FEC3C48105E4A376
+887C96862F29839BE36641A082EB66521A739F9F4DBC2D6900E8D20247A257472810C036
+E7DFE68E86EE15B6EEAD15703F7D706545CF7179D4D84B3A55E31977C2F81C279812BF63
+FD52798993631481C28555DD5DC0E014653C6F50143956D6E4EB10CA0853DD215DDF0F88
+5F916EBFBA66C38010EBB2754CAC9AA175108A87D49751CF048FC811F8B2F244F2D417E6
+ED7084425B45F0D6B18B03A5A35F741599300891BDF0E19BC8459DEAEC6E72A41A96BD68
+5A871E8F68118BADF939EC63888F89C514326945E5F3785FD61FF7C4EEDDD61ABC72070B
+5E0620FA01B467E93BAD22D3D5C86C5DAC31B30D6173F161B5E1D3D19CBC0CC0167DE310
+945DBD2AF218323D2C96EAAD3DA5769064EEBEC1B14E9AD3109D7947884DCCD08F3A69C1
+723E94C37A69478D40B91D6475384392A0B2570AE3FC8A41B7409AF9B1DC776840030290
+062CDC695275C0ECE906F7A6BD24AB4DAFF8FCB7D507C00C296A913D4D1F7FB2D89DF7E1
+2885FF6FF9F8596442C665A55A8D91EF1887AE484C79404461F0B56D9671920D4DDAB33F
+A7411C4F6331A67B692AA770321D10E411B3EB91ACD5DE9825E92C6AA42A1EC2B490D211
+115C7890BB7EAA525FD9E247A6112ABF427C68EC49B9F824988CD0D72F5EA1CBC84E43A8
+7D2F65F9F5AAD55A35996A895A571CBC9B87E25B7B8C70B45251EA604A2A3834C10C18A0
+808DC967EC70190B11E226D76F61CA9AA2B0D4C588FD13E30BE4082403A2F45E9AD97308
+D0B4EF1750D8F8EEF24B5381B3A58F5AB9D243355C8F93B231686AF78C71DE272F165D86
+17D80DC0D316BE04397FDDE381804DAD904711BD1301F161B5AAD39C8391F38C5C7BB075
+0C48E7A1FB36E686D1482C664DE520D64EF8F25827943415C04583752C37764BF58BCB99
+F683E20DB21EE4B143E462B84557FD3E6EDFBB08495177974E81C23E413A87DB78915F5B
+0F45EFE404039352503BC5426F425D0B064021A64908F3734A75C36E8F076936CF795A8B
+43DF5AB4D4B500D74E5478BFF4EF16408413B75EC8607D54D26E5C7E5AAE4386CB836733
+09783185437DB279A86E89D117B1E98B98CD4A50F76DF57AC4242718F719E28AF2367C03
+BEF336A34CBF7C6523B02C6043876383F6ADD50D9916CEAAA0E7927EFF80F3EEE00F4577
+AE126AE67D4B4E9421CE00E678BE413220F21190807B7E513E931A7D44F1FF475DD8C926
+35E822E0AA9030C57771CCB645F3FF0F39E23342CFA4BC495173A3D4FD82562779BBB70E
+31EE22E98AE042146154883610BA6D1039BB124FF088FC122465218DCC04D0A37F11F2E6
+C3116C8D8D7454664C6CB1C25DE35BC377234E2EE1CEEE1748B73ACD82704EDEDB593D60
+2663F54485F1450D5B91E755E0BFE276973886BAAF16FCCABA022C7C0ACFFE550636E824
+3566E22490AAF577D14D9A99B777B38B3A90D42B4809D23F5236676DE0D12A8C033E0D64
+DEB5A756193D7B788341065E3EDD115EF51569D3943B2EB12F492AAF00111A8EE63D14C0
+065B9ADF034A734853D39459FB8007D32FCC6DE0BA80E185B78904D99F3D0CB5AB59B3F4
+89B24EEFF5B280199100C791F4A1F071E017B6001A10818ED0F80F4DA0436F609C275299
+EF11F947A30ED15CDC5E91AF0BB6180D7B59ABBD1002D1A7E59DCB058E7BDA6120648F96
+7FF4CC860D6E6EC0341802C6D1AB1B05EDBCE7D701997C89F8A9665FBB1B6DC412FA33D5
+F3877D91BC151712E0AF3617133950A579D715BC2FC2975B09EB512699A553284833876A
+DA1E0787F54FB8F9D7A72D80E43A2DEFE35EDD36CB41EEED12FC6010A43BB7ED1B020F78
+2BC705D947F0B0C24D60CFA37B9F523DB27CFD66BF177BDBC0625FA43440863681972298
+0F1B78D1CDB27F5F90DCD1A21B394D7C93D0280451434B3D4B3C946036AB1BF3E78653DD
+2375B463F7868173EED1019A879CE1CCF9829DA79AFA017A48C8932EB38B358750AEDC5B
+2436D6970427067ADA9F3DA6540C2E19435E08F9CDD1E254D91883F82624696A5CE81CBA
+8513BAF47956C8EC45F86A34F2FF2646E97DF630E8DFA762CF071A2961525B79F40D290C
+0E367BF7A0FC43BD871AEB960F11092D01785F12BA601AB0A962468AD30B17646E45F295
+EAD6CE4E3ACF2E9141748643B74023068AAF2008DADA338A756D3871302B64C67E1C75FE
+030333BA43BFD8107924A7C11D512EA09B045B05971FC44F6C7BF094B8152B3CF12203B2
+595B09DE7E655E14F213A97086983E84DFD1D015FAD1AF88BF64199A7CA7ACD56F69325B
+19BA08C24764ECEA03C6BE6D12DBC8CAAE73638A5B6B461A5A9D41CCE84B4A8C7BCA5820
+22BD187A20D70457C319EC7BB85C8CCA424CAE4742E9F36EA0066BF211CB29E291FCE1B5
+3104E9E4A624AE52CD02D5713223C706DA95700BE4417D54210F7C21155B137A533BB707
+BC5DE643CB0C75F0EB3BBD66B60ECE8D406E89715AF400C833493DEE706B97F6664A6240
+5AF0167A7101D03DD32670BF7E69381851537EF787517C0B92514887323232B68AEEC697
+ECBDACC32300DDBB419E7F1E05118E6D9CB63ECCC25F919194AC982DA726EB3E37FC4F70
+B29BCFBB0DDB09EA6495F6110227D0CC1C358390119CF7801D2EC231B8644C810C73647C
+D31A6D9141A02953E6B58169E92B95D2B2257020EB285C07925202B6F0868F1F3F46712E
+F1675D0496FD9C16DC75DC10DC0A2A107890EA1053BD99E4D0B57F16900D385BA56462EC
+B28B2C3B3BD3BEF0363E9A7AF7E05C120BC793A684C78F669EBCAAE2095E2D984421D891
+03B31485B29B96C91D2E1A002BAB07E9F338D15792D3B8180F1219187A0390CF9492AC65
+7E4D6C874C11B7F7F1614B7C29B774CA4A375AEC132E1F8F015BCA1FF18942A06D29D156
+B3165C6E31D00C3CBCB15D33E205F25074F61097953B3EC22AC24E29B78160DABCB35A56
+5C1AAD52820EDE8F0309C564C3FE32BF7A3A8CED82379C3CF7F5DE0DF9602705B8CBAF0F
+DE97D5EA9CB49198161D039B38883CE9F440ADBEDF793E6D1DE8D368B5C5432CAA053BD9
+E6B4B81BD890CE258E0692647178DDE06014995E4CC7B209638BF92860D0DA4EBF32174C
+55C7BD44C6B8AE25FDE85EFEEECE9C59795AD022E53DD24826086D3361DB531451EC1485
+4618F878614F6DD012C39AB0C79E3F74B8A9CDFF35FDFC8FD4556225EBB3AC530B82EFF0
+0C3F71183B8C70FBE3B73A4892F2A8ECB9F7018B60DDECF301C05296E63FE8A59BB718D4
+25381EA2A5A14A457947EC2F7E2ABAD04222A9114F3BDD6C72E326987B495D32F314630C
+FE67D40C50CDB7B74DB01F7AE5B9F994987EA14AA50553C5A7720C81E29B6FF6FDE2BF1A
+1921738BCF934E3F166D5B8F85F3D0381A134B8EB8EC9047ECF85E4F5577D6CBBA1A31C3
+C19BCF15FF06AC51FAA9510439070818161AAB9459E2E6EFA20FF9FFDEEA68B623617643
+02593E1213CD2EF70277C0FB55CF185D0ECC5A2D5F37EDB77A197217BA2C88C6AAF59B5A
+E320D40A2173555F174174DD89BCCC5EA988E2C3FCEB3FCFDAE63320448986BB29542601
+41D59D151FF23FA27BA9F43BA0BDF716C2CC444AE78CF019CC8CB0C39F0CA9C00F3A5107
+B52BB766F2D09FCBFE10455586C9904BB803E02620ABD5706AE713539B3C88881B517EAA
+E018E968121C895392683875DD27441AA44E29D44E76ED266459279CFC6B29824BF7E7CB
+66B1DEE499471D5CB380467F00E17FC5BB14F5A90F2009A7486313827C846FB0FBA6A8F3
+C6FABC58728FE1CFFD13D145820FE85233BFDFE759925463BD243922E13CFDDB88BDD4E4
+2AC111821835DAB122C5031E593C1D645F21AEFBA801164B2DE73B176F76B8C7ABFD1977
+A1735C82E0D2888FEC68AE4F139CFE963CAACDA814269229B2CD5544D9D91DABE86C26F9
+8C21C9CE570F1AEDFAF9C08101FF34A219EEF513FDD7D18EAE9E44EED115B0C979B31C8B
+F50BBDBEBB1FE44FE0106F78EA7B5A37431B139EAEE837B7F01B272631E652C44947B761
+CB9F200386E15717AC764F63F56F14743802F736CBF70EFCBE08B8CE5996B8D372740F48
+E2800B308770224B35D58EAC9B2371B3F3FCC27D2E68D63E2A173E804A4639BA8071F390
+E928F9593395B42BCEA49960F022B1C572286C5B86CE4E885A7D3F9623C014BC612C5E92
+C7BCA51099BD7519B76EE2FFAC1AED926AE45A99D2A278D43BD2C399A7222DD42179D8CA
+3D2B9239ED002A73669DA107D2247344467309D185EDF64F4CD68652A9A658A3ED81F572
+522E14D24D8C8BC265F60DB998D67D5F11A4AF97A14BDB700FF9D387B3EA64C7E37D1278
+A9A4520479A3A690DC8C15BB5087EBEE57E20B50201EC87CA58F34D3069EEA6BEA41F237
+BEEE0F438373B6578431BA7A6CD002543BE541A6A95799907C5E0BBB62DD1163930F96D0
+9080ACAA951E651AC8879F213FE4C639FC683C2E869FD2E1FF92EA1AA671E371C9765898
+20ED094C7512C7BDF437A5E39EE16082C8A8A7A8117ED7F8604C51C95DF0F48576B2B4DF
+3248B1A4657FCF0067104F67DEB133729F96709CE3A0DDC4559B799BAC9365E7A6EBFA08
+838FD0DB633554FDDD3107EBC26CB03E0EA331093F7A975DBAA876074F35175A01442E33
+63ACC30C29E94278104FA130AE8C5871C78D1F187012A2A8654AC00C414AF5AFF1ACE586
+5A89636F6898D9EA6D3780C9D2DD21D9C79433B09F4777982FA672F28C71806C44805450
+88CFFF95B03A3A7156F01433ED46A1220FEDFC34E48ED72F3AE9ABD649A6706BFBB91757
+EC3F0632258CDFFBE5228C1B0A08B60EC36E070E1722F95FA3D1880B546A4626ACE5E4C5
+E984B7264C559CF7F8F048BD117566197FE97EC02151A06CAC44F7DB07FDD291FA675544
+27D3629BA814D55467E3F5E472A11A9F1DB2B840525AE90C4702D4F142E94B4C3A96E7C9
+652AFC5D1793C79940C54574C74D0BBD4F6BA3B68A6C93753E1142FF8A2D96FECA3F656F
+7C14242F9A043517D429A85A276EEA9238E48B185637372A96949DD7ACD7591608219896
+A68B5350B1CDD3BF37B73AF4DBFE04B82F67DB8605F6C3D1BDC3CFFF5FB3682F35597566
+FD4C01AB57D8B4C30A2AD78998CCD4BC16F533BD817EDC85BE95831B180E2D22CAEF68AF
+870058B51328533B4ED7795C7C6762FFAEC5BE3B2913A3CE660748AFE949E06BAFD70C45
+7F3C8297BA8925AE712751B0F2B824E56E7DF533B014FB9CEF5758AA207135CB0F0CA4B0
+D93F2E6AE6C5BF8A95FDEB1BFC4028F268CD712FB232EF7328DE00627BDB8BE25E3C63CE
+5F240E59DE1456C405C6EAC82D159CAE77555B3A94E138C7F1FC579241211BD6761C42FB
+6D746F50445A2DC8C15816D68458AE64D2C1047850B010851EB2B3C36960CB0D553CE519
+A7D75DC547802F65CBAA5B56C70B6BE2920E4390DFBA57A799DC6341A2CAD06339A3600D
+DE16BAADBD18D22674B6EDB4CA589A6A097F9847C1812825C7A886529E80B5336158F7C8
+256641F7F6CC63F6D7DCD8E16B8379B3A1E776E39B73FF33C22E81FAF596C524A36454D2
+AF836E0E27927FBD5591F960C4939AA8E39BA53AE3292117E314AE6B71680C66474023A1
+B141CBCD310AC739F2E36ED85A7FDE7E5CC5A33E4C00CC5D2EFD78AB0087AEF2E2293CDD
+0A6168E3747B5F964FFF908F7E6F95138CBFB37267C7F432ABC06A5999AB14CD7571B177
+9E08A1195016171CA4543E68965512B8F1C033FD8FA358058AFB309EAF2D83AB8CF34E65
+1207BE830A18673382F0B521B16D91B83C21DEBCA2BC412837D1D33ADE3A66D23FBE4BA4
+B28F941200796B03CC69084802F857987472331F4C58E64728A4A2134C3986ECE3B34806
+79B0B18F57A297A0DA553AA69D8BDEE6242CD87CF812A29028BFAA1CF99E76C921020F26
+B9BE0E7BE60CD82F1F31BE97A55E1C6F6881ADF8563FF8388C076B004241AEB8F69AABE2
+A88C97B713EDFE1D50900F223D09F88563F7BEA4AF240EEBD5880BD3087C129F3D6B19A9
+EAF862E7E564BB131A2A104392DD8D787CFABDA872CED0476DED371424D185150E104781
+3AC7E6CCB8F52149FDC1E1E30F29571F09079517D1753DAF5A50E30DFF518EA9E8E4B96A
+8878BB715DBE5EF514CCCEAF4599D7F747F07719E2D940A1CA86B98B526A0AA5F5FFAE73
+16A8EC37B421BD590BE306D5EFDA9A0B7457FEEB8A36BB4FCDEA36330695613D688D7CBE
+1B890DD28C3616D034AECBCAD487FBA70AA6966885B6CFC8FD1FB0FCEB4FF34E3F51A5CB
+6943A4A8DDDD1B8BCDB76FDD664FF60EA7F4983B689080366C4F9F2A56DEEF19C89A4934
+29D3193AB0E7F4EDA357134A51EB2AC37E5E768D234F8FE2CEDC0232DF89E7170B2FF774
+146D337ED2813415A7EEE9BE9A4B3B519C917A364A9C55D8B0F755ADFE95483B2850AAE8
+76644DB47746F257527162123F5BFFD7CC122D1D8AADFD667E45EC7F3237CF5387C0EE52
+EB6B68BA51AC97CDB82EF0430ABB1C17B1759C59A20D7AB23B461279E8C600F364B01A4B
+E6C8BDD22CE1869E48EB624512D832EBE9A39EACFDB9F3977BBDCF16D14FBD9560DD1B6A
+2EEE68261FD6D54F685A3CBEEA40A1FA8DA957F7F411C5A838B10BCF706391C00DC1BD1C
+F66B1AD260B85CBFA314101364919AC7F54A46B99919C08213D707CB03DA6A0A115930C5
+2B84DA205D92002CE7F2C28BDFC3AD12A04E110FFF13F4B25279D948D7B079ED3C2E375A
+8250AD06D66E3CE11D8ECEBBEC6548DCA998C2E5FF577BE7A835964B226163B5132702B2
+F18B0539D7DCA2DEA6BB1EF972B1B9CE3369BE6D2AC64CFFD98A36A3EC4BF6552669CE12
+7E441D56F93241D65FB47C67A3197C892911CC7910E1D7AE0D4A8FC12744062AF9D258AB
+3DFCD9ED0D8C303D7EB6AD581FFEC0BCC6D46F94543165C89ECE81C1409A8D42FA29A346
+CB320ED86F87C6254C608A147947138CBB4F4DB89C521B3B75D4AD7E34F74695D122BC24
+78350350D10E4FEB45E96C16D5D5C78FA536A95236B20D5D7B7EFD6BEA51BDADCA3572FD
+A4E5E01C9D12E091902CB81B1DF1B89DF8BA4DF6C2E2A40D16E85451782D375689407D8F
+5894CB32E0CDAB8E733B64CB85FB54598C83F2972ACC78832EDBA5121A580889B48C51F1
+CE97A64BF99C92E39146AF1B307F21A60CED33516DB2B57E3C1FC359ECCA4E23D593DAD6
+B71B989B2E99DFF6819C60EFABEBA2DAD0B0178486923EDDAE0A52D1AC26EC63F605FE78
+83F9A155738CCED0FBCE9B3D2B27E5BBCED47386DEA29E002E9D5A9D8E7EEFAE1CB6C319
+A0417CDAC58C655BD109B4D28156EA773B1B830C5663AD4568B07B48D3E9908B25DAB476
+B717F5A840B76E5FEC748C1EBBFDCE7DA99F53AB6420F964A2F033B949C1030A05AF7038
+D3FFA1014CADF62461AB4C64DDC8C25A07AE38FE5E14E014E4A79A0391E5288334831C6A
+EB528977B03907BCAB592DE750021D8A91461B76A121977F9F22D43302AF53A7301B92E5
+7E9A505196658B1CDAA40DE2A7120557AD5DA22255EA358C87DE15EAEBAC4F8E96723E80
+D3E7D1107BD1478220A4E237E36D6C70D40E63615A27CE87637C6D725EFBF5B30E8F6187
+F472EDEC6DD26D65DCA79B0CF0F571F9DB5B9333602782A110E71EFC3A2CA61A1C854496
+47EA1A08D3460A4E14A5AEB495D35C39C096BF41F253B63B32DC583F325CEA4E840EA4F5
+6F2D0EF7C2D3EC778780CCC216FA61CC29FFD8C1BB520DA23FC0E14D7849F95E9B5D8C0C
+361F0972C599B9909A73A2E8A796163A4C100CC17BF612387F85C8ABA8925277F616D955
+D642FE52BD4701D61890729891E12DAFC2075BB78475F44D3415E0F00ED9C2360EBC01DA
+D2DB7A17545250880209FDCFE5EFFAF85BDFA168099BE637A4224A9F24B216155465EEFD
+12A0E72B740D0D48DFCF9F8CD4895FBAD4BF23D44C082078BB1A114EB73782D6D2C9182D
+581D8C4D3E4F6AC506C61B5F7730B29464C46B6607C83D68B2BCCB878E043442EC63A701
+99CDB20ADE7B3DCD79E1464B302BD042587A9440AE81A482E0E2DA4E9B20313B7A8D23D2
+62FFBB7D48832C73726BD67016B85A598D6902AFF14410F8396B0A9938049FDAA2232DA0
+F7F56D3DFF07F002C8352265DB9BC3D86C4240D39AC21C3FF814C9AC5EC10062954D2CE0
+7EC7B25A5A7068B7A49A09DCCD52AC6633039464F9C32EA5643942954B79856F658AFDC3
+3C0BEAAE9ACFC711F321B47660134EB585463F22064AAB879613525FB7B0A08D5CC39BBC
+3AF1C8A154535E5F951810A13C766CA9016AD7EA3C84F9C1FB48A29730454562F8AE26B3
+30D39EF15F08E3B6FB142ABB63E7663DE122302964BB7BD14FEE15639FA692CC52B56D22
+A949C8DD60332812B8CA656E02AB8E3C636D64BD472C715BE23CF8438CA365593F54837A
+2BEDE6B3AFEE277E13CBE2E18AEA66C444E83BCE101A9358CEBA602F63AC9A5C5B044242
+5C08B8C823C66E279AD35F35664A000BDF66544FC07F033BFC53E1D3AE88D73841378CEF
+7A13CEF71D668CCCB74576E9F593D80F7940BE456216BF382958E143E134C5C23EF64DC8
+484ACC40BD0888DF4D79C068CCC10AA970D8B7C9D86C7B3DB191C7F8E1FFF3AD27AF0523
+36A57886DF74976F6383A9FED0EFB80D318A8A0360F67654624EE2EF3CA7575145AAB576
+97446E907CBB881371C42C010DBDC9C4A57D9F131DAFA41DD4FE2412A90E7DA51123E3E7
+A9CC8B5CDA49D66D847C49F39EBEDDAA2EF09450E9B097741067076664FECE56E58FD77A
+857107C014BE4121E9B1F5A6A4FEC42128C8EE5E36CD9A860AC49C334E02F8E1FC80C966
+B504257EFC7803029A221E20502C7D5B888DB57061EBDC6D8B541D2C82CC90945E2A7AF1
+4F4D55AD29025785FCCAF2AFB07A0D2326BB9AA00B48A564B98D234BF330D8A55FB3C432
+D899AE15E89FB41DE138EC5977F4C53E435F9E8D50741A9529FA051DE5A887930007B076
+6872BD0A4368C2F7DA6ACBB3BF09340CE820C78B042D13C2A6D36FCBB0DF9FF82DAF48C9
+7C3B7F6D83D5F717308AF7D0D9DC9E85F4B23BF7E5ED79386DB68A69043A7F702799F255
+1A17F45D43BEFF8B2E9A32C25F30F7AD56F03839C015B0E3B5B5B7E0E0D26B30744996FE
+088F815485C78195BB57A43B8E65CBE202A5B40F14E5CCCA60F9D821AEE338CF0DBDAC42
+34B48EA55D2704D7DB3950511E1880C177661674CE31B7CAB91002A8D3C72FAADD250804
+12C075B913BF1F1CA8E83BC3D43AFCB37455225A8BEB07FB6A862C8DF39ECE6C82AEF094
+3FF9D68B7CFE3C435562B9ABCF53BCE8F52ABB505F6891267F74F153657180F6105D6163
+9422254724A195BD52A4B47119DF0F31CD93F8AC09D02B13EB24396275CD7AC92DFE5CDF
+AAC9879CCDD037EB0B33FCA108D382468D3CBD4435848F2BF6A6E8E7ADDD033A79400537
+17CEB3BC6306D6B1FE2CFC503C7E933351568AB8536FE061E1A50471127DE038D6739288
+931AE7C4D507592FE9E4853954A43169B11C353D4138152B0DB037E70AB55AA034D0ECDE
+8C625AF8AB1B1E3EE54BB33EC96C653D0AF2EA660E3A8394F18A7D7FFE6BE833131D8880
+F6C48255BC33A8CB9753F7B98F5653467FAC311018995F10F1B8CCAB8ED88268DC7EE7F6
+41B2FF0C01BD6E3AF965EDF0E2AB33707B132B1A4E162EF19EE21B97AB0456A1AB0F14A8
+09EFFC977F9748283B5CED167C9A319CD2FBB77777153A0619EA016DDF9C20235A7B1282
+12CA69AFCCA1385BEBD6417959BBD0F6BD9FF6FD8E4D4E0499975149499F6E1F75299AA2
+404CB7C7C11FB38B5109A8DE13137321BC3006C3289CDDFD0C6A6B69603A3F98373800D6
+5D1B3A20380C6F8DCD0095300BD4BE86CC8E5B15F3348DBAF8054D27E47C0D58AEA975B1
+3FCB21629BBB6366B7827E859EB1C391C9603795471E9BB7B1E026573C39754738B812C3
+FF7D0FF75E8A62F39E89BD8273EADC49AA6BC895D648CE2DC497C79E392D1D3182F27440
+AC2A6D7FFB8C82880416F42E54E7DD1FE9F2C10FC2BB411782298871E686D19863A2B627
+7B39A710A3F21B83D4BCC9388E48904F0097360D5FB07DB729FE2D635505C1026A942942
+235B6E6A49B5C5E94E3E4ED87516806F6C4B0F1364E3A19298769F4839489A4E49723706
+9AA98E579CFC377520A8D45B7E28DBAEBF94658C4C2AB7DFD989879573ABB23FB515AC22
+45C4CA62897BBE9CDFB38F050C8C69E14670F74AF9F481CCC2B665C671A8D085F13EFEAA
+8BE4875E001B88BF3E82564BE41B6EB986F55087A7FFFDEC93FE54BEF8E2AF3E366DE9F9
+833CC86922680DD76500196134E24C2550EA4C56038B84A045010A4BCDE7A15A777E662C
+09A53AC0F581F5C05270DD4C9F27586E0861784FDD40435639DD193A6457CAB9A1539235
+A0AFEAA1043473379C4CFF07A15DADBCF7B7ECA04D6411D797E11BFD7A6785125CA8EA19
+9C05889EB2E58ED85FD63971C5E9623172521AF700C79C9EB52D0F807C98C24B870436E8
+5F2D07837D2ED21FC6B0E0BAF0D02BD77D8476D561FCBF498C08205CAB18F16CD6DE8A2A
+07B3100865B6CFB9E02E46502F2A972DDB2551B215022264C7B78E2EF1654828F92F2C7E
+819BDEB62889ECD8BC08354DC2D821813364089A6B4E8516141F0FF8FED5A91E8C65D069
+F96F92A70920121885E65B9086FCAE5DC34C54E3618A17882F297AE4B4C4E0C89567CD1C
+EE687344105132AF7E935A0A6720B90100598C53EFEEF2B0774BDEE6241B19DFB570F52E
+387D5DED350A8F162F692AAEB0F0BE50DFF908A3E6541C6423127185D64D31FFBFAFE40E
+C92E20A0FA99F0FD0A45AA96A80A7F9008CA94750C3FEF3ABC85C1CBFBBD8C0871F54D5D
+197773B70C8B2078CCC35110224F98C1BED5153D109AE2A8C3AF470E6549F92E2C1359A1
+9020122E7D2A7443D67C04CD2E68C7EDD263236AD295FD109228F3E9BA9DFBEC173CA367
+AA38B2876A6D7AFD54AAE262DA30E85E20ABB7CB68FB3FF4302B5AAB44FC95DBD6B1742C
+129FBC9C2A01A119A33C46B1772404A20452D7AAA2E68F5C6C0C818A5E77262F36DC2A9C
+1F6245AC9F02869EAD47BFBE0B7DF9892B36940CE2C5F1B0BF82BF4B200CF48040672188
+345BCAB9BB02864651FD0D32700119973032C53EC26FF014BA0C2E20EBCF4822E0D2B2FA
+98FF86F2396C75A2CB196EB364D27838F11DE75AE8AB4105AFC8D62D0B1DCE46C695AB2E
+4E3FDAA8ED96EF5B6444B10192522D2E645AD0C05380733DB433BEB9ADD9B7617E803278
+44F3956741F7123D54E5366342D0862906624818B0E783DCF08152CF842AEE07F57E6182
+D691A58675AF56ED81DE9D81518EDF13CB57BF32C0C4839BA0D03F49103B274FAA193976
+DF8BDB08F5237A0CFE9302442EE6D3D9547E5F8115F56042B17502128D457191D66F6718
+7EADDDDF60A6FB80C338D108751900302EBF2880218FED9506220E782730365E9E71CA47
+AE1A6A4FE0C16DE25918FB9F2CC47474420FD99B0EA6960CE998B34C5E345A0C9FA1EAB6
+1A80274D77782678B8EA3A2DF54CFB27E8B987C3A5DA6A0EAE36D87FD80527D75ACB1A8F
+469EF3B04B1B5FCFAB8E96D60E09BEE177FC80A5F29FA5224249C6F1C6BADFC571AC62F1
+3940FEF30615D413F9186D89D2A6AB1C39E74DB3549E350C145DB97E692447C2BBE8517E
+AD95001DB8035488028FCA963829AF9C414B91A439922B83E9E3F994BE7BEEF6F6E89242
+EBC7874D9BB68E542186DCB521D6A584B90841BA85E419DFA3DC1C09A98DD11C0B5D5060
+184B58B6020B0985D279E018BF8B30A97B78C58B84432776CFE639EEB41C7C5646372BF5
+522902DBB87EFBCEFF313E843736C4FA6CF662DF4A56BC4F5B671870EAB9624C9937E46F
+F3F22ADF81988F244803AFDD554488F710A0029DC20EF25E3260818B0F8820C59AB277F2
+4734D64BD44E9FDCD5DE839516A5C9CFE6A79CD63F8E7AB3CC0E8AA92C92F22D8CB7BDA9
+F88D1DDAD8AA9C00F0BC0C481927815AC4BB08854E1B524325FA13A3A462DFBD15E9862F
+4CF20761EA02E31EBACCD5B57B3686CC541D6C9C457F79226437169DD5E38634D412E851
+68386684D7EBC3DF34B90449E3CF514BC9804277529135A50C508FDAE49D320D88EEAA4B
+2C381E22E0B71D63490040AD1DA745BCA1951B966F64AB30DF94A6590A7A3F1CC44F92F4
+7E0F2AC5F02E5466D90E4B7DF56A9631E4D3B7298BBBB8832D1FF6E063EFDD2A15A149AE
+04252E56686F7B147ECC8B820F09C22380832D18B3CC3531A450BC07418938F91FFCC12D
+9B49E13D103D4DD200485AADF5AFDD88883F51AE88B0D39C66F9568B840C0E6702AC843B
+79FB1E4A0A535853546BC352F25B808B3801F9147BFC94ECD05C13886181A50CE16C3A8F
+BDB6513BED365AC3D728F477C3F608A84D3D4FEECCD7C686A794A4F7CC3C61A1B9AFA198
+31B97D594B869A029CB26848D7D2787D70AAAFD65CBAB8D8546C12AD66523FB886B3018D
+C7242CB71ADBD6816EBEF61089E0D9D73C2AA7F72D03E26E26FCB7C48A149AA96653D30F
+2EFBE398CEBA40FE0AB58683A56364FD84666FD4988BC9193D12B71B874FD92B85C9D056
+25A98C20DDD7A6AC1A186620BF17E9590EA9B49B596C1A65E2FD69D8CBF5069A791A4E2B
+14C1668A9C757A916B8489779353BB8A1BCB1CCDAF753F2FCC10F74DBA971DF4E226EFC1
+FE7596CFB426EAEDDFA819FA4AF0881BBDBB25AA21F84643EE6275B436FC4C07930DE0A5
+04D7F024989008013CBEAFEDDB9CB757E29624B4F17AB827E530CF29B908969B0FA6C7F3
+83A5788DC5A11A6C44C861F214FA521DE0456A378C7F3D1BB134F1258F13B3360CA82A98
+4F5AC26D670ECF6944439B9CD18E2CFF0DBE3AD746D8E3C955B497A7CAB2824ED51B6954
+972BD68FE21CAB7F93A8A7EADB2CBB9508E79962C2B74365B148A0A269B044D85BA6ECA5
+AD716D0BC8884C8A23F699BE638F2F3856A95D8D80D7032E650741635FC881B170E427B4
+9C92D87A854C5BA367DB5DA7E99A146766DEF99A6822D0A1B53BDA9B5E1E5B3C91CCE3FF
+561B1CA1D3E220876DB85C00C00908F28EBA356E4879CB071AA9DCF7A313D51756E4E04C
+E5DBE40E519BAD744C53EA2E5806104D348E075BB9EB50D40C740AF318FFA9CCEE59E35D
+00F745121B3C26DD5AEAFDD9CD598D9F131776A625D4248585EF0A778104093D3FF50615
+996278B89AE03623E2A1FAF277230DCD03DDF00C88C81AFC96D3486244952EF1D599FAED
+602DBCD62D51AA5A699DECBC71B58612EFDF08046E8A1CBF8C7FC8C5FD3D95144B4A66FB
+5F75D46D3EE25876E8F41931C2783F53E00C40A23984B98C0BAAD2CA028C86BC02555A40
+FD17BF237A560CBB489FA56D49BDAEC972D27A40D08A6166CA3960FD84873CB3E361B77B
+2791331A9C959664CDF25A5A2E405AD6B727F0B8569CEE2CEE526BAE4FD95D1EAE7E4A1F
+10FBF733333D5EBF441C28788FF7626C7B0A7B16D9DA438258C54EDFA3DE035CAE610A1A
+E0FB519D63BE9C91398CFEF342CC1C56BF094DA04ED46167186A0C86CC254393B3EA729D
+890B0571364F40828A5F120608F3C4403590A6EBFD2159A1B78D7E03254EB6B7CFE0D085
+DD89EBAB3212DE83C210A5841164F78EE90AAF17E75F7AEB61E91719CA274C0C39D76B25
+0DCC0D8AAB1C709C447C2B3F1F4E68B73CC9865FA30B6182A1442D44AFD54C086DFF0CC5
+9C90323B86758531E9601B326FED2E06B7E8F69F16B482478A5673065DC50C1FD342BE86
+99A29F097A35CB6F5E47D2039901EBD217F664D6E1D52B440042DB7A934F44CDAB07A167
+94E1BBE256DD722DE4D2C8B854BFF73351DEB09538655B34E6CC50A2216D3DDD2CAA8D86
+F3B3616BFBFF9FB8EA5E4574BF0F5EBCE811328F230F3B045012E6E94902A27A8215B40E
+C30B961970C6CBB66D68999731EF1C96C968742985C7A220825CBB50F5CD436DD27CE229
+35DC3B9A94C31DAEF51A2E602347AAB5642568325B33A8F0523487D0303D7796D64731EE
+95DFE92E31F3E3B2A9CC2797AC255AB3240629D78C140D17459921DB85EC49294DBB4B83
+BC33CCC2939460794C238A40B18575424567E1C5F3E22DE51A3E6557F948D979CA8EA9C1
+2550944C4F44FB28E3A6F6B6EB428D2F59BFB4C0D9A0E92FFF56BEF4FB3517246D8A36EF
+F05106064CD2B14631A72879EBED8ECC0EEC4516F7DE45BBCE51400F67638D64D71AC71B
+7772CB4C29FF9246E04EC236CAAC8C1230FF6B3D5DBD3929D176CBC3C1007D2CB100E219
+891D78D40A4534C89D9043B0A82A1E82A029EDA3DE5DE589619E354028775F82F30062FB
+5F613C95360198E7FA86FFB6613792552E03F7BA68A9AD1F67FB307BA3E12B1E1BC060B0
+CC8256B6811E3A6944060C1D2D4E6F8AC76B72D7E3FB010C3A028B11B737C153BBE3794F
+C18829E4DC9DCC70F1D3C9F404DB67C4948B31E4CD69BBB89A95CE8A768C33BDCC184025
+AF682B38B49335B89ED38E8CA252FEA6D902B18E5DC64ACA637B69ECD8A7077FF36ADAF8
+84302473559DB4B17AC8C899EBA87FCF8DE7CEBDE25CF60B2DFD59D8029BB06E1C655562
+113A83CA3AE0ED4FFB0186ACD058E2E8E100F230FB0FABAE6E3F272C733A8DB4F16FC12E
+90FFA6995D04685E23E73D922A2BE507DC37AA6AB6BE760D52081A7BC3D4CAAD567F551E
+84993D7E1B1F0A712CEDC5D8A7351F16DA3457C43D61F8ACCEC7B92BFAFEC1EC175754AC
+74DEDA56C4C22C0F6B22B7F777C143F94C1D99BEA27C4C8E217B42D27441F9213D30B521
+DB71D44A6473CAF541189E2097260D6B05E49822F1B74A8A420AB17BAD943E152AC67656
+B2864D48BE8D4AAD95E38544BF5F71469950CC5E2B46A4A83D09A01C557A56F8016DA2F2
+449EA5BCE213EDDD2F59556EC4C3844E43429AA6766B309BBD70469706A7D039EDA6095E
+5E7D62648165CEC9AA9FCCC6C7EC6E2B376AD2B4840A421D0EC618224A79F4319BED44DE
+71FDC91C92914D3FF717F21FC6DA439E4FB19E1370AAF5D1541E8A1C52195BE70075BB54
+B2792CD4A6A87652292173560E3F1A01A00ACC37001B542878F259E212D4B85B5050F066
+E71CBB3E8855A79665723A3467BEFC40E8204D2E3021F1C32EDAEE469AA77906587CAE7B
+9701686682ED365DB2CF5DD2966091FA1D611618AD32EF79BF87144B3F3F1CF911C89968
+305F6FD8C0D64521C49BF08E3F8C22A7000A4024A5B04412B4A07C55E48D3FDE64ED99EF
+784C288531206416F0B7C0A7A75839020310B992FE6DB711E59EF686CBC04A59523EDD15
+0F4DA95EB8A6EDA4604F3EAE2FD6B9F129A45E4F2191E040B73875C8DAD13D4AC18CD057
+A2944B2DA5AC9E1186FF303CEC875124C7DBE2453B239E908A9C998F90F50641809E13B2
+AC0963F8933FD31AF8FDCB88A327E88E2F878CFAA3C80993353683ADCA7D28311655E5EB
+B6E341C81A319452CDF87C221B0DCB9AE630BC93AB1185F630A7FD189C178B9E743FE41C
+7F755D31DD66C382EB11A84788A6295697F7348A374811EAED83AC3A93192642F2377E97
+7D2D4F6C046D9561B0D22BA812B213D06C25199098687F8E4562A0E89E0374DE2B2989D6
+0B5734543C18B835C6FC8739D6B55180A6747664FCF481C60FF5A5D20F55669026717F5D
+BD939E6AB8F13AD9A4E06649B401B0CC443ED691E174DF0E0CC5ED300B14272C9F9FB8BC
+F63E4E2687E3D8956644317C1AC4A2066A315B21A79A5C41F7FD5FCB26E7F5E16B66BE4D
+0D1B3DC31A29D8701442223701CA0C627328DD84B037BBC055E5FF6B821AECBD84248DCD
+A7AC742C378E647CF58BD319EE75D9DE30F1BB4C4F74EA6C8E81A4BBD5321AD096B881CB
+536AAD7B8993D8173C9B9D5EBABA0872CDADE26CEE3A44A90AE573C4C6B21866529A47F0
+74578369011725277A52C8B02D531C2DFA6CFCBA0C5542821F66BD197EA094E295E243E1
+AA0299FC101742B756C3C4677DF6CA5E3622431075AA3944C2FF72DC9329911417C1CBAF
+883F906212BA83C7D6782C27C67559D3FE28D9369B8F3DD3AF7825D029FD93E01099F4C9
+AAD919F389900927CA777C206E411A53F1C1BC1C2313532984120CE63140FFF03258DB90
+B907BB4E12B0616DAD139A0F68DFA5374B475042228F02AD2B03CCBDA04AC02717008E05
+02EB19281332BD96F8747FED0FE7B822DD952AC1C5162BC6765EA5994A9AE9495355480C
+C20D367A403B23B36B1DCDC8F7F6F730994176F90904D6565348EC7CEA16A3A17E05CC8B
+8BBFDC265AA245999881E622E2BF3A0B138430D811AF77416E455B019ECEB6337111754F
+9D20C9052BBB922D3A5BD0EDE668F0425B6A46CCAC628D73D3EF55E90483BAF8425FAB7C
+910688659874B658021B7D25E0E5F33E4C56D8250D63B66753970A84F02B923C38DFC9D1
+578B895FA5CDB74D3740255933B32061ABA0732B1FE7DC6FF4FD67455A7FA23F354F8E89
+8871430C5F1B61FFDF285174B5571439E5DDD5E58F6B75328B20ED3D73A172402B816EC3
+1970B6360C2FD4CA0E298C9906C287FEB82586116CC79FD9B0E8DB5A9E098BD5DC927EAB
+F1A31215462030D4C84813DC4ADAF6611325134EF431C4B3A3B50DD2B679E068CAF54266
+4BB87F162C86F94727DD575C5572435F6107069C4F59E11F2A81111F1BA6D07BDA179FC2
+1C54CD3B83EC890448057E6050DE1595FDFA1AB4E29219F4ED6E7344A45701BB167AABCD
+8E159AF11512DCEFF403D58AD477C9CCB9DEF2A6AAD844B4BC5945DF0692C039ADD114F8
+40BA65E5BF681A1AD312BAC5A2C4CF4664CD70848B36E7BB243E30F0AB3C9325D3000D12
+0381B02401AC2B92D0EA978E6239CF406AED82E1E3C9A594BF40072B98D9FF827DB80F5E
+E1652598681A78FF770F5407BDBBC8B38DBDDC941C73E14C94C1C6B7024A8258279E6D6B
+9F6357E208F1BE53B44ADF84A30ED4234953A0A761DBE09381DB55868DF6B20F737F1F0F
+9B6C1D8578F4231B7B63E38B15664A3F9D17FD219A72EFF93EA8603CAD99D0C7A181D7DD
+F172903533279E6A1B9057BE69641E2700A2BE65E2433F3BAE96BE46A709E95D2080FD13
+B68FE6B3CE0C38CFE3C99A4682EDD2CB05E76B2B188261B17AB4D82939D4515CCF15D6E7
+81A57F61F529BD31285B9B3428284D397392C5AB0EEF86FB0073977BA217B42EAA506677
+94097660901FE937EE0F2190324CE2D1DEC8CCEE0034EE566F3CC7B9AA0DCE36A7FFB1E2
+0FA2C30923A37A0876955BC044EA93E63F2B715454DC5DE49FECEA524B90B8EB79F469BB
+34158FD7DE42025596D6053C96FC0C3C4EDEC194ED4A38A49D045E3F6E973187E3557E6B
+0FF902FF887EE469255E07DE0D1D7DADED1E77B5DF4000060514E6DF2CB128A3A3A3961D
+B656015D250439311BF0C804F11A3E12F995CA8B53606139387DD2833471F76CAD6D9B9B
+81D059A7A38B9C0BA0D4A5609FA5122567F4E473015AD354C71822F84481DDD176CB8854
+11457457038B6BF8B903C7A7BD0E3230AF9F338A271814C086DF402F8D6F2CD4B8F01205
+BEC7D51DCA81D96876450D6FEF85DB99495CB05E9DD2699AA87A29CB055159E8E294B284
+5A1A285A6E222815BB28EB32B422D65286FE65C10821EF6EE43775BECF3DAE49DA4D103B
+A578B7945A4AC8C9821BCD4FF0FB27A74D82568D0E2D729852114B6D3CFCA7B959A82A48
+57E4E2C9633DB8ACBA4DAEABB8BEE570EB993E4436C3134721AEF76136C6A78997D0F85A
+403EBDB69601C1267A9BA05AF0B797A7083F7F3E429312D079DE2BDF13AB1EE202BFB209
+F6BE232AB25A755624852B119B291062A439CF55F0909BE2AFCAA40A8451BDB21D621C08
+7FD3CD306EDA928FB4F089B0ECF5DA88FF3CB6C6C089692D25949B639E79FF5B31366455
+5BB9202324C05FEC5A0E8DC4A028215240C60B940A4FD29929B9F72E8BBFC7B66218E928
+72A76D9EB22924F09C0E62C1C0132B51187EB3F23AFC7623CF8881C4B8497EB2A92CABCA
+9F05B8435DAA11C3F64BAC20A1B7731FDF98039216A15CB9C1955100214944F79F4A2CFF
+5572D62D0692652244C8959C16D8516443BBBBBBBC0AE5E0360C6DF6E895977D8088551F
+0A891F78AE25AE4D82D846594BF4E3DCC96A4A51C9C964E9D290CF97428A8CAF9126E360
+5C781338F16330957562CD6AE003B0054E815458AA893C88C742B7A2853EFE39CDB81E09
+7B2637501618A81303EBADC6B4A361F95950259B2D05ECE9FECE755CFAC002E014653C6F
+7CCC96BDFAC418977EC1D3BBE5691EF64BE37139A143CAA4D4A7A7DDFEE8F32C256ECF8E
+6D7655BD30B477B06EA43AF5307AF21682F92522E08EF41499DE1B4A338A1F76D25AA10D
+7B63FB366198E422287A53E437F5E796BA09CD74B4C3E812370E25C2BB43BF06EEDAE509
+D789ED28517DA7087C61F2BDFBBD25F1947FCCE5EC533D4025EC3C52A9AF6709B8F46BAB
+491411A38DAA7757512B0BB2AED13EFB09CFA6B1370330A22481E77D7DE4C7D4D87BD213
+50904156726488553E3567B047AF84CB0341D24F5A538D173ADD9C73B310D9DF15B901A2
+FB25DE39B8D822D63FCB6AC28501073730F4B9303B7872EEAA42B161576557385206ABDE
+04A7DBA07A4DEE3DDCAB1FB5C24FFDDCD7D4D43E8BD2D8D1FB06EFBAC0FA6EAC0058B514
+89048129AB8E7DE5A07B8B639992A3A8F22A2B0080606A8322DBD010844E350E54C6EC8E
+67B0791CDF3BC2EFA01FB8A5FDD84CA7246596A00C47FB163DE1AA45EDB668989CB04FF9
+1C418C7E8F675BB67C003045F34C0ABC7D52553621F286F71958416CD5576C769CFAF836
+CCA5DE561C0C7A4656709B727AEF6B5D3961EBAB53F758E731114243C183997BC290BB78
+1328526DC1BDD9993FBF6CEA6C4F29DAA06AA42ADE6D34B338FA282F54AA2FB666B88B4E
+32EE46D54290F98BE73F794EC7FB394169F237A527E9CB6F2ED343BC35F9E707FAF511AC
+2B13D6A23C05FD07EF8D2F18144079557FD2A4B302998885E459287709F2F1C7BF819854
+F2812BACE7FC595C670A206D8F789322209491FA7ACC5F1C78156EF599F4F66C7D5FDC31
+0DD534728CA01D97253AFB351E51D946D0016120C15F5C12799C19646059319AA3DB3C71
+87CEBF364462AE3010F686689CB122200E6930CBFE8800E47A94A5D55315A44C91D908E8
+B07CCB054750BE85D06657EBFAE5877720F4CE2C6C4E76A6185060BB099B055616B77678
+B41F5755DC900A8B83575455ED51938626869341EAE5C84ED87E92B10375F2A2326A2F37
+34B4D9B5930D23D86457FE2F0686EE68C96675B873090883E5E81780D92574E08D5840FB
+B83F13A4F686FA705CC12C480F7C67B5D3352A55303F69365C629ABF86A34F109BF0AB2B
+37E1D1981788391C1E456EC70C16C05E7662CC0FB7C5CCDF1C8D606E13AF63A4C5D18180
+CE92A7AEB38F46C313C49E7EF040B4FC309F48B5F74580D32AEB6A2323E9868F73351F11
+0B6036E727BDE18C5BF53680E0F96F2965ACB156A259B5FAD7438110EB69D06D7E32730C
+FB8BDCB28B0134660265CA76C2F551624722CD6247A7C65E5849C56CB279020B9122F7A4
+59EBA834E9A7CA1DAE222F993857B6B2F233DF3369A271A9598BA3EA2B194929E4BA2881
+F6B462B511C17FB2971C8171009E530F10D63FBB3154B9980302E6B8CCDAFCE401392BE0
+8E6EDD2F98A24A2F67C1E5C376E9DB9C650F7157A4BFAD4C0D9C2861150252C936650DEE
+2D2D413187EBEAB39E11214D8E73C9299F7C8CDBD23A5310D6DFA439649C6C8B58B0DA26
+E774CEF70F0BB0B73F35CDAEF7E778DA034E8F7FA0AF0B283BE63C37543E2E52B25EEA3E
+C2233FFB272A2378FDF5021A23BDBD95B1FCF05D312DDE298901A6667F8475E53AAA4F12
+95978DEC42E8FABC60CF555350D6C39DE3AD6A42794D9162CD06CB4DAA8AB566665459A8
+685C5A8F702925522C764065BA6C3FAC21325D5DC3CAF8B309D66E5B0A6E242E6986731F
+789CFAC1E28408ED4A2F879D34331B80C6FD73C8247E36FB79A08E39F3FEE0D2643A6833
+7DE623767928709BCB591FDC0A91F05FF5AB934DFE17ED0D0BC51BE86A74B12EC68BFEAB
+9BC44A1C0EC0C01BA80ECE171696B985A9C49FDBC248713D7F9B44EEB1760249E1242A08
+AAF380599F6085D554C72807CD6CAF831D04EAE195CBDA6B1DFA246BD7DE1B9ECD6CEC68
+F737B9BF07FB33DF29AB0B96010ADDBD16E5C06705CA5B958135FBB56A88AF449CD30794
+D81780C9F50BED14A3DEA5213FF1DD9634B7EE68A899F19EBA934A530CA39FD9236EC90B
+EC032429B83B16FF03B52B6B83BF12A8CAB2D6A99DD7620E932CB905E6559B5ADDF84B35
+1E1E80689B04C718E78D29735A8EF55A1A18B6ADA77EEF421AD834FA80DB4EF5F6DAEFF7
+5E29ABF34AFCC639FE59431658FA9F874ECDF82AE0FE19DE982D15CFA44DBE0E2466ECDA
+3EC75EE5A55B887F3881C1651E2AAE256A10A545732923212F0657C6B5D899F1A87E843B
+5DF7010E8E9715F3878DD707E2BABF76A07B5E6AF4131094E43B2BEE543ECE023DE2FFB0
+014BF7D7508B90ABC6DB0DADFC718262B144CB6ED3291829A67F32C3CAA4AD1D04F9961C
+A0778E1D94485331390637B0A2C503F54E22DF7B1482401409EF94F3257C8529EC201D04
+90597A5F38B0BB157994129138BFF862074268A787C209FE369B1C52B4CB840D67758820
+440EC0902B1622C5B3312C6790230733B014FB9CF5745532DA2ED4D30D04A674D91C89A2
+676D1436D8DC374278CB2461D01DEDDC415E68092B0C0F293972D49717F2989062617639
+43AEE65ABFF0CEDC58D19BECC6649B0146D44D835319E1930CB327458BCE54004549B8C7
+937CAC238FB6549003A7FA0A3336B36E6E32D1A936F85DFDFFAD4AF57A7B6063BEE48AD2
+51DCFB707CAEAC8942C6AB92252B4262826C8C8BE62CB5866F4378DB364F84F775777FE5
+155283514342ED8A44F367631C91A8537C64639C7AB60F428AB573CF85F442D66FFA490E
+6941B9076E35DEE34E89AC429A504D07FB26CE6C1CD6B4166943713783B9BBE510899182
+C0767CEC1B10F7801E59F18A89681D31B59D4A64348CC1746C0C094E2AF9C6429DA17BA6
+BE388D71C6FC2F5D1E9F20D25E4D73BF8940DC37CDC4CC84F992B59C1DEA4BE818E653C4
+3C783E8379143028C566824C6C983E73A418624702B5159EE5CF8E8B154B861C98BA5C72
+4CFD528EE8620CC6E3CFE4EF2E5D4F60BD04A96AD3D7D3F5887FBCEDC8612877A91A0CB3
+EBF481B77D41B54A6B0EECE05053342968622DE41F01DF7EAE198F4FFFD5425AB1E69802
+9119BA7C0DAE823565095F77D6128201214B482C434FE017846406472FB812EE560C4E7E
+4EC35EDD17FA9C78AE915BB6E225BC2815169AE2EBC2F616F2E4F74E176F3964FC2AAA61
+A3DBED35F74825F84421C7E23F53A5121C1B496307045DD10F23FEF288B999C6F7039996
+AB7FF04A08E9E9C04B5A798300364BAFBEE6558D54508F1DBEAA6BFCA4E7CE62468BEAE9
+D22DCA72CA9FA13F82D6D91DB80F4B21322D755033811797AF645A6750E17F825FC222AE
+153229BB115B311E09B127A35FA5A8F0222C70139C4B189858FF24C9261074E393A5BAC8
+B05CC3460E087256289CC27A455BD218276A28BC1DA97A123FAC868B1C7DA8545B373D13
+5B9645380EDE7E17021C755AB34F5ADB5B14B1A0E3F5B0A6ADA0D9E88C8DAE3B53F4EDB8
+13F2AC9181A64BE387F7CFD12586EA9540D3870362C576FFAB38ECF64DDDDE3897C382B1
+6732400FEE6ED3485483DBD24F556A4BEEAB05A664A8B183674B2EA4AB025982D948CADD
+0C4C30273DE16E64388EF43C2E2E1785D095E9164F592BBDFD10F09D11176D31DE49DB9D
+495B912AB7D8FF56AD20DB75D9D65F6DC2B249EE8520647451CB729AA111F3DC99803D2D
+91D017E0E6F69631416E5E039EEFC91C9E3EEA91C4737B8BF42725271FF1BB35F131F5C4
+308B9E84D3EDF3722B5C10B3A5110E30CB31B045FE64F0CEDD747A8FAFCB44BD835826E2
+9C08CDD657D847F5E39BF2E13A3F94A7A0E27D3A3DB734EDE2DBD4FA086BF54E8E8DCBBC
+8E1AAC76B6313C605750A1AC26CBE9405978A92E0755CED6BA2FE74880F878CAC9A2CAAD
+DEEEDCFF154F2199C9FF8BE1A5C3A290B09AA97B5DC497E3757FD3C3CE23FABEFE0DCA36
+3C67BE367229B725B17E102BE486D91C89CF33A68C9FED33EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
View
BIN Inconsolata.tfm
Binary file not shown.
View
BIN Inconsolata.ttf
Binary file not shown.
View
2 Makefile
@@ -9,4 +9,4 @@ master.tex : master.lyx
master.aux : master.tex
pdflatex master.tex
clean:
- rm -f *.tex images/*.eps *.toc *.aux *.dvi *.idx *.lof *.log *.out *.toc
+ rm -f *.tex images/*.eps *.toc *.aux *.dvi *.idx *.lof *.log *.out *.toc *.lol
View
128 T1-WGL4.enc
@@ -0,0 +1,128 @@
+% T1-WGL4.enc
+%
+%
+% This is LaTeX T1 encoding for WGL4 encoded TrueType fonts
+% (e.g. from Windows 95)
+%
+%
+% Note that /hyphen appears twice (for the T1 code points `hyphen' 0x2d
+% and `hyphenchar' 0x7f).
+%
+%
+% LIGKERN space l =: lslash ;
+% LIGKERN space L =: Lslash ;
+% LIGKERN question quoteleft =: questiondown ;
+% LIGKERN exclam quoteleft =: exclamdown ;
+% LIGKERN hyphen hyphen =: endash ;
+% LIGKERN endash hyphen =: emdash ;
+% LIGKERN quoteleft quoteleft =: quotedblleft ;
+% LIGKERN quoteright quoteright =: quotedblright ;
+% LIGKERN comma comma =: quotedblbase ;
+% LIGKERN less less =: guillemotleft ;
+% LIGKERN greater greater =: guillemotright ;
+%
+% LIGKERN f i =: fi ;
+% LIGKERN f l =: fl ;
+% LIGKERN f f =: ff ;
+% LIGKERN ff i =: ffi ;
+% LIGKERN ff l =: ffl ;
+%
+% We blow away kerns to and from spaces (TeX doesn't have a
+% space) and also remove any kerns from the numbers.
+%
+% LIGKERN space {} * ; * {} space ;
+% LIGKERN zero {} * ; * {} zero ;
+% LIGKERN one {} * ; * {} one ;
+% LIGKERN two {} * ; * {} two ;
+% LIGKERN three {} * ; * {} three ;
+% LIGKERN four {} * ; * {} four ;
+% LIGKERN five {} * ; * {} five ;
+% LIGKERN six {} * ; * {} six ;
+% LIGKERN seven {} * ; * {} seven ;
+% LIGKERN eight {} * ; * {} eight ;
+% LIGKERN nine {} * ; * {} nine ;
+
+/T1Encoding [ % now 256 chars follow
+% 0x00
+ /grave /acute /circumflex /tilde
+ /dieresis /hungarumlaut /ring /caron
+ /breve /macron /dotaccent /cedilla
+ /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+% 0x10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft
+ /guillemotright /endash /emdash /compwordmark
+ /perthousandzero /dotlessi /dotlessj /ff
+ /fi /fl /ffi /ffl
+% 0x20
+ /visualspace /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus
+ /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three
+ /four /five /six /seven
+ /eight /nine /colon /semicolon
+ /less /equal /greater /question
+% 0x40
+ /at /A /B /C
+ /D /E /F /G
+ /H /I /J /K
+ /L /M /N /O
+% 0x50
+ /P /Q /R /S
+ /T /U /V /W
+ /X /Y /Z /bracketleft
+ /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c
+ /d /e /f /g
+ /h /i /j /k
+ /l /m /n /o
+% 0x70
+ /p /q /r /s
+ /t /u /v /w
+ /x /y /z /braceleft
+ /bar /braceright /asciitilde /hyphen
+% 0x80
+ /Abreve /Aogonek /Cacute /Ccaron
+ /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute
+ /Ncaron /Eng /Odblacute /Racute
+% 0x90
+ /Rcaron /Sacute /Scaron /Scedilla
+ /Tcaron /Tcedilla /Udblacute /Uring
+ /Ydieresis /Zacute /Zcaron /Zdot
+ /IJ /Idot /dmacron /section
+% 0xA0
+ /abreve /aogonek /cacute /ccaron
+ /dcaron /ecaron /eogonek /gbreve
+ /lacute /lcaron /lslash /nacute
+ /ncaron /eng /odblacute /racute
+% 0xB0
+ /rcaron /sacute /scaron /scedilla
+ /tcaron /tcedilla /udblacute /uring
+ /ydieresis /zacute /zcaron /zdot
+ /ij /exclamdown /questiondown /sterling
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde
+ /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /Germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /oe
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /germandbls
+] def
+
+% eof
View
8 T1Inconsolata.fd
@@ -0,0 +1,8 @@
+\ProvidesFile{t1Inconsolata.fd}[Inconsolata Font]
+\DeclareFontFamily{T1}{Inconsolata}{}
+\DeclareFontShape{T1}{Inconsolata}{m}{n}{<-> Inconsolata}{}
+\DeclareFontShape{T1}{Inconsolata}{b}{n}{<-> Inconsolata}{}
+\DeclareFontShape{T1}{Inconsolata}{bx}{n}{<-> Inconsolata}{}
+\DeclareFontShape{T1}{Inconsolata}{m}{it}{<-> Inconsolata}{}
+\DeclareFontShape{T1}{Inconsolata}{b}{it}{<-> Inconsolata}{}
+\DeclareFontShape{T1}{Inconsolata}{bx}{it}{<-> Inconsolata}{}
View
621 chap-JPA.lyx
@@ -1,8 +1,9 @@
-#LyX 1.5.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 276
+#LyX 1.6.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 345
\begin_document
\begin_header
\textclass book
+\use_default_options false
\language english
\inputencoding auto
\font_roman default
@@ -13,9 +14,11 @@
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
+
\graphics default
\paperfontsize default
\spacing single
+\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
@@ -48,9 +51,14 @@ The Java Persistence API
\begin_inset Foot
status collapsed
-\begin_layout Standard
-\begin_inset LatexCommand htmlurl
-target "http://java.sun.com/javaee/overview/faq/persistence.jsp"
+\begin_layout Plain Layout
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://java.sun.com/javaee/overview/faq/persistence.jsp
+\end_layout
\end_inset
@@ -60,8 +68,12 @@ target "http://java.sun.com/javaee/overview/faq/persistence.jsp"
\end_inset
, or JPA
-\begin_inset LatexCommand index
-name "JPA"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+JPA
+\end_layout
\end_inset
@@ -71,46 +83,70 @@ name "JPA"
JPA was developed as part of the EJB3 specification, with the goal of simplifyi
ng the persistence model.
Prior versions had used the Container Managed Persistence (CMP
-\begin_inset LatexCommand index
-name "CMP"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+CMP
+\end_layout
\end_inset
) framework, which required many boilerplate artifacts in the form of interfaces
and XML descriptors.
As part of the overarching theme of EJB3 to simplify and use configuration
by convention, JPA uses annotations
-\begin_inset LatexCommand index
-name "annotations"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+annotations
+\end_layout
\end_inset
heavily, while allowing for targetted overrides of behavior via XML descriptors.
JPA also does away with many of the interfaces used in CMP and provides
a single EntityManager
-\begin_inset LatexCommand index
-name "EntityManager"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+EntityManager
+\end_layout
\end_inset
object for all persistence operations.
An additional benefit is that JPA was designed so that it could be used
both inside and outside of the Enterprise container, and several projects
(Hibernate
-\begin_inset LatexCommand index
-name "Hibernate"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+Hibernate
+\end_layout
\end_inset
, TopLink
-\begin_inset LatexCommand index
-name "TopLink"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+TopLink
+\end_layout
\end_inset
, JPOX
-\begin_inset LatexCommand index
-name "JPOX"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+JPOX
+\end_layout
\end_inset
@@ -119,7 +155,8 @@ name "JPOX"
\begin_layout Standard
As we've seen in chapter
-\begin_inset LatexCommand ref
+\begin_inset CommandInset ref
+LatexCommand ref
reference "cha:mapper_and_record"
\end_inset
@@ -143,7 +180,7 @@ JPA gives you more flexibility with complex and/or large schemas.
\begin_inset Note Note
status open
-\begin_layout Standard
+\begin_layout Plain Layout
TODO: is it Record or Mapper?
\end_layout
@@ -164,7 +201,7 @@ accessed objects in memory so that you avoid hitting the database entirely
\begin_inset Note Note
status open
-\begin_layout Standard
+\begin_layout Plain Layout
May need to remove this if it's not true by printing
\end_layout
@@ -184,8 +221,12 @@ In order to provide a concrete example to build on while learning how to
integrate JPA, we'll be building a small Lift app to manage a library of
books.
The completed example is available under the Lift Git
-\begin_inset LatexCommand index
-name "Git"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+Git
+\end_layout
\end_inset
@@ -199,7 +240,8 @@ JPADemo
.
Basic coverage of the JPA operations is in section
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "sec:JPA-Examples"
\end_inset
@@ -210,15 +252,25 @@ reference "sec:JPA-Examples"
\begin_inset Foot
status collapsed
-\begin_layout Standard
-\begin_inset LatexCommand htmlurl
-target "http://java.sun.com/developer/technicalArticles/J2EE/jpa/"
+\begin_layout Plain Layout
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://java.sun.com/developer/technicalArticles/J2EE/jpa/
+\end_layout
\end_inset
,
-\begin_inset LatexCommand htmlurl
-target "http://www.jpox.org/docs/1_2/tutorials/jpa_tutorial.html"
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://www.jpox.org/docs/1_2/tutorials/jpa_tutorial.html
+\end_layout
\end_inset
@@ -229,16 +281,20 @@ target "http://www.jpox.org/docs/1_2/tutorials/jpa_tutorial.html"
.
Our first step is to set up a master project
-\begin_inset LatexCommand index
-name "master project"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+master project
+\end_layout
\end_inset
for Maven
\begin_inset Note Note
status open
-\begin_layout Standard
+\begin_layout Plain Layout
Will the Maven chapter have a section on master/module projects?
\end_layout
@@ -248,14 +304,19 @@ Will the Maven chapter have a section on master/module projects?
This project will have two modules under it, one for the JPA library and
one for the Lift application.
The only thing we actually need for the master project is the pom.xml
-\begin_inset LatexCommand index
-name "pom.xml"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+pom.xml
+\end_layout
\end_inset
.
The complete pom.xml is shown in section
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "lst:JPA-Master-pom.xml"
\end_inset
@@ -271,16 +332,20 @@ reference "lst:JPA-Master-pom.xml"
The master pom.xml sets up some basic dependencies and plugin configurations
which the modules will inherit.
Our next step will be to create the JPA module using an archetype
-\begin_inset LatexCommand index
-name "archetype"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+archetype
+\end_layout
\end_inset
for Maven to create the scaffolding of our project
\begin_inset Note Note
status open
-\begin_layout Standard
+\begin_layout Plain Layout
I need to get the JPA archetype set up
\end_layout
@@ -306,8 +371,12 @@ Scala JPA
\begin_layout Subsection
Entity Classes
-\begin_inset LatexCommand index
-name "entity class"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+entity class
+\end_layout
\end_inset
@@ -319,7 +388,8 @@ The main components of a JPA library are the entity classes that comprise
your data model.
For our example application we need two primary entities: Author and Book.
Let's take a look at the Author class first, shown in listing
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "lst:Author.scala"
\end_inset
@@ -337,7 +407,7 @@ reference "lst:Author.scala"
\begin_inset Note Note
status open
-\begin_layout Standard
+\begin_layout Plain Layout
I think this changes in 2.8
\end_layout
@@ -353,9 +423,14 @@ I think this changes in 2.8
\begin_inset Foot
status open
-\begin_layout Standard
-\begin_inset LatexCommand htmlurl
-target "https://lampsvn.epfl.ch/trac/scala/ticket/294"
+\begin_layout Plain Layout
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+https://lampsvn.epfl.ch/trac/scala/ticket/294
+\end_layout
\end_inset
@@ -369,14 +444,19 @@ target "https://lampsvn.epfl.ch/trac/scala/ticket/294"
\end_layout
\begin_layout Subsection
-\begin_inset LatexCommand label
+\begin_inset CommandInset label
+LatexCommand label
name "sub:Using-the-orm.xml"
\end_inset
Using the orm.xml
-\begin_inset LatexCommand index
-name "orm.xml"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+orm.xml
+\end_layout
\end_inset
@@ -391,15 +471,20 @@ As we stated in the last section, there are some instances where the Scala
column names, etc) should be separate from code.
Because of that, JPA allows you to specify an external mapping descriptor
to define and/or override the mappings for your entity classes
-\begin_inset LatexCommand index
-name "entity classes"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+entity classes
+\end_layout
\end_inset
.
The basic orm.xml file starts with the DTD type declaration, as shown in
listing
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "lst:orm.xml"
\end_inset
@@ -412,8 +497,13 @@ reference "lst:orm.xml"
Putting them in the orm.xml allows us to modify them without requiring a
recompile.
The complete XML Schema Definition can be found at
-\begin_inset LatexCommand htmlurl
-target "http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://java.sun.com/xml/ns/persistence/orm_1_0.xsd
+\end_layout
\end_inset
@@ -427,7 +517,8 @@ In this case we have used the orm.xml file to augment our entity classes.
Suppose we wished to change the column name for the Author's name property.
We can add (per the XSD) a section to the Author entity element as shown
in listing
-\begin_inset LatexCommand ref
+\begin_inset CommandInset ref
+LatexCommand ref
reference "lst:JPA-Author-override"
\end_inset
@@ -445,8 +536,12 @@ attribute-override
This gives us an extremely powerful method for controlling our schema mapping
outside of the source code.
We can also add named queries
-\begin_inset LatexCommand index
-name "named queries"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+named queries
+\end_layout
\end_inset
@@ -456,16 +551,17 @@ name "named queries"
\begin_layout Standard
\begin_inset listings
-lstparams "basicstyle={\footnotesize},float,frame=single,language=XML"
+lstparams "float,language=XML"
inline false
status open
-\begin_layout Standard
+\begin_layout Plain Layout
\begin_inset Caption
-\begin_layout Standard
-\begin_inset LatexCommand label
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
name "lst:JPA-Author-override"
\end_inset
@@ -478,37 +574,37 @@ Author override
<entity class="Author">
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
<named-query name="findAllAuthors">
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
<query><![CDATA[from Author a order by a.name]]></query>
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
</named-query>
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
<attribute-override name="name">
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
<column name="author_name" length="30" />
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
</attribute-override>
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
</entity>
\end_layout
@@ -537,7 +633,8 @@ persist
merge
\family default
methods (section
-\begin_inset LatexCommand ref
+\begin_inset CommandInset ref
+LatexCommand ref
reference "sub:Persisting,-merging-and-removing"
\end_inset
@@ -579,7 +676,7 @@ JPA can handle any Java primitive type, their corresponding Object versions
\begin_inset Foot
status collapsed
-\begin_layout Standard
+\begin_layout Plain Layout
It can technically handle more; see the JPA spec, section 2.1.1 for details
\end_layout
@@ -589,8 +686,12 @@ It can technically handle more; see the JPA spec, section 2.1.1 for details
Occasionally, though, you may have a requirement for a type that doesn't
fit directly with those specifications.
One example in particular would be Scala's enumerations
-\begin_inset LatexCommand index
-name "enumerations"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+enumerations
+\end_layout
\end_inset
@@ -612,7 +713,8 @@ Java
We begin by implementing a few helper classes besides the Genre enumeration
itself.
First, we define an Enumv trait, shown in listing
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "lst:Enumv-Trait"
\end_inset
@@ -640,7 +742,8 @@ valueOf
In order to actually convert the Enumeration class into the proper database
type (String, Int, etc), we need to implement the Hibernate UserType interface,
shown in listing
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "lst:EnumvType"
\end_inset
@@ -707,16 +810,17 @@ et
\begin_layout Standard
\begin_inset listings
-lstparams "basicstyle={\scriptsize},breaklines=true,firstline=3,float,frame=single,numbers=left,numberstyle={\tiny}"
+lstparams "breaklines=true,firstline=3,float,numbers=left,numberstyle={\tiny}"
inline false
status open
-\begin_layout Standard
+\begin_layout Plain Layout
\begin_inset Caption
-\begin_layout Standard
-\begin_inset LatexCommand label
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
name "lst:Genre-and-GenreType"
\end_inset
@@ -729,45 +833,45 @@ Genre and GenreType
package com.foo.jpaweb.model
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
object Genre extends Enumeration with Enumv {
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
val Mystery = Value("Mystery", "Mystery")
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
val Science = Value("Science", "Science")
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
val Theater = Value("Theater", "Drama literature")
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
// more values here...
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
class GenreType extends EnumvType(Genre) {}
\end_layout
@@ -780,7 +884,8 @@ class GenreType extends EnumvType(Genre) {}
\begin_layout Standard
Finally, the Genre object and the associated GenreType is shown in listing
-\begin_inset LatexCommand ref
+\begin_inset CommandInset ref
+LatexCommand ref
reference "lst:Genre-and-GenreType"
\end_inset
@@ -795,7 +900,8 @@ reference "lst:Genre-and-GenreType"
var
\family default
and annotate it with the @Type annotation, as shown in listing
-\begin_inset LatexCommand ref
+\begin_inset CommandInset ref
+LatexCommand ref
reference "lst:Using-the-@Type"
\end_inset
@@ -814,16 +920,17 @@ unknown
\begin_layout Standard
\begin_inset listings
-lstparams "basicstyle={\scriptsize},float,frame=single"
+lstparams "float"
inline false
status open
-\begin_layout Standard
+\begin_layout Plain Layout
\begin_inset Caption
-\begin_layout Standard
-\begin_inset LatexCommand label
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
name "lst:Using-the-@Type"
\end_inset
@@ -836,7 +943,7 @@ Using the @Type annotation
@Type{val `type` = "com.foo.jpaweb.model.GenreType"}
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
var genre : Genre.Value = Genre.unknown
\end_layout
@@ -851,7 +958,8 @@ Now that we have our objects defined, let's start using them.
\end_layout
\begin_layout Section
-\begin_inset LatexCommand label
+\begin_inset CommandInset label
+LatexCommand label
name "sec:Obtaining-an-EM"
\end_inset
@@ -887,15 +995,19 @@ Fortunately for us, Lift provides just such a mechanism.
\begin_inset Foot
status open
-\begin_layout Standard
+\begin_layout Plain Layout
Notably, S.addAround with the LoanWrapper
\end_layout
\end_inset
, but for now we're going to focus on just one: the RequestVar
-\begin_inset LatexCommand index
-name "RequestVar"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+RequestVar
+\end_layout
\end_inset
@@ -910,7 +1022,7 @@ name "RequestVar"
\begin_inset Note Note
status open
-\begin_layout Standard
+\begin_layout Plain Layout
TODO: cross-ref
\end_layout
@@ -925,13 +1037,15 @@ The initial setup of the entity manager is done through the RequestVar's
constructor.
We define a RequestVar as an object (as opposed to a class) as shown in
listing
-\begin_inset LatexCommand ref
+\begin_inset CommandInset ref
+LatexCommand ref
reference "lst:Setting-up-EM"
\end_inset
(the full listing is in section
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "lst:ScalaEntityManager"
\end_inset
@@ -940,7 +1054,8 @@ reference "lst:ScalaEntityManager"
In our example we're using an abstraction of the EntityManager (and Query)
interfaces as a template for our concrete implementation; we'll cover these
in section
-\begin_inset LatexCommand vref
+\begin_inset CommandInset ref
+LatexCommand vref
reference "sec:ScalaEntityManager-and-ScalaQuery"
\end_inset
@@ -957,16 +1072,17 @@ reference "sec:ScalaEntityManager-and-ScalaQuery"
\begin_layout Standard
\begin_inset listings
-lstparams "basicstyle={\scriptsize},breaklines=true,firstline=1,float,frame=single,lastline=8,numbers=left,numberstyle={\tiny}"
+lstparams "breaklines=true,firstline=1,float,lastline=8,numbers=left,numberstyle={\tiny}"
inline false
status open
-\begin_layout Standard
+\begin_layout Plain Layout
\begin_inset Caption
-\begin_layout Standard
-\begin_inset LatexCommand label
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
name "lst:Setting-up-EM"
\end_inset
@@ -979,41 +1095,41 @@ Setting up an EntityManager via RequestVar
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
abstract class ScalaEntityManager(val persistanceName: String) {
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
// The concrete impl should provide these methods
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
protected def openEM () : EntityManager
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
protected def closeEM (em : EntityManager)
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
private object emVar extends RequestVar(openEM()) {
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
override def cleanupFunc : Can[() => Unit]= Full(() => closeEM(this.is))
\end_layout
-\begin_layout Standard
+\begin_layout Plain Layout
}
\end_layout
@@ -1031,8 +1147,12 @@ Now that we've defined the mechanism for setting up and tearing down our
\begin_layout Enumerate
Construct the EntityManagerFactory
-\begin_inset LatexCommand index
-name "EntityManagerFactory"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+EntityManagerFactory
+\end_layout
\end_inset
@@ -1041,8 +1161,12 @@ name "EntityManagerFactory"
\begin_layout Enumerate
Obtain an EntityManager via JNDI
-\begin_inset LatexCommand index
-name "JNDI"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+JNDI
+\end_layout
\end_inset
@@ -1052,8 +1176,12 @@ name "JNDI"
\begin_layout Standard
Of these two, JNDI offers a cleaner approach from the standpoint of deployment.
Using JNDI acts as a form of IoC
-\begin_inset LatexCommand index
-name "Inversion of Control"
+\begin_inset Index
+status collapsed
+
+\begin_layout Plain Layout
+Inversion of Control
+\end_layout
\end_inset
@@ -1072,7 +1200,8 @@ Creating a factory directly