pax_global_header00006660000000000000000000000064141462440550014517gustar00rootroot0000000000000052 comment=936795385c190202e0cac442b593f92abf2ae9dc jp2a-1.1.1/000077500000000000000000000000001414624405500123535ustar00rootroot00000000000000jp2a-1.1.1/.dockerignore000066400000000000000000000003031414624405500150230ustar00rootroot00000000000000.gitignore .github Doxyfile.in README.md tests aclocal.m4 autom4te.cache compile config.h config.h.in config.log config.status configure depcomp install-sh Makefile Makefile.in missing stamp-h1 jp2a-1.1.1/.github/000077500000000000000000000000001414624405500137135ustar00rootroot00000000000000jp2a-1.1.1/.github/jp2a.jpg000066400000000000000000000370421414624405500152570ustar00rootroot00000000000000JFIFHHCreated with GIMPC     C  )   e]e3[9 HqgV߻cinI%Pje= ~5 6s۲6=Nc:rR.Vv&>ss&fi[;oz :WTU{@v+Y%i᎜깦37Ex~Q?E{/%ྂ]p nmUpe~ںlޢk.jTh\l _ęEéқ;7}+g)Uӭ{ ьz,X?#W$c9is`q3}>\Q􇍙6sh㲊'CyDm.Fs>+v>^\<_{ c.2@IlUIk[Z?=7lrP9͌/>ꈋzm[itf})68gO% *'!7#.2@IlUYo]cNr&r5݋;IS6`UyG;WpkR^Γ6 z @~}$|r/_\: ^'?VșϢ䍿\V6TTWIAީͳ{6w%.Psk[sCĩ&R)8ϴ?V屾[eSy~8F ܘ9%t:8+Uɹk[[d;<]%tz|\љAe︔hDK[QF͞}RUd:-{ d2*wʲgڒ K?5rO~ɃrQѯE㍿|\&w?~5 牚RXGb:/X:*V%Qt:ZuҰ^c^xWꗻ9KvzDK5-vչ<-w.^B}NOO:Dp$Yخ r67xʘX:4|uw6lढ़=ά'cWu{'w3jTNK[\:׎72aNPGSZ: dQjzT0U۵v୮d117 4560@!"$&2幸kJ?' -+c?~i^>#aP_=,CQX V1Mox `XM`Ckp' 'Cl#Q|*i,ٗU%*V yjZkohvd+T9ɤX5ډ$Q*bjkkEV7Vv얲`R+ ZhHG:E"ˌHQ/k.?#|U!jj:>ۋh%WnKVUSߚ7EoXR.S?" R垗R(/~SlHca$\"(EK=7?rp*^g3q h[zuk[b96v-X{%$X934J*2`ʑ'n&]>t?^8Y#=77r0*~g3qwexO![ahe.\ QmVkj'[~F(DVΟ#-Hf2"ש|&c ʋ- =7/r0*~g3qwoe>#x y0\ɿ^-T+.g1fn%*L!"LrM܌ L={je0 cx-|B ErunҼ«ֈ١lڡ˄ȊrM| L{_<HlGsq E"}eq^(WIyY,}{Ml Ǹy\SIuILeIqTcVYLE& < LErWjz`ڂȘ &@W}[zn>U=g6ɶI1al"#֒P, p\Q%J$D,Cw*1r[0k[Oq 8ș,*ܳq6~S=6q0)JM8k<`h=xi'6ziIPDcc_6B%7]d3 OAw3&mŵ3r,]M\~߬$u hPFYT$PBE"PB%WiH:_KfDzDr6pRsp(1J[)w_LtGᮑ^tB&^VutM@BP]1V(.TW kPE” Yrͳ/JT"*K RQ2,E0:-cm4hohY GR(]N鿽SI:^B٭ cY)#)*-ٞS G©oqQ:~_8PԚ kz$iC!Z٩c-3LRt"sTuw-5,rIfyU2:qDU_<"h$V Z[I-Қ!ӊrWt%=3# 9 1Zpe31yry +vL('c#U ,>'PyaV'17 RlcIXYTYa=[I5DZAhfmŚ2DdE=t2>#pO 5,srlK"DE9ȱazTg71Srn^gLDDu* 5eX_T㱙_ؑɮag+GgFv\mㄒNm oYB9k(FBGDئSQ鱓PK0å"VHHLOC~r}HPmK$dq4R1íR|1v$s2kYܧ+[``:7+'Mb|^IS*QvbC>&X}aYBq2cZCa4 )l1RL1lQ/1v$s2kYd*l1Q8%bʨLCyAPya^XIbO\W|F%•=1M&h<ЅTa]TKQo To{`?ĎfL,gY*;KC28"B5U*^Xr+IW+ѕ %qHVp\6)h +cV&))pr$A(Nvʰ1Jzwm%)AXW#tս;GX~12X#%$j)(Jw*.lsg@rW GFg+<[Vhvl9sMWE !1AQq245ar "R#0B3@Sb?g/+ݮ(1;{u8yz)ӣFVI6jS8}J6ƿ_a!!% =6|ʛ(Ξ }806w|,lP.aA-J Oqޭim%J4cӡ½T3f*:G~BCA4e8XX\!B8Mh|ѲU>a kkIͷ8K2fe x"FeJy}I=2;5'i5fC4Jd:fsd$PXZ>s.V#2Ҹxq18+Qo8W[tw. Hepni:Xi۞q¾e֯u>vDDL["hH>gZSm~I,IZY 4 V\ lZ[ARZC183; /oSiĄ,hWֻ$z/#j\TfCYa;s8vHJ;IaQ~[`INu6j G.7,ۉu>GGnٟjc#o?[WgB90Sg#EQ^0a8:;,0k'Z[Su`L,ÆOψx~iU:5C*Sm.Vq^U+_4 ]jeOA~tvQf084raq1Ikk?+KCZͿ2HxBqFzZҷ(i^D**ZۊK\T ԿmVt_ Hy_nsSSh^LucE;|rDaGxCÊeRĩ ,1j}U]c0!S3= Vt_ Hy_nsSShnLu48@u,,-=7q:{}y>ѾҙS2h2Vtls0 _r6#w>eDոg430%hg'wiBWucvD݄|C;U9旺5AmsNrhP2qtd=QR1 `ppLJ8q%ѱMB-D/_^uy>ѾҩS2h2񎻣]smȜwhNمyCIU^(`yW{q,yJ{H|_I=&BEMIRem]|C9;U9 ;iӷ_mLBi_-/!ƓlMS$F۝Z@h6U*jZε]P0}5j {4 V+g $[_-ǩC>880t,E: +CvXS0ݞ sJvysOuMA_t[Kp=|E:vkX(UĿ.5fK(7KЇ& =XX-Ɩoɳ+HSiࡽe{Jc_Ny u覫`L Sn8 %ydW%;̿7淺Ɇb& u57h:,ؙ$%C숌#׋6rq+ƈqK''pJRAz y.Ћya!x[ow0x[ y?o';6oM)W >dś ?tf}wl*<ʟ8oU8n"!*W ]H BuXKhATe+Apbp.-Y]Ut Qޚ-15\`RH*2#:ӑ=rӉq[6s*~> 0̸ umOO:ME;LgoHa 鯛]պ X9|טיSS p CV:-ʹtU54.շ?<7=2rm)F2mycW4]uw' M:oK_^eOKO7 *|AUdbnBa. 5IʍAmaWvRlXM+LJmɴ376 tw`96)Ffשׁ3T4Mn_4>L UVq|*~>\J|῰aS<.y/de4O|zFg+9F#z]S'8?U{4;S/G`ǔ|G]2}UBpi64%͗di(`pk̩xIq O85$bA2.P4+h$Cu ePnBOb [Y&R6ߍ/N*;>ިۃ_\I;+ IhFMl!ؐ0 >!>pԵBQ4XXLA/KK;Ci b)%, +7@ƋƋGy)msg~cbK2NQ Fp{E9|eBl;n pC@:3! itUdFueJzECp C/#H[;3OjݍO8I |!*3Ue ?ՇGj-59 |B5L- p(F#s8jqH% fʐ?)1!QAq a0@?!zH+w%>[rA;;Pa; 0cp5a, I :"ko`o@.+˛ D0[)ez-[ }^W E]N.)_lHX)U| 'طN+otd h${-=VC-݈'|+\LظN|cgLmṕܵė1,?aC)WRJ rv! S̺͂jK~2r%OFn0A帙;ORݭ 꽯;Xvٍ!xLjJaQDVG)8VLJ;sv}/-#M(JY@UkZ4$+#Q'vaƲfД4.Ǡ/c}5Js[MG~C Kq2v+! (V(vU6 3ma:z]ۄUAVq7ߺ(QHT7Li]^A5u帙;O!yfų_ J f LM`aN|2$FO=}+yn&N]`3Sa綺 6'|ؘ#x< qKhb.bվ}f7'i 3QAoJuc%[vNBOx{0"+6qoJ>^#йKtсx- ;9, 7v:mcb.g~i0;i@&l΂ۦڞ ^\F|Gm] q)nN?͝a>7~$f'Ԩ5 xâor.uB%iQD[\N4zq6*d`:\( } ;o'i/#Ogß(D w* {t%2S|x7? 1 e?x4 x2@զpH TF ) m~?) 0et7P@hgJDErڠVk $"p  XE$;OGm+:0\ OhR<b+d (!1AQ q0@a?6w4чdJer@_n`F^"w/Gabm'hZqYir.Q.E Llݕa_UBq{p{#'Ƿsq(Z?A#YpfΏQEOyjVu ?3lհv^p#5Z+ )IO"*bY,B1OPS&X",*"@[(X X?]1вRrFdOG#]V\RnGW6hLbܖ)X΅nPFd I2ILsAf%R|n*,bR, 7`&ۧl/ݢ^x)!%JmꧯC5H2}}Ճfc(RbHnReG2@K'PY !q4J- l2ܔ,n{{_磊>p3B)<49y#EfDK#2<ޗ}ՃPg$7t Z4@eY`P.-HFw{L';$!tʛ((2쫢!7Sy))ݩnXE7Q{0PV\$iAԏ@j}}#ft7Vw HFe$FZA!F3fAHaL;zs}BOr@VnUn-PS%BYW)0[Q$KvH{C=}ǫ'4BΌ`8K{IڰtTWlW(*֌CiuheXQ科ƀX (l UJحDan$ b_ !D@.wg*+kL(}}XHDxBxacTk =~հJS³Kʻ\#+n;Y @(>fgT8o9 އCw01hO42j5X -E5N V)j CVJk +R9th0`.O(\ʎ]}֠+AB<C .Y`e8 W>vMBATT2f[= yǕcTt `E5<:6P2*p[(ʎ7|X|4Tg蓰 T]UYix@Q L$7ZJ+kNSwVZ'\AARGTנҒ,N!t`=WW0R%&AZf\!\4;ˀ>_Yf'P3X;UHԆdhW_7\rQG+r$Tt(l:7jVXr(v$b.#q.7* ~VT6. $/"`1"L)0Б_M z[g(/ꊊGU1d 4]m'hH@_u-֪$v[,XS+EiJI ;ԷL":`(!1AQaq 0@?j"Çk0e^UzA;%C|g(J8(M S'\%SiSY Ǖ Y9W3|eB-ܢyNމ#ur^-Z!*tw.bZM6FR,X.t|2EQ0`mA#ܠ6]..V׷xpۖ3EdmNՉF%4Uvc45.CҤ믏V Ty*f-=o[R;9=x(@t|Ae!̷I'DZ@gHavD.i0甎?ǀ @A}ej+98u*i|KH!@fz@8W6~NòZz3)۶k 5פ&<ύ@A<χϏP 0lT ||x;:5!~Y%zBp?GTvk?wY nPת`<Q T}UGg1[ސb[$SHJZR./%r qתz?<iuY.p5Qø88y>=R jmNu g0 Y @Fr^C-a40SA*&,>ZG3W[VL 7ix fa>*C%jz]qL/4h#HMˍ?'ǪK\WqCF[|JJkMBh5%9#pjqk5Zbr%B]KbCcj Fҁ@h^+ _zFkyxuIsW`8_;,fd^ϢM{FjF o)bPL,o5z}^T_($P[f+ -r'PÌ*5z%5V1,J=&1 [YJN5r[& <[/X69葕Ut ً_!ǂ<`jvgTVypRwY%i~`$ȧ0i ᨰ39AN9tUkC143jhdgWΧ((_ yQyaG El|F5;3ĢsUMwQH %ݦSȔ=$D Zs> [f~@ ȻJPcI)H Z%&z'/঱\T__4D_/x7b|P=RrAЀ{, $y~R~^l`-;Hg/op@x+ u gq^'Rye??Ϙr+Vfxu/nTp%&=.zs}W _涬榃@$yi gjp2a-1.1.1/.github/workflows/000077500000000000000000000000001414624405500157505ustar00rootroot00000000000000jp2a-1.1.1/.github/workflows/full-check.yml000066400000000000000000000015361414624405500205150ustar00rootroot00000000000000# Version 20200921, by Eriberto Mota, modified by Christoph Raitzig name: full-check on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install_dependencies run: sudo apt install libjpeg-dev libpng-dev libcurl4-gnutls-dev libncurses5-dev autoconf-archive pkg-config - name: first_build run: | ./autogen.sh ./configure make sudo make install sudo make uninstall make distclean - name: second_build run: | ./autogen.sh ./configure make sudo make install - name: run_program run: | TERM=xterm-256color jp2a --colors .github/jp2a.jpg TERM=xterm-256color jp2a --background=light -b -f -x -y --colors .github/jp2a.jpg jp2a-1.1.1/.github/workflows/publish-docker-image.yml000066400000000000000000000024011414624405500224630ustar00rootroot00000000000000name: Publish Docker image on Docker Hub on: release: types: [published] jobs: push_to_registry: name: Push Docker image to Docker Hub runs-on: ubuntu-latest steps: - name: Check out the repo uses: actions/checkout@v2 - name: Log in to Docker Hub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v1 with: platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v3 with: images: talinx/jp2a - name: Build and push uses: docker/build-push-action@v2 with: builder: ${{ steps.buildx.outputs.name }} context: . platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} jp2a-1.1.1/.gitignore000066400000000000000000000003061414624405500143420ustar00rootroot00000000000000*.swp *.o Makefile Makefile.in aclocal.m4 autom4te.cache compile config.h config.h.in config.log config.status configure depcomp install-sh missing src/.deps src/jp2a stamp-h1 Doxyfile doxygen-doc/ jp2a-1.1.1/AUTHORS000066400000000000000000000002551414624405500134250ustar00rootroot00000000000000jp2a is written by Christian Stigen Larsen and Christoph Raitzig This program uses dynamically linked libraries from other authors. For an overview, see the file LICENSES. jp2a-1.1.1/BUGS000066400000000000000000000015441414624405500130420ustar00rootroot00000000000000TODO - What about making a Windows installer? - What about making a small GUI for windows? If run, open a file browser, then convert and display result in notepad, or internet explorer. - About process_scanline, it might be much better (clearer, faster) to pass a function pointer to the read pixels algorithm, so we don't have to do all those "if"s in the innerloop. Might also be slower, though, because of the increased stack pushing and popping. - Check j2pa --color ~/tmp/cola.jpg, should not get blue color there, because we are using grayscale colors! - Consider using Bresenham scaling (search for "Image scanling with Bresenham" on DDJ.com) - Consider using other libs for image conversions, e.g. would be nice to read GIF. (See gdlib.) BUGS - Floating-point calculation (and rounding) is not 100% equal from compiler to compiler. Try to fix this. jp2a-1.1.1/COPYING000066400000000000000000000431221414624405500134100ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. jp2a-1.1.1/ChangeLog000066400000000000000000000165451414624405500141400ustar00rootroot00000000000000CHANGES SINCE 1.1.1 - Fix images with very high aspect ratio, e.g. 3000:1 CHANGES SINCE 1.1.0 - support for PNG images - support for HTML (Living Standard) additionally to XHTML - (optional) support for other character encodings than ASCII CHANGES SINCE 1.0.9 - support for true color and 256 color palette output for terminals - support for bash completion CHANGES SINCE 1.0.8 - Fix images with very small height CHANGES SINCE 1.0.7 - Moved repository over to GitHub and made some corresponding changes - Reverted code to version 1.0.6 because of unfinished changes that didn't work. CHANGES SINCE 1.0.6 (svnversion 460) - Internal code changes for resizing. - Renamed `make test' to `make check'. - Some missing function signatures were added. - Using C99 keyword `restrict' in some places. CHANGES SINCE 1.0.5 (svnversion 452) - Support for GCC 2.95.4 (old C compilers in general) CHANGES SINCE 1.0.4 (svnversion 445) - Fixed problem with --invert / --background=light / --background=dark with HTML output. - Updated configure script from autoconf 2.59 to 2.60 CHANGES SINCE 1.0.3 (svnversion 440) - HTML output no longer uses the ' entity. CHANGES SINCE 1.0.2 (svnversion 432) - Added option --html-no-bold to set non-bold output. - Added option to --fill ANSI background colors. - Option --html-fill is now same as --fill and will be phased out. - Default HTML font changed from courier new to courier. - HTML output always uses
 tag.

CHANGES SINCE 1.0.1 (svnversion 427)
- Using span- instead of b-tags in HTML output.

CHANGES SINCE 1.0.0 (svnversion 421)
- Added option --html-title=...
- Added option --html-raw

CHANGES SINCE 0.9.22
- License changed from "GPL v2 or later" to "GPL v2".  This is just because
  I want to review the v3 license before deciding to apply it to jp2a, as it
  might require me to add things to the program.
- Minor code changes (in image.c)
- Distribution now also contains HTML manual pages for systems that do not support UNIX man.
- Version bumped to 1.0.0 (stable)

CHANGES SINCE 0.9.21 (rev. 412)
- Text color output is a bit more colorful.
- HTML-output is now Firefox-friendly.
- Added --html-fill to enable/disable background colors on HTML output.
- Options --background=light or =dark now affects HTML output background.

CHANGES SINCE 0.9.20
- Added color output for text (ANSI colors) and HTML (CSS colors).
- Changed default HTML fontsize from 4 to 8 pt.
- Fixed a bug that produced incorrect output when using --output and --html.
- Fixed a bug that gave incorret --term-fit when vieweing multiple files.

CHANGES SINCE 0.9.19
- A bash script is used for testing now.
- The tests were updated to use --width=78 (the old default) where appropriate.
- Cygwin support was added.
- term.h is now also sought in ncurses/term.h (for Cygwin support).
- The help text was shrunk.

CHANGES SINCE 0.9.18
- Default running mode is now "jp2a --term-fit" if you have --enable-termlib (which is also default).
- New options --term-fit, --term-width, --term-height to automatically fit image to terminal display.
- New options --background=dark and --background=light so you don't have to bother with --invert.
- Much better output quality as all source pixels are now read.
- Configure now accepts --enable-termlib (default) or --disable-termlib.
- Bugfix: In some cases, the last pixel(s) of the source images were not read.
- Will now gracefully exit if jpeg color precision is other than 8 bits per channels.

CHANGES SINCE 0.9.17
- Bugfix:  No more crashes when reading non-JPEG files on Windows.
- New option: --output=file, send output to given file
- New options: -x for shorthand --flipx, and -y for --flipy.
- New options: --red, --green, --blue.
- More natural RGB to Grayscale calculation.
- Updated manuals.
- Cleaner code.
- Faster code (most evident in large images).

CHANGES SINCE 0.9.16
- New feature: Download-support on win32 binary builds.
- Added option to --clear screen before writing each output image.
- Updated tests for win32 cygwin environment (but still incomplete).

CHANGES SINCE 0.9.15 AND 0.9.14 
- New feature:  Now follow HTTP redirects when downloading.
- Cleaner and faster code.
- Cleaner package organization.
- Improved `make test'.
- Binary is larger becase of debug-symbols; remove with `make install-strip'.
- Added HTML-manual for win32 binary distribution.

CHANGES SINCE 0.9.13
- Minor bugfix: --chars now correctly accepts minimum two chars.
- Changed package layout (added src/ and tests/).
- Added `make test' target.

CHANGES SINCE 0.9.12
- Bugfix: Fixed bug when viewing several files (in clear(), yadds wasn't completely cleared)
- Minor code cleanup.

CHANGES SINCE 0.9.11
- Some Linux build failed on this:  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
  This has been removed, and works well for the Linux distro tested on.

CHANGES SINCE 0.9.10
- New feature:  Can now download images from URLs (requires libcurl)
- New feature:  Added --debug (-d) for debug output with libcurl
- configure:    Added --enable-curl and --with-curl-config=PATH

CHANGES SINCE 0.9.9
- Using both --width and --height is equivalent to using --size
- Now correctly calculates width and height if one of --width or --height is used

CHANGES SINCE 0.9.8
- New feature: Added --flipx and --flipy options to flip the output image.
- New feature: Added --html and --html-fontsize for XHTML 1.0 output.
- Bugfix: The bugfix from 0.9.6 sneaked back into the 0.9.8 release, and is now removed.
- Code changes: The code is a little bit cleaner, and faster now for big output dimensions
- Added reference to The Independent JPEG Group in the man page, as the libjpeg license requires that.
- The help text now fits inside 80 characters in width.
- Default mode changed from --width=70 to --width=78

CHANGES SINCE 0.9.7
- Minor portability issues resolved (regarding size_t usage)
- Moved some redundant help text to the man page
- Updated and expanded man page

CHANGES SINCE 0.9.6
- Minor bugfix, for some images, the last output line would be a "black" line,
  this has been fixed with the use of ROUND in dst_y calculations.

CHANGES SINCE 0.9.5
- Fixed a major bug in the clear() function that overwrote the yadds buffer.
  The program should work much better now, especially on multiple input files.

CHANGES SINCE 0.9.4
- The option --border can now be specified simply as -b
- New option --invert or -i to invert output image

CHANGES SINCE 0.9.3
- jp2a now exits with error when no files are specified
- Function signatures changed; added const where applicable
- Reintroduced use of malloc
- Added check for alloca in configure.ac

CHANGES SINCE 0.9.2
- When reading multiple files, malloc complained when freeing memory.  Using
  alloca now instead, which does not complain (although it may seem a buffer
  overrun is lurking somewhere).
- Not using exit(), using return codes.  If error occurs, we always stop.
- Using `cat file.jpg | jp2a -' now does not print help message along with
  image.

CHANGES SINCE 0.9.1
- Much better output results, due to more accurate normalization and removal of
  missing scanlines in output image.
- Default mode is now "--width=70" instead of "--size=80x25", as this preserves
  JPEG aspect ratio in output.
- Configure does not check for memset function anymore
- to_dst_x and to_dst_y are now correct

CHANGES SINCE 0.9.0
- Added --border option
- Fixed buffer overrun bug when using big output dimensions
- Minor code cleanup
- Note that to_dst_x and to_dst_y in code might be wrong
jp2a-1.1.1/Dockerfile000066400000000000000000000006751414624405500143550ustar00rootroot00000000000000FROM ubuntu as builder
WORKDIR /app
COPY . .
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y gcc make libjpeg-dev libpng-dev libcurl4-gnutls-dev libncurses5-dev autoconf-archive pkg-config
RUN ./autogen.sh && ./configure && make

FROM ubuntu
WORKDIR /app
RUN apt-get update && apt-get install -y libc6 libjpeg8 libpng16-16 libcurl3-gnutls libtinfo6
COPY --from=builder /app/src/jp2a /usr/bin/jp2a
ENTRYPOINT ["jp2a"]
jp2a-1.1.1/Doxyfile.in000066400000000000000000000004771414624405500144760ustar00rootroot00000000000000PROJECT_NAME           = @PACKAGE_NAME@
PROJECT_NUMBER         = @PACKAGE_VERSION@
PROJECT_BRIEF          = "Convert JPEG and PNG images to ASCII"
OUTPUT_DIRECTORY       = doxygen-doc
STRIP_FROM_PATH        = @top_srcdir@
OPTIMIZE_OUTPUT_FOR_C  = YES
INPUT                  = include
PREDEFINED             = FEAT_CURL
jp2a-1.1.1/INSTALL000066400000000000000000000001001414624405500133730ustar00rootroot00000000000000See the README file for building and installation instructions.
jp2a-1.1.1/LICENSES000066400000000000000000000231271414624405500135100ustar00rootroot00000000000000jp2a is distributed under the GNU General Public License v2.  See the file
COPYING for a copy of that license, and how you can apply that license to make
derivative works.

Although I do make use of other libraries, the source distribution does not
include any source-code from these.  However, the win32 version came with
precompiled library files, so I copy the licenses here.

jp2a makes use of the JPEG library by the Independent JPEG Group.  See
http://www.ijg.org

jp2a makes use of libcurl, which has the following license:

    COPYRIGHT AND PERMISSION NOTICE

    Copyright (c) 1996 - 2006, Daniel Stenberg, .

    All rights reserved.

    Permission to use, copy, modify, and distribute this software for any purpose
    with or without fee is hereby granted, provided that the above copyright notice
    and this permission notice appear in all copies.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
    NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
    OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
    OR OTHER DEALINGS IN THE SOFTWARE.

    Except as contained in this notice, the name of a copyright holder shall
    not be used in advertising or otherwise to promote the sale, use or other
    dealings in this Software without prior written authorization of the
    copyright holder.

The jp2a win32 binary distribution came with zlib1.dll from
http://www.zlib.org.  The zlib license is as follows:

    /* zlib.h -- interface of the 'zlib' general purpose compression library
      version 1.2.3, July 18th, 2005

      Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler

      This software is provided 'as-is', without any express or implied
      warranty.  In no event will the authors be held liable for any damages
      arising from the use of this software.

      Permission is granted to anyone to use this software for any purpose,
      including commercial applications, and to alter it and redistribute it
      freely, subject to the following restrictions:

      1. The origin of this software must not be misrepresented; you must not
         claim that you wrote the original software. If you use this software
         in a product, an acknowledgment in the product documentation would be
         appreciated but is not required.
      2. Altered source versions must be plainly marked as such, and must not be
         misrepresented as being the original software.
      3. This notice may not be removed or altered from any source distribution.

      Jean-loup Gailly jloup@gzip.org
      Mark Adler madler@alumni.caltech.edu

    */

The jp2a win32 binary distribution came with precompiled OpenSSL binaries from
http://www.openssl.org.  These have the following license:

      LICENSE ISSUES
      ==============

      The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
      the OpenSSL License and the original SSLeay license apply to the toolkit.
      See below for the actual license texts. Actually both licenses are BSD-style
      Open Source licenses. In case of any license issues related to OpenSSL
      please contact openssl-core@openssl.org.

      OpenSSL License
      ---------------

    /* ====================================================================
     * Copyright (c) 1998-2005 The OpenSSL Project.  All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * 1. Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * 2. Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in
     *    the documentation and/or other materials provided with the
     *    distribution.
     *
     * 3. All advertising materials mentioning features or use of this
     *    software must display the following acknowledgment:
     *    "This product includes software developed by the OpenSSL Project
     *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
     *
     * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
     *    endorse or promote products derived from this software without
     *    prior written permission. For written permission, please contact
     *    openssl-core@openssl.org.
     *
     * 5. Products derived from this software may not be called "OpenSSL"
     *    nor may "OpenSSL" appear in their names without prior written
     *    permission of the OpenSSL Project.
     *
     * 6. Redistributions of any form whatsoever must retain the following
     *    acknowledgment:
     *    "This product includes software developed by the OpenSSL Project
     *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
     *
     * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
     * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
     * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
     * OF THE POSSIBILITY OF SUCH DAMAGE.
     * ====================================================================
     *
     * This product includes cryptographic software written by Eric Young
     * (eay@cryptsoft.com).  This product includes software written by Tim
     * Hudson (tjh@cryptsoft.com).
     *
     */

     Original SSLeay License
     -----------------------

    /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
     * All rights reserved.
     *
     * This package is an SSL implementation written
     * by Eric Young (eay@cryptsoft.com).
     * The implementation was written so as to conform with Netscapes SSL.
     *
     * This library is free for commercial and non-commercial use as long as
     * the following conditions are aheared to.  The following conditions
     * apply to all code found in this distribution, be it the RC4, RSA,
     * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
     * included with this distribution is covered by the same copyright terms
     * except that the holder is Tim Hudson (tjh@cryptsoft.com).
     *
     * Copyright remains Eric Young's, and as such any Copyright notices in
     * the code are not to be removed.
     * If this package is used in a product, Eric Young should be given attribution
     * as the author of the parts of the library used.
     * This can be in the form of a textual message at program startup or
     * in documentation (online or textual) provided with the package.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     * 1. Redistributions of source code must retain the copyright
     *    notice, this list of conditions and the following disclaimer.
     * 2. Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     * 3. All advertising materials mentioning features or use of this software
     *    must display the following acknowledgement:
     *    "This product includes cryptographic software written by
     *     Eric Young (eay@cryptsoft.com)"
     *    The word 'cryptographic' can be left out if the rouines from the library
     *    being used are not cryptographic related :-).
     * 4. If you include any Windows specific code (or a derivative thereof) from
     *    the apps directory (application code) you must include an acknowledgement:
     *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
     *
     * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     * SUCH DAMAGE.
     *
     * The licence and distribution terms for any publically available version or
     * derivative of this code cannot be changed.  i.e. this code cannot simply be
     * copied and put under another distribution licence
     * [including the GNU Public Licence.]
     */
jp2a-1.1.1/Makefile.am000066400000000000000000000011411414624405500144040ustar00rootroot00000000000000VERSION = @VERSION@
SUBDIRS = src
man_MANS = man/jp2a.1
bashcompdir = @bashcompdir@
dist_bashcomp_DATA = completion/bash/jp2a
EXTRA_DIST = tests/??*.txt tests/??*.html tests/??*.jpg tests/??*.png tests/run-tests.sh tests/Makefile include/??*.h man/jp2a.1 Doxyfile.in LICENSES
MOSTLYCLEANFILES = $(DX_CLEANFILES)
CLEANFILES = Doxyfile

test: check

check: all
	$(MAKE) -C tests check

@DX_RULES@

editdx = sed -e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' -e 's|@top_srcdir[@]|$(top_srcdir)|g'
Doxyfile: Doxyfile.in
	$(editdx) $(srcdir)/$@.in > $@.tmp
	mv $@.tmp $@
jp2a-1.1.1/NEWS000066400000000000000000000000161414624405500130470ustar00rootroot00000000000000See ChangeLog
jp2a-1.1.1/README000066400000000000000000000157471414624405500132510ustar00rootroot00000000000000jp2a
====

![full-check](https://github.com/Talinx/jp2a/workflows/full-check/badge.svg?branch=master)


jp2a is a simple JPEG/PNG to ASCII converter.

The source is available at . This project
used to be hosted on SourceForge.

License
-------

Copyright 2006-2016 Christian Stigen Larsen and 2020 Christoph Raitzig  
Distributed under the GNU General Public License v2.

You can read the full license in the file COPYING.  jp2a also uses other
libraries.  These licenses can be found in the file LICENSES.

Example: Oswald the lucky rabbit
--------------------------------
                                                                 ......
                                                         .:lOKMMMMMMMMMM0l
                                                    .;dOMMMMMMMMMMMMMMMMMMW.
                                                .ckWMMMMMMMMMMMMMMMMMMMMMMMO
                                             .dXMMMMMMMMMMMMMMMMMMMMMMMMMMO
                                          .xWMMMMMMMMMMMMMMMMMMMMMMMMMMO:.
                                        lXMMMMMMMMMMMMMMMMMMMMMWOOxc'
                    .;lxOOOOOxdl:.    cMMMMMMMMMMMMMMMMWKklc'..
                'llc..   ..:oMMMMMMKxNMMMMMMMMMM0kl:'.
              :0'             cMMMMMMMMMMMMWd'.
            .K:l0              .MMMMMMMMMMl.
           ,K    W              ,MMMMMMMMMMMMN0dl'
           M.    M               MMMMMMMMMMMMMMMMMMKx:.
          cMMK                   WMMMMMMMMMMMMMMMMMMMMMXd'
          NMMM:                  MMMMMMMMMMMXWMMMMMMMMMMMMNd'
          KMMMW                  MMMMMMMMMMM' ;XMMMMMMMMMMMMMWd'
           MMMM                 XMMMMMMMMMMM    dMMMMMMMMMMMMMMMNc
      ''   NMKWl'             .KMMMMMMMMMMM'     :MMMMMMMMMMMMMMMMMd
     KMWMKOk    '           ,lXMMMMMMMMMMM;       .KMMMMMMMMMMMMMMMM0
     KMMMMM.                    .cOMMMMMW'          kMMMMMMMMMMMMMMMMX
      cOXMNXl.            ......   .MWd. .0cc:'      .NMMMMMMMMMMMMMMMk
            .cololoxKWWWXWMMMMMMM:  M   c:. .l0ok      oMMMMMMMMMMMMMMM
                      .'Mo,MMMMNk:lO' :l  .OMMMMl       .OMMMMMMMMMMMMN
                       X0'OkxkxOK;.  :: ,.XMMMMMMO    :O   lXMMMMMMMMk
                        kc,,o0M0.:;c'N  ko;lMMMMMM:'xMMMNWKO,.clxdl:.
                       ;00xkM:d ,   ..     oMMMMMM cMMMMMMMMl
                       c   N0l       .  .l:;;oKMMk  MMMMMMMMM0
                       O   ,.ocOc..l..k'   .:c;'O   0MMMMMMMX.
                      X     N..l  .c           K.   OMMMMMMM
                     .'     c.     :           M .  OMMM0,.;
                    :,   N.;W       ;          O...o .,.
                    d    M  ;X'     :l             :
                    d..':. lcKol,,,,'.:c,,'.cd;'o,'.
                      . ;:,WMMMMMMXx,; M0XXNNWM.
                           MMMMMMMM   .MMMMMMMM
                           MMMMMMMM   .MMMMMMMM.
                          :ONMMMMMM0:':MMMMMMMMM:
                ;c:,'',::lX'  '',''   .MMMMMMMMMMWK:c:
               x.          .lloc;.',lxl..lKMMMMMKl   M
              0           .;,;'......;::c'  ..     ;dl;l'
             ;O:        .d'              .lkk::::;,     'k
             N.'oc'.    M                   :            X
              lo:. ',::xN:                             .x0'
                .,lccccM .ll,.                . ;;:::;c'.0
                       .kl.  .c::lcccccc:cc::;  .''clccl.
                          'lcl:lc::,,'::cc:cc:c,..

The Oswald character is Copyright Walt Disney, and, unfortunately, not in the
public domain.  However, I believe that I can use this picture under the fair
use clause, for demonstrational purposes, especially in low-resolution, ASCII
format. If I am wrong, I will promptly remove it.

Installation
------------

Look in your system's package manager. I don't maintain Windows binaries
anymore.

Building
--------

`jp2a` can be compiled as usual: `./configure && make && make install`

If you want to compile after cloning the git repo (i.e. generate the `configure` script yourself), you need autotools, automake and autoconf-archive. You may need to specify the path to jpeglib. I usually just do

    autoreconf -vi
    ./configure --with-jpeg-prefix=/usr/local \
                --with-curl-config=`which curl-config`
    make -j

Before installing, you may want to check that jp2a works by running `src/jp2a`
on some `.jpg` and `.png` files. You can also use `make check`. When you're ready to install,

    make -j install

Extract the archive and follow the instructions inside 'install.txt' to build and
install it. For a default install, the corresponding `.so` (shared object) files
will be present in `/usr/local/lib/`

Next, run the command `ldconfig` (escalated privileges may be required) to configure dynamic linker run-time bindings. See
its man page for more details. The configure command should work after that.

If configure can't automatically find jpeglib, specify with

    ./configure --with-jpeg-include=PATH --with-jpeg-lib=PATH

or you can just type the prefix

    ./configure --with-jpeg-prefix=/usr/local/

You can also compile jp2a with libcurl, so it can automatically download images
from the net:

    ./configure --enable-curl

This will look for `curl-config` in $PATH, but you can specify it directly with
`--with-curl-config=PATH` if you need to.

### Runtime dependencies
- [jpeglib](https://www.ijg.org/) or [libjpeg-turbo](https://libjpeg-turbo.org/)
- [libpng](http://libpng.org/pub/png/libpng.html)
- [curl](https://curl.haxx.se/) (optional)
- [ncurses](https://invisible-island.net/ncurses/ncurses.html) (optional)

### Build dependencies
- make (e.g. [GNU Make](https://www.gnu.org/software/make/))
- a C compiler like [gcc](https://gcc.gnu.org/)

If you generate the `configure` script yourself (i.e. run `autoreconf`) you also need these:

- autotools
- [automake](https://www.gnu.org/software/automake/)
- [autoconf](https://www.gnu.org/software/autoconf/autoconf.html)
- [autoconf-archive](https://www.gnu.org/software/autoconf-archive/)

Windows
-------

### Cross compiling

You can cross compile.

### WSL

You can use the Windows Subsystem for Linux.

### Compile with `configure`

The `configure` script requires a Bourne shell, so you got to install one (e.g. Bash).
The easiest way is to install [Cygwin](https://cygwin.com/). Make sure to install the used libraries (curl, jpeglib, libpng, ncurses) as well as gcc and make.
Open Cygwin and proceed as usual: `./configure && make && make install`

You can also "cross compile" with Cygwin so that you get a binary that does not depend on Cygwin.

### Compile without `configure`

You need a working jpeglib for Windows and set up include paths yourself.
You will need to manually type out a `config.h` file. Example:

    WIN32
    NDEBUG
    _CONSOLE
    PACKAGE_STRING=\"jp2a x.x.x-win32\"
    PACKAGE_BUGREPORT=\"chris-r@posteo.net\"
    HAVE_STRING_H
    HAVE_STDLIB_H
    FEAT_CURL
    HAVE_CURL_CURL_H
    CURL_STATICLIB
    FEAT_TERMLIB

You need to add jpeg.lib to the linker. If you want libcurl support, you need
that as well. It should be available from https://curl.haxx.se
jp2a-1.1.1/README.md000077700000000000000000000000001414624405500145052READMEustar00rootroot00000000000000jp2a-1.1.1/autogen.sh000077500000000000000000000003041414624405500143510ustar00rootroot00000000000000#!/bin/bash
autoreconf -vi

while (( "$#" )); do
  if [ $1 == "-c" ]; then
    ./configure --with-jpeg-prefix=/usr/local \
                --with-curl-config=`which curl-config`
  fi
  shift
done
jp2a-1.1.1/completion/000077500000000000000000000000001414624405500145245ustar00rootroot00000000000000jp2a-1.1.1/completion/bash/000077500000000000000000000000001414624405500154415ustar00rootroot00000000000000jp2a-1.1.1/completion/bash/jp2a000066400000000000000000000016331414624405500162230ustar00rootroot00000000000000# bash completion for jp2a                                 -*- shell-script -*-

_jp2a()
{
        local cur prev OPTS
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"
        prev="${COMP_WORDS[COMP_CWORD-1]}"
        OPTS="--help --verbose --debug --clear --colors --color-depth= --fill
        --grayscale --html --htmlls --xhtml --html-fill --html-no-bold --html-raw --border
        --invert --background= --flipx --flipy --version --width= --height=
        --red= --green= --blue= --html-fontsize= --size= --term-zoom
        --term-height --term-width --term-fit --output= --html-title= --chars="
        case $cur in
                --*)
						COMPREPLY=( $(compgen -W "${OPTS}" -- $cur) )
						return 0
                        ;;
        esac
        local IFS=$'\n'
        compopt -o filenames
        COMPREPLY=( $(compgen -f -- $cur) )
        return 0
}
complete -F _jp2a jp2a

# ex: filetype=shjp2a-1.1.1/configure.ac000066400000000000000000000123551414624405500146470ustar00rootroot00000000000000#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT([jp2a],[1.1.1],[chris-r@posteo.net], [jp2a], [https://github.com/Talinx/jp2a])
DX_INIT_DOXYGEN([jp2a])
AM_INIT_AUTOMAKE(dist-bzip2 dist-zip)
AC_CONFIG_SRCDIR(src/jp2a.c)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile src/Makefile])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.
AC_ARG_WITH([jpeg-include],
	AS_HELP_STRING([--with-jpeg-include=PATH],[specify path to directory containing jpeglib.h -- http://www.ijg.org/]),
	[CPPFLAGS="$CPPFLAGS -I$withval"])

AC_ARG_WITH([jpeg-lib],
	AS_HELP_STRING([--with-jpeg-lib=PATH],[specify path to directory containing jpeglib lib file -- http://www.ijg.org/]),
	[LDFLAGS="$LDFLAGS -L$withval"])

AC_ARG_WITH([jpeg-prefix],
	AS_HELP_STRING([--with-jpeg-prefix=PATH],[this is the same as --with-jpeg-include=PATH/include and --with-jpeg-lib=PATH/lib]),
	[CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib"])

AC_ARG_WITH([curl-config],
	AS_HELP_STRING([--with-curl-config=PATH],[specify path to curl-config]),
	[curl_config_path="$withval" enable_curl="yes"],
	[curl_config_path="$PATH"])

AC_CHECK_LIB([jpeg], [jpeg_start_decompress], [LIBS="$LIBS -ljpeg"])
AC_CHECK_LIB([png], [png_create_read_struct], [LIBS="$LIBS -lpng"])
# jp2a uses isfinite from math.h but that can be implemented as a macro so search for another actual function (floor) instead
AC_SEARCH_LIBS([floor], [m])

if test "x$ac_cv_lib_jpeg_jpeg_start_decompress" != "xyes" ; then
	AC_MSG_ERROR([I need a working jpeglib; please specify --with-jpeg-lib=PATH or see --help for more explicit options.

On many systems, this is installed in /usr/local/lib/ so you can try --with-jpeg-prefix=/usr/local/
])
fi

AC_ARG_ENABLE([curl],
	AS_HELP_STRING([--enable-curl],[enable to be to use libcurl (http://curl.haxx.se) to download images from the net (default: yes)]),
	[enable_curl=$enableval],
	[enable_curl="yes"])

AC_ARG_ENABLE([termlib],
	AS_HELP_STRING([--enable-termlib],[enable to use term/curses for detecting terminal dimensions (default: yes)]),
	[enable_termlib=$enableval],
	[enable_termlib="yes"])

AC_ARG_ENABLE([pure-ascii],
	AS_HELP_STRING([--enable-pure-ascii],[only support ASCII (and not UTF-8 or other character encodings) and ignore the locale (default: no)]),
	[pure_ascii=$enableval],
	[pure_ascii="no"])

AC_MSG_CHECKING([enable-curl])
AC_MSG_RESULT([$enable_curl])

if test "x$enable_curl" = "xyes" ; then
	AC_PATH_PROGS([curl_config], [curl-config], [no], [$curl_config_path])

	if test "x$curl_config" != "xno" ; then
		curl_cflags="`$curl_config --cflags`"
		curl_libs="`$curl_config --libs`"
		CPPFLAGS="$CPPFLAGS $curl_cflags"

		AC_MSG_CHECKING([curl-config --cflags])
		AC_MSG_RESULT([$curl_cflags])

		AC_MSG_CHECKING([curl-config --libs])
		AC_MSG_RESULT([$curl_libs])
	fi

	if test "x$curl_libs" = "x" ; then
		curl_libs="-lcurl"
	fi

	AC_CHECK_LIB([curl], [curl_easy_init], [LIBS="$LIBS $curl_libs" AC_DEFINE([FEAT_CURL], [1], [Found working libcurl environment])], [
		  AC_MSG_WARN([I need a working libcurl (use --with-curl-config=PATH); download-support will be disabled])
		  enable_curl="no"
		])
fi

if test "x$pure_ascii" = "xyes" ; then
	AC_DEFINE([ASCII], [1], [only support ASCII, not UTF-8 or other encodings])
fi

# Checks for header files.
AC_HEADER_STDC

AC_CHECK_HEADER([jpeglib.h],
	[ AC_DEFINE([HAVE_JPEGLIB_H], [1], [Define to 1 if you have  header file.]) ],
	[ AC_MSG_ERROR([required header file jpeglib.h not found, use --with-jpeg-include=PATH or see --help]) ])

if test "x$enable_curl" = "xyes" ; then
	AC_CHECK_HEADER([curl/curl.h],
		[ AC_DEFINE([HAVE_CURL_CURL_H], [1], [Define to 1 if you have the  header file]) ],
		[ AC_MSG_WARN([required header file curl/curl.h not found, libcurl will be disabled (see --help)]) ])
fi

AC_CHECK_HEADERS([fcntl.h curses.h term.h ncurses/term.h math.h limits.h locale.h stdlib.h string.h unistd.h wchar.h setjmp.h])

if test "$enable_termlib" = "yes" ; then

	# Some GNU/Linux systems (e.g., SuSE 4.3, 1996) don't have curses, but
	# rather ncurses.  So we check for it.
	TERMLIBS=
	# Check for termlib before termcap because Solaris termcap needs libucb.
	TERMLIB_VARIANTS="ncurses curses termlib termcap terminfo"
	for termlib in ${TERMLIB_VARIANTS}; do
	  AC_CHECK_LIB(${termlib}, tgetent,
	     [TERMLIBS="${TERMLIBS} -l${termlib}"; break])
	done
	# don't bother warning on djgpp, it doesn't have a term library, it
	# ports each termcap-needing program separately according to its needs.
	if test -z "$TERMLIBS" && echo "$build" | grep -v djgpp >/dev/null; then
	  AC_MSG_WARN([probably need a terminal library, one of: ${TERMLIB_VARIANTS}])
	else
	  LIBS="$LIBS $TERMLIBS"
	  AC_DEFINE([FEAT_TERMLIB], [1], [Found working term/curses environment])
	fi

fi

# Checks for bash-completion
PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir], ,
  bashcompdir="${sysconfdir}/bash_completion.d")
AC_SUBST(bashcompdir)

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_C_RESTRICT
AC_TYPE_SIZE_T
AC_CHECK_HEADER_STDBOOL

# Checks for library functions.
AC_FUNC_FORK
AC_TYPE_PID_T
AC_CHECK_FUNCS([memset atexit mbrlen memset setlocale strerror])

AC_HEADER_ASSERT

AC_OUTPUT
jp2a-1.1.1/include/000077500000000000000000000000001414624405500137765ustar00rootroot00000000000000jp2a-1.1.1/include/aspect_ratio.h000066400000000000000000000011161414624405500166230ustar00rootroot00000000000000/*! \file
 * \noop Copyright 2006-2016 Christian Stigen Larsen
 * \noop Copyright 2020 Christoph Raitzig
 * 
 * \brief Function for calculating the output width or height.
 *
 * \author Christian Stigen Larsen
 * \author Christoph Raitzig
 * \copyright Distributed under the GNU General Public License (GPL) v2.
 */

#ifndef INC_JP2A_ASPECT_RATIO_H
#define INC_JP2A_ASPECT_RATIO_H

/*!
 * \brief Calculate the output width or height, but not both.
 *
 * \param jpeg_width,jpeg_height dimensions of the input image
 */
void aspect_ratio(const int jpeg_width, const int jpeg_height);

#endif
jp2a-1.1.1/include/curl.h000066400000000000000000000023421414624405500151150ustar00rootroot00000000000000/*! \file
 * \noop Copyright 2020 Christoph Raitzig
 *
 * \brief Functions for downloading images (with cURL).
 *
 * \author Christoph Raitzig
 * \copyright Distributed under the GNU General Public License (GPL) v2.
 */

#ifndef INC_JP2A_CURL_H
#define INC_JP2A_CURL_H

#ifdef FEAT_CURL

/*!
 * \brief Checks whether it is a supported URL.
 *
 * \param s the URL
 * \return 1 if it is a supported URL
 */
int is_url(const char* s);

/*!
 * \brief Downloads an image.
 *
 * \param url URL of the image
 * \param debug true if cURL should print debug information
 * \return read-only file-descriptor that must be closed.
 */
int curl_download(const char* url, const int debug);

#ifdef WIN32

/*!
 * \brief A custom write function.
 *
 * Required for Windows. Does the same as fwrite().
 *
 * \param buffer buffer to read data from
 * \param size the size of one item
 * \param nmemb the number of items
 * \param userp the file stream to write to
 * \return the number of items written
 */
size_t passthru_write(void *buffer, size_t size, size_t nmemb, void *userp);

/*!
 * \brief Actually download an image.
 */
void curl_download_child(void*);
#else

/*!
 * \brief Actually download an image.
 */
void curl_download_child();
#endif

#endif

#endif
jp2a-1.1.1/include/html.h000066400000000000000000000103101414624405500151060ustar00rootroot00000000000000/*! \file
 * \noop Copyright 2020 Christoph Raitzig
 * 
 * \brief HTML/XHTML functions.
 *
 * \author Christoph Raitzig
 * \copyright Distributed under the GNU General Public License (GPL) v2.
 */

#ifndef INC_JP2A_HTML_H
#define INC_JP2A_HTML_H

#include "config.h"

/*!
 * \brief Prints the start of a HTML document.
 *
 * \param fontsize font size
 * \param fout stream to print to
 */
void print_html_document_start(const int fontsize, FILE *fout);

/*!
 * \brief Prints the start of a HTML image.
 *
 * \param f stream to print to
 */
void print_html_image_start(FILE *f);

/*!
 * \brief Prints the end of a HTML document.
 *
 * \param fout stream to print to
 */
void print_html_document_end(FILE *fout);

/*!
 * \brief Prints the end of a HTML image.
 *
 * \param f stream to print to
 */
void print_html_image_end(FILE *f);
#if ASCII

/*!
 * \brief Prints a char of the output image for HTML.
 *
 * \param fout stream to print to
 * \param ch char to print
 * \param red_fg,green_fg,blue_fg foreground color
 * \param red_bg,green_bg,blue_bg background color
 */
void print_html_char(FILE *fout, const char ch,
	const int red_fg, const int green_fg, const int blue_fg,
	const int red_bg, const int green_bg, const int blue_bg);
#else

/*!
 * \brief Prints a char of the output image for HTML.
 *
 * \param fout stream to print to
 * \param ch char to print
 * \param red_fg,green_fg,blue_fg foreground color
 * \param red_bg,green_bg,blue_bg background color
 */
void print_html_char(FILE *fout, const char* ch,
	const int red_fg, const int green_fg, const int blue_fg,
	const int red_bg, const int green_bg, const int blue_bg);
#endif

/*!
 * \brief Prints a new line (for HTML, i.e. "
"). * * \param fout stream to print to */ void print_html_newline(FILE *fout); /*! * \brief Prints the start of a XHTML document. * * \param fontsize font size * \param fout stream to print to */ void print_xhtml_document_start(const int fontsize, FILE *fout); /*! * \brief Prints the start of a XHTML image. * * \param f stream to print to */ void print_xhtml_image_start(FILE *f); /*! * \brief Prints the end of a XHTML document. * * \param fout stream to print to */ void print_xhtml_document_end(FILE *fout); /*! * \brief Prints the end of a XHTML image. * * \param f stream to print to */ void print_xhtml_image_end(FILE *f); #if ASCII /*! * \brief Prints a char of the output image for XHTML. * * \param fout stream to print to * \param ch char to print * \param red_fg,green_fg,blue_fg foreground color * \param red_bg,green_bg,blue_bg background color */ void print_xhtml_char(FILE *fout, const char ch, const int red_fg, const int green_fg, const int blue_fg, const int red_bg, const int green_bg, const int blue_bg); #else /*! * \brief Prints a char of the output image for XHTML. * * \param fout stream to print to * \param ch char to print * \param red_fg,green_fg,blue_fg foreground color * \param red_bg,green_bg,blue_bg background color */ void print_xhtml_char(FILE *fout, const char* ch, const int red_fg, const int green_fg, const int blue_fg, const int red_bg, const int green_bg, const int blue_bg); #endif /*! * \brief Prints a new line (for XHTML, i.e. "
"). * * \param fout stream to print to */ void print_xhtml_newline(FILE *fout); #if ASCII /*! * \brief Converts a char to a HTML entity if necessary. * * For example, "<" is converted to "<". * * \param ch char to convert * \return the HTML entity or the original char if a conversion is not necassary */ const char* html_entity(const char ch); #else /*! * \brief Converts a char to a HTML entity if necessary. * * For example, "<" is converted to "<". * * \param ch char to convert * \return the HTML entity or the original char if a conversion is not necassary */ const char* html_entity(const char* ch); #endif /*! * \brief Prints the CSS for a HTML/XHTML document. * * \param fontsize font size * \param f stream to print to */ void print_css(const int fontsize, FILE *f); /*! * \brief Escapes the title as necesary. * * Takes the title in #html_title_raw and escapes chars to HTML entities as necessary and saves the resulting title in #html_title. * * \return true if successful, false otherwise */ int escape_title(); #endif jp2a-1.1.1/include/image.h000066400000000000000000000166161414624405500152430ustar00rootroot00000000000000/*! \file * \noop Copyright 2006-2016 Christian Stigen Larsen * \noop Copyright 2020 Christoph Raitzig * * \brief Functions that work directly with images. * * Call decompress_jpeg() or decompress_png() to read an input image from a stream and print it. * Which is called does not matter in regards to functionality, if decompress_jpeg() fails decompress_png() is called and vice versa. * For efficiency call the function that is most likely to work. * * All other functions in this file are called by decompress_jpeg() or decompress_png() or one of the functions they call. * * \author Christian Stigen Larsen * \author Christoph Raitzig * \copyright Distributed under the GNU General Public License (GPL) v2. */ #ifndef INC_JP2A_IMAGE_H #define INC_JP2A_IMAGE_H #include "config.h" #ifdef HAVE_STDLIB_H #include #endif #include "jpeglib.h" #include "png.h" #include #include "html.h" /*! \struct Image_ * \brief Holds a decompressed image. * * #pixel, #red, #green, #blue, #alpha and #yadds are arrays of size #width * #height. */ typedef struct Image_ { int width; //!< width int height; //!< height float *pixel; //!< luminosities (i.e. gray values) float *red; //!< red part float *green; //!< green part float *blue; //!< blue part float *alpha; //!< opacities int *yadds; //!< how many scanlines were used for a pixel, used by normalize() float resize_y; //!< Factor by which the output image is resized from the input image in the y dimension (height). For example for an output height of 40 and input height of 80 this equals approximately 0.5. float resize_x; //!< Factor by which the output image is resized from the input image in the x dimension (width). For example for an output width of 50 and input height of 100 this equals approximately 2.0. int *lookup_resx; //!< where to start and end using pixels of the input image to calculate a pixel of the output image along the x axis } Image; /*! * \typedef Image * \brief See #Image_ */ /*! \struct my_jpeg_error_mgr * \brief This struct is used for custom error handling with libjpeg. */ typedef struct my_jpeg_error_mgr { struct jpeg_error_mgr pub; //!< libjpeg's error manager jmp_buf setjmp_buffer; //!< where to jump to if an error occurs } my_jpeg_error_mgr; /*! * \typedef my_jpeg_error_mgr * \brief See #my_jpeg_error_mgr */ /*! * \brief Pointer to a #my_jpeg_error_mgr. */ typedef struct my_jpeg_error_mgr *my_jpeg_error_ptr; /*! \struct error_collector * \brief Contains and collects errors that occur while decompressing an image. * * With this struct decompress_jpeg() and decompress_png() can be called recursively since #jpeg_status and #png_status can be used to determine whether a previous call failed or not. */ typedef struct error_collector { my_jpeg_error_mgr *jpeg_error; //!< contains information about a JPEG decompression error char *png_error_msg; //!< error message for a PNG decompression error int jpeg_status; //!< true if an error occurred during JPEG decompression, false otherwise int png_status; //!< true if an error occurred during PNG decompression, false otherwise } error_collector; /*! * \typedef error_collector * \brief See #error_collector */ /*! * \brief Prints the top or bottom of a border around an image. * * \param width width of the output image */ void print_border(const int width); /*! * \brief Prints an image. * * Calls print_image_colors() or print_image_no_colors(). * * \param image the output image * \param f the stream to print to */ void print_image(Image *image, FILE *f); /*! * \brief Prints an image with color. * * \param image the output image * \param chars the character palette * \param f the stream to print to */ void print_image_colors(const Image* const image, const int chars, FILE *f); /*! * \brief Prints an image without color. * * \param image the output image * \param chars the character palette * \param f the stream to print to */ void print_image_no_colors(const Image* const image, const int chars, FILE *f); /*! * \brief Clears the image (i.e. sets all pixels to black, alpha to max) * * \param i the image */ void clear(Image* i); /*! * \brief Normalizes the image. * * After decompressing the image into RAM the G/RGB values must not be between 0 and 1. The functions normalizes them so that they are. * * \param i the image */ void normalize(Image* i); /*! * \brief Prints a progress bar. * * \param progress The progress. Between 0 and 1 where 0 is 0% and 1 is 100% */ void print_progress(float progress); /*! * \brief Prints some information about the image and how it will be printed. * * \param jpg contains information about the JPEG image */ void print_info_jpeg(const struct jpeg_decompress_struct* jpg); /*! * \brief Prints some information about the image and how it will be printed. * * \param png_ptr necessary for calling libpng functions * \param info_ptr contains information about the PNG image */ void print_info_png(const png_structp png_ptr, const png_infop info_ptr); /*! * \brief Processes a scanline of a JPEG image. * * \param jpg contains information about the JPEG image * \param scanline the scanline * \param i the output image */ void process_scanline_jpeg(const struct jpeg_decompress_struct *jpg, const JSAMPLE* scanline, Image* i); /*! * \brief Processes a scanline of a PNG image. * * Supports a bit-depth of 8 and G, GA, RGB and RGBA. * * \param row scanline (i.e. the row of pixels) * \param current_y the current height * \param color_components the number of color components (e.g. 4 for RGBA) * \param i the output image */ void process_scanline_png(const png_bytep row, const int current_y, const int color_components, Image* i); /*! * \brief Frees allocated memory of an image. * * \param i the image */ void free_image(Image* i); /*! * \brief Allocates memory for holding the pixels etc. Sets the width and height. * * \param i the image */ void malloc_image(Image* i); /*! * \brief Sets internal values necessary for processing scanlines. * * \param i the struct to hold the output image * \param src_width width of the source image * \param src_height height of the source image */ void init_image(Image *i, int src_width, int src_height); /*! * \brief Decompresses and prints an image. * * Calls decompress_png() if the image is not a JPEG image. * Instead prints errors if there was an error when decompressing this image as JPEG previously. * * \param fin input stream, has to be seekable * \param fout stream to print the image to * \param errors contains previous errors and is used to save errors */ void decompress_jpeg(FILE *fin, FILE *fout, error_collector *errors); /*! * \brief Callback for errors while decompressing a JPEG image. * * \param jerr contains information about the error */ void jpeg_error_exit(j_common_ptr jerr); /*! * \brief Decompresses and prints an image. * * Calls decompress_jpeg() if the image is not a PNG image. * Instead prints errors if there was an error when decompressing this image as PNG previously. * * \param fin input stream, has to be seekable * \param fout stream to print the image to * \param errors contains previous errors and is used to save errors */ void decompress_png(FILE *fin, FILE *fout, error_collector *errors); /*! * \brief Prints errors. * * Checks what errors have occurred and prints their error messages. * * \param errors the collected errors */ void print_errors(error_collector *errors); #endif jp2a-1.1.1/include/jp2a.h000066400000000000000000000032201414624405500150000ustar00rootroot00000000000000/*! \file * \noop Copyright 2006-2016 Christian Stigen Larsen * \noop Copyright 2020 Christoph Raitzig * * \brief The main function and a helper function. * * \author Christian Stigen Larsen * \author Christoph Raitzig * \copyright Distributed under the GNU General Public License (GPL) v2. */ #ifndef INC_JP2A_H #define INC_JP2A_H #ifdef _WIN32 #include #endif /*! * \brief The main function. * * \param argc argument count * \param argv the arguments */ int main(int argc, char** argv); /*! * \brief Reads from a stream into a buffer. * * This function is used to make a seekable stream from a non-seekable stream: * Read the contents of the non-seekable stream into a buffer (with this function) and open a stream to this buffer (with fmemopen()). * The buffer is (re)allocated as needed. * * \param fp stream to read into buffer * \param buffer the buffer to read into * \param buffer_size the allocated size of the buffer * \param actual_size the number of bytes read into the buffer * \return true if sucessful, false otherwise */ int read_into_buffer(FILE *fp, char **buffer, size_t *buffer_size, size_t *actual_size); #ifdef _WIN32 /*! * \brief fmemopen alternative for Windows. * * Windows does not support opening a file stream to part of the RAM. * This function creates a temporary file and writes the contents of the buffer to it. * * \param buf data to write to the file * \param size number of bytes to write * \param mode ignored, for compatibility with the actual fmemopen() * \return the file handle (or NULL if an error occurred) */ HANDLE fmemopen(void *buf, size_t size, const char *mode); #endif #endif jp2a-1.1.1/include/options.h000066400000000000000000000074171414624405500156530ustar00rootroot00000000000000/*! \file * \noop Copyright 2006-2016 Christian Stigen Larsen * \noop Copyright 2020 Christoph Raitzig * * \brief Functions for parsing command line arguments. * * \author Christian Stigen Larsen * \author Christoph Raitzig * \copyright Distributed under the GNU General Public License (GPL) v2. */ #ifndef INC_JP2A_OPTIONS_H #define INC_JP2A_OPTIONS_H //! size of the ASCII palette (in chars) #define ASCII_PALETTE_SIZE 256 //! default ASCII palette #define ASCII_PALETTE_DEFAULT " ...',;:clodxkO0KXNWM"; //! default title for HTML/XHTML documents #define HTML_DEFAULT_TITLE "jp2a converted image" extern int verbose; //!< produce verbose output extern int auto_height; //!< automatically calculate the output width from the height extern int auto_width; //!< automatically calculate the output height from the width extern int width; //!< output width extern int height; //!< output height extern int use_border; //!< print a border around images extern int invert; //!< invert output (color/gray channels, not alpha) extern int flipx; //!< flip output along x axis extern int flipy; //!< flip output along y axis extern int html; //!< produce HTML output extern int xhtml; //!< produce XHTML output extern int html_fontsize; //!< font size for HTML/XHTML output extern int colorfill; //!< also fill the background extern int convert_grayscale; //!< produce grayscale output extern const char *html_title_raw; //!< HTML title extern char *html_title; //!< HTML title with escaped HTML entities extern int html_rawoutput; //!< produce only the image part and not the rest of the website extern int html_bold; //!< use bold characters in HTML output extern int debug; //!< print debug information extern int clearscr; //!< clear the screen before printing an image extern int ascii_palette_length; //!< number of charactrs in the palette extern char ascii_palette[]; //!< the palette #if ! ASCII extern unsigned char ascii_palette_indizes[]; //!< indizes of the first byte of each char in the palette extern char ascii_palette_lengths[]; //!< byte lengths of the chars in the palette #endif extern float redweight; //!< weight for red extern float greenweight; //!< weight for green extern float blueweight; //!< weight for blue extern float RED[256]; //!< red channel lookup table extern float GREEN[256]; //!< green channel lookup table extern float BLUE[256]; //!< blue channel lookup table extern float ALPHA[256]; //!< alpha channel lookup table extern float GRAY[256]; //!< gray channel lookup table extern const char *fileout; //!< name of the output file (or - for stdout) extern int usecolors; //!< produce colored output extern int colorDepth; //!< output color bit depth (4 for ANSI, 8 for 256 colors, 24 for true color) extern int termfit; //!< the way the output dimensions are calculated extern int term_width; //!< width of the terminal extern int term_height; //!< height of the terminal #define TERM_FIT_ZOOM 1 //!< stretch image to fill the terminal #define TERM_FIT_WIDTH 2 //!< calculate the width (based on the height) #define TERM_FIT_HEIGHT 3 //!< calculate the height (based on the width) #define TERM_FIT_AUTO 4 //!< use the largest possible dimensions while retaining the input image aspect ratio /*! * \brief Prints version information. */ void print_version(); /*! * \brief Prints usage, version information etc. */ void help(); /*! * \brief Calculates red, green, blue, gray and alpha 8-bit to float lookup tables. * * \param red,green,blue weights for each color */ void precalc_rgb(const float red, const float green, const float blue); /*! * \brief Parses the command line arguments. * * Options are saved with the global variables. * Exits if help or the version is printed. * * \param argc argument count * \param argv the arguments */ void parse_options(int argc, char** argv); #endif jp2a-1.1.1/include/round.h000066400000000000000000000007151414624405500153010ustar00rootroot00000000000000/*! \file * \noop Copyright 2006-2016 Christian Stigen Larsen * \noop Copyright 2020 Christoph Raitzig * * \brief Round macro. * * \author Christian Stigen Larsen * \author Christoph Raitzig * \copyright Distributed under the GNU General Public License (GPL) v2. */ #ifndef INC_JP2A_ROUND_H #define INC_JP2A_ROUND_H /*! * \brief Rounds a float to the nearest integer and casts to integer. */ # define ROUND(xfloat) (int) ( 0.5f + xfloat ) #endif jp2a-1.1.1/include/terminal.h000066400000000000000000000014621414624405500157650ustar00rootroot00000000000000/*! \file * \noop Copyright 2020 Christoph Raitzig * * \brief Functions for querying terminal features. * * \author Christoph Raitzig * \copyright Distributed under the GNU General Public License (GPL) v2. */ #ifndef INC_JP2A_TERMINAL_H #define INC_JP2A_TERMINAL_H /*! * \brief Get the terminal dimensions. * * \param width_,height_ stores the dimensions * \param error stores an error (if one occurs) * \return 1 success\n * 0 terminal type not defined\n * -1 termcap database inaccessible\n * -2 environment variable TERM not set\n */ int get_termsize(int* width_, int* height_, char** error); /*! * \brief Checks whether the terminal supports true color. * * \return true if the terminal supports true color, false otherwise */ int supports_true_color(); #endif jp2a-1.1.1/man/000077500000000000000000000000001414624405500131265ustar00rootroot00000000000000jp2a-1.1.1/man/jp2a.1000066400000000000000000000157711414624405500140570ustar00rootroot00000000000000.TH jp2a 1 "November 20, 2020" "version 1.1.1" "USER COMMANDS" .SH NAME jp2a \- convert JPEG and PNG images to ASCII .SH SYNOPSIS .B jp2a [ .I options ] [ .I filename(s) | URL(s) ] .LP .SH DESCRIPTION .B jp2a will convert JPEG and PNG images to ASCII characters. You can specify a mixture of files and URLs. .SH OPTIONS .TP .BI \- Read JPEG or PNG image from standard input .TP .B \-\-background=light \-\-background=dark If you don't want to mess with \-\-invert all the time, just use these instead. If you are using white characters on a black display, then use --background=dark, and vice versa. .TP .B \-b \-\-border Frame output image in a border .TP .BI \-\-chars= ... Use the given characters when producing the output ASCII image. Default is " ...',;:clodxkO0KXNWM". .TP .BI \-\-colors Use truecolor (or ANSI color if truecolor is not supported) for text output and CSS color for HTML output. .TP . BI \-\-color\-depth= ... Use a specific color-depth for terminal output. Valid values are: 4 (for ANSI), 8 (for 256 color palette) and 24 (for truecolor or 24-bit color). .TP .B \-d \-\-debug Print debugging information when using libcurl to download images from the net. .TP .B \-f \-\-term\-fit Use the largest dimension that makes the image fit in your terminal display. .TP .B \-\-term\-height Use terminal display height and calculate width based on image aspect ratio. .TP .B \-\-term\-width Use terminal display width and calculate height based on image aspect ratio. .TP .B \-z \-\-term\-zoom Use terminal display width and height. .TP .B \-\-fill When used with \-\-html and \-\-color, then color each output character's background color. For instance, if you want to use fill-output on a light background, do jp2a --color --html --html-fill --background=light somefile.jpg --output=dark.html To do the same on a light background: jp2a --color --html --html-fill --background=dark somefile.jpg --output=light.html The default is to have fill disabled. .TP .B \-x \-\-flipx Flip output image horizontally .TP .B \-y \-\-flipy Flip output image vertically .TP .BI \-\-height= N Set output height. If only --height is specified, then output width will be calculated according to the source images aspect ratio. .TP .B \-h \-\-help Display a short help text .TP .B \-\-grayscale Converts image to grayscale when using \-\-html or \-\-colors. .TP .B \-\-html Make ASCII output in strict XHTML 1.0. (Will output in HTML for version 2.0.0 and above.) .TP .B \-\-htmlls Make ASCII output in HTML (Living Standard), suitable for viewing with web browsers. This is useful with big output dimensions, and if you want to check the result with a browser with small font. .TP .B \-\-xhtml Make ASCII output in strict XHTML 1.0. .TP .B \-\-html\-fill Same as \-\-fill. You should use that option instead. .TP .B \-\-html\-no\-bold Do not use bold text for HTML output. .TP .B \-\-html\-raw Output only the image in HTML codes, leaving out the rest of the webpage, so you can construct your own. (Will use
for version 2.0.0 and above instead of
.) .TP .BI \-\-html\-fontsize= N Set fontsize when using \-\-html output. Default is 4. .TP .BI \-\-html\-title= ... Set HTML output title. .TP .BI \-\-output=... Write ASCII output to given filename. To explicitly specify standard output, use \-\-output=\-. .TP .B \-i \-\-invert Invert output image. If you view a picture with white background, but you are using a display with light characters on a dark background, you should invert the image. .TP .BI \-\-red= ... .TP .BI \-\-green= ... .TP .BI \-\-blue= ... When converting from RGB to grayscale, use the given weights to calculate luminance. The default is red=0.2989, green=0.5866 and blue=0.1145. .TP .BI \-\-size= WIDTHxHEIGHT Set output dimension. .TP .B \-v \-\-verbose Print some verbose information to standard error when reading each JPEG image. .TP .BI \-\-width= N Set output width. If you only specify the width, the height will be calculated automatically. .TP .B \-V \-\-version Print program version. .TP .B \-\-zoom Sets output dimensions to your entire terminal window, disregarding source image aspect ratio. .SH RETURN VALUES jp2a returns 1 when errors are encountered, zero for no errors. .SH EXAMPLES Convert and print imagefile.jpg using ASCII characters in 40 columns and 20 rows: .PP .B jp2a \-\-size=40x20 imagefile.jpg .PP Download an image off the net, convert and print: .PP .B jp2a http://www.google.com/intl/en/logos/easter_logo.jpg .PP Output picture.jpg and picture2.jpg, each 80x25 characters, using the characters " ...ooxx@@" for output: .PP .B jp2a \-\-size=80x25 --chars=" ...ooxx@@" picture.jpg picture2.jpg .PP Output image.jpg using 76 columns, height is automatically calculated from aspect ratio of image.jpg .PP cat image.jpg | .B jp2a \-\-width=76 \- .PP If you use jp2a together with ImageMagick's convert(1) then you can make good use of pipes, and have ImageMagick do all sorts of image conversions and effects on the source image. For example: .PP .B convert somefile.gif jpg:\- | .B jp2a \- \-\-width=80 .PP Check out convert(1) options to see what you can do. Convert can handle almost any image format, so with this combination you can convert images in e.g. PDF or AVI files to ASCII. .PP Although the default build of jp2a includes automatic downloading of files specified by URLs, you can explicitly download them by using curl(1) or wget(1), for example: .PP .B curl \-s http://foo.bar/image.jpg | .B convert \- jpg:- | .B jp2a \- .SH DOWNLOADING IMAGES FROM THE NET If you have compiled jp2a with libcurl(3), you can download images by specifying URLs: .B jp2a https://user:pass@foo.com/bar.jpg The protocols recognized are ftp, ftps, file, http, https and tftp. If you need more control of the downloading, you should use curl(1) or wget(1) and jp2a read the image from standard input. jp2a uses pipe and fork to download images using libcurl (i.e., no exec or system calls) and therefore does not worry about malevolently formatted URLs. .SH GRAYSCALE CONVERSION You can extract the red channel by doing this: .B jp2a somefile.jpg --red=1.0 --green=0.0 --blue=0.0 This will calculate luminance based on Y = R*1.0 + G*0.0 + B*0.0. The default values is to use Y = R*0.2989 + G*0.5866 + B*0.1145. .SH PROJECT HOMEPAGE The latest version of jp2a and news is always available from https://github.com/Talinx/jp2a. .SH SEE ALSO cjpeg(1), djpeg(1), jpegtran(1), convert(1) .SH BUGS jp2a does not interpolate when resizing. If you want better quality, try using convert(1) and convert the source image to the exact output dimensions before using jp2a. .PP Another issue is that jp2a skips some X-pixels along each scanline. This gives a less precise output image, and will probably be corrected in future versions. .SH AUTHOR Christian Stigen Larsen and Christoph Raitzig jp2a uses jpeglib to read JPEG files. jpeglib is made by The Independent JPEG Group (IJG), who have a page at http://www.ijg.org jp2a uses libpng to read PNG files. libpng's homepage: http://libpng.org/pub/png/libpng.html .SH LICENSE jp2a is distributed under the GNU General Public License v2. jp2a-1.1.1/src/000077500000000000000000000000001414624405500131425ustar00rootroot00000000000000jp2a-1.1.1/src/Makefile.am000066400000000000000000000001771414624405500152030ustar00rootroot00000000000000bin_PROGRAMS = jp2a jp2a_SOURCES = aspect_ratio.c html.c terminal.c curl.c jp2a.c options.c image.c AM_CPPFLAGS = -I../include jp2a-1.1.1/src/aspect_ratio.c000066400000000000000000000022271414624405500157660ustar00rootroot00000000000000/* * Copyright 2006-2016 Christian Stigen Larsen * Copyright 2020 Christoph Raitzig * Distributed under the GNU General Public License (GPL) v2. */ #include "options.h" #include "round.h" void aspect_ratio(const int jpeg_width, const int jpeg_height) { // the 2.0f and 0.5f factors are used for text displays that (usually) have characters // that are taller than they are wide. #define CALC_WIDTH ROUND(2.0f * (float) height * (float) jpeg_width / (float) jpeg_height) #define CALC_HEIGHT ROUND(0.5f * (float) width * (float) jpeg_height / (float) jpeg_width) // calc width if ( auto_width && !auto_height ) { width = CALC_WIDTH; // adjust for too small dimensions while ( width==0 ) { ++height; aspect_ratio(jpeg_width, jpeg_height); } while ( termfit==TERM_FIT_AUTO && (width + use_border*2)>term_width ) { width = term_width - use_border*2; height = 0; auto_height = 1; auto_width = 0; aspect_ratio(jpeg_width, jpeg_height); } } // calc height if ( !auto_width && auto_height ) { height = CALC_HEIGHT; // adjust for too small dimensions if ( height==0 ) { height = ( jpeg_height == 1 )? 0 : 1; } } } jp2a-1.1.1/src/curl.c000066400000000000000000000050231414624405500142530ustar00rootroot00000000000000/* * Copyright 2006-2016 Christian Stigen Larsen * Copyright 2020 Christoph Raitzig * Distributed under the GNU General Public License (GPL) v2. */ #include "curl.h" #include "config.h" #ifdef FEAT_CURL #ifdef WIN32 #include #include #endif #include #ifdef HAVE_CURL_CURL_H #include "curl/curl.h" #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef WIN32 #include #include #define close _close #define pipe(x) _pipe(x, 256, O_BINARY) #endif // local variables to curl.c int fd[2], debugopt; const char* URL; int is_url(const char* s) { return !strncmp(s, "ftp://", 6) | !strncmp(s, "ftps://", 7) | !strncmp(s, "file://", 7) | !strncmp(s, "http://", 7) | !strncmp(s, "tftp://", 7) | !strncmp(s, "https://", 8); } #ifdef WIN32 size_t passthru_write(void *buffer, size_t size, size_t nmemb, void *userp) { FILE *f = (FILE*) userp; return f!=NULL? fwrite(buffer, size, nmemb, f) : 0; } #endif #ifndef WIN32 void curl_download_child() #else void curl_download_child(void*) #endif { FILE *fw; CURL *curl; #ifndef WIN32 close(fd[0]); // close read-end #endif if ( (fw = fdopen(fd[1], "wb")) == NULL ) { fputs("Could not open pipe for writing.\n", stderr); exit(1); } curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, URL); if ( debugopt ) curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1); // fail silently curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); // redirects curl_easy_setopt(curl, CURLOPT_WRITEDATA, fw); #ifdef WIN32 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, passthru_write); #endif curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(fw); close(fd[1]); // close write-end curl_global_cleanup(); #ifdef WIN32 _endthread(); #endif } int curl_download(const char* url, const int debug) { #ifndef WIN32 int pid; #endif URL = url; debugopt = debug; if ( pipe(fd) != 0 ) { fputs("Could not create pipe\n", stderr); exit(1); } #ifndef WIN32 if ( (pid = fork()) == 0 ) { // CHILD process curl_download_child(); exit(0); } else if ( pid < 0 ) { fputs("Could not fork.\n", stderr); exit(1); } #else if ( _beginthread(curl_download_child, 0, NULL) <= 0 ) { fputs("Could not create thread", stderr); exit(1); } #endif // PARENT process #ifndef WIN32 close(fd[1]); // close write end of pipe #endif return fd[0]; } #endif jp2a-1.1.1/src/html.c000066400000000000000000000112401414624405500142500ustar00rootroot00000000000000/* * Copyright 2006-2016 Christian Stigen Larsen * Copyright 2020 Christoph Raitzig * Distributed under the GNU General Public License (GPL) v2. */ #include "config.h" #include #include #include #include "html.h" #include "options.h" void print_html_document_start(const int fontsize, FILE *f) { fputs("\n" "\n" " \n" " \n", f); fprintf(f, " %s\n", html_title); fputs( " \n" " \n" "\n", f); } void print_html_image_start(FILE *f) { fputs("
\n", f);
}

void print_html_document_end(FILE *f) {
	fputs("\n\n", f);
}

void print_html_image_end(FILE *f) {
	fputs("
\n
\n", f); } #if ASCII void print_html_char(FILE *f, const char ch, const int r_fg, const int g_fg, const int b_fg, const int r_bg, const int g_bg, const int b_bg) #else void print_html_char(FILE *f, const char* ch, const int r_fg, const int g_fg, const int b_fg, const int r_bg, const int g_bg, const int b_bg) #endif { if ( colorfill ) { fprintf(f, "%s", r_fg, g_fg, b_fg, r_bg, g_bg, b_bg, html_entity(ch)); } else fprintf(f, "%s", r_fg, g_fg, b_fg, html_entity(ch)); } void print_html_newline(FILE *f) { fputs("
", f); } void print_xhtml_document_start(const int fontsize, FILE *f) { fputs( "\n" "\n" "\n" "\n", f); fprintf(f, "%s\n", html_title); fputs( "\n" "\n" "\n", f); } void print_xhtml_image_start(FILE *f) { fputs("
\n", f);
}

void print_xhtml_document_end(FILE *f) {
	fputs("\n\n", f);
}

void print_xhtml_image_end(FILE *f) {
	fputs("
\n
\n", f); } #if ASCII void print_xhtml_char(FILE *f, const char ch, const int r_fg, const int g_fg, const int b_fg, const int r_bg, const int g_bg, const int b_bg) #else void print_xhtml_char(FILE *f, const char* ch, const int r_fg, const int g_fg, const int b_fg, const int r_bg, const int g_bg, const int b_bg) #endif { if ( colorfill ) { fprintf(f, "%s", r_fg, g_fg, b_fg, r_bg, g_bg, b_bg, html_entity(ch)); } else fprintf(f, "%s", r_fg, g_fg, b_fg, html_entity(ch)); } void print_xhtml_newline(FILE *f) { fputs("
", f); } void print_css(const int fontsize, FILE *f) { fputs("body {\n", f); fputs(!invert? " background-color: white;\n" : "background-color: black;\n", f); fputs( "}\n" ".ascii {\n" " font-family: Courier;\n", f); // should be a monospaced font if ( !usecolors ) fputs(!invert? " color: black;\n" : " color: white;\n", f); fprintf(f, " font-size:%dpt;\n", fontsize); if ( html_bold ) fputs( " font-weight: bold;\n", f); else fputs( " font-weight: normal;\n", f); fputs( "}\n", f); } #if ASCII const char* html_entity(const char ch) { // if a html entity is larger than 6 // chars, change escape_title accordingly static char s[2]; switch ( ch ) { #else const char* html_entity(const char* ch) { switch ( ch[0] ) { #endif case ' ': return " "; break; case '<': return "<"; break; case '>': return ">"; break; case '&': return "&"; break; default: #if ASCII s[0]=ch; s[1]=0; return s; break; #else return ch; #endif } } int escape_title() { if ( strlen(html_title_raw)==0 ) { return 1; } html_title = calloc(strlen(html_title_raw)*6 +1, sizeof(char)); // at most // 6 characters are returned by html_entity for each character if ( html_title==NULL ) { return 0; } int j = 0; int sizeNew; char* newChar; for (int i = 0; i < strlen(html_title_raw); i++) { if ( html_title_raw[i]=='&' ) { // otherwise HTML entities could not be // used on purpose html_title[j++] = '&'; continue; } #if ASCII const char* newChar = html_entity(html_title_raw[i]); #else char tempString[2]; tempString[0] = html_title_raw[i]; tempString[1] = '\0'; const char* newChar = html_entity(tempString); #endif sizeNew = strlen(newChar); for (int k = 0; k < sizeNew; k++) { html_title[j+k] = newChar[k]; } j += sizeNew; } if ( realloc(html_title, (j+1) * sizeof(char))==NULL ) return 0; return 1; } jp2a-1.1.1/src/image.c000066400000000000000000000560351414624405500144010ustar00rootroot00000000000000/* * Copyright 2006-2016 Christian Stigen Larsen * Copyright 2020 Christoph Raitzig * Distributed under the GNU General Public License (GPL) v2. */ #include "config.h" #ifdef HAVE_STDLIB_H #include #endif #include #include #ifdef HAVE_STRING_H #include #endif #include "jpeglib.h" #include "png.h" #include #include "aspect_ratio.h" #include "image.h" #include "jp2a.h" #include "options.h" #include "html.h" #define ROUND(x) (int) ( 0.5f + x ) void print_border(const int width) { #ifndef HAVE_MEMSET int n; #endif #ifdef WIN32 char *bord = (char*) malloc(width+3); #else char bord[width + 3]; #endif #ifdef HAVE_MEMSET memset(bord, '-', width+2); #else for ( n=0; nwidth); (!usecolors? print_image_no_colors : print_image_colors) (image, ascii_palette_length - 1, f); if ( use_border ) print_border(image->width); if ( html && !html_rawoutput ) print_html_image_end(f); else if ( xhtml && !html_rawoutput ) print_xhtml_image_end(f); } void print_image_colors(const Image* const image, const int chars, FILE* f) { int x, y; int xstart, xend, xincr; for ( y=0; y < image->height; ++y ) { if ( use_border ) fprintf(f, "|"); xstart = 0; xend = image->width; xincr = 1; if ( flipx ) { xstart = image->width - 1; xend = -1; xincr = -1; } for ( x=xstart; x != xend; x += xincr ) { float Y = image->pixel[x + (flipy? image->height - y - 1 : y ) * image->width]; float Y_inv = 1.0f - Y; float R = image->red [x + (flipy? image->height - y - 1 : y ) * image->width]; float G = image->green[x + (flipy? image->height - y - 1 : y ) * image->width]; float B = image->blue [x + (flipy? image->height - y - 1 : y ) * image->width]; float A = image->alpha [x + (flipy? image->height - y - 1 : y ) * image->width]; R *= A; G *= A; B *= A; const int pos = ROUND((float)chars * (!invert? Y_inv : Y)); int i = ROUND((float)pos * A); #if ASCII char ch = ascii_palette[i]; #define PRINTF_FORMAT_TYPE "%c" #else char ch[MB_LEN_MAX + 1]; ch[0] = ascii_palette[ascii_palette_indizes[i]]; for ( size_t j = 1; j < ascii_palette_lengths[i]; j++ ) { ch[j] = ascii_palette[ascii_palette_indizes[i] + j]; } ch[ascii_palette_lengths[i]] = '\0'; #define PRINTF_FORMAT_TYPE "%s" #endif const float min = 1.0f / 255.0f; if ( !html && !xhtml ) { if ( usecolors ) // reset colors, the terminal could be colored by default fprintf(f, "\e[0m"); // reset colors if ( colorDepth==4 ) { const float t = 0.1f; // threshold const float i = 1.0f - t; int colr = 0; int highl = 0; // ANSI highlite, only use in grayscale if ( Y>=0.95f && RG && R-t>B ) colr = 31; // red else if ( G-t>R && G-t>B ) colr = 32; // green else if ( R-t>B && G-t>B && R+G>i ) colr = 33; // yellow else if ( B-t>R && B-t>G && Y<0.95f ) colr = 34; // blue else if ( R-t>G && B-t>G && R+B>i ) colr = 35; // magenta else if ( G-t>R && B-t>R && B+G>i ) colr = 36; // cyan else if ( R+G+B>=3.0f*Y ) colr = 37; // white } else { if ( Y>=0.7f ) { highl=1; colr = 37; } } if ( !colr ) { if ( !highl ) fprintf(f, PRINTF_FORMAT_TYPE, ch); else fprintf(f, "\e[1m" PRINTF_FORMAT_TYPE "\e[0m", ch); } else { if ( colorfill ) colr += 10; // set to ANSI background color fprintf(f, "\e[%dm" PRINTF_FORMAT_TYPE, colr, ch); // ANSI color } } else if ( colorDepth==8 ) { int type = 38; // 38 = foreground; 48 = background if ( colorfill ) type += 10; // set to background color if ( convert_grayscale || (Rmin) ) { if ( Y < 0.15 ) { if ( colorfill ) fprintf(f, "\e[38;5;%dm", 0); fprintf(f, "\e[%d;5;0%dm" PRINTF_FORMAT_TYPE, type, 0, ch); } else if ( Y > 0.965 ) { if ( colorfill ) fprintf(f, "\e[38;5;%dm", 244); fprintf(f, "\e[%d;5;%dm" PRINTF_FORMAT_TYPE, type, 231, ch); } else { if ( colorfill ) fprintf(f, "\e[38;5;%dm", ROUND(24.0f*Y*0.5f) + 232); fprintf(f, "\e[%d;5;%dm" PRINTF_FORMAT_TYPE, type, ROUND(24.0f*Y) + 232, ch); } } else { if ( colorfill ) fprintf(f, "\e[38;5;%dm", 16 + 36 * ROUND(5.0f*Y*R) + 6 * ROUND(5.0f*Y*G) + ROUND(5.0f*Y*B)); // foreground color fprintf(f, "\e[%d;5;%dm" PRINTF_FORMAT_TYPE, type, 16 + 36 * ROUND(5.0f*R) + 6 * ROUND(5.0f*G) + ROUND(5.0f*B), ch); // color } } else if ( colorDepth==24 ) { int type = 38; // 38 = foreground; 48 = background if ( colorfill ) type += 10; // set to background color if ( convert_grayscale || (Rmin) ) { if ( colorfill ) fprintf(f, "\x1b[38;2;%d;%d;%dm", ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y*0.5f)); fprintf(f, "\x1b[%d;2;%d;%d;%dm" PRINTF_FORMAT_TYPE, type, ROUND(255.0f*Y), ROUND(255.0f*Y), ROUND(255.0f*Y), ch); } else { if ( colorfill ) fprintf(f, "\x1b[38;2;%d;%d;%dm", ROUND(255.0f*Y*R), ROUND(255.0f*Y*G), ROUND(255.0f*Y*B)); // foreground color fprintf(f, "\x1b[%d;2;%d;%d;%dm" PRINTF_FORMAT_TYPE, type, ROUND(255.0f*R), ROUND(255.0f*G), ROUND(255.0f*B), ch); // color } } } else if ( html ) { // HTML output // either --grayscale is specified (convert_grayscale) // or we can see that the image is inherently a grayscale image if ( convert_grayscale || (Rmin) ) { // Grayscale image if ( colorfill ) print_html_char(f, ch, ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y), ROUND(255.0f*Y), ROUND(255.0f*Y)); else print_html_char(f, ch, ROUND(255.0f*Y), ROUND(255.0f*Y), ROUND(255.0f*Y), 255, 255, 255); } else { if ( colorfill ) print_html_char(f, ch, ROUND(255.0f*Y*R), ROUND(255.0f*Y*G), ROUND(255.0f*Y*B), ROUND(255.0f*R), ROUND(255.0f*G), ROUND(255.0f*B)); else print_html_char(f, ch, ROUND(255.0f*R), ROUND(255.0f*G), ROUND(255.0f*B), 255, 255, 255); } } else if ( xhtml ) { // XHTML output // either --grayscale is specified (convert_grayscale) // or we can see that the image is inherently a grayscale image if ( convert_grayscale || (Rmin) ) { // Grayscale image if ( colorfill ) print_xhtml_char(f, ch, ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y*0.5f), ROUND(255.0f*Y), ROUND(255.0f*Y), ROUND(255.0f*Y)); else print_xhtml_char(f, ch, ROUND(255.0f*Y), ROUND(255.0f*Y), ROUND(255.0f*Y), 255, 255, 255); } else { if ( colorfill ) print_xhtml_char(f, ch, ROUND(255.0f*Y*R), ROUND(255.0f*Y*G), ROUND(255.0f*Y*B), ROUND(255.0f*R), ROUND(255.0f*G), ROUND(255.0f*B)); else print_xhtml_char(f, ch, ROUND(255.0f*R), ROUND(255.0f*G), ROUND(255.0f*B), 255, 255, 255); } } } if ( usecolors && !html && !xhtml ) fprintf(f, "\e[0m"); if ( use_border ) fputc('|', f); if ( html ) print_html_newline(f); else if ( xhtml ) print_xhtml_newline(f); else fputc('\n', f); } } void print_image_no_colors(const Image* const image, const int chars, FILE *f) { int x, y; #if ASCII #ifdef WIN32 char *line = (char*) malloc(image->width + 1); #else char line[image->width + 1]; #endif line[image->width] = 0; #else #ifdef WIN32 char *line = (char*) malloc(image->width * MB_LEN_MAX + 1); #else char line[image->width * MB_LEN_MAX + 1]; #endif int curLinePos; line[image->width * MB_LEN_MAX] = 0; #endif for ( y=0; y < image->height; ++y ) { #if ! ASCII curLinePos = flipx? image->width * MB_LEN_MAX : 0; #endif for ( x=0; x < image->width; ++x ) { const float lum = image->pixel[x + (flipy? image->height - y - 1 : y) * image->width]; const float opacity = image->alpha[x + (flipy? image->height - y - 1 : y) * image->width]; const int pos = ROUND((float)chars * lum); int i = invert? pos : chars - pos; i = ROUND((float)i * opacity); #if ASCII line[flipx? image->width - x - 1 : x] = ascii_palette[i]; #else int paletteI = ascii_palette_indizes[i]; if ( flipx ) curLinePos -= ascii_palette_lengths[i]; line[curLinePos++] = ascii_palette[paletteI]; // Add as many bytes as the char's length for ( size_t j = 1; j < ascii_palette_lengths[i]; j++ ) { line[curLinePos++] = ascii_palette[++paletteI]; } if ( flipx ) curLinePos -= ascii_palette_lengths[i]; #endif } #if ASCII fprintf(f, !use_border? "%s\n" : "|%s|\n", line); #else if ( !flipx ) { line[curLinePos] = '\0'; fprintf(f, !use_border? "%s\n" : "|%s|\n", line); } else { fprintf(f, !use_border? "%s\n" : "|%s|\n", line + curLinePos); } #endif } #ifdef WIN32 free(line); #endif } void clear(Image* i) { memset(i->yadds, 0, i->height * sizeof(int) ); memset(i->pixel, 0, i->width * i->height * sizeof(float)); for ( int j = 0; j < i->width * i->height; ++j ) { i->alpha[j] = 1.0; } memset(i->lookup_resx, 0, (1 + i->width) * sizeof(int) ); if ( usecolors ) { memset(i->red, 0, i->width * i->height * sizeof(float)); memset(i->green, 0, i->width * i->height * sizeof(float)); memset(i->blue, 0, i->width * i->height * sizeof(float)); } } void normalize(Image* i) { float *pixel = i->pixel; float *red = i->red; float *green = i->green; float *blue = i->blue; int x, y; for ( y=0; y < i->height; ++y ) { if ( i->yadds[y] > 1 ) { for ( x=0; x < i->width; ++x ) { pixel[x] /= i->yadds[y]; if ( usecolors ) { red [x] /= i->yadds[y]; green[x] /= i->yadds[y]; blue [x] /= i->yadds[y]; } } } pixel += i->width; if ( usecolors ) { red += i->width; green += i->width; blue += i->width; } } } void print_progress(float progress) { int pos; #define BARLEN 56 static char s[BARLEN]; s[BARLEN-1] = 0; pos = ROUND( (float) (BARLEN-2) * progress ); memset(s, '.', BARLEN-2); memset(s, '#', pos); fprintf(stderr, "Decompressing image [%s]\r", s); fflush(stderr); } void print_info_jpeg(const struct jpeg_decompress_struct* jpg) { fprintf(stderr, "Source width: %d\n", jpg->output_width); fprintf(stderr, "Source height: %d\n", jpg->output_height); fprintf(stderr, "Source color components: %d\n", jpg->output_components); fprintf(stderr, "Output width: %d\n", width); fprintf(stderr, "Output height: %d\n", height); fprintf(stderr, "Output palette (%d chars): '%s'\n", ascii_palette_length, ascii_palette); } void print_info_png(const png_structp png_ptr, const png_infop info_ptr) { fprintf(stderr, "Source width: %d\n", png_get_image_width(png_ptr, info_ptr)); fprintf(stderr, "Source height: %d\n", png_get_image_height(png_ptr, info_ptr)); fprintf(stderr, "Source channel count: %d ", png_get_channels(png_ptr, info_ptr)); switch ( png_get_color_type(png_ptr, info_ptr) ) { case PNG_COLOR_TYPE_GRAY: fprintf(stderr, "(G)\n"); break; case PNG_COLOR_TYPE_GRAY_ALPHA: fprintf(stderr, "(GA)\n"); break; case PNG_COLOR_TYPE_PALETTE: fprintf(stderr, "(Palette)\n"); break; case PNG_COLOR_TYPE_RGB: fprintf(stderr, "(RGB)\n"); break; case PNG_COLOR_TYPE_RGB_ALPHA: fprintf(stderr, "(RGBA)\n"); break; } switch ( png_get_interlace_type(png_ptr, info_ptr) ) { case PNG_INTERLACE_NONE: fprintf(stderr, "Source interlacing: None\n"); break; case PNG_INTERLACE_ADAM7: fprintf(stderr, "Source interlacing: Adam7\n"); break; } fprintf(stderr, "Source bit depth: %d\n", png_get_bit_depth(png_ptr, info_ptr)); fprintf(stderr, "Output width: %d\n", width); fprintf(stderr, "Output height: %d\n", height); fprintf(stderr, "Output palette (%d chars): '%s'\n", ascii_palette_length, ascii_palette); } void process_scanline_jpeg(const struct jpeg_decompress_struct *jpg, const JSAMPLE* scanline, Image* i) { static int lasty = 0; const int y = ROUND( i->resize_y * (float) (jpg->output_scanline-1) ); // include all scanlines since last call float *pixel, *red, *green, *blue, *alpha; pixel = &i->pixel[lasty * i->width]; red = green = blue = NULL; alpha = &i->alpha[lasty * i->width]; if ( usecolors ) { int offset = lasty * i->width; red = &i->red [offset]; green = &i->green[offset]; blue = &i->blue [offset]; } while ( lasty <= y ) { const int components = jpg->out_color_components; int x; for ( x=0; x < i->width; ++x ) { const JSAMPLE *src = &scanline[i->lookup_resx[x] * jpg->out_color_components]; const JSAMPLE *src_end = &scanline[i->lookup_resx[x+1] * jpg->out_color_components]; int adds = 0; float v, r, g, b; v = r = g = b = 0.0f; while ( src <= src_end ) { if ( components != 3 ) v += GRAY[src[0]]; else { v += RED[src[0]] + GREEN[src[1]] + BLUE[src[2]]; if ( usecolors ) { r += (float) src[0]/255.0f; g += (float) src[1]/255.0f; b += (float) src[2]/255.0f; } } ++adds; src += components; } pixel[x] += adds>1 ? v / (float) adds : v; alpha[x] = 1.0; if ( usecolors ) { red [x] += adds>1 ? r / (float) adds : r; green[x] += adds>1 ? g / (float) adds : g; blue [x] += adds>1 ? b / (float) adds : b; } } ++i->yadds[lasty++]; pixel += i->width; alpha += i->width; if ( usecolors ) { red += i->width; green += i->width; blue += i->width; } } lasty = y; } void process_scanline_png(const png_bytep row, const int current_y, const int color_components, Image* i) { static int lasty = 0; const int y = ROUND( i->resize_y * (float) current_y ); // include all scanlines since last call float *pixel, *red, *green, *blue, *alpha; pixel = &i->pixel[lasty * i->width]; red = green = blue = NULL; alpha = &i->alpha[lasty * i->width]; if ( usecolors ) { int offset = lasty * i->width; red = &i->red [offset]; green = &i->green[offset]; blue = &i->blue [offset]; } while ( lasty <= y ) { int x; for ( x=0; x < i->width; ++x ) { int adds = 0; float v, r, g, b, a; v = r = g = b = a = 0.0f; for ( int j = i->lookup_resx[x] ; j < i->lookup_resx[x+1]; ++j ) { png_byte* src_pixel = &(row[j * color_components]); if ( color_components < 3 ) { v += GRAY[src_pixel[0]]; if ( color_components == 2 ) a += ALPHA[src_pixel[1]]; } else { v += RED[src_pixel[0]] + GREEN[src_pixel[1]] + BLUE[src_pixel[2]]; if ( usecolors ) { r += (float) src_pixel[0]/255.0f; g += (float) src_pixel[1]/255.0f; b += (float) src_pixel[2]/255.0f; } if ( color_components == 4 ) a += ALPHA[src_pixel[3]]; } ++adds; } pixel[x] += adds>1 ? v / (float) adds : v; if ( usecolors ) { red [x] += adds>1 ? r / (float) adds : r; green[x] += adds>1 ? g / (float) adds : g; blue [x] += adds>1 ? b / (float) adds : b; } if ( color_components == 1 || color_components == 3 ) { alpha[x] = 1.0; } else { if ( a == 0.0 ) alpha[x] = 0.0; else alpha[x] = adds>1 ? a / (float) adds : a; } } ++i->yadds[lasty++]; pixel += i->width; alpha += i->width; if ( usecolors ) { red += i->width; green += i->width; blue += i->width; } } lasty = y; } void free_image(Image* i) { if ( i->pixel ) free(i->pixel); if ( i->alpha ) free(i->alpha); if ( i->red ) free(i->red); if ( i->green ) free(i->green); if ( i->blue ) free(i->blue); if ( i->yadds ) free(i->yadds); if ( i->lookup_resx ) free(i->lookup_resx); } void malloc_image(Image* i) { i->pixel = i->red = i->green = i->blue = i->alpha = NULL; i->yadds = NULL; i->lookup_resx = NULL; i->width = width; i->height = height; i->yadds = (int*) malloc(height * sizeof(int)); i->pixel = (float*) malloc(width*height*sizeof(float)); i->alpha = (float*) malloc(width*height*sizeof(float)); if ( usecolors ) { i->red = (float*) malloc(width*height*sizeof(float)); i->green = (float*) malloc(width*height*sizeof(float)); i->blue = (float*) malloc(width*height*sizeof(float)); } // we allocate one extra pixel for resx because of the src .. src_end stuff in process_scanline_jpeg and the equivalent in for PNG i->lookup_resx = (int*) malloc( (1 + width) * sizeof(int)); if ( !(i->pixel && i->alpha && i->yadds && i->lookup_resx) || (usecolors && !(i->red && i->green && i->blue)) ) { fprintf(stderr, "Not enough memory for given output dimension\n"); free_image(i); exit(1); } } void init_image(Image *i, int src_width, int src_height) { int dst_x; if ( src_height > 1 ) i->resize_y = (float) (i->height - 1) / (float) (src_height - 1); else i->resize_y = 1; i->resize_x = (float) (src_width - 1) / (float) (i->width ); for ( dst_x=0; dst_x <= i->width; ++dst_x ) { i->lookup_resx[dst_x] = ROUND( (float) dst_x * i->resize_x ); } } void decompress_jpeg(FILE *fp, FILE *fout, error_collector *errors) { if ( errors->jpeg_status ) { print_errors(errors); return; } int row_stride; my_jpeg_error_mgr jerr; struct jpeg_decompress_struct jpg; JSAMPARRAY buffer; Image image; jpg.err = jpeg_std_error(&jerr.pub); jerr.pub.error_exit = jpeg_error_exit; if ( setjmp(jerr.setjmp_buffer) ) { errors->jpeg_error = &jerr; errors->jpeg_status = 1; jpeg_destroy_decompress(&jpg); rewind(fp); decompress_png(fp, fout, errors); return; } jpeg_create_decompress(&jpg); jpeg_stdio_src(&jpg, fp); jpeg_read_header(&jpg, TRUE); jpeg_start_decompress(&jpg); if ( jpg.data_precision != 8 ) { fprintf(stderr, "Image has %d bits color channels, we only support 8-bit.\n", jpg.data_precision); exit(1); } row_stride = jpg.output_width * jpg.output_components; buffer = (*jpg.mem->alloc_sarray)((j_common_ptr) &jpg, JPOOL_IMAGE, row_stride, 1); aspect_ratio(jpg.output_width, jpg.output_height); if ( verbose ) print_info_jpeg(&jpg); if ( height != 0 && width != 0 ) { malloc_image(&image); clear(&image); init_image(&image, jpg.output_width, jpg.output_height); while ( jpg.output_scanline < jpg.output_height ) { jpeg_read_scanlines(&jpg, buffer, 1); process_scanline_jpeg(&jpg, buffer[0], &image); if ( verbose ) print_progress((float) (jpg.output_scanline + 1.0f) / (float) jpg.output_height); } print_image(&image, fout); free_image(&image); jpeg_finish_decompress(&jpg); } jpeg_destroy_decompress(&jpg); } void jpeg_error_exit(j_common_ptr jerr) { my_jpeg_error_ptr myerr = (my_jpeg_error_ptr)jerr->err; longjmp(myerr->setjmp_buffer, 1); } void decompress_png(FILE *fp, FILE *fout, error_collector *errors) { if ( errors->png_status ) { print_errors(errors); return; } Image image; int number_bytes_to_check = 8; char header[number_bytes_to_check]; if ( fread(&header, 1, number_bytes_to_check, fp) != number_bytes_to_check || png_sig_cmp(header, 0, number_bytes_to_check) ) { errors->png_error_msg = "Not a PNG file: Wrong signature"; errors->png_status = 1; rewind(fp); decompress_jpeg(fp, fout, errors); return; } png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if ( !png_ptr ) { fprintf(stderr, "Unable to setup PNG reading, skipping file.\n"); return; } png_infop info_ptr = png_create_info_struct(png_ptr); if ( !info_ptr ) { fprintf(stderr, "Unable to setup PNG reading, skipping file.\n"); png_destroy_read_struct(&png_ptr, NULL, NULL); return; } if ( setjmp(png_jmpbuf(png_ptr)) ) { errors->png_error_msg = "Not a valid PNG file."; errors->png_status = 1; png_destroy_read_struct(&png_ptr, &info_ptr, NULL); rewind(fp); decompress_jpeg(fp, fout, errors); return; } png_init_io(png_ptr, fp); png_set_sig_bytes(png_ptr, number_bytes_to_check); png_read_info(png_ptr, info_ptr); int png_width = png_get_image_width(png_ptr, info_ptr); int png_height = png_get_image_height(png_ptr, info_ptr); aspect_ratio(png_width, png_height); if ( verbose ) print_info_png(png_ptr, info_ptr); if ( height != 0 && width != 0 ) { malloc_image(&image); clear(&image); // peform transformations (after printing the info): if ( png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE ) png_set_palette_to_rgb(png_ptr); if ( png_get_bit_depth(png_ptr, info_ptr) < 8 ) { if ( png_get_channels(png_ptr, info_ptr) < 3 ) { png_set_expand_gray_1_2_4_to_8(png_ptr); } else { png_set_expand(png_ptr); } } if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) png_set_tRNS_to_alpha(png_ptr); if ( png_get_bit_depth(png_ptr, info_ptr) == 16 ) png_set_strip_16(png_ptr); int number_of_passes = png_set_interlace_handling(png_ptr); png_read_update_info(png_ptr, info_ptr); init_image(&image, png_width, png_height); if ( verbose ) print_progress(0.0); if ( png_get_interlace_type(png_ptr, info_ptr) == PNG_INTERLACE_NONE ) { png_bytep row_pointer = png_malloc(png_ptr, png_width * png_get_channels(png_ptr, info_ptr) * 1); for ( int y = 0; y < png_height; y++ ) { png_read_row(png_ptr, row_pointer, NULL); process_scanline_png(row_pointer, y, png_get_channels(png_ptr, info_ptr), &image); if ( verbose ) print_progress((float) y/png_height); } png_free(png_ptr, row_pointer); } else { png_bytepp row_pointers = png_malloc(png_ptr, png_height * sizeof(png_bytep)); for ( int i = 0; i < png_height; ++i ) row_pointers[i] = NULL; for ( int i = 0; i < png_height; ++i ) row_pointers[i] = png_malloc(png_ptr, png_width * png_get_channels(png_ptr, info_ptr) * 1); // png_read_image would do the same thing, but progress could not be displayed for ( int passes = 0; passes < number_of_passes; ++passes ) { png_read_rows(png_ptr, row_pointers, NULL, png_height); if ( verbose ) print_progress((float) (passes + 1)/number_of_passes); } for ( int y = 0; y < png_height; y++ ) { process_scanline_png(row_pointers[y], y, png_get_channels(png_ptr, info_ptr), &image); } for ( int i = 0; i < png_height; ++i ) png_free(png_ptr, row_pointers[i]); png_free(png_ptr, row_pointers); } if ( verbose ) print_progress(1.0); png_read_end(png_ptr, NULL); print_image(&image, fout); free_image(&image); } png_destroy_read_struct(&png_ptr, &info_ptr, NULL); } void print_errors(error_collector *errors) { if ( errors->jpeg_status ) { my_jpeg_error_mgr *jerr = errors->jpeg_error; struct jpeg_common_struct cinfo; cinfo.err = &jerr->pub; (jerr->pub.output_message) ((j_common_ptr)&cinfo); } if ( errors->png_status ) { fprintf(stderr, "%s\n", errors->png_error_msg); } } jp2a-1.1.1/src/jp2a.c000066400000000000000000000136051414624405500141470ustar00rootroot00000000000000/* * Copyright 2006-2016 Christian Stigen Larsen * Copyright 2020 Christoph Raitzig * Distributed under the GNU General Public License (GPL) v2. */ #include "config.h" #ifdef HAVE_UNISTD_H #include #endif #include #include #include #ifdef HAVE_STRING_H #include #endif #include "jp2a.h" #include "options.h" #include "image.h" #include "curl.h" #ifdef WIN32 #include #include #define close _close #include #endif int main(int argc, char** argv) { int store_width, store_height, store_autow, store_autoh; FILE *fout = stdout; // FILEs from downloads and pipes are not seekable. // Solution: Copy in a buffer and use fmemopen. char *buffer = NULL; size_t buffer_size = 0; error_collector errors; int retval = 0; #ifdef FEAT_CURL FILE *fr; int fd; #endif FILE *fp; int n; #if ! ASCII setlocale(LC_ALL, ""); #endif parse_options(argc, argv); store_width = width; store_height = height; store_autow = auto_width; store_autoh = auto_height; if ( strcmp(fileout, "-") ) { if ( (fout = fopen(fileout, "wb")) == NULL ) { fprintf(stderr, "Could not open '%s' for writing.\n", fileout); free(html_title); return 1; } } if ( html && !html_rawoutput ) print_html_document_start(html_fontsize, fout); else if ( xhtml && !html_rawoutput ) print_xhtml_document_start(html_fontsize, fout); free(html_title); for ( n=1; n 4 && strcmp(".png", argv[n] + (urllen - 4)) == 0 ) decompress_png(buffer_f, fout, &errors); else decompress_jpeg(buffer_f, fout, &errors); fclose(buffer_f); } #ifdef _WIN32 CloseHandle(handle); #endif } fclose(fr); close(fd); if ( errors.jpeg_status && errors.png_status ) retval = 1; continue; } #endif // read files if ( (fp = fopen(argv[n], "rb")) != NULL ) { if ( verbose ) fprintf(stderr, "File: %s\n", argv[n]); int namelen = strlen(argv[n]); if ( namelen > 4 && strcmp(".png", argv[n] + (namelen - 4)) == 0 ) decompress_png(fp, fout, &errors); else decompress_jpeg(fp, fout, &errors); fclose(fp); if ( errors.jpeg_status && errors.png_status ) retval = 1; continue; } else { fprintf(stderr, "Can't open %s\n", argv[n]); return 1; } } if ( html && !html_rawoutput ) print_html_document_end(fout); else if ( xhtml && !html_rawoutput ) print_xhtml_document_end(fout); if ( buffer_size != 0 ) { free(buffer); } if ( fout != stdout ) fclose(fout); return retval; } int read_into_buffer(FILE *fp, char **buffer, size_t *buffer_size, size_t *actual_size) { #define BUFFER_ALLOC_INCREMENTS 16384 *actual_size = 0; if ( *buffer_size == 0 ) { *buffer_size = BUFFER_ALLOC_INCREMENTS; *buffer = malloc(*buffer_size); if ( *buffer == NULL ) { fprintf(stderr, "Not enough memory. Skipping an image.\n"); *buffer_size = 0; return 0; } } char *current = *buffer; while ( !feof(fp) ) { *actual_size += fread(current, 1, BUFFER_ALLOC_INCREMENTS, fp); if ( *actual_size == *buffer_size ) { *buffer_size += BUFFER_ALLOC_INCREMENTS; if ( debug ) fprintf(stdout, "Reallocating to: %ld\n", *buffer_size); current = realloc(*buffer, *buffer_size); if ( current == NULL ) { fprintf(stderr, "Not enough memory. Skipping an image.\n"); *buffer_size -= BUFFER_ALLOC_INCREMENTS; return 0; } *buffer = current; } current = *buffer + *actual_size; } if ( debug ) fprintf(stderr, "Size: %ld\n", *actual_size); return 1; } #ifdef _WIN32 HANDLE fmemopen(void *buf, size_t size, const char *mode) { TCHAR temp_path[1024]; DWORD temp_path_len = GetTempPathA(1024, temp_path); if ( temp_path_len == 0 || temp_path_len > 1024 ) return NULL; TCHAR temp_file_name[MAX_PATH]; UINT unique = GetTempFileNameA(temp_path, "jp2a", 0, temp_file_name); if ( unique == 0 ) return NULL; HANDLE outputf = CreateFileA(temp_file_name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); DWORD bytes_written = 0; BOOL written = WriteFile(outputf, buf, size, &bytes_written, NULL); if ( written == FALSE ) return NULL; DWORD retval = SetFilePointer(outputf, 0, NULL, FILE_BEGIN); if ( retval == INVALID_SET_FILE_POINTER ) return NULL; return outputf; } #endif jp2a-1.1.1/src/options.c000066400000000000000000000332211414624405500150020ustar00rootroot00000000000000/* * Copyright 2006-2016 Christian Stigen Larsen * Copyright 2020 Christoph Raitzig * Distributed under the GNU General Public License (GPL) v2. */ #include "config.h" #include #include #include #include #include #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_CURSES_H #include #endif #ifdef HAVE_TERM_H #include #endif #include "jp2a.h" #include "options.h" #include "terminal.h" #include "html.h" // Default options int verbose = 0; int auto_height = 1; int auto_width = 0; int width = #ifdef FEAT_TERMLIB 0; #else 78; #endif int height = 0; int use_border = 0; int invert = 1; int flipx = 0; int flipy = 0; int html = 0; int xhtml = 0; int colorfill = 0; int convert_grayscale = 0; int html_fontsize = 8; int html_bold = 1; const char* html_title_raw = HTML_DEFAULT_TITLE; char* html_title = NULL; int html_rawoutput = 0; int debug = 0; int clearscr = 0; int term_width = 0; int term_height = 0; int usecolors = 0; int colorDepth = 0; int termfit = #ifdef FEAT_TERMLIB TERM_FIT_AUTO; #else 0; #endif int ascii_palette_length = 23; #if ASCII char ascii_palette[ASCII_PALETTE_SIZE + 1] = ASCII_PALETTE_DEFAULT; #else char ascii_palette[ASCII_PALETTE_SIZE * MB_LEN_MAX + 1] = ASCII_PALETTE_DEFAULT; unsigned char ascii_palette_indizes[ASCII_PALETTE_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}; char ascii_palette_lengths[ASCII_PALETTE_SIZE] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; #endif // Default weights float redweight = 0.2989f; float greenweight = 0.5866f; float blueweight = 0.1145f; // calculated in parse_options float RED[256], GREEN[256], BLUE[256], ALPHA[256], GRAY[256]; const char *fileout = "-"; const char* version = PACKAGE_STRING; const char* copyright = "Copyright 2006-2016 Christian Stigen Larsen\n" "and 2020 Christoph Raitzig"; const char* license = "Distributed under the GNU General Public License (GPL) v2."; const char* url = PACKAGE_URL; void print_version() { fprintf(stderr, "%s\n%s\n%s\n", version, copyright, license); } void help() { print_version(); fputs( "\n" #ifdef FEAT_CURL "Usage: jp2a [ options ] [ file(s) | URL(s) ]\n\n" "Convert files or URLs from JPEG/PNG format to ASCII.\n\n" #else "Usage: jp2a [ options ] [ file(s) ]\n\n" "Convert files in JPEG/PNG format to ASCII.\n\n" #endif "OPTIONS\n" " - Read images from standard input.\n" " --blue=N.N Set RGB to grayscale conversion weight, default is 0.1145\n" " -b, --border Print a border around the output image.\n" " --chars=... Select character palette used to paint the image.\n" " Leftmost character corresponds to black pixel, right-\n" " most to white. Minimum two characters must be specified.\n" " --clear Clears screen before drawing each output image.\n" " --colors Use true colors or, if true color is not supported, ANSI\n" " in output.\n" " --color-depth=N Use a specific color-depth for terminal output. Valid\n" " values are: 4 (for ANSI), 8 (for 256 color palette)\n" " and 24 (for truecolor or 24-bit color).\n" " -d, --debug Print additional debug information.\n" " --fill When used with --color and/or --htmlls or --xhtml, color\n" " each character's background.\n" " -x, --flipx Flip image in X direction.\n" " -y, --flipy Flip image in Y direction.\n" #ifdef FEAT_TERMLIB " -f, --term-fit Use the largest image dimension that fits in your terminal\n" " display with correct aspect ratio.\n" " --term-height Use terminal display height.\n" " --term-width Use terminal display width.\n" " -z, --term-zoom Use terminal display dimension for output.\n" #endif " --grayscale Convert image to grayscale when using --htmlls or --xhtml\n" " or --colors\n" " --green=N.N Set RGB to grayscale conversion weight, default is 0.5866\n" " --height=N Set output height, calculate width from aspect ratio.\n" " -h, --help Print program help.\n" " --htmlls Produce HTML (Living Standard) output.\n" " --html Produce strict XHTML 1.0 output (will produce HTML output\n" " from version 2.0.0 onward).\n" " --xhtml Produce strict XHTML 1.0 output.\n" // Obsoletely Fabulous " --html-fill Same as --fill (will be phased out).\n" " --html-fontsize=N Set fontsize to N pt, default is 4.\n" " --html-no-bold Do not use bold characters with HTML output\n" " --html-raw Output raw HTML codes, i.e. without the section etc.\n" " (Will use
for version 2.0.0 and above.)\n" " --html-title=... Set HTML output title\n" " -i, --invert Invert output image. Use if your display has a dark\n" " background.\n" " --background=dark These are just mnemonics whether to use --invert\n" " --background=light or not. If your console has light characters on\n" " a dark background, use --background=dark.\n" " --output=... Write output to file.\n" " --red=N.N Set RGB to grayscale conversion weight, default 0.2989f.\n" " --size=WxH Set output width and height.\n" " -v, --verbose Verbose output.\n" " -V, --version Print program version.\n" " --width=N Set output width, calculate height from ratio.\n" "\n" #ifdef FEAT_TERMLIB " The default mode is `jp2a --term-fit --background=dark'.\n" #else " The default mode is `jp2a --width=78 --background=dark'.\n" #endif " See the man-page for jp2a for more detailed help text.\n" "\n", stderr); fprintf(stderr, "Project homepage on %s\n", url); fprintf(stderr, "Report bugs to <%s>\n", PACKAGE_BUGREPORT); } void precalc_rgb(float red, float green, float blue) { int n; float sum = red + green + blue; red /= sum; green /= sum; blue /= sum; for ( n=0; n<256; ++n ) { RED[n] = ((float) n) * red / 255.0f; GREEN[n] = ((float) n) * green / 255.0f; BLUE[n] = ((float) n) * blue / 255.0f; ALPHA[n] = ((float) n) / 255.0f; GRAY[n] = ((float) n) / 255.0f; } } void parse_options(int argc, char** argv) { // make code more readable #define IF_OPTS(sopt, lopt) if ( !strcmp(s, sopt) || !strcmp(s, lopt) ) #define IF_OPT(sopt) if ( !strcmp(s, sopt) ) #define IF_VARS(format, v1, v2) if ( sscanf(s, format, v1, v2) == 2 ) #define IF_VAR(format, v1) if ( sscanf(s, format, v1) == 1 ) int n, files, fit_to_use; for ( n=1, files=0; n ASCII_PALETTE_SIZE * MB_LEN_MAX ) { fprintf(stderr, "Too many characters specified (max %d)\n", ASCII_PALETTE_SIZE); exit(1); } #endif // don't use sscanf, we need to read spaces as well strcpy(ascii_palette, s+8); #if ASCII ascii_palette_length = strlen(ascii_palette); #else int i = 0; int count = 0; size_t curCharlen; while ( ascii_palette[i] != '\0' ) { ascii_palette_indizes[count] = i; curCharlen = mbrlen(ascii_palette + i, MB_LEN_MAX, NULL); ascii_palette_lengths[count] = curCharlen; if ( curCharlen == -1 ) { fprintf(stderr, "Error with custom chars: %s\n", strerror(errno)); exit(1); } else if ( curCharlen == -2 ) { fprintf(stderr, "Error while parsing custom chars."); exit(1); } i += curCharlen; count++; } if ( count > ASCII_PALETTE_SIZE ) { fprintf(stderr, "Too many characters specified (max %d)\n", ASCII_PALETTE_SIZE); exit(1); } ascii_palette_length = count; #endif continue; } fprintf(stderr, "Unknown option %s\n\n", s); help(); exit(1); } // args ... if ( !files ) { fputs("No files specified.\n\n", stderr); help(); exit(1); } #ifdef FEAT_TERMLIB if ( (width || height) && termfit==TERM_FIT_AUTO ) { // disable default --term-fit if dimensions are given termfit = 0; } #endif if ( termfit ) { char* err = ""; if ( get_termsize(&term_width, &term_height, &err) <= 0 ) { fputs(err, stderr); fputc('\n', stderr); exit(1); } #ifdef __CYGWIN__ // On Cygwin, if I don't decrement term_width, then you'll get extra // blank lines for some window sizes, hence we decrease by one. --term_width; #endif fit_to_use = termfit; if ( termfit == TERM_FIT_AUTO ) { // use the smallest of terminal width or height // to guarantee that image fits in display. if ( term_width <= term_height ) fit_to_use = TERM_FIT_WIDTH; else fit_to_use = TERM_FIT_HEIGHT; } switch ( fit_to_use ) { case TERM_FIT_ZOOM: auto_width = auto_height = 0; width = term_width - use_border*2; height = term_height - 1 - use_border*2; break; case TERM_FIT_WIDTH: width = term_width - use_border*2; height = 0; auto_height += 1; break; case TERM_FIT_HEIGHT: width = 0; height = term_height - 1 - use_border*2; auto_width += 1; break; } } // only --width specified, calc width if ( auto_width==1 && auto_height == 1 ) auto_height = 0; // --width and --height is the same as using --size if ( auto_width==2 && auto_height==1 ) auto_width = auto_height = 0; if ( ascii_palette_length < 2 ) { fputs("You must specify at least two characters in --chars.\n", stderr); exit(1); } if ( (width < 1 && !auto_width) || (height < 1 && !auto_height) ) { fputs("Invalid width or height specified\n", stderr); exit(1); } if ( redweight < 0 || greenweight < 0 || blueweight < 0 ) { fputs("Weights can't be negative.\n", stderr); exit(1); } if ( !isfinite(redweight) || !isfinite(greenweight) || !isfinite(blueweight) ) { // This can happen if a number can not be represented as floating point, e.g. 3e400. fputs("Did not understand a weight - possibly to large.\n", stderr); exit(1); } if ( (redweight + greenweight + blueweight) == 0.0 ) { fputs("At least one weight must be non-zero.\n", stderr); exit(1); } if ( *fileout == 0 ) { fputs("Empty output filename.\n", stderr); exit(1); } if ( html && xhtml ) { fputs("Only HTML or XHTML possible, using HTML.\n", stderr); xhtml = 0; } if ( html || xhtml ) { if ( !escape_title() ) { fprintf(stderr, "Not enough memory."); exit(1); } } precalc_rgb(redweight, greenweight, blueweight); } jp2a-1.1.1/src/terminal.c000066400000000000000000000043311414624405500151220ustar00rootroot00000000000000/* * Copyright 2006-2016 Christian Stigen Larsen * Copyright 2020 Christoph Raitzig * Distributed under the GNU General Public License (GPL) v2. */ #include "terminal.h" #include "config.h" #include #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_CURSES_H #include #endif #ifdef FEAT_TERMLIB #ifdef HAVE_TERM_H #include #else #ifdef HAVE_NCURSES_TERM_H #include #endif #endif #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include #endif #endif #include int get_termsize(int* _width, int* _height, char** err) { static char errstr[1024]; #ifndef WIN32 char *termtype = getenv("TERM"); char term_buffer[2048]; int i; #endif errstr[0] = 0; if ( err != NULL ) *err = errstr; #ifdef FEAT_TERMLIB #ifdef WIN32 CONSOLE_SCREEN_BUFFER_INFO io; if ( !GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &io) ) { strcpy(errstr, "Could not determine console window size."); return -1; } *_width = io.srWindow.Right - io.srWindow.Left; *_height = io.srWindow.Bottom - io.srWindow.Top; return 1; #else if ( !termtype ) { strcpy(errstr, "Environment variable TERM not set."); return -2; } i = tgetent(term_buffer, termtype); // There seems to be some confusion regarding the tgetent return // values. The following two values should be swapped, according // to the man-pages, but on Mac OS X at least, they are like this. // I've also seen some indication of a bug in curses on USENET, so // I leave this one like this. if ( i == 0 ) { snprintf(errstr, sizeof(errstr)/sizeof(char) - 1, "Terminal type '%s' not recognized.", termtype); return 0; } if ( i < 0 ) { strcpy(errstr, "Could not access the termcap database."); return -1; } *_width = tgetnum("co"); *_height = tgetnum("li"); return 1; #endif // non-WIN32 #else strcpy(errstr, "Compiled without termlib support."); return 0; #endif // FEAT_TERMLIB } int supports_true_color() { char *colorterm = getenv("COLORTERM"); if ( colorterm==NULL ) { return 0; } // some terminals have COLORTERM set, although true color is not supported if ( strcmp(colorterm, "rxvt")==0 ) { return 0; } return 1; } jp2a-1.1.1/tests/000077500000000000000000000000001414624405500135155ustar00rootroot00000000000000jp2a-1.1.1/tests/10h.txt000066400000000000000000000005121414624405500146440ustar00rootroot00000000000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMNNMMMMMMMMMMMMMNXXWMMMMMMMMMMM MW:'XMMMMMMMMMMx. .oWMMMMMMMMM M0..xN;.';'.;OM00NX' .XWo::;.,OM MO oN. 'NN, .NMMMx .0MWOkoc cM MO oN. .xx. ,WWO, ;cxX. ;k. ;X Mx oN. .lclxNM0llllllxWxcldoclO W; ,XN' ;MMMMMMMMMMMMMMMMMMMMMMM MWNMMMNNNMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/110x30-i-b.txt000066400000000000000000000070401414624405500155600ustar00rootroot00000000000000+--------------------------------------------------------------------------------------------------------------+ | | | | | | | | | | | ,ldOxdc. .;clxkOOOOOxol:. | | .kMMMMMN: .lx0WMMMMMMMMMMMMW0d; | | .dNWMWW0, lWMMMMMMMMMMMMMMMMMMX: | | ':colc,. ....... ....... oMMN0kxoood0NWMMMMMMMK, .......... | | cKKKKKKKd;. .oKKKKKKKxcoO0KNNNNK0Od:'. :o:, .'dWMMMMMMN: ..,ldxOKKXNNNNNXX0xdc. | | .oMMMMMMMO:. .kMMMMMMMMMMMMMMMMMMMMMWXx. ;XMMMMMMX; lXNMMMMMMMMMMMMMMMMMWk:. | | .oMMMMMMMO:. .kMMMMMMMMWN0OO0NWMMMMMMMWx;. cNMMMMMMx. dMMWX0xolcclokNMMMMMMWXl | | .oMMMMMMMO:. .kMMMMMMWx;' ';xWMMMMMMWNl 'o0MMMMWWk. :ko,.. .,OMMMMMMMMd | | .oMMMMMMMO:. .kMMMMMMWl '0MMMMMMMMx. .kWMMMMM0l' ..,lxkKWMMMMMMMMx. | | .oMMMMMMMO:. .kMMMMMMWl .kMMMMMMMMk. 'lkWMMMWNO' .,:lx0KXWNXKXMMMMMMMMx. | | .oMMMMMMMO:. .kMMMMMMWl ,KMMMMMMMWd .oXMMMMMXo,. ;d0WMMMWW0c'..dMMMMMMMMx. | | .oMMMMMMMO:. .kMMMMMMMx;. 'cOMMMMMMMNK: .cOWMMMMMMKxodddddddl. 'OMMMMMMXO; dMMMMMMMMd | | .oMMMMMMMO:. .kMMMMMMMWXKkxxkKNWMMMMMMWd,. .;0WWMMMMMMMMMMMMMMMMMX; ,KMMMMMMNKo.',c0MMMMMMMMKl::.| | .oMMMMMMMO:. .kMMMMMMMWWWMMMMMMMMMMWOd:. ,kXNMMMMMMMMMMMMMMMMMMMMX; .oKNMMMMMMWNNWNXXWMMMMMMMMXO;| | .oMMMMMMMO:. .kMMMMMMWkco0XNNNNNX0kc. 'x0OOOOOOOOOOOOOOOOOOOOOOk' ..cOXXNNNNXko:,,dXNNNNXKx:,.| | .,xMMMMMMMk:. .kMMMMMMWl ..'''''... ......................... ..'''''.. ..'''''. | | ;kXNMMMMMMWd. .kMMMMMMWl | | oNMMMMMMWNk. .kMMMMMMWl | | .kMMMMMNd;. .kMMMMMMWl | | ,oddoc, :ddddddo' | | | | | | | | | | | +--------------------------------------------------------------------------------------------------------------+ jp2a-1.1.1/tests/160x49.txt000066400000000000000000000173211414624405500151350ustar00rootroot00000000000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMWNNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWNNNNNNWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMXOdcc:ld0WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNX0xdlccc:::ccldk0XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMNXo.. ;dKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXXOoc;'. .':lkXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMKd, .dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKkl;;. .:xXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMM0d' .dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNo. .cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMNKl. ,o0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNX: cKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMKxo:::ldONWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXc ...... .cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMWX000OkkkO000KNWMMMMMWNK00000000000XMMWNK0kxxxxxkOKXWWMMMMMMMMMMMMMNX: .;loxkOkkxo;. ..dMMMMMMMMMMMMMMMWWNXKOkxxxxxxxxkO0XNWMMMMMMMMMMMMM MMMMMMMWNd'''''''''''ckKMMMMMXOl'''''''''''dXkoc,'........,;cdOXMMMMMMMMMMMNKc .;;oOKWMMMMMMMW0d, .dMMMMMMMMMMMWX0xoc:;,............';:ox0WWMMMMMMMMM MMMMMMMWXc 'd0MMMMMKx, .;. ..:d0WMMMMMMMMNXkckXXNMMMMMMMMMMMWWo. .dMMMMMMMMWKxl;'. .,lOWWMMMMMMM MMMMMMMWXc 'd0MMMMMKk, .;xKMMMMMMMWWNNWMMMMMMMMMMMMMMMMx'. .'xMMMMMMMWNl. ,d0MMMMMMM MMMMMMMWXc 'd0MMMMMKx, .lKNMMMMMMMMMMMMMMMMMMMMMMMMMMd. .lOMMMMMMMNX: ..'',,,'.. .dWMMMMMM MMMMMMMWXc 'd0MMMMMKx, .';:cc;'. .cOMMMMMMMMMMMMMMMMMMMMMMMMWNl cKNMMMMMMMNXc .,coxk00KKK0Ol'. cXWMMMMM MMMMMMMWXc 'd0MMMMMKx, 'lx0XNNNX0dc. .oWMMMMMMMMMMMMMMMMMMMMMMMKk; .,xMMMMMMMMMNKc .,lkKWWMMMMMMMMMKk, :0NMMMMM MMMMMMMWXc 'd0MMMMMKx, lNWMMMMMMMWNo. cKNMMMMMMMMMMMMMMMMMMMMWWd'. :0XMMMMMMMMMWXkcxKNMMMMMMMMMWNXKxl' ;0XMMMMM MMMMMMMWXc 'd0MMMMMKx, lWWMMMMMMMMMOc. ;kXMMMMMMMMMMMMMMMMMMMMKd, .lOMMMMMMMMMMMMWWNWMMMMMWNX0kdlc;,. ;0XMMMMM MMMMMMMWXc 'd0MMMMMKx, lWWMMMMMMMMMKk, ,dKMMMMMMMMMMMMMMMMMMN0c. ..oNWMMMMMMMMMMMMMMMMMWX0xoc;'. ;0XMMMMM MMMMMMMWXc 'd0MMMMMKx, lWWMMMMMMMMM0d' ,kKMMMMMMMMMMMMMMWNOd;. .:dKNMMMMMMMMMMMMMMMXOdc;.. .,:llo' ;0XMMMMM MMMMMMMWXc 'd0MMMMMKx, lWMMMMMMMMWWd. cXWMMMMMMMMMMMMWWkc. .:xNNNNNNNNNNNNWWMMMNKc. ;xKWWMNK: ;0XMMMMM MMMMMMMWXc 'd0MMMMMKx, ;x0NWMMMWNOo' .dWMMMMMMMMMMMMW0o' .,;c::::::::::ld0MMMOl' .'xMMMMMNK: :0NMMMMM MMMMMMMWXc 'd0MMMMMKx, .':loddlc' 'l0MMMMMMMMMMMMKx; .'xMMMx,. .'xMMMMWKx, ,dOXK0NM MMMMMMMWXc 'd0MMMMMKx, .lXWMMMMMMMMMXOOc. .'xMMMk;. ;dxkdl;. .,;::kM MMMMMMMWXc 'd0MMMMMKx, ;xKMMMMMMMMMX0l.. .'xMMMKx, ... .dM MMMMMMMWXc 'd0MMMMMKx, .;d0WMMMMMMMMX0l'. ..xMMMWNd'. .... .,xM MMMMMMMNXc 'd0MMMMMKx, ,oc,.. ..,:okKWMMMMMMMMMMOl;..'''''''''''''''''''''''''''''''',:OMMMMMX0o;'.. ..,cdOkk:.. ..';cdkXM MMMMMMMNK: 'd0MMMMMKk, lWNKOxddddddddxkKNWMMMMMMMMMMMMMX00OO000000000000000000000000000000000KNMMMMMMMWX0xxdddddddxOKNWMMMKkxddddddxk0KNWMMM MMMMMMMKx, ,dKMMMMMKx, lWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMWWKOl. ;OXMMMMMKx, lWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMXOc.. lNWMMMMMKx, lWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMXO; .,kMMMMMMMKx, lWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMWWd. .c0NMMMMMMMKx, lWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMKd, .:xKMMMMMMMMMKx, lWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMWNo.. ..':okKMMMMMMMMMMMXk:...........oWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMKkxdxk0NWMMMMMMMMMMMMMWX0xxxxxxxxxxxKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/1x1-inv.txt000066400000000000000000000000021414624405500154510ustar00rootroot00000000000000' jp2a-1.1.1/tests/2xnormal-b.txt000066400000000000000000000101641414624405500162410ustar00rootroot00000000000000+------------------------------------------------------------------------------+ |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMWk:';oXMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxl;,''';cdKWMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMK, .dMMMMMMMMMMMMMMMMMMMMMMMMMMWo. .cKMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMWx;',oXMMMMMMMMMMMMMMMMMMMMMMMMMMN' . ,KMMMMMMMMMMMMMMMMMMMMMMMM| |MMMWOllcllxNMMNklllllOKxlc:cldONMMMMMN;;dO0KOo. dMMMMMWKkdoc:::clokXWMMMM| |MMMWc '0MMK, .cOWMMWXWMMMMMMd .kMMMWx'. ... .:0MMM| |MMMWc '0MMK, .:oxd:. .xMMMMMMMMMMN: oWMMMNc.,ok0XXXx. :NMM| |MMMWc '0MMK, lWMMMWx. :XMMMMMMMMXc .dNMMMMW00WMWNKkdc. ;XMM| |MMMWc '0MMK, lWMMMMK, ,KMMMMMMWO, 'OWMMMMMMMXkl;.. .. ;XMM| |MMMWc '0MMK, lWMMMMk. :NMMMMM0c. .cKWWWWWMMWx. .oOK: ;XMM| |MMMWc '0MMK, .oxOkl. .kMMMMXo. .'''''';OMO. .xMMK; ,0NN| |MMMWc '0MMK, .kWMMM0, .xM0' .c:. .,k| |MMMNc '0MMK, 'c;,''',:okNMMMMXo;;;;;;;;;;;;;;;c0MW0o;,''',:odc,'',;:oK| |MMNx. ,KMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MXc .dWMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMk. 'xNMMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMWk::okNMMMMMNd::::cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| +------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMWk:';oXMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxl;,''';cdKWMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMK, .dMMMMMMMMMMMMMMMMMMMMMMMMMMWo. .cKMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMWx;',oXMMMMMMMMMMMMMMMMMMMMMMMMMMN' . ,KMMMMMMMMMMMMMMMMMMMMMMMM| |MMMWOllcllxNMMNklllllOKxlc:cldONMMMMMN;;dO0KOo. dMMMMMWKkdoc:::clokXWMMMM| |MMMWc '0MMK, .cOWMMWXWMMMMMMd .kMMMWx'. ... .:0MMM| |MMMWc '0MMK, .:oxd:. .xMMMMMMMMMMN: oWMMMNc.,ok0XXXx. :NMM| |MMMWc '0MMK, lWMMMWx. :XMMMMMMMMXc .dNMMMMW00WMWNKkdc. ;XMM| |MMMWc '0MMK, lWMMMMK, ,KMMMMMMWO, 'OWMMMMMMMXkl;.. .. ;XMM| |MMMWc '0MMK, lWMMMMk. :NMMMMM0c. .cKWWWWWMMWx. .oOK: ;XMM| |MMMWc '0MMK, .oxOkl. .kMMMMXo. .'''''';OMO. .xMMK; ,0NN| |MMMWc '0MMK, .kWMMM0, .xM0' .c:. .,k| |MMMNc '0MMK, 'c;,''',:okNMMMMXo;;;;;;;;;;;;;;;c0MW0o;,''',:odc,'',;:oK| |MMNx. ,KMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MXc .dWMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMk. 'xNMMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMWk::okNMMMMMNd::::cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| +------------------------------------------------------------------------------+ jp2a-1.1.1/tests/40x40.txt000066400000000000000000000031501414624405500150340ustar00rootroot00000000000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMWk0MMMMMMMMMMMMMMMMXkxkXMMMMMMMMMMMMMM MMk .XMMMMMMMMMMMMMWO; 'KMMMMMMMMMMMMM MMo OMMMMMMMMMMMMMk. cWMMMMMMMMMMMM MMo OMMMMMMMMMMMMW; .KMMMMMMMMMMMM MM0,cNMMMMMMMMMMMMW' . oMMMMMMMMMMMM MMKOOXMN00KWOxKMMMW' ckc :MMMWXkxkNMMM MWc''xMk''cd..,OMMW:oNMX. :MMWx;...cXMM MW, oMo .. 'XMWONMMM; :MMk. lMM MW, oMo cWMWMMMM: cMW, .. .0M MW, oMo .; .KMMMMMW, xMW'.xKd xM MW, oMo .OX: kMMMMMN. 0MW:xMMN. dM MW, oMo ,WMk xMMMMMO 'NMWOWMWO. dM MW, oMo ;MMX. oMMMMW: dMMMWNx:. dM MW, oMo ,MMN. oMMMMO 'NMMMX: .. dM MW, oMo ,MMK. dMMMW: oMMMMd .k' dM MW, oMo 'NMd kMMMx lxx0X. xN' dM MW, oMo ;o. .KMMK. :0 0X. lN MW, oMo ;WMNc :0. cc .d MW, oMo dMMk :X. : MW, oMo .. .lNMN:........lWo. ,; .d MW' oMo ;KddOWMMN000000000XMWOdxXXdd0W MX. oMo ;MMMMMMMMMMMMMMMMMMMMMMMMMMMMM Mx dMo ,MMMMMMMMMMMMMMMMMMMMMMMMMMMMM N, OMo ,MMMMMMMMMMMMMMMMMMMMMMMMMMMMM M; ,NMo ,MMMMMMMMMMMMMMMMMMMMMMMMMMMMM Mo dMMo ,MMMMMMMMMMMMMMMMMMMMMMMMMMMMM Mk.:NMMd..:MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MN0NMMMN00KMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/Makefile000066400000000000000000000000431414624405500151520ustar00rootroot00000000000000check: test test: ./run-tests.sh jp2a-1.1.1/tests/dalsnuten-256-light-x.html000066400000000000000000000150511414624405500202660ustar00rootroot00000000000000 jp2a converted image
........................................................................................'''''''',,,,,,,,;;;;;;::::::ccccccccclll
........................                      ............................................''''''''',,,,,,,,;;;;;;:::::::cccccccc
....................                               ..........................................''''''''',,,,,,,;;;;;;::::::ccccccc
..........                                              .......................................'''''''',,,,,,,;;;;;;:::::::ccccc
....                                                          ..................................''''''''',,,,,;;;;;;;;::::::cccc
                                                                   ...............................'''''''',,,,,,,;;;;;;::::::::c
                                                                       ..............................''''''',,,,,,;;;;;;::::::::
                                                                         .............................''''''',,,,,,,;;;;;;::::::
                                                                           ............................'''''''',,,,,,,;;;;;:::::
                                                                             ............................''''''',,,,,,;;;;;;;:::
                                                                             ..............................''''''',,,,,,;;;;;;;:
                                                                                ............................''''''',,,,,,,,;;;;;
                                                                                ............................'''''''',,,,,,,,;;;;
                                                                                  ..........................'''''''',,,,,,,,;;;;
                                                                                  ...........................''''''',,,,,,;;;;;;
                                                                                   ...........................'''''',,,,,,;;;;;;
                                                                                     ........................''''''',,,,,,,;;;;;
                                                                ...'''...          .........................'''''',,,,,,,;;;;;;:
                                                  .....'',;cccldddxxxxxxxdc,.    .........................''''''',,,,,,;;;;;;:::
                                            ..;:lodddddxxxxxxkkkkkkkkkOOOOOOkdl:,'......................''''''',,,,,,;;;;;;;::::
:;;'.....                ......         .,coddddddxxxxxkkkkkkkOOOOOOOOOO0000000000Oxxdoc:,............'''''',,,,,,,;;;;;;::::::c
ddooolllccc:::;;;;;;;;::;;::clloolccccoxxkkkkkkkkkkkkkOOO0000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0xol::loooxxdxdxdl:::ddkOkOxklclooxdd
kxxxdddooooolllollooodddddolooxxxxxkOO000000000000000KKKKKKXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWW
OOkkkxxxddddddddddddxxxkkkkkkxxkOOOOOO000KKKKXKKKKKXXXXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNWNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWMMMMMM
00OOOkkkxxxxxxxkkkkkkkOOOO00000OOO00KKKKKKKKKXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWNNNNNWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMM
K00000OOOOOOOOOOOOOOOO0000KKKKKKK0000KKKXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMM
KKK000000000OO000000000KKKKKKKXXXXXKKKKXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMM
XKKKKK00000000000KKKKKKKKKXXXXXXXXXXXXXXXXXNNNNNNNNWWWWWWNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMM
XXXKKKKKKKK00000000000KKKKKXXXXXXXXNNXXXXXXXXNNNNWWWWWWWWWNNNNNNNNWNNWWWWWWWWMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NXXKOOO0K0OkkkkkkkkkkkkkkkkkkkOOOOOkkxxxxxxxxxkKWWWWWWWWW000KKXXKXNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWW
XXK0OkO0Okdl:;:::;;;;;;::cc::cllllcccllllllloodKWWWWWWWWWNN000KXXNNNNNWWNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMWMMW
XXK000Okxoc;....,,,;;:ldkOkook0000kOOOO0000K0OO0NNNNNNWNNWWWWNNNNNWWWWWWWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMWWMMMMM
NXXXK0kdlc:'   ';;;:;;lkO0Ok0KXXXXK00KXXNNNNNNNNNWWWWWNNNNNNNNWWWWWWWWWNWWWWWWWWWWWWWWWWWWWWMMMMMMWWWWWWWWWWWWWMWWMWWMWWMMMMMMMM
XKK00Oxxo;.     ...'';xOOO0KKXXXNNNNNNNNNWWWNNWWWWNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWMMMWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMM
KOOxkxxxo:..   ..;coxOO0KKKXXXNNNNNNNNWWWWNNWWNNNNNNNWWWWWWWWWWWWWWWWWWWWMMMMMMMMWWWWWWWWWWWWWWWWWWWWWMWMMMMMMMMMMMMMMMMMMMMMMMM
XXXKK0kxdo:;,,;coodxkOO0KKXXNNNNWNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWMWWMMMMMMWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMWWMMMMMMMM
XXXKKK0OkxxdddxkkOO000000KKKXXXNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NXXXXKK00OOOOO000000KKKKKXXXXXXNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NXXNNXXXKKK00KKKKKXKXXXNXNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNXXXXXXXXXXXXXXNNNNNNNWWWNNWWWNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWNNNNNNNNNNXNXNNNNNNNWNNNNWWWNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMM
WWWWNNNWNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMWWWMMMMMMMMMMMMMMMMWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWWWWWNNNWWNWWWWWWNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWWWWWWWWWWWWWWWNWNNNNWWWWWWWWWWWWWWWWWWWMWWMMMMMMMMMMMMMMMMMMMMMMMWMWWMWWWWWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMWWMMMMMMMMMMMMMMMMMMMMMMWWWWMMWMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWWWWWWWWWWWWWWWMMMMWWWWMMMMMWMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMM
WWWWWWWMWWWWWWMWMWWWMMMMWMWMMMMMMMMMMMMMMMMMMMMWMMWMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWWWMWMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
jp2a-1.1.1/tests/dalsnuten-256-light.html000066400000000000000000000145641414624405500200310ustar00rootroot00000000000000 jp2a converted image
........................................................................................'''''''',,,,,,,,;;;;;;::::::ccccccccclll
........................                      ............................................''''''''',,,,,,,,;;;;;;:::::::cccccccc
....................                               ..........................................''''''''',,,,,,,;;;;;;::::::ccccccc
..........                                              .......................................'''''''',,,,,,,;;;;;;:::::::ccccc
....                                                          ..................................''''''''',,,,,;;;;;;;;::::::cccc
                                                                   ...............................'''''''',,,,,,,;;;;;;::::::::c
                                                                       ..............................''''''',,,,,,;;;;;;::::::::
                                                                         .............................''''''',,,,,,,;;;;;;::::::
                                                                           ............................'''''''',,,,,,,;;;;;:::::
                                                                             ............................''''''',,,,,,;;;;;;;:::
                                                                             ..............................''''''',,,,,,;;;;;;;:
                                                                                ............................''''''',,,,,,,,;;;;;
                                                                                ............................'''''''',,,,,,,,;;;;
                                                                                  ..........................'''''''',,,,,,,,;;;;
                                                                                  ...........................''''''',,,,,,;;;;;;
                                                                                   ...........................'''''',,,,,,;;;;;;
                                                                                     ........................''''''',,,,,,,;;;;;
                                                                ...'''...          .........................'''''',,,,,,,;;;;;;:
                                                  .....'',;cccldddxxxxxxxdc,.    .........................''''''',,,,,,;;;;;;:::
                                            ..;:lodddddxxxxxxkkkkkkkkkOOOOOOkdl:,'......................''''''',,,,,,;;;;;;;::::
:;;'.....                ......         .,coddddddxxxxxkkkkkkkOOOOOOOOOO0000000000Oxxdoc:,............'''''',,,,,,,;;;;;;::::::c
ddooolllccc:::;;;;;;;;::;;::clloolccccoxxkkkkkkkkkkkkkOOO0000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0xol::loooxxdxdxdl:::ddkOkOxklclooxdd
kxxxdddooooolllollooodddddolooxxxxxkOO000000000000000KKKKKKXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWW
OOkkkxxxddddddddddddxxxkkkkkkxxkOOOOOO000KKKKXKKKKKXXXXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNWNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWMMMMMM
00OOOkkkxxxxxxxkkkkkkkOOOO00000OOO00KKKKKKKKKXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWNNNNNWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMM
K00000OOOOOOOOOOOOOOOO0000KKKKKKK0000KKKXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMM
KKK000000000OO000000000KKKKKKKXXXXXKKKKXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMM
XKKKKK00000000000KKKKKKKKKXXXXXXXXXXXXXXXXXNNNNNNNNWWWWWWNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMM
XXXKKKKKKKK00000000000KKKKKXXXXXXXXNNXXXXXXXXNNNNWWWWWWWWWNNNNNNNNWNNWWWWWWWWMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
NXXKOOO0K0OkkkkkkkkkkkkkkkkkkkOOOOOkkxxxxxxxxxkKWWWWWWWWW000KKXXKXNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWW
XXK0OkO0Okdl:;:::;;;;;;::cc::cllllcccllllllloodKWWWWWWWWWNN000KXXNNNNNWWNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMWMMW
XXK000Okxoc;....,,,;;:ldkOkook0000kOOOO0000K0OO0NNNNNNWNNWWWWNNNNNWWWWWWWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMWWMMMMM
NXXXK0kdlc:'   ';;;:;;lkO0Ok0KXXXXK00KXXNNNNNNNNNWWWWWNNNNNNNNWWWWWWWWWNWWWWWWWWWWWWWWWWWWWWMMMMMMWWWWWWWWWWWWWMWWMWWMWWMMMMMMMM
XKK00Oxxo;.     ...'';xOOO0KKXXXNNNNNNNNNWWWNNWWWWNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWMMMWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMM
KOOxkxxxo:..   ..;coxOO0KKKXXXNNNNNNNNWWWWNNWWNNNNNNNWWWWWWWWWWWWWWWWWWWWMMMMMMMMWWWWWWWWWWWWWWWWWWWWWMWMMMMMMMMMMMMMMMMMMMMMMMM
XXXKK0kxdo:;,,;coodxkOO0KKXXNNNNWNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWMWWMMMMMMWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMWWMMMMMMMM
XXXKKK0OkxxdddxkkOO000000KKKXXXNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NXXXXKK00OOOOO000000KKKKKXXXXXXNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NXXNNXXXKKK00KKKKKXKXXXNXNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNXXXXXXXXXXXXXXNNNNNNNWWWNNWWWNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWNNNNNNNNNNXNXNNNNNNNWNNNNWWWNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMM
WWWWNNNWNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMWWWMMMMMMMMMMMMMMMMWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWWWWWNNNWWNWWWWWWNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWWWWWWWWWWWWWWWNWNNNNWWWWWWWWWWWWWWWWWWWMWWMMMMMMMMMMMMMMMMMMMMMMMWMWWMWWWWWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMWWMMMMMMMMMMMMMMMMMMMMMMWWWWMMWMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWWWWWWWWWWWWWWWMMMMWWWWMMMMMWMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMM
WWWWWWWMWWWWWWMWMWWWMMMMWMWMMMMMMMMMMMMMMMMMMMMWMMWMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWWWMWMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
jp2a-1.1.1/tests/dalsnuten-256-x.html000066400000000000000000000150461414624405500171650ustar00rootroot00000000000000 jp2a converted image
KKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK00000000000OOOOOOOOkkkkkkkkxxxxxxddddddooooooooolll
KXXXXXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKK00000000OOOOOOOOOkkkkkkkkxxxxxxdddddddoooooooo
XXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKK000000000OOOOOOOOOkkkkkkkxxxxxxddddddooooooo
XXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXKKKKKKKKKKK000000000OOOOOOOOkkkkkkkxxxxxxdddddddooooo
XXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXKKKKKKKKKKK00000000OOOOOOOOOkkkkkxxxxxxxxddddddoooo
NNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXKKKKKKKKKK00000000OOOOOOOOkkkkkkkxxxxxxddddddddo
NNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXKKKKKKKKK000000000OOOOOOOkkkkkkxxxxxxdddddddd
NNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXKKKKKKKKK00000000OOOOOOOkkkkkkkxxxxxxdddddd
NWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKKK00000000OOOOOOOOkkkkkkkxxxxxddddd
WWWWWWWWWWMMMMMMMMMMMMMMMMMWWWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKK000000000OOOOOOOkkkkkkxxxxxxxddd
WWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMWWWMMMWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNXXXXXXXXXXXKKKKKKKKK0000000000OOOOOOOkkkkkkxxxxxxxd
WWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKK000000000OOOOOOOkkkkkkkkxxxxx
WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKKK00000000OOOOOOOOkkkkkkkkxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKK00000000OOOOOOOOkkkkkkkkxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXXKKKKKKKK00000000OOOOOOOkkkkkkxxxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKK00000000OOOOOOkkkkkkxxxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNXXXXXXXXKKKKKKKKKK000000OOOOOOOkkkkkkkxxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWNXK0OOO00XNNNNNNNNNNXXXXXXXXXXKKKKKKKK0000000OOOOOOkkkkkkkxxxxxxd
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXXK00OOkxoool:::;;;;;;;:okXNNNNXXXXXXXXXKKKKKKKKK0000000OOOOOOOkkkkkkxxxxxxddd
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0xdlc:::::;;;;;;,,,,,,,,,'''''',:ldkOKXXXXXKKKKKKKKK0000000OOOOOOOkkkkkkxxxxxxxdddd
dxxO0KXXXNNWWWMMMMMMMMMWNXKK00XNWMMMMMMNKkoc::::::;;;;;,,,,,,,''''''''''..........';;:codk0KKK00000000OOOOOOkkkkkkkxxxxxxddddddo
::ccclllooodddxxxxxxxxddxxddollcclooooc;;,,,,,,,,,,,,,'''...................................;clddlccc;;:;:;:lddd::,',';,lolcc;::
,;;;:::ccccclllcllccc:::::clcc;;;;;,''........................................                                                  
'',,,;;;::::::::::::;;;,,,,,,;;,''''''...................................                                                       
..''',,,;;;;;;;,,,,,,,''''.....'''.........................                                                                     
......''''''''''''''''..........................                                                                                
............''................................                                                                                  
...........................................                                                                                     
...................................  ........                                                                                   
 ...'''...',,,,,,,,,,,,,,,,,,,''''',,;;;;;;;;;,.         .........                                                              
....','.',:ldxdddxxxxxxddooddollllooolllllllcc:.           ......                                                               
......',;cox0XX0kkkxxdl:,',cc,....,''''......''.                                                                                
 .....,:lodOWMWOxxxdxxl,'.',............                                                                                        
.....';;cxKWMMMWXXKOOx;'''......                                                                                                
.'';,;;;cd0XWMWX0xoc;''.......                                                                                                  
......,;:cdxkkxocc:;,''.....                                                                                                    
.......',;;:::;,,''............                                                                                                 
 ........'''''.................                                                                                                 
 ..  .................. .                                                                                                       
       ..............                                                                                                           
             . .                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
jp2a-1.1.1/tests/dalsnuten-256.html000066400000000000000000000145611414624405500167210ustar00rootroot00000000000000 jp2a converted image
KKKKKKKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK00000000000OOOOOOOOkkkkkkkkxxxxxxddddddooooooooolll
KXXXXXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKK00000000OOOOOOOOOkkkkkkkkxxxxxxdddddddoooooooo
XXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKK000000000OOOOOOOOOkkkkkkkxxxxxxddddddooooooo
XXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXKKKKKKKKKKK000000000OOOOOOOOkkkkkkkxxxxxxdddddddooooo
XXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXKKKKKKKKKKK00000000OOOOOOOOOkkkkkxxxxxxxxddddddoooo
NNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXKKKKKKKKKK00000000OOOOOOOOkkkkkkkxxxxxxddddddddo
NNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXKKKKKKKKK000000000OOOOOOOkkkkkkxxxxxxdddddddd
NNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXKKKKKKKKK00000000OOOOOOOkkkkkkkxxxxxxdddddd
NWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKKK00000000OOOOOOOOkkkkkkkxxxxxddddd
WWWWWWWWWWMMMMMMMMMMMMMMMMMWWWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKK000000000OOOOOOOkkkkkkxxxxxxxddd
WWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMWWWMMMWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNXXXXXXXXXXXKKKKKKKKK0000000000OOOOOOOkkkkkkxxxxxxxd
WWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKK000000000OOOOOOOkkkkkkkkxxxxx
WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKKK00000000OOOOOOOOkkkkkkkkxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKK00000000OOOOOOOOkkkkkkkkxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXXKKKKKKKK00000000OOOOOOOkkkkkkxxxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNXXXXXXXXXXKKKKKKKKK00000000OOOOOOkkkkkkxxxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNXXXXXXXXKKKKKKKKKK000000OOOOOOOkkkkkkkxxxxx
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWNXK0OOO00XNNNNNNNNNNXXXXXXXXXXKKKKKKKK0000000OOOOOOkkkkkkkxxxxxxd
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXXK00OOkxoool:::;;;;;;;:okXNNNNXXXXXXXXXKKKKKKKKK0000000OOOOOOOkkkkkkxxxxxxddd
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0xdlc:::::;;;;;;,,,,,,,,,'''''',:ldkOKXXXXXKKKKKKKKK0000000OOOOOOOkkkkkkxxxxxxxdddd
dxxO0KXXXNNWWWMMMMMMMMMWNXKK00XNWMMMMMMNKkoc::::::;;;;;,,,,,,,''''''''''..........';;:codk0KKK00000000OOOOOOkkkkkkkxxxxxxddddddo
::ccclllooodddxxxxxxxxddxxddollcclooooc;;,,,,,,,,,,,,,'''...................................;clddlccc;;:;:;:lddd::,',';,lolcc;::
,;;;:::ccccclllcllccc:::::clcc;;;;;,''........................................                                                  
'',,,;;;::::::::::::;;;,,,,,,;;,''''''...................................                                                       
..''',,,;;;;;;;,,,,,,,''''.....'''.........................                                                                     
......''''''''''''''''..........................                                                                                
............''................................                                                                                  
...........................................                                                                                     
...................................  ........                                                                                   
 ...'''...',,,,,,,,,,,,,,,,,,,''''',,;;;;;;;;;,.         .........                                                              
....','.',:ldxdddxxxxxxddooddollllooolllllllcc:.           ......                                                               
......',;cox0XX0kkkxxdl:,',cc,....,''''......''.                                                                                
 .....,:lodOWMWOxxxdxxl,'.',............                                                                                        
.....';;cxKWMMMWXXKOOx;'''......                                                                                                
.'';,;;;cd0XWMWX0xoc;''.......                                                                                                  
......,;:cdxkkxocc:;,''.....                                                                                                    
.......',;;:::;,,''............                                                                                                 
 ........'''''.................                                                                                                 
 ..  .................. .                                                                                                       
       ..............                                                                                                           
             . .                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
                                                                                                                                
jp2a-1.1.1/tests/dalsnuten-640x480-gray-low.jpg000066400000000000000000000747341414624405500207250ustar00rootroot00000000000000JFIFHH SExifMM* (12<i(CanonCanon DIGITAL IXUS 50HHAdobe Photoshop CS Macintosh2006:07:13 17:23:34Mac OS X 10.4.7Ƃΐ0220֐    @8 2006:07:06 21:25:052006:07:06 21:25:05 _ v~( HHJFIFHH Adobe_CMAdobed            x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?m,gOcƵ@5@ جx(QgHVi)x) ǂ8>$ mlIH6ŃjbԔ(rԔx!Y,PsRSUn`V'5%5qA{RSI<׵IMx \{PԔ.1R.qRԔb[`% ) )jRKRR2R )nj9d$Nj9)/j Jjjث=XIOΝ)!YUo_KUI%,:dbP+6]cjr֏9%( ~t }Iy*7}v[mZ?y:餧l7_0â=͖?[-E2+cIe_۲+[Sи!8"o`:j״4佾!%"r +\ <"zJDUrJ1⨢* ~-w~է流={Z[1-*}J\]COjgx|2LKCG׽yAB0RSwsʩͪ\ɿn%7#c,c/4QVy. QӨSOmc~JUs9}]}֟γX vB IN7UlUv$u&I $MxDWY{,mmS2zN6Su}G/i3*.|DInuv`zά2*O׏Ը@X{YvxQ/IOUkIk|bs}y_ZHZYQcO޼$+.WQ0$9nz&G^[SpowO߻ؼrm%?q-k[mD>q-w[86an0nn)A:f06 ENq:vrGՎKK##I)cP=Pc$L7<w}%Z?"w=8-ֿ}{դ$^ _5E ll=rJjI\|}:+5 Ơmjd;<$y>?z^%+$I= c%1 Jblq]|ObRS Q I.$:vK.7UP϶}Sǻ$U{C7MOsW<5CF tޯn!kJ}oц*&DRNבG/;:[~͍h4pZz{,9Ys2L>΂?ucf~wIM|d$mO23pqyoj{$<߱ ܋m|JI6Sh%3;G2T]a&2H]%*u=wXjc N.%-D@?t%v%Tus(h%DSn$10TF%2:&2yM8O%?zl;'1?wMTAIMd9m?A1&|RS';]>iA<>)L$̀8LgS<4gȰ)@J$kJI-rpjH@oוO|kR~I)`t4^J )RO com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName iso-a4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-13T15:20:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName A4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH/8Ag{HH(dh 8BIMHH8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIM9t2nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM8BIM x JFIFHH Adobe_CMAdobed            x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?m,gOcƵ@5@ جx(QgHVi)x) ǂ8>$ mlIH6ŃjbԔ(rԔx!Y,PsRSUn`V'5%5qA{RSI<׵IMx \{PԔ.1R.qRԔb[`% ) )jRKRR2R )nj9d$Nj9)/j Jjjث=XIOΝ)!YUo_KUI%,:dbP+6]cjr֏9%( ~t }Iy*7}v[mZ?y:餧l7_0â=͖?[-E2+cIe_۲+[Sи!8"o`:j״4佾!%"r +\ <"zJDUrJ1⨢* ~-w~է流={Z[1-*}J\]COjgx|2LKCG׽yAB0RSwsʩͪ\ɿn%7#c,c/4QVy. QӨSOmc~JUs9}]}֟γX vB IN7UlUv$u&I $MxDWY{,mmS2zN6Su}G/i3*.|DInuv`zά2*O׏Ը@X{YvxQ/IOUkIk|bs}y_ZHZYQcO޼$+.WQ0$9nz&G^[SpowO߻ؼrm%?q-k[mD>q-w[86an0nn)A:f06 ENq:vrGՎKK##I)cP=Pc$L7<w}%Z?"w=8-ֿ}{դ$^ _5E ll=rJjI\|}:+5 Ơmjd;<$y>?z^%+$I= c%1 Jblq]|ObRS Q I.$:vK.7UP϶}Sǻ$U{C7MOsW<5CF tޯn!kJ}oц*&DRNבG/;:[~͍h4pZz{,9Ys2L>΂?ucf~wIM|d$mO23pqyoj{$<߱ ܋m|JI6Sh%3;G2T]a&2H]%*u=wXjc N.%-D@?t%v%Tus(h%DSn$10TF%2:&2yM8O%?zl;'1?wMTAIMd9m?A1&|RS';]>iA<>)L$̀8LgS<4gȰ)@J$kJI-rpjH@oוO|kR~I)`t4^J )RO 1/320 56/10 0220 2006-07-06T21:25:05+02:00 2006-07-06T21:25:05+02:00 266/32 159/32 0/3 95/32 5 False 0 2 False False 5800/1000 4294967295 640 480 2 Canon Canon DIGITAL IXUS 50 1 72/1 72/1 2 1 2006-07-13T17:23:34+02:00 2006-07-13T17:23:34+02:00 2006-07-13T17:23:34+02:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:62e9d615-1426-11db-996e-bb4a78cc89ac image/jpeg AdobedC##""  P  3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw?!<% (J% B}BPڞ(J(J(M BP% (JBP&(M (M BhM BhM 4% FBhKjКBhM1 0Кa1 M 4&К铤$$$$PJI$I$I(LII$$$$2I&&J&Q4&LM dТSBd%1M &LӤ$$tI:tI$I$I$LII$&I$&I2d$2d(I2dɓ&*)(LQ)&)ɗ$$I$'I$I$I$$I$$$d$$&Ld&L2dɒQ)QL2b2<Jd2ea<% <% (I$PI$I$LI$I&I$$$$$&LdɒL2dЙ2dɓ&LS&2b)S&L<''J<% BtI$I$M $I$$LILdLdɒL$ɓ&Lɓɓ<SɊbQ)b1_!<$:P(O $I$I$PII$$P$$d2d$$ɓ&LdɒQL1L2d2b1Q)&LBxO BxO BP$I$I$I$LI$dLI&I2I&J&I2d&L$ɓ&L2d2e1LSE1L1L낒INII$I$I$I2I$dI$$$$$&LdBdɓ&I2dɓ<S&2eЙF&)JdNtI$JО$dI$$dLILdɒL$ɓ&L$ɓ&LE2b2e1QLE2eBtNI$I$I&I%%dLI$II2ILd&Ldɓ$2dɒQL2dɓ)%2&)/N:P$I$I$$I'L$$II$$d$2IQI2d&L2d&L2dɓ(LE2eR!쓧N$PI$dI2I)$II$$d$$&I2d&L2I&L$ɓ&LE2dɈQ)Jd2eRI:tI$II$$IQI$$$$II2ILd&Ldɓ&I2dɓ&L%1LJP 4&!4&!N$I$I$I2I&I$LII$$$$d$$&L2d&L2I&L2b2bL2dɊ퓤$I$I$I$$II$$I&I2I&I$&I2IL2I&L$ɓ&L2dɓ&L1ɡD0$$I$I$I$II$$I&I$$$$d$$ɒL2I&L2dɓ&L1L1LL2b‰_tI$I$I$I$I2I&I$I$$$&I$&I2IL2I&L$ɓ&L2dE2dɠĨTS$WӤI$I$I$I$I&I$$I&I$$$$$&Ld&L2I&L2dɓ&hSIQ*%2b2KI$I$I$I$I$I2I&I$I2I&I2II2ILd&Ldɓ&L2d6(b2dD)L2I$I$I$I$I$I$$dI2I$$&I2ILd)M)&L2dɓ&I2d2eɓ2etI$I$I$I$I$LI&I$LdLd{!;"]c@$kQ9T&Ld&I2dҚS2dɓɔJdɊb2LTJdtI$I$I$I$I$I2I$$$c@n^-Bl14;g2U2>c&şoX<U;2o?Ĕ- 8qu ʿdG+ w3>l=t{Z$ɓ%*2dҙ4L2d)ɔS<S(ɊӤI$I$I$I$I&I$I2g9n֎I0 zfO[Z;KDb"OsNYo>A+:{YWYs$-鍊>oQ7zm鷦ޛzv8#BOzy>KNV=ƼMRɓ&L2d&L2LJbSSTIL2%ӤI$I$I$I$II$qʯnn%-e@?1cf׻ى,ow77E7fA.Qܛrbɥ1*;4Ҕ&ܟr.}oa,{uZUuWc xjɆY6xq3*˨[^Bd&L2dɓ&Ҙң)2bTe4ҢJiQ%е_YoMli$ZZL1ީ; #zLfb,oވ-pwʒI$I$H{30]'J KX 땲w-k<)ڼcwV時 I2JWWqd,o-g ;ߖve]i7"\*$ĨTK(SJiM)4)4)JR*U;Ŧߴ2v5k>Um{-2ťw?Lc_!Ͱw`2CܮdxBRSJdҘLĨ%2iQɥFSɉQѬҦ aLZTŧGV^,wމO'@!4^l^h'"Ys֟'65V|J;G)kjM} }`ϤƴGk{v ~GsOpr`~(wlPбΰrzVD{iM)JRRҔg?/?ص~FU~?prZݶvUXsx䜔&_M齮 iAxϳeu}}MR5:-pGoFX5: gmS԰oqeW5ou,_1([ya)w2M4>'lIf/<_._Q e8>}@$bA8M*$:Z=$kCԃÔ LmOBrqMFd.o  {rZ jY! Tj^pRܔ>iB9P9y%@ĦRJdJJR|%-1{rsrP|K> TfݴZ>mWphuAi?Kب liHQmi02uH9y cfߏs._ ѭ12I55VcsX2hli:6~ˣ)[}'"x}z[DLrl ʑ{L@ 32jsֺ?Pv"G[[ s\#TW3gV{ HRkCÔÓNrrv"%&B8pAB\ӪʃBM)iOpxX5D<- % KT"&JRRR ےҒR)JRiM))M)JIJdJR)JSJKkÔÔÔÔKr}ɋHD@D@l#6 . PɄ'%E')RHJGR|qKqJ|% (M hLOm<4%i $EE1$IJdI$ҒI/H9L 0%>oO@DDDDD VY)ݪ ʊA[ɥ4!)M6 %ҚTI)))JRRҔ))P%4yM)JiJSJR&)I$LI$I_ @'ܤnM6&.QĨʉ)FSF9 DBRStQ䔥I&JS%%J"$|j}Jc [JI4KpKr[M%8)JR(\Ʈ];ph- !ݻ*$i+ ]X{B1D|9?C>6N?" zGk|/@W#Rn _r ܠ,scŝYDn?f*o܊4hKDx(Ʉ3THYFڠa:W:PI>xyLkiKIb#(g{f}N >nw&t~jkq)ARAa3X0ù1E-Ok|;)ҙ- 2SLAM{ԶKNO)iQO<%)%&O)$UQ[i[ed8rٕc7n969&"Y%GBLo;5 ƅnưߟut!:S6E "У(Ϥ<`8j|w;dH}&8IVDoi Q=nj PsxMnox[/c>ݤOIrM2uw['"O&ӉL״pwq&8ޤYC! $r/qN"SJm@1Ӕi<$|ܑ )q>!4ܞJ_}%)-)09)LJiJR()O&LI'_XDfĢv۱Gfw@%YWkplus YNiadhnZMܴ7S7s@!7]N*W"Kf]sq!DZ Ix(SL&%6l)I T`xja J:)q))$>:'m%?dҔ꘤I)L2t&)$i:&#z߷v?lp.>:Ō!7t7q%a4s $ zkl`*_RhW=u]c% h w C9]i_pLIP3u J@H6[0;(3MN`$B䃻K N"cEL)9LxQU8v(IHHJxR)Д%8on$iD)J@yI$I$Ҝr$Nǻ;ӔZ[5v% pq!x895֢!Y"eWkDXWC^vJȸqTG !LD(12c%IR09)iإ)K/S)Hu1:|R$3p?I-R)JR<ڗ <򖼔Ӣ@2hH:&H I$H$I_Dʛ\=e VDBǻMUd@fx T9Yp:3h--<TPKJ!9ݐLx]5JG 8P$ςa:m&JGD L5HSDji)$()HR(Npu?4ڧ?) i<*me"JdJSJI$P&H$冩@4QQTvX{+,ú ):4]OW}wb bC%SXJoL}ɴLJ8t$\9M&$_)4ɧMS#(Rn @i*@uMo" )>e8~{5:#D}Od3p )4P7d 2HK-[RJBR|&JR3|ҏѢQ) %Kj8qe>)w&I"$ B)4dNt%)R>J;ئ'(<0-(TKL]'Eڤ]P)nBRR.LO`DCFOhJa6H%(蔦:@)INܗ)TL :&"J}e.w&O RI2IӄO*)$$8 $4~iS]8R=zy?r[nMS$#fSDǔb{d9)JE4Gc\ H%)M:)R|SR1r]L'JTe)1H2d% 'I.RLd$I$d؄SnɁ%6I60vɉ'QtBxMN=5PTIx}% |)rS hS ƦSM%H 3)N4SkU O)I$'<$I&JS' ':d)LI$/–*@a؉O"BEL|JS)LIH9>0wޤ<'iۂbS'ML%H?84 ljM&o4;&7d)DL?dҔp-H JiJRI$OR $$I$9_Z'N >IH!S&Db#(m1)[I SmOR Ok nM#xM۔R1R?SDRSR$I)LI)쟼(E2IP4I$Lt$t$ STmS'.JiK"N&r)iO)=BRe;DjSD9<&4)JiHJ{ORdI$Jd9RR:I&I$ I$I$I(_S>S[w)S H7N@SHc C<tSΒuH.4IJR$I<&O2FxBZJg&I$IBII$$I$I$R/)LJRpvNJ`=OtI2i)M$NP)JiI$2INt7t)'> $I$I$I$I jp2a converted image
......................................................''''',,,,;;;;:::::cccccl
.............                  ..........................''''',,,,;;;;::::cccc
....                                ......................''''',,,,;;;;::::ccc
                                         ...................''''',,,,;;;:::::c
                                            ..................'''',,,,;;;;::::
                                              .................''''',,,,;;;;::
                                               ..................'''',,,,;;;;;
                                                 .................''''',,,,,;;
                                                  ................''''',,,,;;;
                                                   ................'''',,,;;;;
                                       .....       ...............'''',,,,;;;;
                            .',;;:clodxxxkkkko:,................'''',,,,;;;;::
:;'.....      ...'...  .':ldddxxxkkkOOOOOOO0000000xxdlc;'....'''',,,,;::;;:::c
xxdooolllllloooolloxxkOO00000OO000KKKXXXXXXXXXXXXXXXXNNNXK0KXNNNNN00XNWWNKKXNX
OOkkxxxxxxxxxkkOOOkkO0000KKXXXXXXXXXXXXXXNNNNNNNNNNNWWNNNWWWWWWWWWWWWWMMMMMMMM
K000OOOOOOOO0000KKKKK0KKXXXXXXNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMM
KKKK00000000KKKKXXXXXXXXXXNNNNNNWWNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMM
XXK00K0OOOOOOO0000KKKK000000KNWWWWWKXNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XK0OOko:;;;;;;colcddddddddddxNWWWWNNKKXXNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWMMW
NXKOxl;. .,;;lOOkOXXK00KXXNXNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWMMM
KOkxxc.   .;cx00KXXNNNNNNWNWWWNNNWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWMMMMMMMMMMMMMM
XXKOkdc::ldxkO0KXXNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMM
XXXK0OOOO000KKKKXXXNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
NNNXXXKKXXXXXXNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWNNNNNNNNNNNNWWNWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWNNWWWWWNWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWWWWWWMMMWWMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWMWWWMMMMMMMMMMMMMMMMMMMWWMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
jp2a-1.1.1/tests/dalsnuten-color.html000066400000000000000000004335411414624405500175260ustar00rootroot00000000000000 jp2a converted image
......................................................''''',,,,;;;;:::::cccccl
.............                  ..........................''''',,,,;;;;::::cccc
....                                ......................''''',,,,;;;;::::ccc
                                         ...................''''',,,,;;;:::::c
                                            ..................'''',,,,;;;;::::
                                              .................''''',,,,;;;;::
                                               ..................'''',,,,;;;;;
                                                 .................''''',,,,,;;
                                                  ................''''',,,,;;;
                                                   ................'''',,,;;;;
                                       .....       ...............'''',,,,;;;;
                            .',;;:clodxxxkkkko:,................'''',,,,;;;;::
:;'.....      ...'...  .':ldddxxxkkkOOOOOOO0000000xxdlc;'....'''',,,,;::;;:::c
xxdooolllllloooolloxxkOO00000OO000KKKXXXXXXXXXXXXXXXXNNNXK0KXNNNNN00XNWWNKKXNX
OOkkxxxxxxxxxkkOOOkkO0000KKXXXXXXXXXXXXXXNNNNNNNNNNNWWNNNWWWWWWWWWWWWWMMMMMMMM
K000OOOOOOOO0000KKKKK0KKXXXXXXNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMM
KKKK00000000KKKKXXXXXXXXXXNNNNNNWWNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMM
XXK00K0OOOOOOO0000KKKK000000KNWWWWWKXNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XK0OOko:;;;;;;colcddddddddddxNWWWWNNKKXXNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWMMW
NXKOxl;. .,;;lOOkOXXK00KXXNXNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWMMM
KOkxxc.   .;cx00KXXNNNNNNWNWWWNNNWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWMMMMMMMMMMMMMM
XXKOkdc::ldxkO0KXXNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMM
XXXK0OOOO000KKKKXXXNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
NNNXXXKKXXXXXXNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWNNNNNNNNNNNNWWNWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWNNWWWWWNWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWWWWWWWWWMMMWWMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WWWWMWWWMMMMMMMMMMMMMMMMMMMWWMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
jp2a-1.1.1/tests/dalsnuten-invert.txt000066400000000000000000000043631414624405500175660ustar00rootroot00000000000000......................................................''''',,,,;;;;:::::cccccl ............. ..........................''''',,,,;;;;::::cccc .... ......................''''',,,,;;;;::::ccc ...................''''',,,,;;;:::::c ..................'''',,,,;;;;:::: .................''''',,,,;;;;:: ..................'''',,,,;;;;; .................''''',,,,,;; ................''''',,,,;;; ................'''',,,;;;; ..... ...............'''',,,,;;;; .',;;:clodxxxkkkko:,................'''',,,,;;;;:: :;'..... ...'... .':ldddxxxkkkOOOOOOO0000000xxdlc;'....'''',,,,;::;;:::c xxdooolllllloooolloxxkOO00000OO000KKKXXXXXXXXXXXXXXXXNNNXK0KXNNNNN00XNWWNKKXNX OOkkxxxxxxxxxkkOOOkkO0000KKXXXXXXXXXXXXXXNNNNNNNNNNNWWNNNWWWWWWWWWWWWWMMMMMMMM K000OOOOOOOO0000KKKKK0KKXXXXXXNNNNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMM KKKK00000000KKKKXXXXXXXXXXNNNNNNWWNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMM XXK00K0OOOOOOO0000KKKK000000KNWWWWWKXNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XK0OOko:;;;;;;colcddddddddddxNWWWWNNKKXXNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWMMW NXKOxl;. .,;;lOOkOXXK00KXXNXNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWMMM KOkxxc. .;cx00KXXNNNNNNWNWWWNNNWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWMMMMMMMMMMMMMM XXKOkdc::ldxkO0KXXNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMM XXXK0OOOO000KKKKXXXNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM NNNXXXKKXXXXXXNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMM WWNNNNNNNNNNNNWWNWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM WWWWWWWNNWWWWWNWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM WWWWWWWWWWWWMMMWWMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM WWWWMWWWMMMMMMMMMMMMMMMMMMMWWMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/dalsnuten-jp2a-2000x2000-md5.txt000066400000000000000000000000101414624405500206300ustar00rootroot000000000000008004000 jp2a-1.1.1/tests/dalsnuten-normal.txt000066400000000000000000000043631414624405500175470ustar00rootroot00000000000000KKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKK000000OOOOOkkkkxxxxdddddoooool XXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXKKKKKKK000000OOOOOkkkkxxxxddddoooo XXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXKKKKKKK00000OOOOOkkkkxxxxddddooo NNNNNNNNNNWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNXXXXXXXXKKKKKK00000OOOOOkkkkxxxdddddo NNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNXXXXXXXKKKKKK00000OOOOkkkkxxxxdddd WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNXXXXXXKKKKKK00000OOOOOkkkkxxxxdd WWWWMMMMMMMMMMMMMMMWWMMWWWWWWWWWWWWWWWNNNNNNNNNXXXXXXXKKKKK000000OOOOkkkkxxxxx WMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWNNNNNNNNNXXXXXXKKKKKK00000OOOOOkkkkkxx MMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWNNNNNNNNXXXXXXKKKKK00000OOOOOkkkkxxx MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWNNNNNNNNXXXXXXKKKKK00000OOOOkkkxxxx MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWNXK00KNNNNNNNXXXXXXKKKKK0000OOOOkkkkxxxx MMMMMMMMMMMMMMMMMMMMMMMMMMMWKOkxxdolc:;;;,,,,cdk0XXXXXKKKKKK0000OOOOkkkkxxxxdd dxO00KKXNNNNNNXK0O0KXNNXOdl:::;;;,,,'''''''.......;;:loxO0000OOOOkkkkxddxxdddo ;;:cccllllllccccllc;;,''.....''...................... ..... ... ... . '',,;;;;;;;;;,,''',,'.................... ....''''''''.................. .......................... .......'''''''............... .. ...'',cdxxxxxxoclo::::::::::; .... ..';lxXM0kxxl'','........ . .',;;oKWMN0xo;..... ...',:oddl:;,'.... .....''''.......... ........... jp2a-1.1.1/tests/flip-xy-invert.txt000066400000000000000000000035501414624405500171560ustar00rootroot00000000000000 'odddd: ,cdd, lWMMMMk. ;OWMMM0, lWMMMMk. :XMMMMMNo. lWMMMMk. .kMMMMM0; .cdxkOOko:cdkOOOkxc. .oxxxxxxxxxxxxxxxc. ,cdkOOOkxoOWMMMMk. .OMMMMMo ,kKNMMMMMN0do0WMMMMO. ;XMMMMMMMMMMMMMWk. ,0WMMMMMWWWMMMMMMMk. .OMMMMMo .kMMMMMx. ;XMMMM0' 'xOOOOOOXMMMMMKc. ,KMMMMMKl,';c0MMMMMk. .OMMMMMo .xMMMMMd.'c0WMMW0; .oXMMMXo. dMMMMMK, lWMMMMk. .OMMMMMo .xMMMMMXKNWX0xl,. 'OWMMWk' .kMMMMMk. lWMMMMk. .OMMMMMo .xMMMMMKo:,. .. :KMMMNo. .dMMMMMK; lWMMMMk. .OMMMMMo dMMMMM0;....,ckXo cNMMMWd ;XMMMMMXd:;cdKMMMMMk. .OMMMMMo .dXWMMMWXKXNWWXO; ,KMMMMN: . 'o0WMMMMMMWNNMMMMMk. .OMMMMMo .,clodddoc:,. :NMMMMM0c'..':xx ':lodol;.'lllll, ;lloll' .kWMMMMMWNXNWMMO .ckOx; .oXMMMMMMMMMWXc :XMMMk. .:oxOOOkxl;. .cxOd, jp2a-1.1.1/tests/grind-256-fill.txt000066400000000000000000001641221414624405500166250ustar00rootroot00000000000000'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW '....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM ,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW .......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM  .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM '. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM ..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO ''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd ...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk ..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx .......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd ...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll ....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll ....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll .'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c  .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:  ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,  ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..  ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .     .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....  ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....         ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.       ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;  ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;     ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c   .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc: ......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c ......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll::: jp2a-1.1.1/tests/grind-2grayscale-256-fill.txt000066400000000000000000001663211414624405500206620ustar00rootroot00000000000000'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW '....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM ,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW .......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM  .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM '. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM ..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO ''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd ...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk ..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx .......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd ...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll ....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll ....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll .'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c  .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:  ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,  ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..  ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .     .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....  ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....         ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.       ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;  ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;     ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c   .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc: ......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c ......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll::: jp2a-1.1.1/tests/grind-2grayscale-ANSI-fill.txt000066400000000000000000000341171414624405500210750ustar00rootroot00000000000000'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW '....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM ,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW .......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM  .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM '. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM ..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO ''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd ...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk ..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx .......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd ...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll ....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll ....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll .'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c  .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:  ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,  ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..  ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .     .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....  ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....         ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.       ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;  ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;     ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c   .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc: ......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c ......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll::: jp2a-1.1.1/tests/grind-2grayscale-fill-x.html000066400000000000000000004303661414624405500207450ustar00rootroot00000000000000 jp2a converted image
'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
'....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM
,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW
.......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM
 .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
'. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM
..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO
''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd
...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk
..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx
.......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd
...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll
....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll
....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll
.'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c
 .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:
 ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,
 ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..
 ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .  
  .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....
 ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....
        ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.
      ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;
 ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;
    ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c
  .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc:
......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c
......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll:::
jp2a-1.1.1/tests/grind-2grayscale-fill.html000066400000000000000000004300441414624405500204710ustar00rootroot00000000000000 jp2a converted image
'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
'....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM
,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW
.......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM
 .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
'. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM
..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO
''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd
...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk
..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx
.......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd
...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll
....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll
....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll
.'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c
 .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:
 ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,
 ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..
 ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .  
  .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....
 ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....
        ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.
      ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;
 ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;
    ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c
  .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc:
......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c
......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll:::
jp2a-1.1.1/tests/grind-2grayscale-truecolor-fill.txt000066400000000000000000002571721414624405500223710ustar00rootroot00000000000000'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW '....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM ,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW .......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM  .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM '. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM ..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO ''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd ...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk ..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx .......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd ...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll ....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll ....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll .'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c  .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:  ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,  ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..  ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .     .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....  ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....         ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.       ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;  ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;     ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c   .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc: ......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c ......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll::: jp2a-1.1.1/tests/grind-2grayscale-x.html000066400000000000000000002454721414624405500200230ustar00rootroot00000000000000 jp2a converted image
'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
'....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM
,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW
.......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM
 .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
'. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM
..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO
''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd
...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk
..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx
.......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd
...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll
....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll
....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll
.'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c
 .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:
 ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,
 ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..
 ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .  
  .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....
 ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....
        ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.
      ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;
 ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;
    ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c
  .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc:
......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c
......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll:::
jp2a-1.1.1/tests/grind-2grayscale.html000066400000000000000000002451501414624405500175470ustar00rootroot00000000000000 jp2a converted image
'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
'....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM
,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW
.......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM
 .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
'. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM
..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO
''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd
...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk
..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx
.......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd
...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll
....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll
....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll
.'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c
 .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:
 ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,
 ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..
 ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .  
  .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....
 ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....
        ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.
      ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;
 ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;
    ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c
  .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc:
......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c
......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll:::
jp2a-1.1.1/tests/grind-ANSI-fill.txt000066400000000000000000000413021414624405500170350ustar00rootroot00000000000000'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW '....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM ,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW .......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM  .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM '. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM ..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO ''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd ...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk ..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx .......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd ...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll ....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll ....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll .'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c  .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:  ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,  ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..  ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .     .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....  ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....         ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.       ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;  ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;     ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c   .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc: ......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c ......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll::: jp2a-1.1.1/tests/grind-blue.txt000066400000000000000000000045761414624405500163220ustar00rootroot00000000000000K0KKK00KOkllo';, 0XXNXKOK00OOkxdl. O0XNNNXKXK00OOkc' . WWWNWNNXNX0K00x:. .. WWWNNXKKXXKKK0ko,. NNNNNNKOKx0K0kOko;''. NNWNXNXxK0KxxdxOkdoc;'...................................... NWWNNNXNXNK0000Oo;'...................''........''..............,;;;,........... XXNNNWXX0Kk0Okol:.....',:,,;'';col;,:loolc,,',,;lc;,;cc,',,'''':doodo;,,,,,;;;;c XNNXXNKX0O:;:;;,',,,,,,cccll::dxddoodxxddo:;;,clllc:cl:;;,,,,,,;cllll;;;;;;;;;;: K0K0KW0Okdc,,,;;;;;;;ldxdllc::oddlllccllc:::::occ::::::::::::::::ccccclllllllloo NXKKXXKOO0Ooc:cc::::oxxdolccccllclcllooloooodoxdooooddoddooodddxxxkxxkkkkxxxxxxx XXXKXWXXXXXXXK00koooloodddxxxdddddddddxxxxkkxkOkxxxxkxxxxxxkOOOOOkkkkkkkkOOOOkkO KKK0kOkkO0KKKXKKKKKKk:.....':xOkkkxxdoddxxkkkOkxxxxkkkOOkkkOOOOkxkkOOOOOkOOOOOO0 0XKXOxkkxdxkOKKKXKKXKd...'...';lO00OkxdoxdxxxOxkkxxkkxkOOOO00000000KKKK0KKKKKKKK OKNX0OxkddOkodKOKOO0l'...k'..O'.:O00OOkxxdxkk0kkkkkOOkOO0K0K0KK00O000KKKKKXKK0KO NO0XXKXXkx00OOKkOOkx;c0k'x' .Ooo;ck0K0OOOkxkk00OOOOOOxxxkOO00KKKKXXXKX00KXXKKKOk N00NNKXXKKK0Ok0K00KxdddxooolokkkooxkOOOOOkOxkkkoccddodxddxxxxdK0kkk0XKXKKKKKXKK0 WK0XNXNNXXXKXKK0XK0d:;NK;O0K0K00c:d0lk00O00O0O0K0kkookddoolcoodx0kddOdxkxkOOO0O0 NKKXNXXXKXXKKKK0K0Ox0000OOOOOkkkdodkdk0KXNKO0O0Nkkxx0KKOxdxxkddOOx0OkOxxkOOKN0XN NX0XNNXNNWNNWNX0kx0::cK0:kocccxk0OOOxdk0KK0O0OONNNNNNNXK0kkOk0X0Ok00XXOkOXNNNKXN WN0XNNNNNXXKKKK0xdOc:cKO;xl'''xO:ckKkdxKOdkkOkONXKXNNNXKKKKKXNNKOO0OOKN0KXNXXXKX WXXNWWWWNWWXOxK0dd0dod00dkkddxkkxxkOOOO0OdxxkOKXddk0K0XNNWWNNNNNNNXK0KNNNNNXXKKX MNWMWWWWNNX0kc;;,;c,',ol,::'''dx:;::clx0OxdxKXX0kk0NNNNWWNNNNWWWNWXXKkxkkOO000OO MWWWWWWWN0dlcc::::c::;;;;;;:c::cld::cloxkkkONWWWWWWNWWWWWWWWWNNNNWNWW0kdxkkkkkkk WWNNWWNXK0xlc::::;;;:;:::::dkOxONK0xlcllloodxkkOOkkk00XXNNWWWWXKNWWWWNK0KNX0xddd WWWWWNX0dccc::::;;;:;;:::::kkO0KNXXOc:::::ccccccclccllodkKXXNXK0KXXXX0KXNNNXkdoo MWWWNXK0xl::;;;;;;;;;;;:::ckO0NWOc::;;;;;:::::::c:::ccloOKOxOKXOxkkdooloooooolod WWWWWWKxcc:;,,;;;,;;;;::cclodd0Nd::;,;;;,;;;::::::::cccccoddodkO0O00Oxddoxdollol WWWWWKxlcc;;;;;;;;;;:::;::clllodl::;;,;;;,;;;::c:::::ccc::ccloxKK0K0xxxllolllooo jp2a-1.1.1/tests/grind-color-256.txt000066400000000000000000000525251414624405500170200ustar00rootroot00000000000000''..;';ldd00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW ,...''',;ccoKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNW .......'';:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMM  ...',..,,:oKWMMMMWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMM .....c,:,:lcoxk0XXXXXXXNNNNNNNNNNNNNNNWWWWMMMMMMMMMMMMMMMMMM .....,..:::;ldkO0KKKKXXXXKKK0000KKKKKKXXNNNNWWWWWNNNNNNNNNNN .......',;:ox0000OO0O0OxdxkkddxkOOOOkO0OO0KXXXXKkkkO00OOOkkx ..,..,;ckkkkkkkkkxdddxdcclollclxkkxddxkxkO00KK00OkkO00OOOkkk ..'..:::xkxxdxxoc:cddddoodddddxxxxodkkkkOOOOOOOkkkkkkkkkkkxx ......,';,;:ldddooddodxxxxxxxxkxxkoxxxxxxkkkxxxdxxddddddoooo ..';;;::cc::clco0XXKKkollodxxkxkkxokkkkkxdxxxddxxxddooddolll ...,cccc;l:;c::l0NKxNKd0occodddxxookkkxxxxxdddddddoolollllll ......::':;,c;lOocOcW0;xko,;ccldlcodddoodddooooolcclclccc:::  .....''.,'.'.'cc,c;::,,c:;;;,:l:,,cooddoxddddlcllc:cclllcc;  .....''.,'...:l;.l.'..'lo'l,.'.'''.';c;',ccc:c,.,,,;,;'..'.  .. .... ...;,:o:'l,olc,',';;...'.' ......,,,,..,....,'.  .   ..   ...'..:,:d:'d,kOd,dl.,c.;;;,' ............,,.. ..  . .  .    ...clcxlokl;o:ddl'clc:;.,;:'..c;.......  .............      ..,codxxxxkkkkkkxxoooxdl;,;'.        ..........;::;;,,; ......';looodxddddddc;,,..,lllc::,,'',''...  ....   .'..';::   ...,coodddxxxxxddd;'...';odddooooooollc:,....''..'''...;:: .....,ldxkkxkkkxxddo:;' :dxxxxxxddddddoool:;::;,,,;;::::cc:: ....'codxkkkkkxxddoollc;oxxkkxkkxxddddddoodollc,''';;cc:cc:: jp2a-1.1.1/tests/grind-color-ANSI.txt000066400000000000000000000240741414624405500172340ustar00rootroot00000000000000''..;';ldd00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW ,...''',;ccoKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNW .......'';:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMM  ...',..,,:oKWMMMMWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMM .....c,:,:lcoxk0XXXXXXXNNNNNNNNNNNNNNNWWWWMMMMMMMMMMMMMMMMMM .....,..:::;ldkO0KKKKXXXXKKK0000KKKKKKXXNNNNWWWWWNNNNNNNNNNN .......',;:ox0000OO0O0OxdxkkddxkOOOOkO0OO0KXXXXKkkkO00OOOkkx ..,..,;ckkkkkkkkkxdddxdcclollclxkkxddxkxkO00KK00OkkO00OOOkkk ..'..:::xkxxdxxoc:cddddoodddddxxxxodkkkkOOOOOOOkkkkkkkkkkkxx ......,';,;:ldddooddodxxxxxxxxkxxkoxxxxxxkkkxxxdxxddddddoooo ..';;;::cc::clco0XXKKkollodxxkxkkxokkkkkxdxxxddxxxddooddolll ...,cccc;l:;c::l0NKxNKd0occodddxxookkkxxxxxdddddddoolollllll ......::':;,c;lOocOcW0;xko,;ccldlcodddoodddooooolcclclccc:::  .....''.,'.'.'cc,c;::,,c:;;;,:l:,,cooddoxddddlcllc:cclllcc;  .....''.,'...:l;.l.'..'lo'l,.'.'''.';c;',ccc:c,.,,,;,;'..'.  .. .... ...;,:o:'l,olc,',';;...'.' ......,,,,..,....,'.  .   ..   ...'..:,:d:'d,kOd,dl.,c.;;;,' ............,,.. ..  . .  .    ...clcxlokl;o:ddl'clc:;.,;:'..c;.......  .............      ..,codxxxxkkkkkkxxoooxdl;,;'.        ..........;::;;,,; ......';looodxddddddc;,,..,lllc::,,'',''...  ....   .'..';::   ...,coodddxxxxxddd;'...';odddooooooollc:,....''..'''...;:: .....,ldxkkxkkkxxddo:;' :dxxxxxxddddddoool:;::;,,,;;::::cc:: ....'codxkkkkkxxddoollc;oxxkkxkkxxddddddoodollc,''';;cc:cc:: jp2a-1.1.1/tests/grind-color-dark-fill-x.html000066400000000000000000002533371414624405500207470ustar00rootroot00000000000000 jp2a converted image
''..;';ldd00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
,...''',;ccoKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNW
.......'';:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMM
 ...',..,,:oKWMMMMWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMM
.....c,:,:lcoxk0XXXXXXXNNNNNNNNNNNNNNNWWWWMMMMMMMMMMMMMMMMMM
.....,..:::;ldkO0KKKKXXXXKKK0000KKKKKKXXNNNNWWWWWNNNNNNNNNNN
.......',;:ox0000OO0O0OxdxkkddxkOOOOkO0OO0KXXXXKkkkO00OOOkkx
..,..,;ckkkkkkkkkxdddxdcclollclxkkxddxkxkO00KK00OkkO00OOOkkk
..'..:::xkxxdxxoc:cddddoodddddxxxxodkkkkOOOOOOOkkkkkkkkkkkxx
......,';,;:ldddooddodxxxxxxxxkxxkoxxxxxxkkkxxxdxxddddddoooo
..';;;::cc::clco0XXKKkollodxxkxkkxokkkkkxdxxxddxxxddooddolll
...,cccc;l:;c::l0NKxNKd0occodddxxookkkxxxxxdddddddoolollllll
......::':;,c;lOocOcW0;xko,;ccldlcodddoodddooooolcclclccc:::
 .....''.,'.'.'cc,c;::,,c:;;;,:l:,,cooddoxddddlcllc:cclllcc;
 .....''.,'...:l;.l.'..'lo'l,.'.'''.';c;',ccc:c,.,,,;,;'..'.
 .. .... ...;,:o:'l,olc,',';;...'.' ......,,,,..,....,'.  . 
 ..   ...'..:,:d:'d,kOd,dl.,c.;;;,' ............,,.. ..  . .
 .    ...clcxlokl;o:ddl'clc:;.,;:'..c;.......  .............
     ..,codxxxxkkkkkkxxoooxdl;,;'.        ..........;::;;,,;
......';looodxddddddc;,,..,lllc::,,'',''...  ....   .'..';::
  ...,coodddxxxxxddd;'...';odddooooooollc:,....''..'''...;::
.....,ldxkkxkkkxxddo:;' :dxxxxxxddddddoool:;::;,,,;;::::cc::
....'codxkkkkkxxddoollc;oxxkkxkkxxddddddoodollc,''';;cc:cc::
jp2a-1.1.1/tests/grind-color-dark-fill.html000066400000000000000000002530231414624405500204720ustar00rootroot00000000000000 jp2a converted image
''..;';ldd00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
,...''',;ccoKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNW
.......'';:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMM
 ...',..,,:oKWMMMMWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMM
.....c,:,:lcoxk0XXXXXXXNNNNNNNNNNNNNNNWWWWMMMMMMMMMMMMMMMMMM
.....,..:::;ldkO0KKKKXXXXKKK0000KKKKKKXXNNNNWWWWWNNNNNNNNNNN
.......',;:ox0000OO0O0OxdxkkddxkOOOOkO0OO0KXXXXKkkkO00OOOkkx
..,..,;ckkkkkkkkkxdddxdcclollclxkkxddxkxkO00KK00OkkO00OOOkkk
..'..:::xkxxdxxoc:cddddoodddddxxxxodkkkkOOOOOOOkkkkkkkkkkkxx
......,';,;:ldddooddodxxxxxxxxkxxkoxxxxxxkkkxxxdxxddddddoooo
..';;;::cc::clco0XXKKkollodxxkxkkxokkkkkxdxxxddxxxddooddolll
...,cccc;l:;c::l0NKxNKd0occodddxxookkkxxxxxdddddddoolollllll
......::':;,c;lOocOcW0;xko,;ccldlcodddoodddooooolcclclccc:::
 .....''.,'.'.'cc,c;::,,c:;;;,:l:,,cooddoxddddlcllc:cclllcc;
 .....''.,'...:l;.l.'..'lo'l,.'.'''.';c;',ccc:c,.,,,;,;'..'.
 .. .... ...;,:o:'l,olc,',';;...'.' ......,,,,..,....,'.  . 
 ..   ...'..:,:d:'d,kOd,dl.,c.;;;,' ............,,.. ..  . .
 .    ...clcxlokl;o:ddl'clc:;.,;:'..c;.......  .............
     ..,codxxxxkkkkkkxxoooxdl;,;'.        ..........;::;;,,;
......';looodxddddddc;,,..,lllc::,,'',''...  ....   .'..';::
  ...,coodddxxxxxddd;'...';odddooooooollc:,....''..'''...;::
.....,ldxkkxkkkxxddo:;' :dxxxxxxddddddoool:;::;,,,;;::::cc::
....'codxkkkkkxxddoollc;oxxkkxkkxxddddddoodollc,''';;cc:cc::
jp2a-1.1.1/tests/grind-color-dark-x.html000066400000000000000000001452671414624405500200250ustar00rootroot00000000000000 jp2a converted image
''..;';ldd00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
,...''',;ccoKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNW
.......'';:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMM
 ...',..,,:oKWMMMMWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMM
.....c,:,:lcoxk0XXXXXXXNNNNNNNNNNNNNNNWWWWMMMMMMMMMMMMMMMMMM
.....,..:::;ldkO0KKKKXXXXKKK0000KKKKKKXXNNNNWWWWWNNNNNNNNNNN
.......',;:ox0000OO0O0OxdxkkddxkOOOOkO0OO0KXXXXKkkkO00OOOkkx
..,..,;ckkkkkkkkkxdddxdcclollclxkkxddxkxkO00KK00OkkO00OOOkkk
..'..:::xkxxdxxoc:cddddoodddddxxxxodkkkkOOOOOOOkkkkkkkkkkkxx
......,';,;:ldddooddodxxxxxxxxkxxkoxxxxxxkkkxxxdxxddddddoooo
..';;;::cc::clco0XXKKkollodxxkxkkxokkkkkxdxxxddxxxddooddolll
...,cccc;l:;c::l0NKxNKd0occodddxxookkkxxxxxdddddddoolollllll
......::':;,c;lOocOcW0;xko,;ccldlcodddoodddooooolcclclccc:::
 .....''.,'.'.'cc,c;::,,c:;;;,:l:,,cooddoxddddlcllc:cclllcc;
 .....''.,'...:l;.l.'..'lo'l,.'.'''.';c;',ccc:c,.,,,;,;'..'.
 .. .... ...;,:o:'l,olc,',';;...'.' ......,,,,..,....,'.  . 
 ..   ...'..:,:d:'d,kOd,dl.,c.;;;,' ............,,.. ..  . .
 .    ...clcxlokl;o:ddl'clc:;.,;:'..c;.......  .............
     ..,codxxxxkkkkkkxxoooxdl;,;'.        ..........;::;;,,;
......';looodxddddddc;,,..,lllc::,,'',''...  ....   .'..';::
  ...,coodddxxxxxddd;'...';odddooooooollc:,....''..'''...;::
.....,ldxkkxkkkxxddo:;' :dxxxxxxddddddoool:;::;,,,;;::::cc::
....'codxkkkkkxxddoollc;oxxkkxkkxxddddddoodollc,''';;cc:cc::
jp2a-1.1.1/tests/grind-color-dark.html000066400000000000000000001447531414624405500175570ustar00rootroot00000000000000 jp2a converted image
''..;';ldd00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
,...''',;ccoKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNW
.......'';:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMM
 ...',..,,:oKWMMMMWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMM
.....c,:,:lcoxk0XXXXXXXNNNNNNNNNNNNNNNWWWWMMMMMMMMMMMMMMMMMM
.....,..:::;ldkO0KKKKXXXXKKK0000KKKKKKXXNNNNWWWWWNNNNNNNNNNN
.......',;:ox0000OO0O0OxdxkkddxkOOOOkO0OO0KXXXXKkkkO00OOOkkx
..,..,;ckkkkkkkkkxdddxdcclollclxkkxddxkxkO00KK00OkkO00OOOkkk
..'..:::xkxxdxxoc:cddddoodddddxxxxodkkkkOOOOOOOkkkkkkkkkkkxx
......,';,;:ldddooddodxxxxxxxxkxxkoxxxxxxkkkxxxdxxddddddoooo
..';;;::cc::clco0XXKKkollodxxkxkkxokkkkkxdxxxddxxxddooddolll
...,cccc;l:;c::l0NKxNKd0occodddxxookkkxxxxxdddddddoolollllll
......::':;,c;lOocOcW0;xko,;ccldlcodddoodddooooolcclclccc:::
 .....''.,'.'.'cc,c;::,,c:;;;,:l:,,cooddoxddddlcllc:cclllcc;
 .....''.,'...:l;.l.'..'lo'l,.'.'''.';c;',ccc:c,.,,,;,;'..'.
 .. .... ...;,:o:'l,olc,',';;...'.' ......,,,,..,....,'.  . 
 ..   ...'..:,:d:'d,kOd,dl.,c.;;;,' ............,,.. ..  . .
 .    ...clcxlokl;o:ddl'clc:;.,;:'..c;.......  .............
     ..,codxxxxkkkkkkxxoooxdl;,;'.        ..........;::;;,,;
......';looodxddddddc;,,..,lllc::,,'',''...  ....   .'..';::
  ...,coodddxxxxxddd;'...';odddooooooollc:,....''..'''...;::
.....,ldxkkxkkkxxddo:;' :dxxxxxxddddddoool:;::;,,,;;::::cc::
....'codxkkkkkxxddoollc;oxxkkxkkxxddddddoodollc,''';;cc:cc::
jp2a-1.1.1/tests/grind-color-truecolor.txt000066400000000000000000000756251414624405500205300ustar00rootroot00000000000000''..;';ldd00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW ,...''',;ccoKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNW .......'';:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMM  ...',..,,:oKWMMMMWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMM .....c,:,:lcoxk0XXXXXXXNNNNNNNNNNNNNNNWWWWMMMMMMMMMMMMMMMMMM .....,..:::;ldkO0KKKKXXXXKKK0000KKKKKKXXNNNNWWWWWNNNNNNNNNNN .......',;:ox0000OO0O0OxdxkkddxkOOOOkO0OO0KXXXXKkkkO00OOOkkx ..,..,;ckkkkkkkkkxdddxdcclollclxkkxddxkxkO00KK00OkkO00OOOkkk ..'..:::xkxxdxxoc:cddddoodddddxxxxodkkkkOOOOOOOkkkkkkkkkkkxx ......,';,;:ldddooddodxxxxxxxxkxxkoxxxxxxkkkxxxdxxddddddoooo ..';;;::cc::clco0XXKKkollodxxkxkkxokkkkkxdxxxddxxxddooddolll ...,cccc;l:;c::l0NKxNKd0occodddxxookkkxxxxxdddddddoolollllll ......::':;,c;lOocOcW0;xko,;ccldlcodddoodddooooolcclclccc:::  .....''.,'.'.'cc,c;::,,c:;;;,:l:,,cooddoxddddlcllc:cclllcc;  .....''.,'...:l;.l.'..'lo'l,.'.'''.';c;',ccc:c,.,,,;,;'..'.  .. .... ...;,:o:'l,olc,',';;...'.' ......,,,,..,....,'.  .   ..   ...'..:,:d:'d,kOd,dl.,c.;;;,' ............,,.. ..  . .  .    ...clcxlokl;o:ddl'clc:;.,;:'..c;.......  .............      ..,codxxxxkkkkkkxxoooxdl;,;'.        ..........;::;;,,; ......';looodxddddddc;,,..,lllc::,,'',''...  ....   .'..';::   ...,coodddxxxxxddd;'...';odddooooooollc:,....''..'''...;:: .....,ldxkkxkkkxxddo:;' :dxxxxxxddddddoool:;::;,,,;;::::cc:: ....'codxkkkkkxxddoollc;oxxkkxkkxxddddddoodollc,''';;cc:cc:: jp2a-1.1.1/tests/grind-color-x.html000066400000000000000000002553311414624405500171000ustar00rootroot00000000000000 jp2a converted image
OO00xOxl::..                                                
k0XKOOOkxooc.                                               
KXXXX0KOOxd;                                                
NXKXOk00kkdc.                                               
KXKX0okdkdloc;,........                                     
0XXXKk00dddxl:,'........................                    
00KXK00Okxdc;....''.'.';:;,,::;,'''','.''.......,,,'..''',,;
00k0Kkxo,,,,,,,,,;:::;:oolcllol;,,;::;,;,'......',,'..''',,,
00O0Kddd;,;;:;;codo::::cc:::::;;;;c:,,,,''''''',,,,,,,,,,,;;
KK00X0kOxkxdl:::cc::c:;;;;;;;;,;;,c;;;;;;,,,;;;:;;::::::cccc
00Oxxxddooddoloc.....,cllc:;;,;,,;c,,,,,;:;;;::;;;::cc::clll
0XXkooooxldxoddl. .; .:.cooc:::;;cc,,,;;;;;:::::::cclcllllll
00K0KKddOdxkoxl'co'o .x;,ckxool:loc:::cc:::cccccloololoooddd
N0XX0XOO0kO0O0Oookoxddkkodxxxkdldkkocc::c;::::lollodoollloox
N0KX0XOO0kO0K0dlx0l0O00OlcOlk0O0OOOKOxoxOkooodok0kkkxkxO00OK
N0XNKXKXNXK0xkdcdOlkclokOkOxx0K0O0ONXXKXX0kkkk0Kk00K0kOXNNXN
WKXWNNXXKO00dkd:dO:k,':k:l0ko0xxxkONKKXKKKKKKXXKkk00NXXNNXNK
WXNWWWKKKolo;lc,lxcd::lOolodx0kxdO00ox0KKXXXXNNXK0000KXKXX0K
WWNNNXKkoc:;;;;,,,,,,;;ccc;:lxkxOXNNNNNNNNXXXXXX0KK0xddxxkkx
XXXXXKOxlccc:;::::::oxkkXKkllloddkkOOkOO0KKNNXK0XNNNKO00Oxdd
NNXX0kocc:::;;;;;:::xOKXKOxc:::cccccccllodk0000OO00OOO000xdd
XXXK0kl:;,,;,,,;;::cdxONd:;;;;;;::::::cccldxddxkkkxxddddoodd
XKKXOoc:;,,,,,;;::cclloxc;;,,;,,;;::::::cc:cllokOOOxxoodoodd
jp2a-1.1.1/tests/grind-color.html000066400000000000000000002550151414624405500166320ustar00rootroot00000000000000 jp2a converted image
OO00xOxl::..                                                
k0XKOOOkxooc.                                               
KXXXX0KOOxd;                                                
NXKXOk00kkdc.                                               
KXKX0okdkdloc;,........                                     
0XXXKk00dddxl:,'........................                    
00KXK00Okxdc;....''.'.';:;,,::;,'''','.''.......,,,'..''',,;
00k0Kkxo,,,,,,,,,;:::;:oolcllol;,,;::;,;,'......',,'..''',,,
00O0Kddd;,;;:;;codo::::cc:::::;;;;c:,,,,''''''',,,,,,,,,,,;;
KK00X0kOxkxdl:::cc::c:;;;;;;;;,;;,c;;;;;;,,,;;;:;;::::::cccc
00Oxxxddooddoloc.....,cllc:;;,;,,;c,,,,,;:;;;::;;;::cc::clll
0XXkooooxldxoddl. .; .:.cooc:::;;cc,,,;;;;;:::::::cclcllllll
00K0KKddOdxkoxl'co'o .x;,ckxool:loc:::cc:::cccccloololoooddd
N0XX0XOO0kO0O0Oookoxddkkodxxxkdldkkocc::c;::::lollodoollloox
N0KX0XOO0kO0K0dlx0l0O00OlcOlk0O0OOOKOxoxOkooodok0kkkxkxO00OK
N0XNKXKXNXK0xkdcdOlkclokOkOxx0K0O0ONXXKXX0kkkk0Kk00K0kOXNNXN
WKXWNNXXKO00dkd:dO:k,':k:l0ko0xxxkONKKXKKKKKKXXKkk00NXXNNXNK
WXNWWWKKKolo;lc,lxcd::lOolodx0kxdO00ox0KKXXXXNNXK0000KXKXX0K
WWNNNXKkoc:;;;;,,,,,,;;ccc;:lxkxOXNNNNNNNNXXXXXX0KK0xddxxkkx
XXXXXKOxlccc:;::::::oxkkXKkllloddkkOOkOO0KKNNXK0XNNNKO00Oxdd
NNXX0kocc:::;;;;;:::xOKXKOxc:::cccccccllodk0000OO00OOO000xdd
XXXK0kl:;,,;,,,;;::cdxONd:;;;;;;::::::cccldxddxkkkxxddddoodd
XKKXOoc:;,,,,,;;::cclloxc;;,,;,,;;::::::cc:cllokOOOxxoodoodd
jp2a-1.1.1/tests/grind-flipx-x.html000066400000000000000000004444311414624405500171050ustar00rootroot00000000000000 jp2a converted image
WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKXxkd::';,'..,'
WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWkdxlll:;,;,.....
MMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXdolc;,,,''.....,
WNKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOdc:;,,'.......::
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMN0c;;,;'.'. .....
MMWXNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNko;,''.... .. ..
MMMNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMWWMMMMMMMMMMMMMMWXOo:,'...,,.. . .
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWMMMMMMN0oc;,,'..',..... 
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWNNNNNNNNNNNNWWWWWNkc:;,,,:.;'..... 
MMMMMMMMMMMMMMMMMMMMMMMMWWWWWWNNNNNNXXXNNNXNNWNNNXXXXXXXXXX0ddololo;,;o';'......
MMMMMMMMMMMMMWMMMMMMWWWWWWNNNXXXXXXXXKXKKXKXXXXNXXXXXXXKKKOdocc:;ldc;.,,d'... ..
WWWWNNNNNNNNNNWWWWWWWNNNNNXXKXKKKKKKK00000KKKKKKXXXXXXKKK0000dxl;,;cd;..'.... .'
OO000KKKKXXXKKKXNNNNNNNXXXXKKK0000000O00O00000KKXXXKKKKKKK00OOko:;;,,'..........
xkkOOOO00K0OOOkkKXXXNXXKK00000kkO0OOOOOkxxkOOkxxO0KK0KKO000K00Oo:;;'',.... .....
dxxxkkOOO0OOxxxxOKKKKK00OxxkOkxxkOOOOkolllldkxolldOOkkOkOO00000Okxcc::',.. ..'''
xkkxOOOOO00xddxkO000000OOxddxxddddkkkxoccclloolc:ckkdxkxkOOOO0OOOxxxxd''.'..'...
kkkkO000K000KOO0KKKXKK000Oxkkxdxdokkxxdllclloll::lxxoooddxkxxkxkkkOOOx:,,, ';...
xkkkOOOO0OO0OOO0OOO000O0Okkxxxxddoxxdxxdooddoolc:ldxdddcccoxxxxxxkkOOdc,:' ,;';'
xxxxkkkxxxxxxxxxxkkO0OOOOOOkOkOkklkxxxxxxdddoooooooooolc:;:dxxdddxxxd::;:...'...
ddxxxxddddxxxxxkkkkkkkkOkkkxkkkkxoxkkkkkkkkxkkxkxxxdddddllcodddolodol;,:,...... 
ooooooddddddodddddxxxkkkxxkkkxxxxoxkxxkkkkkdxxxxxkxxxxxxdxkOkkxl,;'.',''........
lllooooxdxddxdxxxdddxkkkkkkxxkkxxloxddxxxdxxxxxxddollcoddoodooolc:.,''''.. .'...
lllooddollodxxxkkxxxxkxxddkkkOkkOxlxkkkxkkkxxxdllclx0KXXXXOoclllccllc;;,;;;:,'..
llcloodddooodddddodddxxdxdxkkkkkOkokkkkdkxxxocccookKXXXXXKoc:ccc:;:cclolccc:...'
llllollloooooooddxxddddxxxOkkkkkkklxkkxoxxdolc:cxO0XXKOXXKd:;:c:;;:l:clc::l,.. '
cclcllloolloddxxdoodddodxdxddxkkkxlxdddoddoolclOKO'KN0;XNN0o:;;c;'oo;;ccll;'....
:;;:lccccllolllooooooloddoooooddddcocddddoc:,:cOX0'XW0;XOkKOc;;c:'ll;;ol'.''..',
cc:cccccll:cc::cloooooddddxddodoolccldo:;::,'ckkc:,XW0;0..dOo:;c;.;,''c;.....'' 
::ccllllc::;:clllcooodoxxxdloxkxd:,,:oo,';::;cxd'',xOo:l,;,::'','.'............ 
ccclllccccccclllcldddddxxddOkdddl,;::ll:,;,,,,,,;;,,;;cl:l:::.''..;,..''... ... 
';c:::cllod;cc:;:cddddoolo,do.','.'',cc;',,;';c:''',..,k..Od'..,'.::'';;... ... 
..,.'.':,.'',;'.,c;;l:c:,,;:ll,...'''.',.':x.l0k'...',,x..lok,....;:'';;... ... 
 .. .'''';''..;..cl;;;c:'..,:;;; ''.'....';:,:c;,,,''''.....:''............ ... 
  .  ..,:;'...,'..,;:;;,........ ...''...'',;;;;::;,,,,;'';:;.....   ... .. .'. 
 ..   ..'. ...''..',',,'..       ''''.'..,c:....';kO0o;0..O0O'cl,.'.   .... ... 
..... ... ....;'.....''....   .  ,,',,:'.cd:..ld,:XXXd:K'.0K0'od,.,'.    .. ..  
.. .. . . .'.,;'..  .  .......'' ',,;;c'.,,..lkd';kxxc;l''::;''.........     .. 
....      ...''...     ...'..;;:..',:;c'.'',,,,,,,,,,,,',,,;;.;:..;;....     .. 
 ..  ...........    .........;cc'.',;::'.';;:clc';dxkc;x..kKO'xO:cdc....      . 
;,''',,,,,;,''...  .....  . .',,'...;c:,.:dxkkOk:l000OkOxx0K0OO00Oxc'...        
;,,;;;::c:;...... ......  . .      ..,;,,:odxkdxxxkkkOOOkkxxxddxxxdol:,...      
;;;;;;;;:,' ........   ..           ',,,:ccloo';lolcoxxxxxddodxdddolc;...    .  
;;;:,'.',,.  . .....  .. ...''....',;;::clll:.' ,c,;:odddddddxxddoool;.... .... 
;:c;..  ..     .........;;:::ccccclllllooool.   ...;;oddddxxxddddodoocl:,...... 
c:;,.   .........'....';:ccclollllllooododoo'   ..','ddddddddxxxddddoooc'...    
ccc;,,;;:cc;,',:;'',;'',::lloodooooooooddddxdol.  .',ddxxxxxxxxxdxxddol:,'....  
::c:cc:c:c:cc;;;,'';:,',cloooooododddddxxxddddo,  ..,odddxxxkxxkxxxxxdoc'....   
c:cccc;:;:;,,;;;;;c:::clllooodddddddxxxkkxkkxdd: .;:ccldddxxkkkxxxkkkdol:'..  . 
c::cc::cc;;'...',:coolloolodddddddddxkkkxxkkxxdc.;cllooddddxxxkkkkkkkxooc,......
:::llc:cc;,:;,;'.cclloddolodddddoddxxxkkxxkkxdddolllloddxddxxxkxxxxxxxdol:'.....
jp2a-1.1.1/tests/grind-flipx.html000066400000000000000000004440621414624405500166400ustar00rootroot00000000000000 jp2a converted image
WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKXxkd::';,'..,'
WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWkdxlll:;,;,.....
MMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXdolc;,,,''.....,
WNKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOdc:;,,'.......::
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMN0c;;,;'.'. .....
MMWXNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNko;,''.... .. ..
MMMNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMWWMMMMMMMMMMMMMMWXOo:,'...,,.. . .
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWMMMMMMN0oc;,,'..',..... 
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWNNNNNNNNNNNNWWWWWNkc:;,,,:.;'..... 
MMMMMMMMMMMMMMMMMMMMMMMMWWWWWWNNNNNNXXXNNNXNNWNNNXXXXXXXXXX0ddololo;,;o';'......
MMMMMMMMMMMMMWMMMMMMWWWWWWNNNXXXXXXXXKXKKXKXXXXNXXXXXXXKKKOdocc:;ldc;.,,d'... ..
WWWWNNNNNNNNNNWWWWWWWNNNNNXXKXKKKKKKK00000KKKKKKXXXXXXKKK0000dxl;,;cd;..'.... .'
OO000KKKKXXXKKKXNNNNNNNXXXXKKK0000000O00O00000KKXXXKKKKKKK00OOko:;;,,'..........
xkkOOOO00K0OOOkkKXXXNXXKK00000kkO0OOOOOkxxkOOkxxO0KK0KKO000K00Oo:;;'',.... .....
dxxxkkOOO0OOxxxxOKKKKK00OxxkOkxxkOOOOkolllldkxolldOOkkOkOO00000Okxcc::',.. ..'''
xkkxOOOOO00xddxkO000000OOxddxxddddkkkxoccclloolc:ckkdxkxkOOOO0OOOxxxxd''.'..'...
kkkkO000K000KOO0KKKXKK000Oxkkxdxdokkxxdllclloll::lxxoooddxkxxkxkkkOOOx:,,, ';...
xkkkOOOO0OO0OOO0OOO000O0Okkxxxxddoxxdxxdooddoolc:ldxdddcccoxxxxxxkkOOdc,:' ,;';'
xxxxkkkxxxxxxxxxxkkO0OOOOOOkOkOkklkxxxxxxdddoooooooooolc:;:dxxdddxxxd::;:...'...
ddxxxxddddxxxxxkkkkkkkkOkkkxkkkkxoxkkkkkkkkxkkxkxxxdddddllcodddolodol;,:,...... 
ooooooddddddodddddxxxkkkxxkkkxxxxoxkxxkkkkkdxxxxxkxxxxxxdxkOkkxl,;'.',''........
lllooooxdxddxdxxxdddxkkkkkkxxkkxxloxddxxxdxxxxxxddollcoddoodooolc:.,''''.. .'...
lllooddollodxxxkkxxxxkxxddkkkOkkOxlxkkkxkkkxxxdllclx0KXXXXOoclllccllc;;,;;;:,'..
llcloodddooodddddodddxxdxdxkkkkkOkokkkkdkxxxocccookKXXXXXKoc:ccc:;:cclolccc:...'
llllollloooooooddxxddddxxxOkkkkkkklxkkxoxxdolc:cxO0XXKOXXKd:;:c:;;:l:clc::l,.. '
cclcllloolloddxxdoodddodxdxddxkkkxlxdddoddoolclOKO'KN0;XNN0o:;;c;'oo;;ccll;'....
:;;:lccccllolllooooooloddoooooddddcocddddoc:,:cOX0'XW0;XOkKOc;;c:'ll;;ol'.''..',
cc:cccccll:cc::cloooooddddxddodoolccldo:;::,'ckkc:,XW0;0..dOo:;c;.;,''c;.....'' 
::ccllllc::;:clllcooodoxxxdloxkxd:,,:oo,';::;cxd'',xOo:l,;,::'','.'............ 
ccclllccccccclllcldddddxxddOkdddl,;::ll:,;,,,,,,;;,,;;cl:l:::.''..;,..''... ... 
';c:::cllod;cc:;:cddddoolo,do.','.'',cc;',,;';c:''',..,k..Od'..,'.::'';;... ... 
..,.'.':,.'',;'.,c;;l:c:,,;:ll,...'''.',.':x.l0k'...',,x..lok,....;:'';;... ... 
 .. .'''';''..;..cl;;;c:'..,:;;; ''.'....';:,:c;,,,''''.....:''............ ... 
  .  ..,:;'...,'..,;:;;,........ ...''...'',;;;;::;,,,,;'';:;.....   ... .. .'. 
 ..   ..'. ...''..',',,'..       ''''.'..,c:....';kO0o;0..O0O'cl,.'.   .... ... 
..... ... ....;'.....''....   .  ,,',,:'.cd:..ld,:XXXd:K'.0K0'od,.,'.    .. ..  
.. .. . . .'.,;'..  .  .......'' ',,;;c'.,,..lkd';kxxc;l''::;''.........     .. 
....      ...''...     ...'..;;:..',:;c'.'',,,,,,,,,,,,',,,;;.;:..;;....     .. 
 ..  ...........    .........;cc'.',;::'.';;:clc';dxkc;x..kKO'xO:cdc....      . 
;,''',,,,,;,''...  .....  . .',,'...;c:,.:dxkkOk:l000OkOxx0K0OO00Oxc'...        
;,,;;;::c:;...... ......  . .      ..,;,,:odxkdxxxkkkOOOkkxxxddxxxdol:,...      
;;;;;;;;:,' ........   ..           ',,,:ccloo';lolcoxxxxxddodxdddolc;...    .  
;;;:,'.',,.  . .....  .. ...''....',;;::clll:.' ,c,;:odddddddxxddoool;.... .... 
;:c;..  ..     .........;;:::ccccclllllooool.   ...;;oddddxxxddddodoocl:,...... 
c:;,.   .........'....';:ccclollllllooododoo'   ..','ddddddddxxxddddoooc'...    
ccc;,,;;:cc;,',:;'',;'',::lloodooooooooddddxdol.  .',ddxxxxxxxxxdxxddol:,'....  
::c:cc:c:c:cc;;;,'';:,',cloooooododddddxxxddddo,  ..,odddxxxkxxkxxxxxdoc'....   
c:cccc;:;:;,,;;;;;c:::clllooodddddddxxxkkxkkxdd: .;:ccldddxxkkkxxxkkkdol:'..  . 
c::cc::cc;;'...',:coolloolodddddddddxkkkxxkkxxdc.;cllooddddxxxkkkkkkkxooc,......
:::llc:cc;,:;,;'.cclloddolodddddoddxxxkkxxkkxdddolllloddxddxxxkxxxxxxxdol:'.....
jp2a-1.1.1/tests/grind-flipxy-x.html000066400000000000000000004444311414624405500172760ustar00rootroot00000000000000 jp2a converted image
:::llc:cc;,:;,;'.cclloddolodddddoddxxxkkxxkkxdddolllloddxddxxxkxxxxxxxdol:'.....
c::cc::cc;;'...',:coolloolodddddddddxkkkxxkkxxdc.;cllooddddxxxkkkkkkkxooc,......
c:cccc;:;:;,,;;;;;c:::clllooodddddddxxxkkxkkxdd: .;:ccldddxxkkkxxxkkkdol:'..  . 
::c:cc:c:c:cc;;;,'';:,',cloooooododddddxxxddddo,  ..,odddxxxkxxkxxxxxdoc'....   
ccc;,,;;:cc;,',:;'',;'',::lloodooooooooddddxdol.  .',ddxxxxxxxxxdxxddol:,'....  
c:;,.   .........'....';:ccclollllllooododoo'   ..','ddddddddxxxddddoooc'...    
;:c;..  ..     .........;;:::ccccclllllooool.   ...;;oddddxxxddddodoocl:,...... 
;;;:,'.',,.  . .....  .. ...''....',;;::clll:.' ,c,;:odddddddxxddoool;.... .... 
;;;;;;;;:,' ........   ..           ',,,:ccloo';lolcoxxxxxddodxdddolc;...    .  
;,,;;;::c:;...... ......  . .      ..,;,,:odxkdxxxkkkOOOkkxxxddxxxdol:,...      
;,''',,,,,;,''...  .....  . .',,'...;c:,.:dxkkOk:l000OkOxx0K0OO00Oxc'...        
 ..  ...........    .........;cc'.',;::'.';;:clc';dxkc;x..kKO'xO:cdc....      . 
....      ...''...     ...'..;;:..',:;c'.'',,,,,,,,,,,,',,,;;.;:..;;....     .. 
.. .. . . .'.,;'..  .  .......'' ',,;;c'.,,..lkd';kxxc;l''::;''.........     .. 
..... ... ....;'.....''....   .  ,,',,:'.cd:..ld,:XXXd:K'.0K0'od,.,'.    .. ..  
 ..   ..'. ...''..',',,'..       ''''.'..,c:....';kO0o;0..O0O'cl,.'.   .... ... 
  .  ..,:;'...,'..,;:;;,........ ...''...'',;;;;::;,,,,;'';:;.....   ... .. .'. 
 .. .'''';''..;..cl;;;c:'..,:;;; ''.'....';:,:c;,,,''''.....:''............ ... 
..,.'.':,.'',;'.,c;;l:c:,,;:ll,...'''.',.':x.l0k'...',,x..lok,....;:'';;... ... 
';c:::cllod;cc:;:cddddoolo,do.','.'',cc;',,;';c:''',..,k..Od'..,'.::'';;... ... 
ccclllccccccclllcldddddxxddOkdddl,;::ll:,;,,,,,,;;,,;;cl:l:::.''..;,..''... ... 
::ccllllc::;:clllcooodoxxxdloxkxd:,,:oo,';::;cxd'',xOo:l,;,::'','.'............ 
cc:cccccll:cc::cloooooddddxddodoolccldo:;::,'ckkc:,XW0;0..dOo:;c;.;,''c;.....'' 
:;;:lccccllolllooooooloddoooooddddcocddddoc:,:cOX0'XW0;XOkKOc;;c:'ll;;ol'.''..',
cclcllloolloddxxdoodddodxdxddxkkkxlxdddoddoolclOKO'KN0;XNN0o:;;c;'oo;;ccll;'....
llllollloooooooddxxddddxxxOkkkkkkklxkkxoxxdolc:cxO0XXKOXXKd:;:c:;;:l:clc::l,.. '
llcloodddooodddddodddxxdxdxkkkkkOkokkkkdkxxxocccookKXXXXXKoc:ccc:;:cclolccc:...'
lllooddollodxxxkkxxxxkxxddkkkOkkOxlxkkkxkkkxxxdllclx0KXXXXOoclllccllc;;,;;;:,'..
lllooooxdxddxdxxxdddxkkkkkkxxkkxxloxddxxxdxxxxxxddollcoddoodooolc:.,''''.. .'...
ooooooddddddodddddxxxkkkxxkkkxxxxoxkxxkkkkkdxxxxxkxxxxxxdxkOkkxl,;'.',''........
ddxxxxddddxxxxxkkkkkkkkOkkkxkkkkxoxkkkkkkkkxkkxkxxxdddddllcodddolodol;,:,...... 
xxxxkkkxxxxxxxxxxkkO0OOOOOOkOkOkklkxxxxxxdddoooooooooolc:;:dxxdddxxxd::;:...'...
xkkkOOOO0OO0OOO0OOO000O0Okkxxxxddoxxdxxdooddoolc:ldxdddcccoxxxxxxkkOOdc,:' ,;';'
kkkkO000K000KOO0KKKXKK000Oxkkxdxdokkxxdllclloll::lxxoooddxkxxkxkkkOOOx:,,, ';...
xkkxOOOOO00xddxkO000000OOxddxxddddkkkxoccclloolc:ckkdxkxkOOOO0OOOxxxxd''.'..'...
dxxxkkOOO0OOxxxxOKKKKK00OxxkOkxxkOOOOkolllldkxolldOOkkOkOO00000Okxcc::',.. ..'''
xkkOOOO00K0OOOkkKXXXNXXKK00000kkO0OOOOOkxxkOOkxxO0KK0KKO000K00Oo:;;'',.... .....
OO000KKKKXXXKKKXNNNNNNNXXXXKKK0000000O00O00000KKXXXKKKKKKK00OOko:;;,,'..........
WWWWNNNNNNNNNNWWWWWWWNNNNNXXKXKKKKKKK00000KKKKKKXXXXXXKKK0000dxl;,;cd;..'.... .'
MMMMMMMMMMMMMWMMMMMMWWWWWWNNNXXXXXXXXKXKKXKXXXXNXXXXXXXKKKOdocc:;ldc;.,,d'... ..
MMMMMMMMMMMMMMMMMMMMMMMMWWWWWWNNNNNNXXXNNNXNNWNNNXXXXXXXXXX0ddololo;,;o';'......
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWNNNNNNNNNNNNWWWWWNkc:;,,,:.;'..... 
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWMMMMMMN0oc;,,'..',..... 
MMMNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMWWMMMMMMMMMMMMMMWXOo:,'...,,.. . .
MMWXNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNko;,''.... .. ..
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMN0c;;,;'.'. .....
WNKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOdc:;,,'.......::
MMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXdolc;,,,''.....,
WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWkdxlll:;,;,.....
WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKXxkd::';,'..,'
jp2a-1.1.1/tests/grind-flipxy.html000066400000000000000000004440621414624405500170310ustar00rootroot00000000000000 jp2a converted image
:::llc:cc;,:;,;'.cclloddolodddddoddxxxkkxxkkxdddolllloddxddxxxkxxxxxxxdol:'.....
c::cc::cc;;'...',:coolloolodddddddddxkkkxxkkxxdc.;cllooddddxxxkkkkkkkxooc,......
c:cccc;:;:;,,;;;;;c:::clllooodddddddxxxkkxkkxdd: .;:ccldddxxkkkxxxkkkdol:'..  . 
::c:cc:c:c:cc;;;,'';:,',cloooooododddddxxxddddo,  ..,odddxxxkxxkxxxxxdoc'....   
ccc;,,;;:cc;,',:;'',;'',::lloodooooooooddddxdol.  .',ddxxxxxxxxxdxxddol:,'....  
c:;,.   .........'....';:ccclollllllooododoo'   ..','ddddddddxxxddddoooc'...    
;:c;..  ..     .........;;:::ccccclllllooool.   ...;;oddddxxxddddodoocl:,...... 
;;;:,'.',,.  . .....  .. ...''....',;;::clll:.' ,c,;:odddddddxxddoool;.... .... 
;;;;;;;;:,' ........   ..           ',,,:ccloo';lolcoxxxxxddodxdddolc;...    .  
;,,;;;::c:;...... ......  . .      ..,;,,:odxkdxxxkkkOOOkkxxxddxxxdol:,...      
;,''',,,,,;,''...  .....  . .',,'...;c:,.:dxkkOk:l000OkOxx0K0OO00Oxc'...        
 ..  ...........    .........;cc'.',;::'.';;:clc';dxkc;x..kKO'xO:cdc....      . 
....      ...''...     ...'..;;:..',:;c'.'',,,,,,,,,,,,',,,;;.;:..;;....     .. 
.. .. . . .'.,;'..  .  .......'' ',,;;c'.,,..lkd';kxxc;l''::;''.........     .. 
..... ... ....;'.....''....   .  ,,',,:'.cd:..ld,:XXXd:K'.0K0'od,.,'.    .. ..  
 ..   ..'. ...''..',',,'..       ''''.'..,c:....';kO0o;0..O0O'cl,.'.   .... ... 
  .  ..,:;'...,'..,;:;;,........ ...''...'',;;;;::;,,,,;'';:;.....   ... .. .'. 
 .. .'''';''..;..cl;;;c:'..,:;;; ''.'....';:,:c;,,,''''.....:''............ ... 
..,.'.':,.'',;'.,c;;l:c:,,;:ll,...'''.',.':x.l0k'...',,x..lok,....;:'';;... ... 
';c:::cllod;cc:;:cddddoolo,do.','.'',cc;',,;';c:''',..,k..Od'..,'.::'';;... ... 
ccclllccccccclllcldddddxxddOkdddl,;::ll:,;,,,,,,;;,,;;cl:l:::.''..;,..''... ... 
::ccllllc::;:clllcooodoxxxdloxkxd:,,:oo,';::;cxd'',xOo:l,;,::'','.'............ 
cc:cccccll:cc::cloooooddddxddodoolccldo:;::,'ckkc:,XW0;0..dOo:;c;.;,''c;.....'' 
:;;:lccccllolllooooooloddoooooddddcocddddoc:,:cOX0'XW0;XOkKOc;;c:'ll;;ol'.''..',
cclcllloolloddxxdoodddodxdxddxkkkxlxdddoddoolclOKO'KN0;XNN0o:;;c;'oo;;ccll;'....
llllollloooooooddxxddddxxxOkkkkkkklxkkxoxxdolc:cxO0XXKOXXKd:;:c:;;:l:clc::l,.. '
llcloodddooodddddodddxxdxdxkkkkkOkokkkkdkxxxocccookKXXXXXKoc:ccc:;:cclolccc:...'
lllooddollodxxxkkxxxxkxxddkkkOkkOxlxkkkxkkkxxxdllclx0KXXXXOoclllccllc;;,;;;:,'..
lllooooxdxddxdxxxdddxkkkkkkxxkkxxloxddxxxdxxxxxxddollcoddoodooolc:.,''''.. .'...
ooooooddddddodddddxxxkkkxxkkkxxxxoxkxxkkkkkdxxxxxkxxxxxxdxkOkkxl,;'.',''........
ddxxxxddddxxxxxkkkkkkkkOkkkxkkkkxoxkkkkkkkkxkkxkxxxdddddllcodddolodol;,:,...... 
xxxxkkkxxxxxxxxxxkkO0OOOOOOkOkOkklkxxxxxxdddoooooooooolc:;:dxxdddxxxd::;:...'...
xkkkOOOO0OO0OOO0OOO000O0Okkxxxxddoxxdxxdooddoolc:ldxdddcccoxxxxxxkkOOdc,:' ,;';'
kkkkO000K000KOO0KKKXKK000Oxkkxdxdokkxxdllclloll::lxxoooddxkxxkxkkkOOOx:,,, ';...
xkkxOOOOO00xddxkO000000OOxddxxddddkkkxoccclloolc:ckkdxkxkOOOO0OOOxxxxd''.'..'...
dxxxkkOOO0OOxxxxOKKKKK00OxxkOkxxkOOOOkolllldkxolldOOkkOkOO00000Okxcc::',.. ..'''
xkkOOOO00K0OOOkkKXXXNXXKK00000kkO0OOOOOkxxkOOkxxO0KK0KKO000K00Oo:;;'',.... .....
OO000KKKKXXXKKKXNNNNNNNXXXXKKK0000000O00O00000KKXXXKKKKKKK00OOko:;;,,'..........
WWWWNNNNNNNNNNWWWWWWWNNNNNXXKXKKKKKKK00000KKKKKKXXXXXXKKK0000dxl;,;cd;..'.... .'
MMMMMMMMMMMMMWMMMMMMWWWWWWNNNXXXXXXXXKXKKXKXXXXNXXXXXXXKKKOdocc:;ldc;.,,d'... ..
MMMMMMMMMMMMMMMMMMMMMMMMWWWWWWNNNNNNXXXNNNXNNWNNNXXXXXXXXXX0ddololo;,;o';'......
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWNNNNNNNNNNNNWWWWWNkc:;,,,:.;'..... 
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWMMMMMMN0oc;,,'..',..... 
MMMNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMWWMMMMMMMMMMMMMMWXOo:,'...,,.. . .
MMWXNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNko;,''.... .. ..
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMN0c;;,;'.'. .....
WNKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOdc:;,,'.......::
MMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXdolc;,,,''.....,
WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWkdxlll:;,;,.....
WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKXxkd::';,'..,'
jp2a-1.1.1/tests/grind-flipy-x.html000066400000000000000000004444311414624405500171060ustar00rootroot00000000000000 jp2a converted image
.....':lodxxxxxxxkxxxddxddollllodddxkkxxkkxxxddodddddoloddollcc.';,;:,;cc:cll:::
......,cooxkkkkkkkxxxddddoollc;.cdxxkkxxkkkxdddddddddoloollooc:,'...';;cc::cc::c
 .  ..':lodkkkxxxkkkxxdddlcc:;. :ddxkkxkkxxxdddddddooolllc:::c;;;;;,,;:;:;cccc:c
   ....'codxxxxxkxxkxxxdddo,..  ,oddddxxxdddddodoooooolc,',:;'',;;;cc:c:c:cc:c::
  ....',:loddxxdxxxxxxxxxdd,'.  .lodxddddoooooooodooll::,'';,'';:,',;cc:;;,,;ccc
    ...'coooddddxxxdddddddd','..   'oododooollllllolccc:;'....'.........   .,;:c
 ......,:lcoododdddxxxddddo;;...   .loooolllllccccc:::;;.........     ..  ..;c:;
 .... ....;loooddxxdddddddo:;,c, '.:lllc::;;,'....''... ..  ..... .  .,,'.',:;;;
  .    ...;clodddxdoddxxxxxoclol;'oolcc:,,,'           ..   ........ ',:;;;;;;;;
      ...,:lodxxxddxxxkkOOOkkkxxxdkxdo:,,;,..      . .  ...... ......;:c::;;;,,;
        ...'cxO00OO0K0xxOkO000l:kOkkxd:.,:c;...',,'. .  .....  ...'',;,,,,,''',;
 .      ....cdc:Ox'OKk..x;ckxd;'clc:;;'.'::;,'.'cc;.........    ...........  .. 
 ..     ....;;..:;.;;,,,',,,,,,,,,,,,''.'c;:,'..:;;..'...     ...''...      ....
 ..     .........'';::''l;cxxk;'dkl..,,.'c;;,,' ''.......  .  ..';,.'. . . .. ..
  .. ..    .',.,do'0K0.'K:dXXX:,dl..:dc.':,,',,  .   ....''.....';.... ... .....
 ... ....   .'.,lc'O0O..0;o0Ok;'....:c,..'.''''       ..',,','..''... .'..   .. 
 .'. .. ...   .....;:;'';,,,,;::;;;;,''...''... ........,;;:;,..',...';:,..  .  
 ... ............'':.....'''',,,;c:,:;'....'.'' ;;;:,..':c;;;lc..;..'';''''. .. 
 ... ...;;'':;....,kol..x,,'...'k0l.x:'.,'.'''...,ll:;,,:c:l;;c,.';,''.,:'.'.,..
 ... ...;;''::.',..'dO..k,..,''':c;';,,';cc,''.','.od,olooddddc:;:cc;dollc:::c;'
 ... ...''..,;..''.:::l:lc;;,,;;,,,,,,;,:ll::;,ldddkOddxxdddddlclllccccccclllccc
 ............'.',''::,;,l:oOx,''dxc;::;',oo:,,:dxkxoldxxxodoooclllc:;::cllllcc::
 ''.....;c'',;.;c;:oOd..0;0WX,:ckkc',::;:odlccloododdxddddooooolc::cc:llccccc:cc
,'..''.'lo;;ll':c;;cOKkOX;0WX'0XOc:,:coddddcocddddoooooddoloooooolllollccccl:;;:
....';llcc;;oo';c;;:o0NNX;0NK'OKOlclooddodddxlxkkkxddxdxdodddoodxxddolloolllclcc
' ..,l::clc:l:;;:c:;:dKXXOKXX0Oxc:clodxxoxkkxlkkkkkkkOxxxddddxxddooooooolllollll
'...:ccclolcc:;:ccc:coKXXXXXKkoocccoxxxkdkkkkokOkkkkkxdxdxxdddodddddooodddoolcll
..',:;;;,;;cllcclllcoOXXXXK0xlclldxxxkkkxkkkxlxOkkOkkkddxxkxxxxkkxxxdolloddoolll
...'. ..'''',.:clooodooddoclloddxxxxxxdxxxddxolxxkkxxkkkkkkxdddxxxdxddxdxoooolll
........'','.';,lxkkOkxdxxxxxxkxxxxxdkkkkkxxkxoxxxxkkkxxkkkxxxdddddoddddddoooooo
 ......,:,;lodolodddoclldddddxxxkxkkxkkkkkkkkxoxkkkkxkkkOkkkkkkkkxxxxxddddxxxxdd
...'...:;::dxxxdddxxd:;:cloooooooooodddxxxxxxklkkOkOkOOOOOO0Okkxxxxxxxxxxkkkxxxx
';';, ':,cdOOkkxxxxxxocccdddxdl:clooddoodxxdxxoddxxxxkkO0O000OOO0OOO0OO0OOOOkkkx
...;' ,,,:xOOOkkkxkxxkxddoooxxl::llollclldxxkkodxdxkkxO000KKXKKK0OOK000K000Okkkk
...'..'.''dxxxxOOO0OOOOkxkxdkkc:cloollcccoxkkkddddxxddxOO000000Okxddx00OOOOOxkkx
'''.. ..,'::ccxkO00000OOkOkkOOdlloxkdllllokOOOOkxxkOkxxO00KKKKKOxxxxOO0OOOkkxxxd
..... ....,'';;:oO00K000OKK0KK0OxxkOOkxxkOOOOO0Okk00000KKXXNXXXKkkOOO0K00OOOOkkx
..........',,;;:okOO00KKKKKKKXXXKK00000O00O0000000KKKXXXXNNNNNNNXKKKXXXKKKK000OO
'. ....'..;dc;,;lxd0000KKKXXXXXXKKKKKK00000KKKKKKKXKXXNNNNNWWWWWWWNNNNNNNNNNWWWW
.. ...'d,,.;cdl;:ccodOKKKXXXXXXXNXXXXKXKKXKXXXXXXXXNNNWWWWWWMMMMMMWMMMMMMMMMMMMM
......';'o;,;ololodd0XXXXXXXXXXNNNWNNXNNNXXXNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
 .....';.:,,,;:ckNWWWWWNNNNNNNNNNNNWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 .....,'..',,;co0NMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
. . ..,,...',:oOXWMMMMMMMMMMMMMMWWMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNNMMM
.. .. ....'',;okNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXWMM
..... .'.';,;;c0NMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
::.......',,;:cdONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKNW
,.....'',,,;clodXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMM
.....,;,;:lllxdkWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWW
',..',;'::dkxXKKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
jp2a-1.1.1/tests/grind-flipy.html000066400000000000000000004440621414624405500166410ustar00rootroot00000000000000 jp2a converted image
.....':lodxxxxxxxkxxxddxddollllodddxkkxxkkxxxddodddddoloddollcc.';,;:,;cc:cll:::
......,cooxkkkkkkkxxxddddoollc;.cdxxkkxxkkkxdddddddddoloollooc:,'...';;cc::cc::c
 .  ..':lodkkkxxxkkkxxdddlcc:;. :ddxkkxkkxxxdddddddooolllc:::c;;;;;,,;:;:;cccc:c
   ....'codxxxxxkxxkxxxdddo,..  ,oddddxxxdddddodoooooolc,',:;'',;;;cc:c:c:cc:c::
  ....',:loddxxdxxxxxxxxxdd,'.  .lodxddddoooooooodooll::,'';,'';:,',;cc:;;,,;ccc
    ...'coooddddxxxdddddddd','..   'oododooollllllolccc:;'....'.........   .,;:c
 ......,:lcoododdddxxxddddo;;...   .loooolllllccccc:::;;.........     ..  ..;c:;
 .... ....;loooddxxdddddddo:;,c, '.:lllc::;;,'....''... ..  ..... .  .,,'.',:;;;
  .    ...;clodddxdoddxxxxxoclol;'oolcc:,,,'           ..   ........ ',:;;;;;;;;
      ...,:lodxxxddxxxkkOOOkkkxxxdkxdo:,,;,..      . .  ...... ......;:c::;;;,,;
        ...'cxO00OO0K0xxOkO000l:kOkkxd:.,:c;...',,'. .  .....  ...'',;,,,,,''',;
 .      ....cdc:Ox'OKk..x;ckxd;'clc:;;'.'::;,'.'cc;.........    ...........  .. 
 ..     ....;;..:;.;;,,,',,,,,,,,,,,,''.'c;:,'..:;;..'...     ...''...      ....
 ..     .........'';::''l;cxxk;'dkl..,,.'c;;,,' ''.......  .  ..';,.'. . . .. ..
  .. ..    .',.,do'0K0.'K:dXXX:,dl..:dc.':,,',,  .   ....''.....';.... ... .....
 ... ....   .'.,lc'O0O..0;o0Ok;'....:c,..'.''''       ..',,','..''... .'..   .. 
 .'. .. ...   .....;:;'';,,,,;::;;;;,''...''... ........,;;:;,..',...';:,..  .  
 ... ............'':.....'''',,,;c:,:;'....'.'' ;;;:,..':c;;;lc..;..'';''''. .. 
 ... ...;;'':;....,kol..x,,'...'k0l.x:'.,'.'''...,ll:;,,:c:l;;c,.';,''.,:'.'.,..
 ... ...;;''::.',..'dO..k,..,''':c;';,,';cc,''.','.od,olooddddc:;:cc;dollc:::c;'
 ... ...''..,;..''.:::l:lc;;,,;;,,,,,,;,:ll::;,ldddkOddxxdddddlclllccccccclllccc
 ............'.',''::,;,l:oOx,''dxc;::;',oo:,,:dxkxoldxxxodoooclllc:;::cllllcc::
 ''.....;c'',;.;c;:oOd..0;0WX,:ckkc',::;:odlccloododdxddddooooolc::cc:llccccc:cc
,'..''.'lo;;ll':c;;cOKkOX;0WX'0XOc:,:coddddcocddddoooooddoloooooolllollccccl:;;:
....';llcc;;oo';c;;:o0NNX;0NK'OKOlclooddodddxlxkkkxddxdxdodddoodxxddolloolllclcc
' ..,l::clc:l:;;:c:;:dKXXOKXX0Oxc:clodxxoxkkxlkkkkkkkOxxxddddxxddooooooolllollll
'...:ccclolcc:;:ccc:coKXXXXXKkoocccoxxxkdkkkkokOkkkkkxdxdxxdddodddddooodddoolcll
..',:;;;,;;cllcclllcoOXXXXK0xlclldxxxkkkxkkkxlxOkkOkkkddxxkxxxxkkxxxdolloddoolll
...'. ..'''',.:clooodooddoclloddxxxxxxdxxxddxolxxkkxxkkkkkkxdddxxxdxddxdxoooolll
........'','.';,lxkkOkxdxxxxxxkxxxxxdkkkkkxxkxoxxxxkkkxxkkkxxxdddddoddddddoooooo
 ......,:,;lodolodddoclldddddxxxkxkkxkkkkkkkkxoxkkkkxkkkOkkkkkkkkxxxxxddddxxxxdd
...'...:;::dxxxdddxxd:;:cloooooooooodddxxxxxxklkkOkOkOOOOOO0Okkxxxxxxxxxxkkkxxxx
';';, ':,cdOOkkxxxxxxocccdddxdl:clooddoodxxdxxoddxxxxkkO0O000OOO0OOO0OO0OOOOkkkx
...;' ,,,:xOOOkkkxkxxkxddoooxxl::llollclldxxkkodxdxkkxO000KKXKKK0OOK000K000Okkkk
...'..'.''dxxxxOOO0OOOOkxkxdkkc:cloollcccoxkkkddddxxddxOO000000Okxddx00OOOOOxkkx
'''.. ..,'::ccxkO00000OOkOkkOOdlloxkdllllokOOOOkxxkOkxxO00KKKKKOxxxxOO0OOOkkxxxd
..... ....,'';;:oO00K000OKK0KK0OxxkOOkxxkOOOOO0Okk00000KKXXNXXXKkkOOO0K00OOOOkkx
..........',,;;:okOO00KKKKKKKXXXKK00000O00O0000000KKKXXXXNNNNNNNXKKKXXXKKKK000OO
'. ....'..;dc;,;lxd0000KKKXXXXXXKKKKKK00000KKKKKKKXKXXNNNNNWWWWWWWNNNNNNNNNNWWWW
.. ...'d,,.;cdl;:ccodOKKKXXXXXXXNXXXXKXKKXKXXXXXXXXNNNWWWWWWMMMMMMWMMMMMMMMMMMMM
......';'o;,;ololodd0XXXXXXXXXXNNNWNNXNNNXXXNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
 .....';.:,,,;:ckNWWWWWNNNNNNNNNNNNWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 .....,'..',,;co0NMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
. . ..,,...',:oOXWMMMMMMMMMMMMMMWWMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNNMMM
.. .. ....'',;okNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXWMM
..... .'.';,;;c0NMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
::.......',,;:cdONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKNW
,.....'',,,;clodXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMM
.....,;,;:lllxdkWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWW
',..',;'::dkxXKKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
jp2a-1.1.1/tests/grind-green.txt000066400000000000000000000045761414624405500164730ustar00rootroot00000000000000OkO0Okxkdo:;:... k0KK0Oxkkxdolcc; xkKKKXKO0Oxxddo,. . XXXXXXK000kkxdc'. NXKKKKxkO0kkxdl;. KK00KXkxOlxkxool;.... OKXK0XOlkxOolcldoll:,........... ................... 0KKXKX0000kdxxxoc,'....................................... ................ OOO0KN00k0dxdoc:,.......'..'..,;::,,,:c:;;'''''';,''',,........';;;;,'.'''',,,;: K00kOXOOkk:,,,,'''''''',;;;:,,looccclloolc,,,,::;:;;;:;''.......,;;;,...'''',,,, 0kOxkNOdxo:''',,,;,,,:lll:::;:cooccc::cc:;;;;;l::;;,,,''.''..'''.''...'.'''',,,, XK00KX0ddxd:;;;:::;:cdoll::::::;;:;;;;;,,,,,,'c,'''',''''''''',,,,,,,,,,;,,,,,;; KKK00XK0kkkkkOddl:;;;:::::c::;,;;;,;;',''',,';c,'''',,,'''',,,;,,,,;;;;;;;;::::: 00OOxxxxxddoclolcccc:'.....';clcc:;;,',',.'''c,..'.''';,,,',,,,',,,,;;:c:;;::cc: OXKXkoddolodloddllloo:.......',:lllc:;;;:,'',c,''''''',,,,,,,,;,;;;;;;:;:::::::: OKXKOkddolxxlcOdlddo;.. .x' .O'.,llolc:;:;;:,l'''',;;;;,,;:;;;;;,;;;;:c:::cclcll NOOXK0KKxoOOkx0klxdc,:0k.x. .Ool,;oOxoodoc;loo::;;::::::;:::::;:cllcclccccc:lool N00XNO0XOk00kk00k00xdddxooolokkkooxkxxkOxccdxkxl:::;;c;;;::;;:ccclllollccc::ccld WK0XNOOXxokOod0O0K0o:;NK,O00O00Oc:o0ldOOxdxOKO0K0kkllkodoolcoooxOkdxkoddoxkxxdO0 NK0XNKKX00KK00K0KOOx000OOOOOOkkkdodkdxOKKK0O0OOXkkxxO0KOxdxdxddOOk00OOkkk00KNKXN WK0XNXKNKKNNK0KOdx0:;:K0:ko:::xkOOOOddk00OOO0OONNNNXXXK0OkkkkOK0OO00XX0kOXNNNXNN WN0XNNXNNXXKOk0OddOc::0O,xl'..dO::xKkox0OokxkkOWXKXXX0K00KKKXXXKkdO00KNKXXNXXNXX WXXNWNNWKOK0dd00od0olo0OdkxdddkkxxkOOO00OdxxkOKKddk00O0KXNNXNNKK0kO0KXNNWNNNNKXX WNNWNXXXK00kl;,,',:'.'lc':;...ox;,;;clx0kddx00K0kkOKXKXXKKKKKXXXOOkOkxkkOOO000kO NNNNXXXK0Odolc::::c:::;;;;;:c:ccld::cldxkkkOXNNWWNNXXXXXKKKKKKXK00OKKxxddxxxkkkk XKKKKKK0OOdlccc:::;::::::ccdkOxONKKxllllodddxkkOOkkkOOKKKKXXK000KNXXNKOk000kxddx XXXXKK0kollc::::::::::::c::kk0KXNXXOcccccccclcllllllooodxOO0K0OO0KKKK0KKXXXKkddo XXKK00Okdlc:;;;;;;;;;;;:::ck00NWOcc:::::::cc:cccc:ccccooxkkdxkkxxxxddooddddddodd KKKKK0Odlc:;,,;;;,;;;;::cclodd0Wd::;,;;;,;;;::::::cccclclloooodxxxkkkxddoxdooddo K00KK0xlcc;;;;;;;,;;:::;ccclloodl::;,,;;;,;;;::c:::::ccc::clllokkkOkdxxoooollddd jp2a-1.1.1/tests/grind-nobold-x.html000066400000000000000000002454741414624405500172460ustar00rootroot00000000000000 jp2a converted image
'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
'....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM
,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW
.......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM
 .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
'. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM
..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO
''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd
...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk
..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx
.......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd
...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll
....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll
....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll
.'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c
 .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:
 ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,
 ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..
 ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .  
  .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....
 ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....
        ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.
      ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;
 ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;
    ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c
  .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc:
......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c
......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll:::
jp2a-1.1.1/tests/grind-nobold.html000066400000000000000000002451521414624405500167720ustar00rootroot00000000000000 jp2a converted image
'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW
'....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM
,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW
.......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM
 .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM
'. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM
..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO
''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd
...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk
..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx
.......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd
...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll
....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll
....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll
.'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c
 .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:
 ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,
 ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..
 ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .  
  .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....
 ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....
        ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.
      ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;
 ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;
    ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c
  .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc:
......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c
......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll:::
jp2a-1.1.1/tests/grind-red.txt000066400000000000000000000045761414624405500161450ustar00rootroot00000000000000OO000kxOdo;;:... kKXXX0kOOkxdolc; xkKXXXK0K0kkxxo,. NNNNXNK0KKOOkxc' NNXXXKxk00Okkxl;. NNXKKXkdOlxkkooc;'.............. 0XNXKXOcOkOoc:lxoolc;'........................... 0XXNNNKK0KOxxkkxl;;'''................''..'.......... ...... kO0KXN0KO0kkxxoc;'''.''',.''.',:cc;,;:cc:;,''''',,....... ...........'',,;: 000k0XO0Ok:;;;:,,;,,,'';;;::;;oddllloooooc;,,,::;:;,,;'... ......''.........'',, kkOdxNkdkdc,,,;:::::;coooccc:clddllccclc:;;;;,:;;,,'''......................'''' KKOO0KOddkdc;:cccc:clxdolc:::::;;:;;;;;,,,,,,,c,'''','........',,,,,,;;;;;,,,,;; K0KOkXK0kOOkkkddl:;;;:::;:c::;',,,,;;,,,,;;;,:c;,,,,,,,,,,,,;::::;;:::;::cccc::c 0OOkoddddoxdloooooooc' ...,clcc:;,,',',',;,c;'''',,;:;;,,;;;;,,;;;::cc:::ccllc OKKXdlodlclolxkxdddxx: . .';odoc;;,,:,,',c,,,'',,';;;;;:::c::ccclllcllllloll kKXKkxoolcxxc:Odoxdo,. x. .k..'odolc:;:;;:;l;,,,;::;:;:ccccccc::ccclollodododo XOOX00XXdokkdd0xoxdl';kd.x. .klc';oOkdool::lodlcc:cc:;;;::ccclllodddoollodoldxdo N00XN0KX0O00kk00kO0xdddxloolokxklldxxxxkd:cdxkxc;;;;,:;',:;;;;olllldxddooollooox WK0KNO0XxxOOxx0O0K0l;,XO'kOOO0OO:;o0lxOOxdxkdk0K0kxclkodllc:ooodOkddklddoxkkkxO0 NK0KNKKX00KK00K0KOOdOOOOOOkkOkkkdodkdxOK0KOOOOOXkkxdO0KOdoxdxddOOk00OOxkO00KNKXN WK0XNX0XKXNNXKKkddO;,;0k,xl;;;dkOOOOddk0000O0O0NNNNXXNK0kxkkkOK0OO00XX0kOXNNWXNN WN0XWNNNNNXK0OKOooO:,;Ox.d:...dk,,xKkld0koxxkkOWXKXXXKK00K0KXXXKOxO00KWKXXNXXNXX MXXWWWWWKKX0xoOOlo0lclOOoxxoodxkxdxkOOO0koxxkOKXdxk0K0KXNNNNNNXNXK0KKXNNWXNNNXXX MNWMWWWNXXKOo,....;...:;.,'...ld'.'';:d0kddkKXN0kk0XNNNNWNXXXNNNKX0K0OOOOOOO0Oxk WWWWWWWNX0dlcc:;;;::;;,,,,,;;;::co;;:ldkkkk0NWWWWWWNWWWWNNNNNXNXXNXNNkxoddddxxxx WNXXNNNX0Odcc::::;;::::::::odxdkN00xlllloddxkOO00OOO0KXXNNWWWNKKXWNWWN0OKK0kdddd WWWWNNKOocc:::::;;;;;;;:::;kkO0KXXXkc::c:ccclcllllllooddk0XXNXK0KXXXXKXXNNNKkddo WWNNXKKOdc:;;,,;,,,,;,,;;::kO0NWOc:;;;;;;:::::::c::cclodO0OxkO0kxkkxdddddxxxxodo NNNNNX0dc:;,'',,,',,,;:::cloodOWo;;,',;,',,;;;::::::cclclodooodkOkOOOxxdoxddddxd NXXXNKdlc:,,,,,,,,,;;;:;::clllodc;;,'',,,',;;::::::::ccc::ccclokOkOOxxxoodoooddd jp2a-1.1.1/tests/grind-truecolor-fill.txt000066400000000000000000002565631414624405500203420ustar00rootroot00000000000000'''..,,,;lxoxXOXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW '....',',;;:cookWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWM ,'.......,;;;;lOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWW .......'..'',:o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWMM  .....;,..,,,:lxXMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ......,;'c',:lclxkO0XXXXXXXXXNNNNNNNNNNNNNNNNNNNWWWWWWMMMMMMMMMMMMMMMMMMMMMMMM '. ...':.',lcc;;lldkO0KKKXXXXXXXXXXXKKKKKKKKKXXXXXXNNNWWWWWMMMMWWWWWWWWWWWMMMM ..........,',,,cxO0000000KKKKKK0O000OOkOO00O000O0KKKKKXXXNNNNXK0000KXKK0000OOO ''......''c:clxkO0000OOkOOkOOxllldxdollodkOOOkkdxkkxxk00KKKKK0xdxxkO0OOOkkxxxd ...,..;.::kkOOkkkkkkkkxdddoxxo::cllolccldxkkkoxxdxkxkO000KKKKK0OkOO0000O0Okkkk ..','.,;:;dkkkxxxxxxoc:cldoddollooodddddxddxklxxkkkkOOOOOOOOkkkkkkkkkkkkkkkkxx .......,;';ccllcoxxdoloodxdxxxxxxxxxkkkkkkkkdoxkxxxxkkkkkkkkkxxxxxxddddddddddd ...''...''',,,:cloooxxxxxdooldddxxkxkxxxxxxxldxxkxxxxxkkkxxxdxxxxxdddoddooooll ....:cccclccc::ccccclOXXXXXKkoolllodxxkdkkkkokkkOOkkxdxxxxdxdxxddddolloddollll ....,ccccl,:lc,::;::o0XNOxNNxk0xlccoodddxxxdlkkkkxxxkxxxddddddddddooloolllllll .'.....,oo':c:.::,cdKko0xlWWco0Odc;;:looddllcddddddddddoooooooolllllclcccl:::c  .' ........''.',':ll;':llOk:''lxl,;;;';ol:;;cdxkxoodxxdooodlclccc:;:cllclccc:  ... '..;;.':,.'..'lkc.cl,'',',:c:';;,':c:,,,';;;:xocoolododl:::cc;llccc::cc:,  ... ...''.','....lc;'.,;',''''cdo.cc'....'''..';c:,.';c::;;c;.',''''',''..'..  ... ...... ...',';ll;.;:,ccc:,,,,,,,'...''.'. ........,;;;;'..,....';,..  .     .. ...  ..''.;d,l0Kc.ox,KXXl,cl'.;ol.,;,,',.     ......'....',.... ...  ....  ..     ....,,..;''::,';;,ccc;,:lc''''.,:;;,'..;,,......     ..,,...      ....         ...,lxdxOdxKKd:dxlOOOl,lxddol:.,::,...,;;'..........  ....''''......'.       ...,cloddxxddxxxkkkkkxxdddcdddoc;,;,.            ............';::;;;;,,;  ........':loooddxddddddddl;,::...;llll:::;,'...''......   .... .. ..,'..,;::;     ...;coodddddddddxdddodc''..   .cooooololllllllccc:;,..............   .,::c   .....,coddxxxxxxxxxxxxdol.'. .lodddddddoddoooodooolc:'';;,',;;,;;:c::;;;:cc: ......'codxkkkkkkkxxxdddolcc:, ,ddxkkxxkkxxddddddoooooolcccc:,,,,,,;::c;:c:::c ......:oodxkkkkxkxxxxdddooollc:ldxxkkkxxkxxxddoddddoooodololl;','';;;clccll::: jp2a-1.1.1/tests/grind.jpg000066400000000000000000001641271414624405500153350ustar00rootroot00000000000000JFIFHHXExifMM* (12<i(CanonCanon DIGITAL IXUS 50HHAdobe Photoshop CS Macintosh2006:07:18 16:29:13Mac OS X 10.4.7Ƃΐ0220֐    @2 2006:07:06 21:40:332006:07:06 21:40:33 _ _ v~(HHJFIFHH Adobe_CMAdobed            x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?p\ʶ01s]YY~-J28Ste_NSֳmʲ}5*dovٿj£lTnVE]X{9E #KͦKֆĶs67{_^=5N-Xf$G;\.+LuN`KK,sF}? z龯R,eޑ` 6 <T׶X;j}_V˫.eocsXk9UmB0UM9}zI]$HE pH9J]$RI$I%)$IJB61cОE5sf=51izOivG{^߾:Z$9Z~k~Rư=>hk6cG׷W*uS/]Xvh$4@ݿ/dg}TYd}k ~}?t WN*l7_H86D~N=/{,qjt,܆v%m.z}۾~-Gg϶ֻv׾yv;-NZf[ͭ?gŹ9lʷ۷sЦHwM:g־F`li# YVm72yƋ+:9ۀa{#vko/q`55;qMqb@-%V뜷_i'Qe#K tgO<(Yn>'8kNf;.Foo$34㵧c6.+JqӢC{Gv呯HB ܆1cJů0>v85SxCl `Set*NkA'FIMQ.c0Î@EC<(然Q0,tBwYkFaAXqZ5cxi Q Vp˽\Gh푺YW8YmI q8wՌ\X+%ER8Mڵn}:~q~Pci{YmI뱾KX__zeh(ɨ82):OC11\=j}nc?A?7Řw;w#+?_Og]-pylsh'M|ݏKimr}6wɯg5I ߖ_cEՕbU~Hݿ+@]:j淿!uv _-|#vgmj5y/s:01ՆH}=Z90 75ڞ`x & ߐ2sPl}ne@5Ψ sAh\?#B[H vḑUݻ&"'.s.a$E\! ٰ]ޘiIJ7Jem -ofb0XH"D5WsЇ! k>.US{mvAuŌ$8 cY2ă, >0{"Qs@eqv9p.=ֻ3{H:uYxl]qiO?;G*mpqqm$}ڣfE\5Tg45dl=԰;wiS]gl1.X ߵU9مq 5;w}PwP<6NDqXcuK("lsg~*XƗNRo l!q#HadG)Ū5W [{{U~uژ0],_79Pf`v=ês)q {fGcGg=EaY~3mdSK,cmnOEj)@0zx1Ckchyw=ц;z7J&@kFѫywa=&.fuN1Mد c̷k\]Y7{[V<5?(u+(mU0$@>gWcm-_Kɱ%^? Ar}][|g?]>]n 63O;p ^TH׷DDukss]IcWYfe|.yYCKsغ\~mX:7ţ=y32<7ܪJ:@7{m{Yh{C\IkIiBkȻY m8'ղݧn+PʯuªXtKi-sKGk󳋜>w],{ cůڪ4=}qF@CA cc|O;vnx!uo{P/e$'FLN}X M:C%yiП 481&ld{}/{ @!=M7x2Io}o}*2ou& k`CSh.Y}UV6պƸkC}>~Z=͖ ?<zlvݶ#tːݔY@Gvssk=E~՗=~$鴖o& h=]~mu!;ӻn{Ʊ/wݞϠ9Ne?qk]$-2Qzz07@ gҴS;c61ٓShmV~:&z3QȲU,6XIoE]4 0~ϻvSufR\K\ k~mKobd%+NM*s7kꕵXX.{XnƱm{ϬcbWcŭ{]W?O'ԳGw9=8<Sd~f?b?.WXظ8taәcEu<9Kʟ.ٿIb|aUG`adJ1d4F7*k[/VJλպ^kn󱌆mln/fbNnN-974W[k6-s쪺/{("}[Ea;`3ş[U_ڦKm{Vcrţn%v@{NZݾVz˺9Cjo+i>єo>*mmT8Hkd[L j߷%^*:<es] <oݻeʍht8ֻnhŨWUlxh:9KcU|쪖du.c l8sڢ/D|ď2~-ߣ 2lh$p۽zzT[C2q} !G}-֮cN]9ݷc\v4}B!um܋>zՌ5uU6HcCߦ 4.òڜHh{~ ow}CwVZ=rC]#U-ιײ8"WڿYY3;18K~cv=7/aO_$J|K Z@?Guo{I^MnkC֘h*U=Jceda0q}g:OeS7-wӎvI૮ƿ7?%.Cn/mӤ[>q~ZsIRƑw)o'fWX{l  77{]s6Ubןv%Aml|5Ĺ̦6uTg󗾿[eLwql?bʫs[p?GjނueۻA;`v6MctoOkU~㑔`i}%sx Ekɑ啟1Va55Ӱ9 --z~~/mv)yeJ1(@^:wlWкM]wcnEg%UCKm4?kMtzedvI[킟CZhQ(fv.Vǚ־qS}̹L)E[=zVTsf[{58@[%._ދ̖],u֗?fߣ[z-+mEXk mNkjԛۍFEC vzns7=YvMƥK0u,wU_sv5n:4.gXYU6i 4ýwk; $u,S]v6=ͷnWc\ϡlZ'>^1fV`}ѲʽM5m"J:XC[O55ͨ7D:d,hOESQt[[M{KvwIum N3;m +5smg՛F#-ȱ]Ԇ =6ÛiӠݻ:mi.?-iSH?^~X/ s'K@:=:s[mm+qh֚Ͽm,~[^7inr=uk~wm=^nu~c k꾏aFWSfxsKeV׷v@V ~,ss6)wPǪ^{7a3~V ׵׃76gϠqϋ s}[M{vI.$tvo~{Pݍho` Hp9f\:nkk;tmgD#Ӳ/^rۥ1}>}fa9dG۾$m=ȑrv Ҵ:~.Ojj繰{\~vP;Y.լe.xPfn1r#ysRmomDR*s8~hW6aG &?v=4uuo!xS?$Ci$Fybc;.TŏpeK@iۑ6{UO{ qݻY`v[׼T7)vKZ7=m&{zffsiɝZ=M?w\GR͡2C {Y}N$3hP\%p~ _mlSpXgHs/7-nWt''1cdj&|6.Sf3ZX>ݛY7 Di$E9N ZC{q^ݿO~bu;Zɝi$Pd9OighlP>?I |֌>E/ۮi#mwe0pd~w; c"IHvj`ٌ܂Fkah ; @wAk#NO찴D~OJxF}}790CkƠάsݻE`Է!}٣^l=7nguݎcYn{4c9g[)tVlˋ6ݮGE=Eև5c;oQ@=1}A!Mck=LR{+sGuO«Lw0O~Ƒֻ|w9gi"-қM1+p[U`ݸ{61;u͵!Rcmkkvvs֍9zKϒQΫMb4Oimc\SnW6ǹ#sW yIcF?WҪ6L{5: s\HqYbtïC?Photoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName iso-a4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-07-18T14:28:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName A4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH/8Ag{HH(dh 8BIMHH8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?@grind@nullboundsObjcRct1Top longLeftlongBtomlongRghtlong@slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlong@urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM xJFIFHH Adobe_CMAdobed            x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?p\ʶ01s]YY~-J28Ste_NSֳmʲ}5*dovٿj£lTnVE]X{9E #KͦKֆĶs67{_^=5N-Xf$G;\.+LuN`KK,sF}? z龯R,eޑ` 6 <T׶X;j}_V˫.eocsXk9UmB0UM9}zI]$HE pH9J]$RI$I%)$IJB61cОE5sf=51izOivG{^߾:Z$9Z~k~Rư=>hk6cG׷W*uS/]Xvh$4@ݿ/dg}TYd}k ~}?t WN*l7_H86D~N=/{,qjt,܆v%m.z}۾~-Gg϶ֻv׾yv;-NZf[ͭ?gŹ9lʷ۷sЦHwM:g־F`li# YVm72yƋ+:9ۀa{#vko/q`55;qMqb@-%V뜷_i'Qe#K tgO<(Yn>'8kNf;.Foo$34㵧c6.+JqӢC{Gv呯HB ܆1cJů0>v85SxCl `Set*NkA'FIMQ.c0Î@EC<(然Q0,tBwYkFaAXqZ5cxi Q Vp˽\Gh푺YW8YmI q8wՌ\X+%ER8Mڵn}:~q~Pci{YmI뱾KX__zeh(ɨ82):OC11\=j}nc?A?7Řw;w#+?_Og]-pylsh'M|ݏKimr}6wɯg5I ߖ_cEՕbU~Hݿ+@]:j淿!uv _-|#vgmj5y/s:01ՆH}=Z90 75ڞ`x & ߐ2sPl}ne@5Ψ sAh\?#B[H vḑUݻ&"'.s.a$E\! ٰ]ޘiIJ7Jem -ofb0XH"D5WsЇ! k>.US{mvAuŌ$8 cY2ă, >0{"Qs@eqv9p.=ֻ3{H:uYxl]qiO?;G*mpqqm$}ڣfE\5Tg45dl=԰;wiS]gl1.X ߵU9مq 5;w}PwP<6NDqXcuK("lsg~*XƗNRo l!q#HadG)Ū5W [{{U~uژ0],_79Pf`v=ês)q {fGcGg=EaY~3mdSK,cmnOEj)@0zx1Ckchyw=ц;z7J&@kFѫywa=&.fuN1Mد c̷k\]Y7{[V<5?(u+(mU0$@>gWcm-_Kɱ%^? Ar}][|g?]>]n 63O;p ^TH׷DDukss]IcWYfe|.yYCKsغ\~mX:7ţ=y32<7ܪJ:@7{m{Yh{C\IkIiBkȻY m8'ղݧn+PʯuªXtKi-sKGk󳋜>w],{ cůڪ4=}qF@CA cc|O;vnx!uo{P/e$'FLN}X M:C%yiП 481&ld{}/{ @!=M7x2Io}o}*2ou& k`CSh.Y}UV6պƸkC}>~Z=͖ ?<zlvݶ#tːݔY@Gvssk=E~՗=~$鴖o& h=]~mu!;ӻn{Ʊ/wݞϠ9Ne?qk]$-2Qzz07@ gҴS;c61ٓShmV~:&z3QȲU,6XIoE]4 0~ϻvSufR\K\ k~mKobd%+NM*s7kꕵXX.{XnƱm{ϬcbWcŭ{]W?O'ԳGw9=8<Sd~f?b?.WXظ8taәcEu<9Kʟ.ٿIb|aUG`adJ1d4F7*k[/VJλպ^kn󱌆mln/fbNnN-974W[k6-s쪺/{("}[Ea;`3ş[U_ڦKm{Vcrţn%v@{NZݾVz˺9Cjo+i>єo>*mmT8Hkd[L j߷%^*:<es] <oݻeʍht8ֻnhŨWUlxh:9KcU|쪖du.c l8sڢ/D|ď2~-ߣ 2lh$p۽zzT[C2q} !G}-֮cN]9ݷc\v4}B!um܋>zՌ5uU6HcCߦ 4.òڜHh{~ ow}CwVZ=rC]#U-ιײ8"WڿYY3;18K~cv=7/aO_$J|K Z@?Guo{I^MnkC֘h*U=Jceda0q}g:OeS7-wӎvI૮ƿ7?%.Cn/mӤ[>q~ZsIRƑw)o'fWX{l  77{]s6Ubןv%Aml|5Ĺ̦6uTg󗾿[eLwql?bʫs[p?GjނueۻA;`v6MctoOkU~㑔`i}%sx Ekɑ啟1Va55Ӱ9 --z~~/mv)yeJ1(@^:wlWкM]wcnEg%UCKm4?kMtzedvI[킟CZhQ(fv.Vǚ־qS}̹L)E[=zVTsf[{58@[%._ދ̖],u֗?fߣ[z-+mEXk mNkjԛۍFEC vzns7=YvMƥK0u,wU_sv5n:4.gXYU6i 4ýwk; $u,S]v6=ͷnWc\ϡlZ'>^1fV`}ѲʽM5m"J:XC[O55ͨ7D:d,hOESQt[[M{KvwIum N3;m +5smg՛F#-ȱ]Ԇ =6ÛiӠݻ:mi.?-iSH?^~X/ s'K@:=:s[mm+qh֚Ͽm,~[^7inr=uk~wm=^nu~c k꾏aFWSfxsKeV׷v@V ~,ss6)wPǪ^{7a3~V ׵׃76gϠqϋ s}[M{vI.$tvo~{Pݍho` Hp9f\:nkk;tmgD#Ӳ/^rۥ1}>}fa9dG۾$m=ȑrv Ҵ:~.Ojj繰{\~vP;Y.լe.xPfn1r#ysRmomDR*s8~hW6aG &?v=4uuo!xS?$Ci$Fybc;.TŏpeK@iۑ6{UO{ qݻY`v[׼T7)vKZ7=m&{zffsiɝZ=M?w\GR͡2C {Y}N$3hP\%p~ _mlSpXgHs/7-nWt''1cdj&|6.Sf3ZX>ݛY7 Di$E9N ZC{q^ݿO~bu;Zɝi$Pd9OighlP>?I |֌>E/ۮi#mwe0pd~w; c"IHvj`ٌ܂Fkah ; @wAk#NO찴D~OJxF}}790CkƠάsݻE`Է!}٣^l=7nguݎcYn{4c9g[)tVlˋ6ݮGE=Eև5c;oQ@=1}A!Mck=LR{+sGuO«Lw0O~Ƒֻ|w9gi"-қM1+p[U`ݸ{61;u͵!Rcmkkvvs֍9zKϒQΫMb4Oimc\SnW6ǹ#sW yIcF?WҪ6L{5: s\HqYbtïC8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1/50 28/10 0220 2006-07-06T21:40:33+02:00 2006-07-06T21:40:33+02:00 181/32 95/32 0/3 95/32 5 False 0 3 False False 5800/1000 4294967295 320 240 2 Canon Canon DIGITAL IXUS 50 1 72/1 72/1 2 1 2006-07-18T16:29:13+02:00 2006-07-18T16:29:13+02:00 2006-07-18T16:29:13+02:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:c7ef042c-180c-11db-a440-b54e0b41fa8f image/jpeg (ICC_PROFILEappl scnrRGB XYZ acspAPPLappl-appl rXYZgXYZbXYZ0wtptDchadX,rTRCgTRCbTRCdesc=cprtAdscmXYZ tK>XYZ Zs&XYZ (W3XYZ Rsf32 B&lcurv3descCamera RGB ProfileCamera RGB Profilemluc enUS$esES,LdaDK4deDE,fiFI(frFU<itIT,rnlNL$noNO xptBR(JsvSE*jaJPkoKR2zhTW2zhCNKameran RGB-profiiliRGB-profil fr Kamera000 RGB 000000exOMvj_ RGB r_icϏPerfil RGB para CmaraRGB-kameraprofilRGB-Profil fr Kamerasvg: RGB cϏeNRGB-beskrivelse til KameraRGB-profiel CameratT| RGB \ |Perfil RGB de CmeraProfilo RGB FotocameraCamera RGB ProfileProfil RVB de l appareil-phototextCopyright 2003 Apple Computer Inc., all rights reserved.Adobed         @(  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?:~kMq2f )Yb$@2Ao*Zj~2g& t#H~;2>/%`\'҃/lE;僝Kdȏ#{Oxmqrޜze Bjr2ckpq o#ym2u]Fi wT,kW Ysm<Gv$gt Hb˦'%_ґ'AA!™ ثWb]v*UثWb]v*UثWb]v*UثWbZfURhTl@2Kp93 U!޹P&f"<ЁyS[^iZmVvOu41,&qiStqc.2zNk9$Rs91MLE&63ZDUu9I }#@P"-AAY]IᘞNrͤ|:{UBLQoVcJ4Mkc8#Fफ़[)^\ 3r$Y0J;0YeƥV~>@d y8bIE㍂Y {Wɢ%6ޟpzl7B .-xd 2e5v*UثWb]v*UثWb]v*UثWb]v*Uت]kv:Z 鲒J@U ԏ1meG+8*0:Z4#} d~c6#)5~"&8q*y8񍙿{}= v71Ef KwzxiVW{i[+q'G*a[*dB#kVccenR;/ d86ǽZ[1w&JOł1 +Ƽ7.L#;IN7c, E$'c;v*UثWb]v*UثWb]v*UثWb]PwMtOS ` "m AJ} MXϢpǰvbGv=;; A]d.LV?_@G1<M{)9sKYƙj[[KKq||#xSMȡYm~\HygRKĨ$EM&4l)D"-brd@C}=M-<2'=;˅aFv15(esnPV< &U2 Gϊ$l椗mX۷D+p9ɏ$n?.)L' emn$*bZч9l@pAFt&x,1+ϑ3T_xTJ['9 gI EbB/HHᣳ)$Z]38C@ȲTQL{nuhͪ:Ӕr DU1Lzq"om lZimc]½Ɗ,(I~AdBTljxiMkqmMg-QnzdJmzO@`#6'bvZ{Y*c N+5{T`̀{Ěp}/ {MavWaWb]v*Uث*WSzثMʃ|0Bq^BHR n+|Ah$0E:8SP fJ"([,ri߻,]OJc>u6!Դw5 N/ɷRK3q2sm]YR;+OC=C!r#dFn-%0$Ry{􋐯q-8M鴬"i?N4~6r`Pǘ\S)+zK<-³DS,Kȕ*Y=~%c WrD ns1 :#e@hn?ɑyq t O Y @Pn<QnfIm%INl)|y`HfZ>=ՀB%}fc%Z|&˩;{R&֧߂sZȒR(h(;R n'#EF[_zA;-Qp&P>:xWj$.<+mtҡwm<)*xH޿FD@DŘ!].kwȔҨ}#Qg& ADžxjli]v*UثWb_:PAlлOK@/,ܘ$XK2 s*@wi5eոx߷9\[~^\1v=0֩QHFNO8>ˏut&#"kͽipqvHd%Ԏ~'U? 2DP'߾B|w H#}JSHl\ UKzPT,Tt뀲 {޾"ELWH2%nkB6 Yp Fݲ6ǁZ;@ȆA79pPjhNj^Ie~)Q}m|9{? |@ބr˩FzFHgSYo-W햌-g .1ގI:b^j3TS516RۋIKȐj6`H`H_^LM4ƀ–&`xU:F~d I0 BƐpN᢭\9?h/|8we ukM=RrR[JБN͔dd]1Vbcڭz[%/\8?h9* TFnrr!UȜZxJ.,§qCSӨ w" ,*y7iFR5~RPզ sdk=A}وul1Y˭DE:)P|r3 ^jl0eD;:e2){ǩ5"1Qm2Pt:CGͦjƋ?bR`,7CMCO[I}ڽqŚ]ƑΨOBOl02N5GLkʴXUCcj̗I%p`jNNHAkY\s!1 7WZLwhd 'Z99m65/In!fޯG -jq i0 ^MFݽF):2HQHN%DXJC]S(WLMhoR*cH~_;ܤ2 4"6ĪfA9b[wk-i[rI}6JĪPG#v^' U/FxHv^l~6e qE1̴=M^fjy(<"G-q먩@26<0r(^̩s3Or7㑞AL%E߮C\E3%^ U v-GmB74pL׼#)Yu`|<)+"Ȍ0" :aixʴqN lh>9ٍ%:n -,ʏIjMNq#o($^JLdgrkM<68-`Z(JQ<֙M4}?3;!41Jk_$A^B~aZxVcwfQiA S) Tf0`0ĆGdntјfDe@IS qtȄ;HZзLa07$>=G\Dmd:({ 8Z΢WNY Ol.en…]U^4\ 9z5\xfڊubYyٕ`"<3#L grDMuR|Đ -Hץ+QC7H1<2tV1?٥I29;?Q'ozPA1M܃U)$o5Zmկש2QcJhn]ifR8|xm'ȸz }%P 'քTI*  FGS՝j҂>(O؈FX]M%k$Hz7cUrڰ!ܦiZ`,E:(vr -J !pqj;Pd "ۀdj+TYGXub(!onE=2[FWX[&I/z f4l&զVT+KƕN<*d_yYU+HqܝcQi_YU`V)J-rB)<V Q(҂ bMnͰEb͸ĊM)yx31*i D܈+Mlòjh%Nlª51 T'랔jZIP  )ݎum 6#?N< 3%6p@2;?G iO#2[+)|9v0! @ҹg:m;OQOT5@=plLIJ4phSG_o.3& 4Zcۉ 8֊V43e;7Vt| 1HbU 81"$R&k3_b#j9:l\\q%E#D"0PuBzbfeZ H-_N2ţ?x(-$^Aݘ0Hd|Bjs H.<yP0HBN 2\H=H9Z|AWJ%n*iʧx dPP2?J ފ+hĞc"@޾-(]b-ʁ(DQݻW 4>gPb; H#H(QiFRbxy6o:(Q6?Nd-4jaƕ_pC5{>BֽI]1ԺJ,Zq$õM!+k~YY^[tMw ukTSZ8g,:Cgky+5ՇjT iuTkYTcxe yE H-9~kRND*Ԛ,>wx1⬠OC*j-eV$aĸ1G$WJ17)GwT*2ɦ1u >#T Y8| :.OTΠӖ`\N)8 *IEJd\@GC?dZCOM)HՔ#}^WёK˶̪ߥ 2UǭHu̼(cOn䨆L䧄N$LƃӾԦWށ8˧1rZF2A S-Y@ Ilm hGi:UjrjX,ȁB~KNΤG0yBY/eKf#cN*˗gx빰΋){RTU0Q㛪_Cd<:okCTW Q +Mqq7^4ժ\|9wDpLj|r2 *6J*wD61l82@@`uS,nn]+BRIaDc ־'cgzf2Vj}\`ubNТI*}v98ՄA=_0![i1f" փW)i警h7-T]@ y9#׷hd*P?iI? Kcے&! N4A;*Ѫ)/XpʛL4o^vk0L@n5-Yͪ.j"!VN8݀ %r<3%W,3́=vζ#tGiBƅ}aG&D~ͼv}ĤLUJP |^>Xh#8L|r8`RT[Z N{)(G3Z,=;dlaM7;=򼓈(ziZseJP_q{>+PM%} {Ĉ8M)ǖZbrJͽ/)ed`J`wY$g~[OA +R}Kw%r-?z¦#(f VZxս#@xzr#e jzep*65 Sfxeq I4 \T:? S/|>S7U$PK+SOJ`aŽ J34"{ka$<:T;ezxI 䚅ԗ ,CCK$+1]Y#C/y{--滼-^SL""IR]eygm}b%bH%*⻌4.Ap $ߒ?|ClmVV_}.w f/;4Dѹxkf SiKb~J#!Wd,seZ}̱|7<%ykv; E(Ch,3HpZNIӯ>Vc4]O?A mLÌ N[zã8}Rذ^`-1PGxzqe/QABzЮW02F'a\n_sןJzN( AlY ģLEtG'` 4*UnKIxiebeYxv`I5T;PCv_(Fo89ȩlnG ~/cSo8D z{Ji듎ReTSA*TS?+Mt5q}o*w3IA^Tb#$e% `e|t!8*cUİ#o7''꿥lMqt#4ŹԣU a~47l&2ۻ|Q$v*ѫ?˥R,O%}i̪'Fc*Sy(4|ؠo5nWN֢Rd"?u2:LOvoJ'z(]hd":iU_7!TKGQcBU@*2G$Ku8e==F|U2/ d hDDj "Ttƿ첳I,LAK WՏB1Ʀ'!H]IsݲM)SJvt8ef"ǟ%$/kɌ$J:uL@A6a`E4H#ziM`L"5c("T4r8gR%ކDr;سo6T2X:n9b1UH9/9bQw l Q‡jvM6 ֭gС% ̓ Xw@1s +K!:ez3-fyV4xa/G!Mp]]}]j^VQݔƀz4,c&XoRo-crZ[=A@S֙ՑkIHdK;Vbi(IQ֨TvU B鷓+ha1uOz*` t;-Z֔nNţyʰ6pF8H#IJ: 7ZUMa]V{hźI˨Anۑ b:MKZK1 2L̮dT_d r-M6RJܤJkdF9ԾK,uwΌ|fM?k4hV@|'򾔷ֱKif+(ޥ{(\3޶I4o2yW[:x$V2Ҽb'o_rx7Wfu̷`BAL7uZn-U^=$Z[0?~C7ic?~_=Ŕu`*74ɷVҴ(zSqǛ/A~晥 ̖VZ`\-RLmJӥpi)Zigly![QQ\4l#~Y44N kϖ0͕=w5ڊ=r :EXUJ~+dm^#ԟ^P)q'I>\LJL4 hb}n1& їģQ|l6!P0Һ (",(! ֣rA'wF gi!?\AkxO$p,%DhءՕ *U"{Zb;e,%;r:eLGŶ2K#ʂ1.1 Z|LPD$.df<{ؙ$P8.e305&5|džJMYRDE92V;LD^ꗕ+a<&Nu ^(ܛfx9c*xtˀEH3o"q9A÷ey;ڥꋵ:VA:r/Qӕ;S|G!ciu+9yY=簫A d5 6h_m4f K-z\Zzanios+@h39)Vh/Rrߕ;dIa0>F^e@yW,mnȍ,\zC!߹ԵkmA$C(wRA5-L[XLx*I ʮ^Cr[lz$({ű+*Bq5!|Yl3BR3ޛ[h1zi*ƎkNez`=R.ޜXW4Y ̢D f] O$jCV8zBGINmI;P:C~5(Y SM11 YtIG-7z cN lbz4R;`VWڵ z`ibXo=X0ܞ_Vwmv/-$828x#V͔,%w5Zߑ%h|F`k>oߘ%HJ~?b5g,Ֆ3647L^3CAU5͐ݭy* v w )r!6kNP1d@gVkB%bG(f_9Vm09ncHMF  '(v;j?/2-RԴ$@=MH߯)i4"e ߉9g͘<:uzGPCܨ^%y0 414JFdn-:FpN. ,9]aN*'qw OÑXS|Tb Q)m'8쐌q VnAֻ~,χfd<m &k87F4ߧdrh2c'MsE(ҵR.ZRiJi|HXF'a&6U7 '~@"]^ mrw 'FUQȑZVcHc5<{0ΗjT[Ex-&SqH9U,cp BD~pf-ZNwYJΎ66#8ͣ$xϯ{/R"L( @1$#[U4[[xjP3],4XE?kee\l΋Wצd)nXPo)_uޣ Qo \^KP\UG6Ń |yi` 滅at,COZƝ}FȪ̦W5Sɐ@YD195H_UuK /xnTQ!k,2/Z}-A32&5ovHfTk6tX@5s S9a2WG>+٠,xRdV4@Ay ;Vspݘ5~.WMݤ<j.Tcu+Yԗ7 F,v1&z liFTԠ7&E;ŵko ;"Iv% ({Rvf*Kƫb-g%'(՛q;X6MX?r^$5m8Ƣ{QLbAn*zchD j`37BaLewvoyeXvfx.R^&y慘+h V͘tIJK?;.aAq#v255:;/B)my]ToN}K%|G60]f _E? 0_0Ί\Q]WyʇRX%5#SSʼ~YFN̏CƅogV3 N[UDJcШBII'r0סfNFgyI.!1}S8xMRE=KR̮Z*PEti!R7H9mK5+dH-į*P@!@ VPLlYVB(ʘaο(a#սS4Z^h2 <"@bzIZΟqq+Y[[fTf%^D TLý쮶2E "J- bddNm淶A㛗݃`e)K͗֗ז"Kh%-܀['/d2=|6bךU-FʷaEx2b%8_6 Ҷ.1#'G+.O{6C$ +xPc1Kdd40IbDIVP*GXk6䞕cȣڥOQώHFsIqI#1 gJ*€h\oMm4>'FkLR7.?Y5LG^}" yn< lz|9Ql؞ZsD>,sw+VV &z?5;!oy\zDR ;+\(‘@xPVP)$vZR[q}&J># OpKE^F`gOW!d>T9qqIK y5 :Fa,p4'm|)ηs 2kr1:`J|*3ZyR1WW``"4{Km@55lǜg) $$X[T4:tDUb(#t/jz f +F'(ϫ>|)i\Y>.4;Sl9  4Py ] vvMʔpjb9)xr凒MzD0,Xyv2HebWZHxjAx;y+hEzň)$2x%s/.ŭW$qhRE'&|42oH:o_kO59oJdA5L!1|va#Pʃ#bMKgPJOFOž< :$zH?*pH#5Nj<#[]]i<גX^[Tp`)uzLkh]reUIx+!*bRSo\eSsqBoltȮ`[()GP(Mmim!ƍ7T'1)+V ̒XGQTKeՋKe2$MV)R.ˍ@\F"YƵ , &Rx8)ZNVg$#Sga\B_(Rzer t:&:(}/@~rP^H+#Bڴ*A˵vVS.y;ryS)|b^{ſ[ 4(0TK+/1K~u%cPPuru~oU*JƜMv54E^ "ND z'˧e],vS6O"q*_;P%w܏)+vaVJ{1]pB])'~n7EG+ҧ2 RA09Ul.;t25Ù ̌:8q"]pPc2с ЍfAOnf%D,d/8REߧor͘QV$MnʆX '!Hnye(߼*'E RZmUD;WsaHʗxԒIv<Jlkv=<=LX"2$);%z H rPMPlS+Di|_)*R>"u2M,Ԥg%":.;f@ia/*"=>>?{eK!CӌbZ|L aoN#sbLx"<:[QE1SCF9c>!a)Y߉oX-pғ#ASFm4cɴ_4[y"*Q|L|_̒R:4E5ݿeYI9\ڥ@4"ޜzZ<ƀlKӍ5L Z)dlI4# TSKvQfqFFQ(퀱nCn<)׽FAJ$en Fw~LU$ AȂN5h-_*v 4WYOtmsZPH00XȎOt3jsxk8 j4o1rD WڍyiHۓWmګ<0&Os+zȦUJ5`5?[u}uk4SZ1BI e$0Z-n&dHk(z֮y%ȜA`NVCk勯O==v֒C,Vn&Te#_׼[0yNm"@9۱OydAk8W :OiourH+/ ᔬ!K}*LE0o?4Y{{[ R qNJF7#@=&Ӊ= y>mS}=#9^RALSr#4*ˍ u5!*˶>!G[M)8z4ٕ JdBut=TӎPLmVa+ S0^I5kBܨj՗!W$ oYzSa t +JƢXe!Տ *G07[I%Ai7I)9E@8z%i9S|H5|4l` r+U3a9$qjҠT-|v4$Ħq?Zw!% p YJ;K"n,E1F@ #ag >8,c"AHK=vqBVu*OCu,~S3]s=gH((6Zo0zݵn*?,y|HލkTՠr!OZ&h9Qv:%jG/| ETT-.@.&N̐!bc54@y4T)E,}@FD H5K[O֬meY>xPTTqbx'v[$yn|μT"1Zq8j;Q(^k<0몚>| WѢi#TB؀#?3S'`}:DC1j;(rtgN0ov/2VTWk4˕27ȧZƩ!PvheޫKdSo$+"K*Q'F2o)^~vCWWM@+ǭ~* =cweIo Vfj($lPCE ,~ecY  )Vf 1F̧)zd-Z75`̧q7䌊D)V;hA:/N´W吔C8n*ۡ3:qtxq܋W$X80.ɪ::mTK\֟Sza%V,p#2'We+ӯ4*ϧs%/8QRp3"op>%-^4 cމ9'$ p)u],2 ?AV+MV&U4dQHZM:v)nzHzqqQԎBbPXm徶ޢEPY-M@pқ*땢ٰhzlw`) &T lci U *wjGNxIeďPʅ0zGW0,Mm!s$4OB@=z1!I$Dȉ `dLI1]Ѻr)SEЎp ESZOZo,1YI&Smн7Ncضh䳷GB 2_gb:Ex%W[]/J(7C8Ii1%VӖ+O"QT.T!f_8Wy^! Vx֛?UtA )]6_ib2lq^O"V|m.G*VTQwF\d2&vdH Լ|wԯc-iQ[)( Uh߱0R[*)#?(}o`b$e9rVOEa:(jS []VIqeb>ֽzc4=&)4G)*YA ;i;8Qgj rиJ9ę9r(6 vLY4 ZוkxN_i@@e+M#A H7j@CQDXsĪȑF´ /9aW@ ePp!eޏ#XD}" P ޛMSM>MX! y1 RcFFFC1yS8y+wQZ{d%,Ib൅-X^\ݔVR6cma͌-jD4P+@2Y`#bApN'Q>3Dѡ *r;1;y6J17j pSdIznuaI%́ ֧Ʉ{fϡyn.єFi':iFUx`$ϥ7鰨;}f!ƥX¼jFv[ùǏllq.CrSF$5ڧ (5q!p #qdrŒ +!z,@0͎DGui;Md%X+*YdGlŤHW5JˊD9Wެ5p>Mx.Nš&7LL| \ yHD^8X,ּhMyTc(w Cy A1GIa#t22-E xa@\1$u$D eP_X%)uuf ?&L:MB;x^feޝ`VPOJTi #SJ[\ߒ$@EN) >Wֵ)&ڂWqJҤt! gMELBD^GP: r28iɈ 14Mː5ڵ&oe~`"V-*pda8("l K4hI'cV2.* ґUP$$46b9EI7K4WJI@)]AU,inD AN"&kN}>:E0>D,'~i,V?+igMXZAT@ժk@y8W>!C  .N򵭕ª*y)%SʟjS"K8k$e({{)lN2Ս64c.Қ3UMxrXҥŜ1Lpi\ARTѪ r:m-;qph7CWli J#1B!);Y+E7olz+ʕFfY#X:~ Ph)U&2JՄ ve/bI@Kk$(%Aʕ4c;c7V =]`QHBdUx.\b;k0JFeMAciJd*Ř*^@[=T0\l;fFG8s)Zȃԯu`DsdDI5gUB@$*[};RTI 7Dkx?j~Z,e`}qFa7+^?hdj6"vUWUnYkN8}FV* QhOajp2a-1.1.1/tests/grind.txt000066400000000000000000000045761414624405500153750ustar00rootroot00000000000000OOO00kxOdd:::... OKKXKOxOkkxdolc; kOKXXXK00Okxxxo;. . XXXXXNK000OOkxl,. NXXXXKxk00Okkxl:. XXKKKXOx0oxkkodl:'... ... 0KNXKXOlOkOolcoxoll:,.............................. 0KXXXXKK0KOxxxkdc,,..................................... ................ OO0KXN00O0xkxdlc,.....'',.''..,:c:;,;:cc:;,''''';,''',,.........;;,,'...''',,;;: KK0k0XOOOk:;;;;'',''''';;;::,;loolcclooooc;,,,::::;;;:,'........,;;,,...'''',,,, OkOxkNOdko:'',,;;;;;;:lllcc:;:loollccccc:;;;;;c:;;;,,,''......'..''..'''''',,,;; XK0O0X0ddxxc;;:c::::lddolc::c:::;:;:;;;;;;;;;,l,,',,,,,,''''',,;;;;;;;;;:;;;;;:: KKK00XK0kOkkOOddl:;;;:::::ccc:;;;;;;;,;,,;;;,:l;;;;,;;;,,,,;;::::;;::::::ccccccc 00OOxxxdxdxdoodoolloc'......;collc:;;,,,;,,;;l;',,,,;;::;;,;:;;;;;;;::cc::cccllc OXKXkoddolododxxooddd:.......',:oool:;;;c;,,;l;,;,,,,,;;;;;::::::::cccccclccllll OKXKOkddolxxccOdoxxo;. .x. .O'.,oddllc:c::c:o;,;;;::::;:ccc:cc::::ccllccloodooo XOOXK0KXxoOOxx0xoxxl,:Ok.x. .Ool,;oOkdodoc:oodccc:ccc::::ccccccllooololloooldddo N00XN0KX0O00kk00O00xdddxooolokkkooxkxxkOxlldxkxl:::;;c:;;:::::llllloddooollloood WK0XN00XxxOOdx0OKK0o:;X0,OO0O00Oc:o0lxOOxxkOOO0K0kxllkodoolcoooxOkddkoddoxkkkxO0 NK0XNKKX00KK00K0KOOd000OOOOOOkkkdodkdxOKKK0O0OOXkkxxO0KOddxdxddOOk00OOxkk00KNKXN WK0XNXKXKXNNXKKOdx0:;:KO;xo:::xkOOOOddk00OOO0OONNNNXXNK0OkkkkOK0OO00XX0kOXNNNXNN WN0XNNNNNXXKOOKOddOc;:0O,xc...dk;:xKkox0OokkkkOWXKXXXKK00KKKXXXKkxO00KNKXXNXXNXX WXXNWWWWK0K0xd00oo0olo0OdkxoddkkxxxOOO00OoxxkOKKddk0KOKXXNNNNNXXKO0KKXNNWNNNNKXX MNNWWNNNKKKko;,,.,:...cc';,...ox;,,;:cd0kddx0KX0kkOXXXXXXXKXXNNX00O0OkkkOOO000kk WWNNNNNXKOdllc::::c::;;,;,,;c::cld::cldxkkkONWWWWWNNNNNNXXXXXXXXKXKXXkxddxxxxxkx NXKKXXXK0Odlccc:::;::::::::dxkxONKKxllllodddxkOOOOkOO0KKXXNNXX00KNXNNXOO0K0Oxddd NNNNXXKkoccc:::::;::;;:::::kkOKKNXXOcccccccclcllllllooodxO0KX0000KXXKKKXNXXKkddo NNXXK00Odl::;;;;;;;;;;;;;:ck00NWOc::;:;;;::::cccc:ccccookOkxxOOkxxkddooddddddodd XXXXXK0dlc;,,,,,,,,;;;::cclodd0Wd::;,,;,,,;;::::::cccclclodoooxkkkkOkxddoxdodddo XKKKX0xlc:;;,,;,,,;;;::;::clllodc:;;,,;;;,;;;::c:::::ccc::clllokOkOkxxxoooollddd jp2a-1.1.1/tests/html-raw.txt000066400000000000000000000021451414624405500160130ustar00rootroot00000000000000XNMMWk0MMM
ol'c0x:Oco
0X0MMMMMMM
jp2a-1.1.1/tests/html-title-entities.html000066400000000000000000000104201414624405500203050ustar00rootroot00000000000000 C&amp;"&'<script>
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMWNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMXdcl0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0dcc:clkXMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMNo.  ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXOc'      .:kWMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMK,    dMMMMMMMMMMMMMMMMMMMMMMMMMMMKl;.          .xWMMMMMMMMMMMMMMMMMMMMMMMMM
MMMM0'    dMMMMMMMMMMMMMMMMMMMMMMMMMMWo              .OMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMNl   ,0MMMMMMMMMMMMMMMMMMMMMMMMMMN:               cNMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMKo:lOWMMMMMMMMMMMMMMMMMMMMMMMMMMNc     ...       .OMMMMMMMMMMMMMMMMMMMMMMMM
MMMMX0OkO0KWMMWK00000XMN0xxxOXWMMMMMMN:   ;okkx;      .dMMMMMMMWNKkxxxxOXWMMMMMM
MMMWd'''''cKMMXl'''''dkc'....;dXMMMMMNc.;oKMMMM0,      dMMMMMW0o:,......;o0WMMMM
MMMWc     '0MMK,     ..       .:0MMMMNkkXNMMMMMWo      dMMMMKl'           ,OWMMM
MMMWc     '0MMK,                ;KMMMWNWMMMMMMMMx.    .xMMMWl              ,0MMM
MMMWc     '0MMK,                 lNMMMMMMMMMMMMMd     .OMMMN:    .','.      dMMM
MMMWc     '0MMK,      .;c;.      .OMMMMMMMMMMMMWl     cNMMMNc  ,ok0K0l.     cWMM
MMMWc     '0MMK,     'xXNXd.      oMMMMMMMMMMMMK;    .xMMMMNc.lKWMMMMK,     :NMM
MMMWc     '0MMK,     lWMMMWo      cNMMMMMMMMMMWd.    :XMMMMWkxNMMMMWXx'     ;XMM
MMMWc     '0MMK,     lWMMMMO.     ;XMMMMMMMMMMK,    .OMMMMMMWWMMWXkl;.      ;XMM
MMMWc     '0MMK,     lWMMMMK,     ,KMMMMMMMMMNc    .oWMMMMMMMMW0o;.         ;XMM
MMMWc     '0MMK,     lWMMMMX;     ,KMMMMMMMMNo.    :XMMMMMMMMKl'    .,.     ;XMM
MMMWc     '0MMK,     lWMMMM0'     ;XMMMMMMMWx.    ,0MMMMMMMM0;     ,d0;     ;XMM
MMMWc     '0MMK,     lMMMMWd      cWMMMMMMWk.    .xNNNNNNWMNc     ;KWN:     ;XMM
MMMWc     '0MMK,     ;0WMWO'      dMMMMMMM0'     .;:::::l0MO'    .xMMN:     :NMM
MMMWc     '0MMK,      'ldl'      '0MMMMMMK;             .xMx.    .xMMK,     ,OKN
MMMWc     '0MMK,                 lWMMMMXOc              .xMk.     ;xd;       ,:k
MMMWc     '0MMK,                ;KMMMMXl.               .xMK,      ..          d
MMMWc     '0MMK,               ;0MMMMXl.                .xMWd.       ..       .x
MMMNc     '0MMK,     ,c.    .,oKMMMMMO;.'''''''''''''''',OMMXo'.   .,dk:.   .;dX
MMMN:     '0MMK,     lNOddddxKWMMMMMMX0O00000000000000000NMMMW0xdddxKWMKxdddkKWM
MMMK,     ,KMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWKl      ;XMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MXc.      lWMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MX;      .kMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWd      cNMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMK,    :KMMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMWo..'oKMMMMMX:.....oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMKxx0WMMMMMMW0xxxxxKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
jp2a-1.1.1/tests/html-title.txt000066400000000000000000000010121414624405500163330ustar00rootroot00000000000000 just testing
XNMMWk0MMM
ol'c0x:Oco
0X0MMMMMMM
jp2a-1.1.1/tests/jp2a-colorful.png000066400000000000000000001007071414624405500167070ustar00rootroot00000000000000PNG  IHDRWN zTXtRaw profile type exifxڭi sY8rdY~>ruʲ%pqq#q"Qţ2_Ǹ_Uq.~}>}89yѾ>s%g{;'ެFr>,4M}68oSs^gU>((-a1_X_5f}8x,! _>^}m6I;7Ox Q~;ğ6/`Ν ~~y 輢kg_x/&)_lgsK#MrxR#{+wr9aK~3vv^[SdW~ 7p6Ff 3Y~FhD aZ@p1W78R2D8H@$e_fM0β贜&I]GT6qx&Ѕ!ÞbM4D:4C+7/jg@}V5 _D"ƞlj Fi{B*]M?0W>\6 C5G#cR< `|a㥰S _Vٰ]4ײQYϽc'f(t@r4uЛ砣֠`*v9Kw9lI2 wY|]ϸ 5R,: >ss(]zI{Zv-*e;s,zw= Fo*XLPB2 ړTD8k{ ,ʁH6HU)kI,t rx孅 tI׹w vX3,jݑl0bA~sa[TBuCL5 ]!ю@Zh>=ǭvX{߾ ' '- qBfc#nO- #~?~?'!]Kk~SotbKdvoH,n7#R<+ZWռ2J1R*C1քdeCOM :m]8P,ˊрu7E]>cKߑJh\.1L^F_8[_VF~ՃJՌ5@ޟ^ 4k H'A2<0N[vilO& /|y!r該L)k"-`훶 uzn01xw$ۭAWCo!B/; ҫQ=:H<# [ nCkٌ'c ɺw uBP Nc.>+E<,9r']YZ*R[]>lHƄSHPQ lSo4`,Jc|DR2.UȐ.s*Ҕ55Ef-ּn`P.#O-#AHâf{͠vաǮoRoQ+_̓OxJqʆowO =V]5؋l2Mu HP<g}^VWlQ=H:376Mg3evF:CΎDz0W3Ŝ)7+/EMlT߻>|2*i6kfx#)@ȓJYN4k ^ktN"[N7zB\\{ quI>gt' LD,<&(- RȠZx]BepA?PePG60 8YzULA1+ˇ1҂WކPjGnN2pC~=fk0ޣ_(s@UVD4"]t VCڙubFUE7`k!8H 4DQy$a$qZv8}Go! @iz2#_k ߸\͉:!Qw;fr!r+g@B c- 2bPc>b5QR/t1'IL٨[\/*)9f`# 8?+BV#/RdX/1Uz}Wk q|/\#e/FLiCCPICC profilex}=H@_S*dNVDE EjVL.& IZpc⬫ ~89:)HK -b<8ǻ{wP+2j4l&bQ1^D}Ð,cN_.³9ՌH< LA*L]| """"""wnk2+ M`z*k2 }|p VzpzDDDDDDB߶d~ɼ6:E L.&з>\nΌQ(`d~\;9/k5GQY<5[ 'ہˀcZ[D(p ʀ@65M@*Z`GVDĻDB__.~(`Muk7ysڴг[!"hsw2j!\D'wv`-$wC\do/Z"":"O(ύ5ck2&a/07Eݬ/ILGAÁȴ>֫-(`&0|r%pu~GDtd!~g0v!&jk9gM̏6{Ӭjo?<ۗZ0X[S sӀW׀7֎*k9dBy$6#Wgyߦtǚ*] >k9k{yIv0x "D`𒯡7p8>|㎈^`p ʭmDDtn>iY{b{Zd hD&nv?-{o4iS}k7y qLʢ;pJ(t{-$<_F?tTi)}KRVZ3/fݚkO4g|L<Ǣ^6>0 '0~F;2D7p]7<B]צdbB?|=zk(%?#"'P4&6gm]=]`.rDDDBogM 8f`.ZL4]:d {#z0/C&?m9 | f"7UY|=|]lYxj|gMRߕz5%HéL4kvv S}_~ylbdv!g~ 2NEWDg$  ފMD?-o +;J/%Y/`>kaWӗ~-ȋ=k|L5ڗ\j-8;!is/ _C r7Dlch2j9t%ɽSd^v]/A<<ȄWJ>r&(Z=\G7GIU['> #Ye ,DQ{z6!{"?>:w {cOP`^DDBn^YVR _mA@}fZܻTMraIVtmذI %&ɺ:.+.#IAk&x_b"}P]P BP5,=DפaV=$뤘$ , }/Aw(hn`Jh p1ٻ-5DlcwhSl,I^ɲKim) ֥3KǼ"%$ikgZ䃯BoH]( ?w:Ǒ9>m0/ZIMz 0 Sc PlBGLYdDGB\ϧ5#zD;"l:2L9Lu)r5Vc._>~2w^)3 nPd< 1s&% :X#.ol?DŽ &[JUk𲽯yaq?[L#?͉1|5g|żH[kswڦ7Z@%b# f5ZydюX2oMBE;.}|{XkEnVhjkm(PW>עUn|y.;2ugټ,:L٣{W6-ȲE`WD {!2&vsT}+hʭDkǸ ?'"sI}"Zb6:E pʐٽI!(.`o3"d'%SvwE7e>;$7}IIhM?_WoO)[rɗݐ>mEdϒ栥R8h>9bž=P@n6pa3 |dCLXtq\{غ'5XD&"_hAV41xkMA[ϥЮſݷ&[IRr&fm"YA Pom>cj-tT?{3Ip5)!d?7ͺT߫M!&vϳS5{\fUYsWRw}zk2uk2_E*_[J9 8dzMff|5"RAC/MiH iy)6Q Scfu92/Ef !OEk?|cyy P{!IY6k-u/torݟHwcr˅i+<.wyaj|5QtPC~+/# P>5LJlub ktUkm<`~ΘǹUXEnϿ,Gb I-rnpOppO K ccLJ{k.wMp } '|U,^YD(k[b6Sya;6 l#""9 10I M9k6\o!XԛH{6%#"GDDl!DtPS=m6oAjJd6^6eC_v8p%8 nE7܁*>7a ա2p ɂ+9|G䷟dCe'etTNvh-)ɶc< A"J("" (.$&$r!$p.GR|7 8o?Bf_"cm{}徆i(oG &ۃ-L_0߄^k <Vr[j!)w@OjWm}MC[0fD!#" ',C Zrn2E&@$˯6"zgX--%VL5&PDfFkȤAoۅ7-n_{ۭ@>  >& VpLpYԑT qB_!0w Ռ%ˋ-s:oikG~vI@ (|HBm{[A )rw]>2AϘIۡ~}- A/K/^zZj /u=R}fD$􈈈-EH̛Qx= lGa}d^vO[詳VۭA)swա\^C*qDD#"":"]Bmk#"6DE=+=Dlm菢pP?]\@-boLԁoL{ U;"" ɺ;ߝ|tcn(lU$ZCP Q4kVg+c].fT ۽NRLUV}kQd{-ZVu&ipI|d x 0kvBcK-Qn9>(7yAJ.""zD>q^E?V?ζIZ*.VF3i'AQ&VR=#g*~T.w*dն]<,L7&"K`wv>mW{p]C=A["ߡ]S;Z0묅 ,v@Ar w2׹,΅UF@lL'\?h̀uB֜V<rH)?k {X8:Bo߯}}}|0V_HVTmY,EE=*)J9W0Ɋ*b t9l5 7To^|&ǀ EY__=(W|c~Bȏ"ۧJr-;Th p[U>`R[H88KnEC \ؕ L2? --99*pm4w9l95ʳֺKQ/<Yk_v%Q*Wv됙k硜-3i0}߀X)>2z|Jxm-Y\" =Hǥ_}߰ZY]Б܋I57dN}3_Qіz&g+9-N[XCk[]O{ Q|^kmWTk#k`OnzdY B_n0aw~vڒr=?ږ <7=jd/= FښT3#weBoFf+YsB俇EG<y`4W;PT &}+y|o5 /broBzz=>e<[zY`gLkW6WED ُ7B򏹳cpEd+F6C&2l3aF$h-Ȥ|} tk&$Y3 ]cccKAIj:6@õ"mZnЮ]6?"G_Q/2ULkEvb"W/xAkQY=p2 =M팂"f_'ZZ=qA2(@ o׵Vbԟ,,z]n֐Khh[쾋`:X1R5kP}w%e!hnge-zDgNOF1*qu/=+t$F crh'25CKSDuGnLa?1l "7TT'cYanB>Y31^ #S4~)rAf,m5 ?9(p"e>|_gxTK)"+hY܃Qg},?E&/y-Mh7BEZ;f d|^J tW"1?d&6sIu|[oL̠԰=6ΓSZ(k=E/BQz>Vo|9`:Iৢ( [L,}}c4lOX9ۍ`1BɶҴtD#8KHH$O/"kokrH͓w5"O܂r3$g_IFd֚h|kނ‡ IDATbJLGY18Z uodZg;b6M[<8 bkml^L[k?=s֔sl.[ݶ;95.?VT13~LƗ Yx* Z(ukqS9z56TAoߍ|a#iyBk6Ml6B[m˾ӟ[DB"\_Q^rw#6b"? @P&t8r&#Q*`odJ L@Aq=7pPc*w덂f dj퐪VqʡqHX?=c w}~*Rt_vJ & y}LKfWXnMmQlH#U29(m/O/"jf(bTz{ٓT&%(@l/_B DsBAeך~Ҧ?o6)Z2?EܷXz1uIILQP:HOP[V{Sl@?F/@_A-{]6 OZt4Bik[#:!~֮X\nfm39$NoCWMkxZp(8,RZBgIrNC$ecB(% ;3fVkƟ9r.>wXoO5YiT~ؒ݁$bJÂ܅LP{ b4?hPo{(C͎Fd@ Aq`l%*#hRk֜KqDǕdA&ў?擤Z c/9x 4)amy Rc@R{*i-܇͖"d*2l%͑:7AeٕsmJAi1AwZxIIv/kAՂDFp | .c[\CM&s=~3P|}t7wM'X*ۚk>CshE֎,j "k_8 kY|+,nr~hͯL,Q [ZpshIUȍ3֘ԹuQ M_V-oSd+~^Qŵ8I6PuتI6ՓDcR Y?*6u\H;mGɧ5a][S|NTkYkOؒj-򃉈\<`H*x-1@g*V]2þ߶7ڊӐIkd ǑixfU[;bOp2ņe$["""Gth\LS%+[3UaAPH }+`;} }2r]#=e} 23v3s<ր5w& ̭= O q2a6&;ŖsYj B)jxY8 ̊zDD;i*G@$-a(XPJrҥK<~D)h(,d ^݋j, ="zDD~SdRgm|ȼچLFUʭeK"^g">Ag]:Z;? ;|t^(}{ EFd(n@>=ca)dYǠ:TN#~L;{'Q(\WZ$Ψ[Kg!UR~b!ЈL''a&PPeZEqa!+mx cK*" E~NdLyW[X;ϸLev{p"rZ<HנE&z*1'>M5(2y5k=gMlw$e#t߄rG^@b'L Q@_7?PY o/4BcH޶ V0,R Wc(ా$zDgWVTOcy#oޗ#y nI 7-gk;Yqj^avDa5/9w[XkK(T pX *o'~ @)P&͟(lHWwİIK$j>DU4ѲEwG&Iy>w!+\ ŀ~?s4HXKRQś&|`6i#E擐{{ 3}Ц"Pk(`i2EiY?L})2]$ ĚNIk%YE-L鴵ũIiͭbR'ooşJDBY ] Ocv56rTkp__4x1ԅǽG_)As8YlnLi߿Y$e?:jr yIH팗x!]t3h(h5$)f+<<ɓ|'QD:E? |LGh`D?RPIt:].7hӸS2BBH]x>]Xc:E3kYF7򳇲#Q 8 #_h=_C1 _" #M#_9JmQJs.ufsPR>%%إV+I]Bv lwsZRRmBM~( zQJl p )?sQJ[ҐJS0BП$8>E3M(pn$IZgz?B97}S=L|KP둉{I"{{xg=!x~`sQ9ZE$Ѷ4Rs-VA!# ls-B~gGܓk$&اĮ/{{ 5`"}Ȃj E-tO&~4}L~*zAU$cgZ/qS6K(v3o;ǭ/C עbE-@[EMҽ%ʂ1HyLd6Sz[W60=EԳY?mmE] {HZIL<tI7,܊R8ҵ|@fwx̯,A \d¿xϱ Inۂb1>άq[:œ^`hCPdn?.k_-砉($Q`RwOunw2ǖEY@Q; /BTu$#͛ٮI"GDD[n<;|4[N@H̢#=8k>ݑ{{dfsA[%,~g J<Ǣ#M-l"_>l{5 @{ "Yo-3rhienW֣D?:[eB}H"gh|:o6? -t{RBBٟ#I .m-zDDĖIVL#&*&=U?|ᠠ=>a`C)j9 J5>>lFd'𮌻lǖWIR 0 E|+EףJ3MrۭY(^?,Z@%{%)W_o?|Koh߳/=۵{|I9B4Gty;STYagT$QkY?*=$l>צ["g-84j_vZ|2Qޖ?Z ~f7 2%@,rw[h Rw=,l,4ֆVR Fy=PrLGZδ`IYlEe=KPȝyx[w=sIk}o>uǝ_w}~PS7O/Xn` znd_N $8m>~(uA IDAT:6.LO<ue(mY^c}y(kP"?_}sJyb>FDoye7 p_7cB| YS B;U$tSR=[ dk;64*a^OEi}՚/Eb@R`#0-ݓ_HTg x"=$Hpy]$>$A+Q8L%jGj"bMt| E KjjHҺQ@kޞj- EƟs,A|>lAd_)!{OD[@y(BG[h`ArUoQU(/E& t{Z|H[ 7Ѥ6VH]鼋%o&V'{5=/2?"Mҵ3dMtc6YwxҿZַa`q;a[j `QoOF ,vERZ1~-ǯFPy_kKMYbR_VZx_Oh r%ZC1xT =n\>_i[P&tpNB&АQaXz֖ҐbMnWڮKWrY-?7o%UlAgSX-pVjT1|ku56ݓ>A3_dҟkJJ\9U(('LW!Xk[Q#Swߝ~ųךI_ }=Sc7~K!zL[<Ĵ*Xoo6[;P|s)"Αm#񣷤ڴnvzڡk1yZ/E-5.*FDJ7^ ÔV~ DdR/Gi3M'Y Gwf4@iz&XckoG~jkaAfҳL7;""zDb"~?2@f55((9\Rꑙ@Խ$?/(H [אXZ,P<Ҫ" > ȏ^mdϲ 5f*?2Gz-7KQ|?-~((1h>2GXxnFfǩJ] 2\ 7W$t؅bk( mֆCf/oᄎ%QpV7W (nWk>&Ĝz8 z4wu;E/6i\d8[Ezmj-1L[/hFmPY-kagR^w|)f9WQ^}IU&YttrBC) >:o5a&&m'7I|}'˕_GRiRo[{̮ړ\S1͓*?w[$]hd[/c04[Z9‚)mnwjgr߰IϟG9O?[eŠh7W="z/NBnfoUJ-Vz .6 wDIy_{cdA׌Azhrr#GBp^^QEpW=.Vra_B֓X0^뉪ĚF?{OogḪս^cz"{_f˜~n V ##Q/RkߵnVu5oYS,2O:Z,}Og(+A.D rTd_^hi(sD%(F7xB& omE6( 4d:仛vJsL@!GAG=Ok{!?`_](T䔖5{kt?w=I ؇w7j__΂^xx0$F4o?ʑ[Mkm$'znWS D!(כ""֩a_Voq*X[*28[ɴ< | s )j(hZs D9$¼wj|a.c`EjrֳjpX40RaUjI5赩vz֏Ogw:Jl{Bo4X}# ,w5=r?٤CC!T>ۋ.]/;Y?:0x +;&Am+"/-;#v2/e+ڷHjZ\2뭥pn'zuܦ#_s/:~Y{Es_em9oO+'!~q,8iyV}E7NuPZkVY+ x+1`|qÅmU'1pZ{Oe~K-Ud2ao 5j,hU=xm;e)ra<2>{*GnPZ!u{XgqhYHo FyG <ĠwF*l%on/$KυS^nGJ0]ڿ҇V-0LPї}QC5 hf.W?gAL 4Cn(J=/ob5΄5mA<D׷ۂm$+]Km8sF@FBܝ*)UT1>*9ޗlUޗwB} d6˵c[pmRC='e"nC$A1 En7׿g+M&b7$b5;d X8 UB=N$œ #oK (-u`IMcO{!֡6{ޛ|{]7Y5zɤԓR&QCZS].69Ժm? Yyr,F}жEW ^A% !_n~2o?e((W^}}w_AAM|V}5=P($\?5,pGD+b{Ķ~_@CE$VAGt׵3cs_ 8d RLon\v( D}䇐ױI|WYX\O2iuꂏAl}PJ߁(ETS; s f&]zߙҔ$?$edȞkM~M~Btzx"QK8PXKR /u85^M]w ='܈Dc W>VjjbJg\kHMbmHMx,Tk2 =}ol@D+HVb˘Ъ]:-ha`pa^s@aȄfklOML )0r=D* AN¤Ic9$(`nw@5$iN[ --@dסHXm!T ǡCjUα"TS+}6Cg"|ӗ4f䳿!)>TBRŰ3 (/_}|ǹKY>jk֍t*Q @wW|7%+''lWĴw/f+&m-t #kH-h) >)̡01j$ UR ?E⯤ڭDNK]}$roR}_E@K.I )|I~t PwqZ"IZ7|9 $QNlUh"IjC-r!4"xox?$u rR!>P7cבYp$w1r9L8de~~`?"&ɽ(ovgB.DhI$%<%~Jqy1szDD=t S{:j5PPOIfMʄmBZ8ͤ2AunJk~ $+] e ~:Isk$>@O4GmIXm^u/6"| x_d[ M&6ipx 7+$5M#w{rRee;5"_anwɻENˠ7r;}a2BLw67s_ʒIY^fo";]X=dGn|H_%?|ޫ&@šU޻\!NL#" kO;ld_ tucץצ5~Te)-tq:u̼TY6K78fnݫk5TڽS`L^HD6TROsW=yP=y~F&F[3E9KmY8vIխ(/r@i_&<W0[=CwyUe4tI@[i*HR@B AFF@ԢQPe鰌|V#Ё6T--]oY=ӗtKҼo䓛s9rc\Fa9X˰@Ư⾒2XJk|7x;˹Bz lA̋h!OMyuKX\C Qf\P=lVؔñ|hrQ;"g>rv7 Z>6tNڱۢR}WSF{mlhF*˭|GOHQyȩ^}MϲЅN|KAp&Mh{丧yZ_Fkg$-y:_k=[DkjBq,@i>(kEK|=l.}\gh:?T nE?,Z ,{-ټǁ鑯siͦV鑴Nb{)Y`66vf7]&7WƦٚ6Y|Mf9߷mֻ#@,w?LX> cSE\5h5X ,a*`sdz`٫`s Ka&PA-!Ľ a.ѳۛJOg)r:'7hG\ !|C!^(!Ǐ[S}ӄHw+|\kCkd]7"Ϛ6Ez~V_pN wOU߆[_uJ*4H"W呛pB~yJfYۂBjo뼈5V(⵽^z/"/kDu}!ms B\ԨoJve'6axRAuQyD̕hlyQr;l)5JKM@/ŊhL`9+Fȳ˻){amoYFH;@onn "H )i_zC4cFCH,A-M|H eY  TH m d>c3UX:%5=ݜnzJXc?u_4RބV%R(J"7oy ^CW[/κ-5^V/K%ew ef[WGnb[ݢS4{;IDAT[> >R6e@~>mFn;?Ѳ|} -{?P@N^Vɿ~ C5 >grǗ¢Excx$o_>*sOa>`{=dNK.[;4/?}l?wW ؜q8 42'ir ͡ Q¼=ڋdCt܀|!榺şnnDdqtw|]f2:OkkǣANjDYW5 {.˩CmTޜHqsٿ]3;*]ۊ>JAޏx*K)N1a9|VD빘c8>RX|o,kSo(`w56OK zZ,SRN5iWQ[ Ym49K#R9lC 3ϯMq;Sco|3,.T"=hՇ繋}Ok!VB!y [t ӏBۣ>`0W]zա07 #, =鰴Bb#Mr&w]òSي8J`sܯ#KWP>V_~g7ۍ?a>q7J[:>ikV;24 2UhD{ik|%gO9w7FB a5<˃eBrz_^}5c|T#l! ^.œGenKo˷/) |_W~({ !m)ϲ칑xa-@s,`;XCT#'%TF%mX0(*|M%&f專"-Ϳ>KWK`gT'~Q]#,D |_K?.Kn*=1kLeels 7x=?;  7Z Ϲ loP`+J[c)v9NTGݸ>{g-t_6:wBJ:h |#~9&s^g=^tf\_6Oq#64g"%w|!nRWR~!uԹKoss ˽yWGǿfޢU XVw!ao>a$9^]BVL 5T|T$}l̦l{\~E~aSY#˺8G)g=Ǒ YC`S/}]xHEKlյt=`)u}R 9%LC[$S?OhX;@ަ = lnF-Jr9߹=U]~9W:rw|S42aT^s5s5x^k߯4>nu lzzAN[ rG/:*0(l=W|P-Gg3-BXK^My-ev{E!>|^OQ!9 ;?Z_=GXϲ}ݺ-b}Bx sYзBϩin+z0p-[2Uy{vBnq#a"zD /+I$Pzoyskn?c_JW$\}m&U]SʃcB4Rm ,/B>H R! ! ]>|j p`sS ܽE{g KC IU&\Q:;p=c"8=0=6{3,- ˽֧h6{+DVސµ+ wasv#2U"* hbV K92 &a׵vjPeB]KS,n*0el>rG>;ba.`p}a ,`X@S)ka}Jp*3r> q?: ǥ2}l6ZS؜1b)PQy9 `*>Uv|U l2n9A]"/浓ک뵝hEw/تy8wcc8/c[6?.vd^ `R4h]|ޕ!W+a6oil,NIn͹-:rʎq0^<]Ӕs]Z~^cTfl ؜s^<mi˩kLnCTs=>Ɯ\S}?`S7s#Xn}ˡ~V R@*ds#E발 0POaYMK|| C=l`?fϙ/xe"s z~Ϧ\e썙*ܗ8X>a$T¾`L s|x9yėo Kt\)m̫i]_dh &_ş`TK^ve>C{_ {9VlZQ+yG+ޠ]IkMpT F", z%N ϰgi1?s6AqXcikh_FAUh\po|>'hYov yVjl쫱<~-7iʣ9o%O'}I/HޯA B[BVk yԸo,!9#342xX^v}Sd۱7ٶ~kgۣ]?w5?YwSd?}+ȵItE}bT%yE35kΎ{ 65Sa1~9 `S,l{_@R@e7J}ZAepZ}#ڷ=('!/|ak9y2mT|w'l5aW] S{R{ߝ$iZJ{'ېКۗPju[Km{0B*FGI /B>u:2,r?GaXJ ZͰ?O$1+sSi{Cǽl-T4Nq1G[{*#`հ'P`;$~ vB'͡kw5LBHwt&B!$лy2 !]Ay;&B!${@CD!z,mB Pt~A [$E!@}_LҴID!zpJ;SCD!z[<go>x`6^6$M5I56!"l+k.!}ZOg++ޔ 3rLc zB3Hule nsEh B!z@PxXIS!Nq!I6+B!B!B!B!Bt+[)1IENDB`jp2a-1.1.1/tests/jp2a-colormap.png000066400000000000000000000236511414624405500167000ustar00rootroot00000000000000PNG  IHDR}GzTXtRaw profile type exifxڭi\v3 l 3-2R떔y3OY rO\ZVϟ<7o}{Rkھ~#ؿ~Iwٿ~ꊟW{z{U~ 7 7J1ߘ#HCbPɿOJ w$o[sGG0~#o_rsD_#b fD~+ʻD/Bi~?Oo|{ #Dr]an8Ղ1Olh1zjqD#GnldoN.-ǟc B;ph \,p?ˏ`OWT]3 eNr ~KaT3)̝ N>X%U[9q\B!ޅD| |@; < cNFb7%֨&QRM_$+BܩYRɥZZ鮌2kZkR˭ZmSϽ[}9H``usF7Z'ʫkie+VYasǝ60n 'riqn[o;f?d-|_t\5>uD匌xS(訜rʜrG)JdEq;(c0 ?sWWys]R9G5oا S"wt}7WԸ[n:cp{Ծ4Bgz̶ݽ!'LJsۨAC霶趓88[+^]]M5FUɀV+N>sӘ%w/)KgJ Y4-ŠO_B[0`[bI'ƙtZ[s[g=2we~"83IX%-KYHӍ|lEXw1[*I T-eMĩ2Ehy'BmGB2GTdW4i$ڸLVV38gR6\7𺚝֩"=pܔb9tkD$ْlm:,T:eͤݍeEW0f`];\7j;+3@ҁ-M)9w/ĥR+Euuo\9v[XҪtΨ]FՉçPNdSs viu*9n7u02кF#<$W!Ms8f2;)9;MbqS=9ihD/"BD%blgܓ+zOB99[QӉ4O+ڊy>Tw:DuZ6HA)p MT &IICT+i Q vi}`RPUNAԚN-(U2Iߴm&io.!f=H7!px- [H5li_<3 t FAZ3R+]C-)uD].M1aVN4,#P|06UlJfYS# 5j%=xd!Yu갯A P ;4E;I9iOY/J9wm"-]0<*2ᚼDɧQ݈dkM1Kݎ*ј\w_[DtϳQ Lטye[pX. ( kb1z".x9-؟(7ja҂_>aݻ2=K1pmI/ܮC@#1ԥ$QOP_ȅy#c[͢{f枣 HHcfj($QD PWZM#˗lsQk G G]BASI&L;25kiS!PZgZ,3VIMUsC.BQyDs*5FⴴK.7Jmk$z*@Fעo/;/z# :U'J0}dUZbm]Y|#}Ϡڠ&l2- vܷ}6'HHI QT`SI9~j!L@o/)ϻ6‚6ŠVRۗh66/LPtYjR.88U5L2V Tw(C`)@gk 06; TКf s/`GзYZFLh w@ II:xf(ʚ"(N.'h(7@PG"N>G鮂)M]\|ԅ4CS؋>pOg^΢y1Y aBƸAF/TÐvH; %4 O{c$'6'O>fn_\d@؛!a\Z.5 dJ #G r$ @M\1SUx1khEwzgg<)++?؍@kӹu] Ȣ7^-Qv"IB41̼•Sݚu`-eHaH8 f!.#0mZsm3B (B3ƩƆ>T$@R?QEעʉ/IF7s \F(uŴp~`MP=h׃FC@VhQ8AeH rS}f$4Ż} +ֆTPoP,+xdx3:FN>N>cy@cTä'J"F{lj0_N"!bD$<\О<C!#Bě(GI+-b$REתH:*z_C-|N$d47hS*vO4G&qTOB GJMץ%" q~AcfȖ,h۲TD̆b"=(i˅ ;~ 5Ak\8H#mjbk ͮE0JsUеwUFiYGs@nE%kRZoyՁ.i[^k<6"LdDgȳ.U1C|0!"3I< o8Q -%-fiwt 4e5 W3Gm hFd\0li!]Y anՠ3Xa^t{I 8[̷P$4&x>8ء8k>z}`MeìW{2KaA4md0}:xj]!<p\}8mO]$"\֚kVzZ6Rcb+ ir(-Fc@ځtriȈ* z ͗޲{# (*nW_& 4Z%8*.рpIl~ľ ĎZzS#%>d W/s{j=fIe] fOZbZΠ$ufzRN0*T>ZBpZh8b21 ҲzAf2IҴ4op !ͨ1i::#Z GC2kW}M.=Ӱmvg hhc.p^.Y9.A+ o&wit$9ByPҔ죳터uٹkV@Ҧi "Z8<IJTz9<ݐxC&z ?7C ܏bfU^ v\X1KCx@RD8TmZCx&ZꀯPKUNOrwƓPh@F-qm;B[3.jLXtJRŵh@@ yYڃD#GT}Fb̎vX"5wq6'ELFcZ׃ ph8Z!MoU6j ;0}]ԡv}ooc@͞ G32C`. 8Xl/I%=0_dђ YĢ>;zۜ3ʱ_vAE[ ~t H2Nɫbwk~FgARǟzɢ3Q @i >;7‍OT0'R,rd=u 2\ǜn?gnZTES(b#}CyDv-¥{k 8)3SIdK@Mlm"f}Z.i۫,* DU^:6bHT9GQٿ}Go߯+uߚ]U<j^/hg E=N`@=6z %%J"srNbl}Vo- =.|Z:<@l/ )TTD!jult-U/:io ꯧWZXu -_a!?S#tk !D:6&WB8hɍht(S|Zdog 3I@XUsI?ZLzZI\`2( y&;0gMAsrEҧv$`P$T Umoሑ~~!=xS%YŒ?UXjS^3''fmc`y&JZ'Us‚G 0cʍbdSa-;EP@aeb&iY=~tx?I ^?}NQ=`̨I#t _ y|V=DtU[=ghBC E&G[%5R9=@hf>ZY1V sT͞tZîvmZ"1.#CcGMg|nzj V+۴ͩ`F>67cR$9EDlH'I1:C40_CO Ǚr)̭b?@5V۵%/[m*x^Cx fhA oHS 7hX\{FјH* .v]w,JYX?`-lpm452(i!z7A_Φ(>K?@ZwnIˤ|Z74iCCPICC profilex}=H@_S*dNVDE EjVL.& IZpc⬫ ~89:)HK -b<8ǻ{wP+2j4l&bQ1^D}Ð,cN_.³9ՌH< LA~QNJϙT4rhJʊf#}.i: <ɼ8񓠏WRmpJV2\/Ec&?}NHfCsvRzUڄj2ΐ~cO[tێ @&\iЪd {_%8?S1ߎCmk qߝ>m @.owt(>="ǯDk eXm7=kpGGUy~wkU;W,}ڐry֐7':p7^;X4< 9ciCUw\d_Gy(A]E\K27?t˔Av3#(I]PNX2): bKM YfV] #t!=7Gq?jخ҃[uz--fnXCGBA:692loZt4̇glNB(o=!/X8fg< Cp%1,s:Cy1ݰ(q:z(%=r!¨vwctOƓ&Ynȗc,/gۢ#ΞP"$Mx=ioDA_#dd:[a (*? R%=·>0Pn*j$:dhp79o$ሉ,"ϖAy20@ól,Kˠ1_.tࣳ[%m{4J:;?kˠf~ / n~ܨxt24]ĉmQԖAߧ`ܖSīoZ C.]tB"HA5IENDB`jp2a-1.1.1/tests/jp2a-interlaced-16-bit.png000066400000000000000000001303711414624405500201740ustar00rootroot00000000000000PNG  IHDRpůχCSc~}m/П+? = f9a}6u>g_^xZ/>DiDi v=ǂS1cT3Ss|,! _>^}m6I;7O Q~;ğ6/`Ν ~~y 輢ʫ'|nk^/3^3 5KکqLi|빥&9+ʝ\δ9+9}}ǽߌWY,O_WXaWr\cg߹M_OOrn0w^K/w3 W ֳ!boUcXRj1NS.@I #SɹRO7ϴxߛ$&!Fn/UV:RRDJd\KZkNrr+MZm6K^{뽏# ʨ>PMAHYK_9cɲ֬0g)6SWZyAKw eˮN>ȩ~я=YYOҝ)}dDBz!q P4%&y'E*M,i"upGMBCQEǛL<9Z B,9:qO )}[60ՔV'#D&{wPR ;b~a |'OHx! T 0&UJFٺI콠Y$HWʦ"x'klrZ[]2=)V]Ϡ~=wix ߁k|sߥ7L'DfĒ^?y1,u`ͳ" N|Y;SOUy*]gTaj&' +3zjgi۶bIXXV|$y(*r\lT@ ಌvєa:7j=GRġR4بTf=hhƿYkh@b_=D)΀9t"ޚHc{27^sȡv0yZ oznO%9sݑ[ o ^Q_d־H4F9K>` b08oUf*&e3VHy2W'qo/ A-c8PcGVۧhCt݆filKAluE!N!AmG!{(MA y*+iWCBKɸTGz C rΩKSVNjK|Zv@Aa"DK(<'"U fbTC5ՒW%$rJMGA22O&Q;,C+=s(i>I3̊Zu`/*_WRd45 "9C,gt/B{+Z]-Gz =f8FR4͔}:;Y\lsB,gެ5Q}w(ɨz۬ v!O:*e91lz9Fl9Y'^ ep1brY$#G3 05h xv, H͞®#njqt =E_C ACbkondU"0MG.ƈK _yB!4P& %:k9Xvrmb5QR/t1'IL٨[\/*)9f`# 8?+BV#/RdX/1Uz}Wk q|/\#>c KiCCPICC profilex}=H@_S*dNVDE EjVL.& IZpc⬫ ~89:)HK -b<8ǻ{wP+2j4l&bQ1^D}Ð,cN_.³9ՌH< LA6pX^GwNk~[^xej? %xzՐwo{_8@g?n'o/ng;.LykL1s`A1wsWw\m-!%zW\NӋSq#?`H|0dq=zܒ{׃=7$cEˋ+r-/~1cܴAȠGsϒ->S\hp2e܃V(BĉªCZ=h4e=oJVnf̀>=%eČ)9cI!`?D͍cΑUxcp!eI+O _(^ %Kݳ5 V14OBu{nZ_<ۿeϷ/=z`yҒ$O/)WbMzf|WL+4E!Ɩ[VQhx Jj$Y U4OZRaHjh$cŵeZָHOV6z?i=‚m-T0bBAA`;>wjH)_bGѪ},yJXYrgK~%WX{T Voьҧ 褓"JP8J~[%uӖ9zP&yo7V]hGؐEgmMKчxQ;q{lֹ*PAe #QԪO篏 ՀYkGH>fNqC3/]@DqI# |G|`Tzv[8eAFzec6GӽpS&ȹqHUP#VY3DXqh`]7t2FZ m:>!XFv7H "w]%,ӶnS=aOQA6aㅞ6aڂ>ϒ^z4!1/=Y.956U3uAAA_3J&9^Z%A @b+Oh7T !T8\p9%3nOv8^`r9k`6K~A蝁._1E4zoA&^3oB&D\TzE&8B).@@L̔ԏTg@E*~`lHg AhKbģwh.T[\[nk5d5E!| G\=pi3E̅C=G%5xғJ|sIk_zi4}4]kޔMScazkq>L]̋/`- 5 Xl&Dx&&E!\nHKk"2ubϛ7=3gr~Px[ E YFcq>_v8555Ѽtz P"=l4D2YK&hD+>%홦&3()^ CO]we[Z+}VC;oq^@p/SL!}(qQ9\xKj&ܺ|;@1FL}=)-L19mĒ+Aiv@8RKkY$|UJcKhKrJI]:H [j4f5P&jr ~PTb)'48(R87r yT,gKZvi|ː+g6?Ky}#Dmqtr=/X)]fDDVw'.a+[ƾ )ыJVk_۾;0w9d!*mx&P.L; @&C >pu=('&*MDc&&̷DfJтwd&@pa,D"o.)spv@1}j2j~& (m&ަ2A ͢D<2uYO;22>_z|u!20na{ ߠBcѠE0YLyf\&j 3A0Qx `LvőV ~pira :'˦&z@mA0( ?]AAAAAA0Djzeb*S# . Y69`OtoyOQ?%lYhu]V=@f;󘒧TK) }ٵV)Ts˽@@6X#/fRK0HXzzX:0IUʋut,-~T" K@O~rS7ȒL3 W_]nzm%E;,tfM o;~kQ斖IuI J{`kxSZien/9>8 &pn6, zw[<^ZFӀ 涚XVj1MLyw|{[}uKZ73AV^4v6ZФc%9uNj76̣>zҖt f;h}iwߒ_;VyYHXb?AD:?jXǽّx\=v?@/~qkTAx:_b{%lxsJ>A Ԓ9_(" ߃hh{nc7Y+Hmd+Gqz5/ MH~G[rizk\s:>7SD(k]$Rг9c)KZ?y2b ڪ%;u26 |d n_uU}; T&CKՕCêKl|-Z4D6ݴ2}0U~jTf mKb`D/궩hea|%zA!2q$%D'NT5xuFN^>f^V\Ώ;(螻i,\㭷:9>xJv;; \MK O1Y)Up \ ' ˀ|T/9 r ~~rimQFm٘49v{@W!=*Xe;_>;g%J7b2Ї La덧?#dgcgoF;\X׼3Q n֔gD)Yoҍ :]b4y%ŭj˥^#3a2ЃqA5׋^TR8 (KPw '}=KuTI)<نw~HA1ٙ(xrӒ{^PBf֠BFnWXe\~c;קAz_`4|3iji 8\T`*̫߰_ݞwM(itsv|xv3'WM M^1d,о4u~ڂ H"eք8_xӛZ[*DNo;&*:kra=dIxSyuL呁>T*4MXI69?eR"-)Qa' \2#Ɓ(q3{ɦVTv># ǀ04: JyO;kԀB=~6"r ,j,!{+nšgD# ȩy?~zЭ6н&Z|FP.rNZX؄p)Fd|b?6"cH_0tckZ]vꑁ>& |wOY7&섣)ʔTTBc;J/@DQ:Rc%%c U%8a; Eb $ĘpoxCɍ7./1V}Vj kZ0RO9e1Q m^'xbLLH`O^Hr (5maɕWnUK)@1gM)mgpktSگ 2rϝe3'.:d4ywE/ˣk&q$7E'F_73o4Xb6 w}Y%T,LpEp\%Ld{4:NG~X3 Sg&|tu5XwƮ&3@ī}{W.54q8֒rq :9Y p1,-E #τ`3y@O,MD1e]A4`z{]Ncќ|o&[SyGuTXs3%L4&ƺxX0NJݕ+:)8O D|G2݅)gGȸixe|5U:p$퇻/2bćw}STQ~zIF2d{ȉOO]ʼna>wLiW{) h6Ic}fyw~|aG}SiWhld&6YF+7v,AŠ\,{*}7еU$1sz #Nn'` tA>QHl` z*|A0BC'aA>5zXA Vl1 "^T[ ;dF+g BZ)AAAAAAAAAAAd0&+ XLDpÝwΙyE ()Wm{R) '|؃CI6wWsŰXܖ}cJZNVկJ>%:i_ZI_DBx;6۔b?Bu+㎭b*ȑ>[zKZA. Va+i]{u-y%W] _(WK2ouו\g_zɇ>y-zn5@ = p䑥ƼBA%;U`UQj=¾Βݽ]lo~zƖ{|s?ܹ'v?yH'>v-2W\ndh`va5KJlX8Ưg.t%jxߍ#ߣe7۬{KJz~;K 8Y2g?[rZOkKZ>}nO/)ׅǿ%_^XE/jGL-7\{Az|)p oKJB;㌒[nYR٩я/<8U#s+)Y _;Koyo~N Ihn3LErg0$$9}))>Ѓ dF)J)xfx73ߋc`Q4\ WpLۮuRDAL/yN3$l;[=[n㎍6oJ5@+<T'ٍg _? i>$B=PA`wca=Qský_>o)ʩ:O =Ɵ̺ПIַDSQv?Ub~{oJv0OLp\I\`DMJC><E)4lP\ &Pyؒ(=].bzV:I C#l΂'_ny;_ڟ1%`aw~rޮK7>#zp8RxG _Iq2~Av=E?yjvK/z}oI #_]/iZ%A >)%wۭqǕ֒8/?*|vە8Êb~U;<-`0 = = }bP$8o{ɟ$<׮gn#Y_m:ױǶ׍v_]g>zlv{䭿~I9,_RITz땴ȁPvPck +=.`p]7.)G²r.Wu(((Y7/O^Lz2Yo6E)ql JQ>('<̻0*VœEΣѢ/G1 trs j\rO mU@4x!%?rP 41ϙ%Aң狚ǴHzt} 1w ~%=7z</T)>U5'Xy?$5ic`- քgS1d]c\(nЃ!TשOݽ>2շz@ V*);!쌧<UhT{~%|0kվ'W^Əa#i3xɰЃ,,D=v1`RU9Yk֩Nf{ @L6xZs@)# ЀHՃЊbԽo9(  Hw/\V/{[J f}tPLd,[mzJgUzCbP{u:n#`q&'{ 5؞bнBASruJbNЃ_𖯽.̮S.X6,e W^%eQqcSEk5J6Q Y =E@+e=[< HlZّ2?$'-]KVyjzZE/Kr*i kipuOyJJA2.b:Ŵ?`1$ŝyf;U*, /Bk>ӡYg0Wp?T'xyG*S'ow3ہw( 3Q~oPf RxB(Ͱ첒rH1n1m =P학\)K҂UlŬ<jluP{\I5ƄػSOZ!ѐS޿UV)dWzL"iʞg>8p{)p NWZU?YIm:3YRXW]*)(as^O\L=z܃bdnI)*|RY轆' SFGKBSl"O b<'=ݷ1Ǵ^bb;܎1n==*x n=xwbZ3kL:G$'`pbs38sK6[ã_KSװX4 xs5|5JQnXrUKnqI-oy%I P汊,* zu^u_Tea0rM٩G(`:Rcfۮt/h() D7݉l"4Ńkm4|-'CǓchyB<&'$D2):f獑`XN2|gdz:׿<2 d׽et%GwԼ ˽u8D#Iu:`l4Pr 0.:0b:P yH<0(? E+gCq@jyޘLqזs屧{ %Sv 6Pb~x*ãy4>@M&nL!eLP$C2;Gqi +dyv=CE4b:u;Y}ii:]6S0b0T(n 1(k2.)(P9^#n2AlAj? 4#d"L'BW%zrJ1$N <uZSCu@MH(HL~M&01m1Q<3)ϴۓCqQ(YoB|cD'cv$VuべZ.I&xǣc0+;"_o+ ;~V![7\;@{ԃwXx#6nk=C`8( )t/\-tחB !k,7:/AA@cP  }B(]^C  B",^{Z( Ƈ+[+E@Viy (I(ruF؃ `2^ w"?(  t'ADO:ANBbR/WSQAA)vh?QXgV[0 fz^w+nt)f;,ꪹAAAAAAAAAAAAAAAAAAAAAAA0VXaE,wWO/c?Y;3CJAQ=WW^Yz*yE (iSW}׽hgQ/ϫA 2ˉ"(rb:K^W% d,!Y|%+>'< ``͝wBÇ׽^56yUZ#V!?%/=s\*[nisᇗa׷ sK%5$`v``)RK,1Xgye{%[l {4o%?S?(y{D+B_mRr-J^~yK-U-P|[&y cC/n~Wy艥TRXc㍁Ọ{s ʫj=׮"{CKyяZ'3"Daceoo2%{ߒ^Om{K.loԧJK|{=IpK:;OH3OQs#; ]LL)o|_oP|F;g?nϕD;Cc>zbED'%{{PDO)h0`0{) JYuV^`ǵoWϚ?J>%/Ajw.K1pyxSqF}s24LA0@G$oQ)21je{SLdE9ێKOfa`;s#_ !x K>}u_Ի_vYGHDOb~ ȟ2c4j¢NSH RSrǦCB B"ŞpA?que`RV!3zb~1 b[4]Բnbi%e:I( 4bMcP̒x(ee$O_,yq%sJ|Jj<4zyֳJᮃH@e+c`J=%5?Yy!n(zwO|bIulҗl㷟7e =1AlZ,WP+Qb$a Ʈ l -d>5$ΐ@i+3*clYɭ*)M)vVBE7G}2E︗\R nQAo\hzlZwJjc? SX7f  BH-W)t|Kuֿ{*lVjSa)G[գSZj.^Ojt_~/hZrHI}P "優3^%!qS|իJLݏBB/z)8Hvvlm] 'dJfCD!~xwiȒb:n;1t$tSI:PĶӛ gHh d?3/j-<{[FG}Kuo 2yO=Ѓ0`:AzM[,W6۴q2{]Ikg|r{ش L;aPu{^WQ*) ^Bk|%(((Y;//Lb_RIIWƫUWm=w"]u Zse8S B؇˼2R<łw٥zrYW1[2Q(_T28*pPZyOIw%%UE.+_i !Vk=| kws!ێt%4]EPB#Z駷S]L[N3 j4X%b(3J-} %uʣus} ((V\R jgԙKЇZ!51D#'Y U{J¦Іk0Sս/ IDATz0K)*, R( Cc޼:n`lyiꤠ17gP=eaP(;()fr+u{+[cPb\}uW/ٯF+/yI{=T&'y# EBP0tw(p㍃د^rZ}4t Ƈ׾e^(nhal4 Ƕg{6t Gaw%~A CC[ߥ[%Lʛ2&*[ZR9DoeIt\rf+N0Obp}"0b⒱Hr# xrb>kL!g#Ѓ4&` HDYd+Jwԧd(Tr4@ʂծ,gTEq%YE&R@+{S6==x[Fu A^QA-O]}:^3$whVjɉJv ?(K1[ s?昒ꢇSAvS#C:ɥPFLRG_̂%h!]ʳX uƶewYˠv\WH&L N=,@=2xa~oݺw ^( FO+S,bK.9k8&X;JcG+oԠM^U5)i`v庠GnzMePyXeEbEP?$sK?oxCI1qY˒x\pA2yVN(G2d%<<ЃPvCV[PQ:T>eW]M䣕GI1.v9jM7ouV׍7.U0 m~ݲQALn1 D!$6n%Qۗ\RR#(n'?iK^RR[9\ 1OJ*c;Ս˹p EY07<ǵ,r0 'ǻ*\>BekA(vh'J)gCvK&UuqM&POPxEID)uTI}/D"y!ZqMje-KSI5 rb%;zQgQn#׋Rw]Nn~w=t%YI(HݽSvpz(1!p{&,uͽ1 :tvC1|CAwԺe?G;:  Vo.)IGPy̨u XʜǦnu^ֺE4Ve-wnԷAk![>}NT%}~j~a M=ճ^j 5*fSPmrJ`1z9E?8CCN_g}Uh7ضHt{.u{=gႲBu㖃Uǽ~%}aP UȁA>RI }|0ڪ<׉'u0ylgߕ4ثXsT}~?&>|w?S-8vc=t(I2IDL"Nѹ. B1^!ÇWcI Q* ׇr#]cap=sK!w3ᱰ?lbtxbo9 TRCImj2ћMh2m΄)6y,y( rK-*2#}KO\%AD^ d)OuL猙+qcsBg|6j;}~xޞWa^oؿyOw! =$UYsPWiEٷ#-j6R<7ׄf"hF!:GY)\<*pes$zċyU}C:ؒ(x(sl1@d?3T-4@Y7[6t%iL)tUG6J⾋j%zr˵Nsbl b LBoBqwx߬gϸy>>24>0|PcB(cS WT#Ot(Ru<]'BP`bb ׾Tel{|P;&b1@o_RCUݶ$ʜ!%iA7T`bvr0 gwݞ+@УЃ1#)E#)t83]TcGx<7]v3ʜa EIL ROU(Ivr ώBzuлX10 28[w烢.*ΐ`c{>}U`0Lw-v˱PM&[ځ"t;ÍLN>Q_f@?Կ,|9TKXu~0Oؽɠ-GwH =F-W bVtt햹ut Γ`TQby teynI{b nASb ֥r PϘc pu>E0@}SlEB?9HŬ8M[Vu}uׇ\9>ur \dKvA =zp5o;>h1:? z ^X0Hļ8y<)QݎY(,:CUqyn~wbh#Ǝ!Y;o-p<'w=ĵUG1T4R2I' 1 tPP鞣04<`<廞0p\b/( = $7͝7ܰ vCW1Qרn=Mb(nYjEiyRd&pT%*PEFEO}jkXgb&\WO=vXI1WYΖjTN%Q]3|3Ty)3a(؟PK3k*h*d%d1zۡ!!fQ0 ^t7ZUBY/W2ɰG? :R6n / #1!bV b00b m/{Yk*Z6۴ =`>0|c7Vq}}vI> A[&9 = } =qׂTYgpALLw;vPUxnXޭKqF_{ۻ{ϑX>qOql79cu{-3)Tj >սέ´_1MDOݞXnyj~9sȃ (ᱏlU)# *RO}ogK.i=SOͣ rRȫVem ,|+,H6jo׿ARt?                                        f, 6VXaE,sszK>%~pmmw߳_Kw\=(G   /O'PXayr}AAAAH| 9甼׽ftP9o{|AAAr>>mn+y# ~CJK~%sw.,J*"`K c~I|;K>iBA0ltJ.|+Y⋷py^g=D-2uAN;էCqoQEA_ֱ^{|fG=jbfMIU|d~udαN{ [qCߒ] }hO_:f5,󟗼}KqG[om?[%Ed^߲˖\bgQIO*yu|s ٍq&{;0laݧUVɽ J| J}to|UWJ{lWe9猓K.dE-iOqRAUWm?Anj-nρGDw%{XK,| ˝گ9%mg-ZvݵuVoysJnqKPNKdԞ6AA"rW^>]}u=H>{A0o]IZhAIяN AÂy&=g` &h;Pm!^)"4Vfml/\J!"R 2MD(Fy;_Um&'RNKw"ꚿ!8/y__Rʻ Eя.)%;)%Ӓ2 Q*p5o?_׿n= ,{A *=Zdt$,TIjs)wQRjZma;G59Λ-)ˑ]avj:9:R]Psl Y5j7?%v% !dy~Oz{~,%ޒP+Kyd{>?IIAA R`rJq?܋ f#~Q%@M6u;cՍ*#!:"W%~,sk7XRfGi9SZRZ7sLiU;Zz߻?z%.y"NoTQG8<؟yf{nM7 N01 vp=f`U=,٩Aߧ}C@|AӍO vܱ$S?۱A 7]i):4#ATSȶh =GnHZd?RE_pEVEՖ.+}K,;zw]E|KVC~"~Ex_}?eSReyqCD `)F33ϳUy׀ Va栎0'}v\lIq5@Aqa":7A8z5aQRju)2k+U\0X.,E]vjM5s\]u?.Z$]v%b"'R/^$W\ Txnʽ4#\"RWRC7_3 /,m9-,){Հ?q%EetHM?vH Q9u}*|p?y׻8 >*ַ +_)הC.1`Aj.1sp9ڶv.CImy?5ܶs.aqlv<9>o~  q_3B9~w:Dpl=gsws}uvwg} 1%9nqԃ  "`jMg0sC[g}/~Yg 'wbwhs:]Gq:tS9^DZ[geG= uiN6;5"ɞY'k&5ytKw=O wI`VQ?z.8}J.d{" q9'A->#.̃AA ).R~;V͈9s9#"DoP#Grȶq]9]KޫZ>rmsjԃ ArUn5EDSٟDE~Rw7]/,ﴎhؚ=%w߽n]2s))+z%E_JDb_ڒRRD}V:u]qEIЖs[z`~uKwVX;^||<CH|%~UKLf 6.2DuTvQ;o"bs9R֥q1B=g! ݚxW.  AW®A9̒"""̤lO]R<<%O<1j:zN243YRs:J ꫷ϟoy9u X^M3í.y%[Tv[ˋ^ԾO^RdJ*/C9xJ= )AA0eP3>%qmyMZgwu[ZL9~j焘VH?9ٮ]]ʻ,wjz[G隸9p5x%]HI!G sk]VR* (  !畜wdaAp܂  ^`JZ]Z$]:) ˀ ˘-|IM8ƺ[_]钿%Eʭ;jentNwzǂPx] fA  8Ⱥ_7/i35٤Zu8!Z#qiWR!mInKV/E_O̞. A8,ym?I%W\5>%E!BՅZQMZ'%5o;ht7=8nIg8uaDhj$?oj˟v-n95ԛ44W9lI ok^SJ~y7 L),?|0E~{3 8j:g:Gz%,iԧJαs ){]Rc&ypBIMSN)n-1q%_<~nϼw,bXQ%֑>(tB?%GQKJʔ;В?Ac)dlJ*CzW/|~d'<.N=5 n/]# 0{nmCϋg=lIqM$WR/yA%H^2߬?QG(~zIO:1z!կe':aW~Of>֞U ^|~Gp%5kDP8hAdAAe:{9fѮw5g>SL0`qz/4ALO~rI=d_ZH] &llPRoW]aa4Ο"袒s8C9?qN;) z8q'-, vک>aL R _ԶD%_?qIˠ/%E.RQGZO\$Oʲ9)%.""o|s.uYɔ*8j݇o}kvj%E`EpvےR16)" wKu<|%E5K,Q~Xe )"J$,쒈,HH vK}t7q~Џ^I%w%('+2W"Vy  R8r)nYAlaCJ9JSjjTǩQ7JZ.C|%E(sծ2 aXQZyj5mz>28j?R7۬},!~j}ց?O3A/CI1G>2EjeHW}J(\uU{}gT 75~4zgp|u9o{[D"SDA9 vءu{w;2{Pk} ^Oshs`9>H~7=>w߯.'ko$AL>++\]FX|}KRZ""bjԯHZREEuo_i_i6/(U6R[Ba?qm恒oF:3uDT}/=?]Í7i!.r,2{[nb/ X9Ot]e^˰,{'pfn{QN.5bm)DZǠ&%J 8լ> ?&*A&HR(mPDRFiaB!Ѡ 5hX/zsaʽs}|y9~ֳs੕[@HFAa!bƝC~3(&dD^DA7x$G5)pCIH%AnB>" BKpa8x~ :xu'!g8ouk/Q g@L!iF$Gv쒘`rp^W |#ή=Xꂋ-F(%>Dq%A~fsNr{AVwSAZunvAA=Á~1TQ 0hwp|קz Mmb)oeŖ 'u1~<޷Y_,}RN ˻/w9^,e(TAp9f=gNe˪U6ty]_O~Z(?̣ =yG/^_{MQ"!Ӫډ?Zx$v6*aC_8nI$WA0a.VV쪍uB'6bAcaw\DAjqRXgɠp5";Àd]@{<7,SPoy*V=is??cTh Uč@J IJD&z%}իR3 (@v^ RG00؉{!FQF=Es7<<%u #ÉǵnysOkx|G{ ?nḵ$i  R0c^ZFB <p\$ŒZ!^i/K3 e$$ϓ-7x+tM70?K!L2<_r? =?7&Z-:YN<2 )Gb>VQ|R-y 0tZf!=X?P^M-Q@BV.-S(!E\bآt?M@{q[pzC.A}A{M9QR:63p(8C eM>JJNJNy'pL'l8einX2.*@`x*.Yտ!TAVvm'N }O$)կ]$I<: /CH`GAL"q (BzEIF78pY5W\FUJuLjD䉒ݝmĖ\1xX3,菘R {4Xv1<ټ) A@RnN.Ɲa!ͺ#]vx!<< mse߿Z!K92T):ڪZd:AfăzA 01}"꒾]$8@!<ۈ' 7O9϶$!Yِ򔓖uٯeٶ/|ZexVtC"o2XI>6-:5:AL?(]{_te~j)u]#7uj{}+ 䪠0R>NXw\AzDBѱ6 A#rH j }Kyv^^G?Z w;>K%6SŎKԯSf!_] A<<2 t:rE s b 2n=QPhBG5>7\ ҂`F'GkCɓ-1ϔ&p$I3ժo );a[k߃!B^'=w$@B{#b5eQqhxV 1=lR-ϾE@( c-L/d~!A,Z몥(~j)b"֙ë%G^>jyO?ZY笳m`ǐƠHP95n#A̹d~w4C$Þ~$rm̓y!& ?{OAL$FЃ¬ONrːK{ =_y1ʓ9U^TwxW^9<,Yup+#"#]:C8q] ]jyl%CdSӟVe B9WC"Rp t. rQ?\/vZ3Oj 'ƅ"~1$H.v?GLYfZʬZ0pq?\!_|j%w]Vseex,Dg]#Royxm\j8Zl~BF< GUyUSHroH}o<ܮss< q?I9.Jnr ,2-zI~?$ʶ/y/@GAN BЃ  is0 9eOlϸTdnycH+sDGȝHm|sCw$NbtYW=k+d RY+~7F_[Rw;k,rJν "*۸y+p8e[Uy5|q./{ '֜ n9/7I7"xrh(&^㺯  @O~[7jn9~3~p ĎG?o4#H#qfwIE:_BNOV6V7݈+Àu2sΐ8|~oI  ~-9%CuשgH[w$ 4ggL&AAAAAy'M}I f/ɳ4ْO9re e d,cSrVw AdZZIsO6Q灥\aXx"0ǀƐbyfywIˌ,)h҄JY$s} 64,({Ɛ'mfْ1 ,%r=.޺ȋ_hHЕSEa@uN:ZJ ͈=H܃_6j6Bc _^nlJ3g&YϲSlÇ:FyHmkU6<$mt}.re  ăZb 0nQ&sI_qqDž?OVu[YIY%܉'8w9"4@ωxM*x$֜ag_-a@5RP91A.{^VV1bϯ\ lQz_rInK91h'l r_j'<\w<TnBuB(.$KFa޹O^`y ^~yT}zKqDdYcjX6:<,w1OHds0! b87I=R[nrWبB㑷Qt6uz C6Ti؈>ƒHz7DxȂL aۆuJ'E)$\Mkx!Gש~y>r$˓|Ǫe`Ԍ'M=jI؞17쏻b`4lag#A`ˋnyd1I'<*Sqssٲjy?qH8{2[r4Cg AFlsyylEJ}FTh[!;0H8?Ow;<O?#<ks~qDD-~P>"3P?f>8b0@!As8~;NW~hPrr+O$?jy+8NO!!zU2 `phܖ2kϽ}җpF_z leCCO* _]ϟW+73Ӻ̠踮>2z?M`zz<+lx.ܟWum\lH" uT6/lIby^;@a $qQѺjI%chcSff Q C9i: oVp9xu}.֝k?ڱ1 p Tpp 1?󉡍"H.DjQ:R0o_p}C(4T=y  SOc]菏猪Z҅YOpvmNN;m!^1Qq=d}?׎˃#~J. C ~ܞ kO"1b\!fF\KIdg͗Nnml׿n#qpx~jy\C@ @21{GU xa%07xA!!!A0 }#hS=N=:K9ƒ!qg?Њ-; 2K":b9.&GDNzu륃SwQ-5Cj<wQ$0b\IjIO+;}[-Pya@*7|>HhI4cXo=vIJ3Xu)6w>D}}xJܹV+f`Phκ0ey09d@|J%9:%u`U?ϳGY*?{8?%X7ϳym9F;Ŏu֧?:a1ގ #oƥ;-ixmݍ<= A ;P2nTmtl8ImK 6~6`^@!XmH)3"6$$$6bCAx!D鷿ZRnVȂuMՊ9Rd'qSktx#&@!m?sq6b/>jjx}[sÍ>/FX% {p):dyQ2I%t3$Iư(yBFY"y%c3Ϋ눨Sk&`^2(I|Ѐ`3b[$03ʽJ[,=ÉqG+ߧ4Nb{O%~= 6<5{6V=Iχ "IeI%6N6d<$ / .zx(z4>@ϡ Vy w= $<  ;Mza>0p~ '4Bv2r._^-);Î3)0|PxJyvٲj JqՊf0yAJm>\e17Q}aw^Y!} BЃ XG~Oe޳'n| ד69Ên( p2yqӿ^7ӟ^WxWY'o+ k/G!@< 3\?ä;ߩV 4% 9C4))A('Aeaa8ԜS$aqTJ/1ʴBl;S:>{orwDaF3/rC0q0Ĥ;~ʖ>> G޷OsL/"q}<_Asz%3@2/eL5N,{^vxsx~';x%"}|]1w~ ǃ ^=˿V]uEEO:<vA<}ݫ ~xw!^#<7`rz3"hw:/AƢ}556@5aPt'䑢@H,4 tK)Di\ bbϓ,X?,MOnIAxy8"aBUqZ5fs b)/BCVNNB:(X$c"daxA^_n*:Eyy G0BŊj($s$}aQł5A_/]ry"   )4# i ;   BbKAAA!賌K>#c!dVAAAAz,sY[   YByewT~aT2 AAA!s{#<   }󗽬^=x/x8曋zkfBAAA O>YK_:ezIDATϋÙ AAA!Hz??T[lAAA>c~V^4.b93#   f/7!G{ڷm\ ~뭋_AAA1?z%+؈eEȷ*<  `v0:z^uWl0Qxjw߽Q   A_|=;$<   } Ϊ3]pov睋?p|AAA vW+VTᆹ ,XpE/XAAAW ~z /̔   Y܋w\qܮZ C̃   &>>U>S_bȃ   &Sg׫㏟WqUվ%u=mbAAA0L\"KGo[j>SAAAO$Q_b(}W}3pCLΔ   FEЇD;k{=s}sΩ|wVAAAFul\Doҿj,C   `ډ+^QdD           f exIENDB`jp2a-1.1.1/tests/jp2a-png-colormap.txt000066400000000000000000000121441414624405500175100ustar00rootroot00000000000000 ..... ......... .......... ......... ..... .,,,,,,,, ,,,,,, ..';;cccc:;,'. .:::::::: cccccc' .:cccccccccccccc:,. .:::::::: ccccccccccccccccccccccccccc;. .:::::::: cccccccccc cccccccccc. .:::::::: cccccccc ccccccccc. .:::::::: cccccccc cccccccc: .:::::::: cccccccc cccccccc .:::::::: cccccccc cccccccc. .:::::::: cccccccc cccccccc .:::::::: cccccccc .cccccccc .:::::::: cccccccc ;ccccccc, .:::::::: cccccccc' ,cccccccc .:::::::: ccccccccc:,.. .,ccccccccc .:::::::: ccccccccccccccccccccccccccc' .:::::::: ccccccccccccccccccccccccc. .:::::::: cccccccc ccccccccccc .:::::::: cccccccc ::::::::' cccccccc .:::::::: cccccccc .:::::::: cccccccc .,:::::::. cccccccc ':::::::. cccccccc ':::' cccccccc jp2a-1.1.1/tests/jp2a-png-interlaced-16-bit.txt000066400000000000000000031266461414624405500210260ustar00rootroot00000000000000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .......                                                                                                                                                                                                                                                                                                     ..........                                                                                                                                                                                                                                                                                                 ..............                                                                                                                                                                                                                                                                                              ................                                                                                                                                                                                                                                                                                            ..................                                                                                                                                                                                                                                                                                          ...................                                                                                                                                                                                                                                                                                          ....................                                                                                                                                                                                                                                                                                        .....................                                                                                                                                                                                                                                                                                        .....................                                                                                                                                                                                                                                                                                        ......................                                                                                                                                                                                                                                                                                       ......................                                                                                                                                                                                                                                                                                       ......................                                                                                                                                                                                                                                                                                       ......................                                                                                                                                                                                                                                                                                       ......................                                                                                                                                                                                                                                                                                       .....................                                                                                                                                                                                                                                                                                         ....................                                                                                                                                                                                                                                                                                         ....................                                                                                                                                                                                                                                                                                          ..................                                                                                                                                                                                                                                                                                            ................                                                                                                                                                                                                                                                                                             ................                                                                                                                                                                                                                                                                                               ............                                                                                                                                                                                                                                                                                                   .......                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .''..                                                                                                                                                                                                                                                                                                 .''ccccccccccccc''.                                                                                                                                                                                                                         ::::::::::::::::::                    'ccccccccccc;            .ccccccccccccccccccccc.                                                                                                                                                                                                                       ::::::::::::::::::                    'cccccccccccc          ';ccccccccccccccccccccccc;.                                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccc.       'ccccccccccccccccccccccccccccc'                                                                                                                                                                                                                   ::::::::::::::::::                    'cccccccccccc;      cccccccccccccccccccccccccccccccc:                                                                                                                                                                                                                  ::::::::::::::::::                    'ccccccccccccc.   .ccccccccccccccccccccccccccccccccccc.                                                                                                                                                                                                                ::::::::::::::::::                    'cccccccccccccc  'ccccccccccccccccccccccccccccccccccccc.                                                                                                                                                                                                               ::::::::::::::::::                    'cccccccccccccc .ccccccccccccccccccccccccccccccccccccccc'                                                                                                                                                                                                              ::::::::::::::::::                    'cccccccccccccc;ccccccccccccccccccccccccccccccccccccccccc'                                                                                                                                                                                                             ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.                                                                                                                                                                                                            ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:                                                                                                                                                                                                            ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc                                                                                                                                                                                                           ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,                                                                                                                                                                                                          ::::::::::::::::::                    'cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc                                                                                                                                                                                                          ::::::::::::::::::                    'ccccccccccccccccccccccccccc,'...':cccccccccccccccccccccccccc'                                                                                                                                                                                                         ::::::::::::::::::                    'ccccccccccccccccccccccc.            .:ccccccccccccccccccccccc.                                                                                                                                                                                                        ::::::::::::::::::                    'ccccccccccccccccccccc;                ,cccccccccccccccccccccc:                                                                                                                                                                                                        ::::::::::::::::::                    'ccccccccccccccccccc:                    cccccccccccccccccccccc                                                                                                                                                                                                        ::::::::::::::::::                    'cccccccccccccccccc.                      .cccccccccccccccccccc'                                                                                                                                                                                                       ::::::::::::::::::                    'ccccccccccccccccc,                        ccccccccccccccccccccc                                                                                                                                                                                                       ::::::::::::::::::                    'cccccccccccccccc;                          cccccccccccccccccccc                                                                                                                                                                                                       ::::::::::::::::::                    'cccccccccccccccc;                           ccccccccccccccccccc.                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc;                           ;cccccccccccccccccc,                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc;                            ccccccccccccccccccc                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc;                            ;cccccccccccccccccc.                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                            'cccccccccccccccccc.                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             cccccccccccccccccc:                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             ccccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             ;cccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             .cccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              cccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              cccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              :ccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              ;ccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              ;ccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              ;ccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              ;ccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              :ccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              cccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                              cccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             .cccccccccccccccccc                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             'ccccccccccccccccc,                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             cccccccccccccccccc.                                                                                                                                                                                                     ::::::::::::::::::                    'cccccccccccccccc;                             cccccccccccccccccc                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc;                            .ccccccccccccccccc:                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc;                            :ccccccccccccccccc'                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc;                            cccccccccccccccccc.                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc:                           .cccccccccccccccccc                                                                                                                                                                                                       ::::::::::::::::::                    'ccccccccccccccccc'                         .cccccccccccccccccc:                                                                                                                                                                                                       ::::::::::::::::::                    'cccccccccccccccccc                         ccccccccccccccccccc,                                                                                                                                                                                                       ::::::::::::::::::                    'cccccccccccccccccc;                       ,ccccccccccccccccccc                                                                                                                                                                                                        ::::::::::::::::::                    'cccccccccccccccccccc.                    ,ccccccccccccccccccc,                                                                                                                                                                                                        ::::::::::::::::::                    'ccccccccccccccccccccc.                  ;cccccccccccccccccccc.                                                                                                                                                                                                        ::::::::::::::::::                    'cccccccccccccccccccccc'.              .;cccccccccccccccccccc,                                                                                                                                                                                                         ::::::::::::::::::                    'cccccccccccccccccccccccc;'.         'ccccccccccccccccccccccc                                                                                                                                                                                                          ::::::::::::::::::                    'ccccccccccccccccccccccccccccc,...cccccccccccccccccccccccccc;                                                                                                                                                                                                          ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc                                                                                                                                                                                                           ::::::::::::::::::                    'cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc                                                                                                                                                                                                            ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,                                                                                                                                                                                                            ::::::::::::::::::                    'cccccccccccccccccccccccccccccccccccccccccccccccccccccccc:                                                                                                                                                                                                             ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccc:                                                                                                                                                                                                              ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccccccc                                                                                                                                                                                                               ::::::::::::::::::                    'cccccccccccccccccccccccccccccccccccccccccccccccccccccc                                                                                                                                                                                                                ::::::::::::::::::                    'cccccccccccccccccccccccccccccccccccccccccccccccccccc,                                                                                                                                                                                                                 ::::::::::::::::::                    'ccccccccccccccccccccccccccccccccccccccccccccccccccc;                                                                                                                                                                                                                  ::::::::::::::::::                    'cccccccccccccccc; cccccccccccccccccccccccccccccccc.                                                                                                                                                                                                                   ::::::::::::::::::                    'cccccccccccccccc;  .:ccccccccccccccccccccccccccc                                                                                                                                                                                                                      ::::::::::::::::::                    'cccccccccccccccc;    .:cccccccccccccccccccccc,                                                                                                                                                                                                                        ::::::::::::::::::                    'cccccccccccccccc;      'cccccccccccccccccccc.                                                                                                                                                                                                                         ::::::::::::::::::                    'cccccccccccccccc;          ,:cccccccccc,.                                                                                                                                                                                                                             ::::::::::::::::::                    'cccccccccccccccc;                                                                                                                                                                                                                                                     :::::::::::::::::;                    'cccccccccccccccc;                                                                                                                                                                                                                                                    .:::::::::::::::::'                    'cccccccccccccccc;                                                                                                                                                                                                                                                    ,:::::::::::::::::.                    'cccccccccccccccc;                                                                                                                                                                                                                                                    ;:::::::::::::::::                     'cccccccccccccccc;                                                                                                                                                                                                                                                    :::::::::::::::::;                     'cccccccccccccccc;                                                                                                                                                                                                                                                   .:::::::::::::::::'                     'cccccccccccccccc;                                                                                                                                                                                                                                                   ':::::::::::::::::.                     'cccccccccccccccc;                                                                                                                                                                                                                                                   ::::::::::::::::::                      'cccccccccccccccc;                                                                                                                                                                                                                                                  .:::::::::::::::::,                      'cccccccccccccccc;                                                                                                                                                                                                                                                  ,:::::::::::::::::'                      'cccccccccccccccc;                                                                                                                                                                                                                                                 .::::::::::::::::::                       'cccccccccccccccc;                                                                                                                                                                                                                                                 ::::::::::::::::::.                       'cccccccccccccccc;                                                                                                                                                                                                                                                '::::::::::::::::::                        'cccccccccccccccc;                                                                                                                                                                                                                                                ::::::::::::::::::.                        'cccccccccccccccc;                                                                                                                                                                                                                                               ::::::::::::::::::,                         'cccccccccccccccc;                                                                                                                                                                                                                                              :::::::::::::::::::.                         'cccccccccccccccc;                                                                                                                                                                                                                                             ;::::::::::::::::::.                          'cccccccccccccccc;                                                                                                                                                                                                                                            ;::::::::::::::::::.                           'cccccccccccccccc;                                                                                                                                                                                                                                           ::::::::::::::::::::                            'cccccccccccccccc;                                                                                                                                                                                                                                         .::::::::::::::::::::                             'cccccccccccccccc;                                                                                                                                                                                                                                         ,::::::::::::::::::,                              'cccccccccccccccc;                                                                                                                                                                                                                                         .::::::::::::::::::                               'cccccccccccccccc;                                                                                                                                                                                                                                          :::::::::::::::::                                'cccccccccccccccc;                                                                                                                                                                                                                                          .::::::::::::::.                                 'cccccccccccccccc;                                                                                                                                                                                                                                           :::::::::::::,                                  'cccccccccccccccc;                                                                                                                                                                                                                                           .::::::::::;                                    'cccccccccccccccc;                                                                                                                                                                                                                                            '::::::::.                                     'cccccccccccccccc;                                                                                                                                                                                                                                            .::::::;                                       'cccccccccccccccc;                                                                                                                                                                                                                                             ;:::,                                                                                                                                                                                                                                                                                                        .;.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            jp2a-1.1.1/tests/jp2a-png-invert.txt000066400000000000000000002731471414624405500172170ustar00rootroot00000000000000                                                                                                                                                                                                                                                                                                                                                                                                                                                               :NXKKKXXK                                                                                                                                       cKKKKKKKKKX                                                 .00OOXOK0O00k0xdk,.                                                                  cKKKKKKKKKK                                             .NXXNNXNKKK00OOkkOxxkdkxl.                                                                KKKKKKKKK:                                           .WWWNWNXXXKKKO0kOkkkddkoddokl;                                                                kKKKK'                                              :WWNNNXXXK0d;c;xkkkddkoddocod;                                                                                                                    xWNNl;;d:xcxdodd:dookoddocdcc;                                                                                                                     ;occ:            cxoooococ::,                                                                                            .kNNXc                                    'ollc:c;;,'                                                           ckkkkkkkk          kkkkkk'  ;KOkxoooooodxOKk                                lcc:;:,,..             c:lllodoollooc:                               :dddddddd          oooooox0kdoooooooooooooooxK.                             c;;;,,'..         ;ocxlldlloolololoocdo:o'                           :dddddddd          ooooooooooooooooooooooooooodO                           ,,'.....           ,',;,':,,;,';';';;';,,,;,;                         :dddddddd          oooooooooo.        loooooooook                        .;,,'.....            ;.''.,.,;,',';.''.,''''.;,                        :dddddddd          oooooooo.            looooooooo                      ,:;,,'....             ..'.,.         .'.........                        :dddddddd          oooooooo.             ooooooooo.                   .c::;,,'...                                ...... ..                       :dddddddd          oooooooo.             ,oooooooo;                  llc::;,,'.                                                                  :dddddddd          oooooooo.             .oooooooo:                dollc::;,,.                                                                   :dddddddd          oooooooo.             .oooooooo;              xddollc::;.                                                                     :dddddddd          oooooooo.             coooooooo.            kkxxdoolcc,.                                                                      :dddddddd          oooooooo.            'dooooooo:          ;00OOkxxddo:.                                                                        :dddddddd          ooooooookO          0xoooooooo         0NXNNNNXXN0d;'.''.'.'.'.',.;                                                           :dddddddd          ooooooooook0KNKKNX0xooooooool        WWWWWNNNNNXNXXXKXKKK0OKOO0O0Oko.                                                         :dddddddd          ooooooooooooooooooooooooooo,        XWWWWWNNNNNXNXXXXXKKK00KOO0O0Okd.            .       .  .                                 :dddddddd          ooooooooooooooooooooooooo'          XWWWWWWNNNNNXXXXXXKKK00KOO0OOOOd.       '................. ........                       :dddddddd          oooooooo. .ooooooooooo              XWWWNNNXXXKKK000O0kkOkxkddkoddlc           ..,.'...'.'. .   .''.'.                        cdddddddo          oooooooo.                                                                                                                    .dddddddd;          oooooooo.                                                                                                                    xdddddddd           oooooooo.                                                                                                                  .Odddddddo            oooooooo.                                                                                                                ;Kxddddddd.             oooooooo.                                                                                                                cddddddd'               oooooooo.                                                                                                                 cddd,                  oooooooo.                                                                                                                                                                                                                                                                                                                                                                                                           jp2a-1.1.1/tests/jp2a.jpg000066400000000000000000000532151414624405500150610ustar00rootroot00000000000000JFIFHH/ExifMM*bj(1r2iAdobe Photoshop CS Macintosh2006:06:23 21:59:08P2&(.HHJFIFHH Adobe_CMAdobed            2P"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck5 ipǵ C?HcӃW^lk}ȵml۽%=J=< M 7v鍻wnܘN2>s(ޒI(s ܿ'V f ^~o_ZǤ^Cbuie[e { lM}_׻$$zEzWcg>5[Zy?Ƨ!4#_Sc5??T(O꜒/#'/uo$kqmos6;Vm>ٛKykK;wzƷ9;땝A670.l2Η(kfK mLߤ&_V]+>{6z6<ˍVno~wc1pqCXc@kƏZƵyY^WYV4鹵6??k3i}~[-f ?8j?ħ?[ZFQ}+׮}}wtnѮ8 w4PfWgMy_߯U1e=)9we:7S?em׫_#{oun%k7cl}eW:J˺wT80zCٿ"7깭Y(aێ"emޱUS7X.Ջ]\XOwo~׮u9ĽέnĔjN_I9.O2_c 3Ht.in;tV4s]eף~Һ;1;r1Ĉx.VqqqٍS(hkZ?֤J`WUmvsND9k\SoJ|^Y?%lEgo玢Μ}qn'}H69[)v1h #f۷`}Mʜ@Jy7*qZlCtn1ѩ|kA$}EӮze-:Z֨b@2it2>U+STʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$*Photoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName iso-a4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName A4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH/8Ag{HH(dh 8BIMGG8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMI2P Untitled-2P2nullboundsObjcRct1Top longLeftlongBtomlong2RghtlongPslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong2RghtlongPurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM8BIM P2.JFIFHH Adobe_CMAdobed            2P"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck5 ipǵ C?HcӃW^lk}ȵml۽%=J=< M 7v鍻wnܘN2>s(ޒI(s ܿ'V f ^~o_ZǤ^Cbuie[e { lM}_׻$$zEzWcg>5[Zy?Ƨ!4#_Sc5??T(O꜒/#'/uo$kqmos6;Vm>ٛKykK;wzƷ9;땝A670.l2Η(kfK mLߤ&_V]+>{6z6<ˍVno~wc1pqCXc@kƏZƵyY^WYV4鹵6??k3i}~[-f ?8j?ħ?[ZFQ}+׮}}wtnѮ8 w4PfWgMy_߯U1e=)9we:7S?em׫_#{oun%k7cl}eW:J˺wT80zCٿ"7깭Y(aێ"emޱUS7X.Ջ]\XOwo~׮u9ĽέnĔjN_I9.O2_c 3Ht.in;tV4s]eף~Һ;1;r1Ĉx.VqqqٍS(hkZ?֤J`WUmvsND9k\SoJ|^Y?%lEgo玢Μ}qn'}H69[)v1h #f۷`}Mʜ@Jy7*qZlCtn1ѩ|kA$}EӮze-:Z֨b@2it2>U+STʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 4294967295 80 50 1 27/1 27/1 3 2006-06-23T21:59:08+02:00 2006-06-23T21:59:08+02:00 2006-06-23T21:59:08+02:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:1e6c3631-0494-11db-9a66-ee67d6f99181 image/jpeg AdobedC 2P     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyz?߽߽߽߽߽C%n|)7OM9ڝ-w\-~{qmL>}GRBJXj"TD`}cm_ۈ>=ն{ yA[7tlꨰWjvem-˻q-IYRFVWKO$`0Am{c/Aol.ٝqW\8 {/?|tVj()eR1I {S}zc|TRAYm ż'T5;_+3pKM'ExFE_)K|sn^3VSsYMUuxJ "YZ>^d~g5wόW\n[wc_p=ٔsU[ژ|n˘LDpBSZY';GM)}GI|4awOf䪷oguoffhvEș6ڻ>`WPjjHh*SM <2TKA<: 0ĥYGhlN|CEbӬ~ܣ (N }ԙAXŬdz#OQOWO]$RCE5M<5=E<ȲC<FVRU <_S~:J*OH RGV*uo:|k+UKo3s|ٴ]=}EyQ`[nbS6Fd!u7'lzɭQ:yu/;)Cv;+ٽܻ7v|rV pճT)3N(K%;¢M?9_6ZVYݡoq.7nUoJXܛ]6c(bj\~gkvZq)Ɍ3^~EwSJڝڕح}#9׸f2PN9!3P hbB5uąT5 ͏]ۓ`gf1pZlV-iBӽn(Jҽw}WoJ?_;^S,C MS2Ի6O=eO8܇\m7%9&3Tb%EU3Lm8?AKOoϗ[wq|VsCn,^^q܅.9XOJf%"KQ|^ί?5:O^;q{om׬2cV}AWnbXI*g<v_]]O}H/'g/ VU{ ǵmf.tUwZo ٩ UV[u-bO52U &x5R?F_ϳNzgO_VΤm&ݝ¦krnLni* ִ02F߉;xc?%{+p*_ؽv5-xJ,碚g>BU]OHk%;bƽ[M{w#2Q'K-;v&] <ߘK867zo|]M_'AQZsi'jƎsifR9?b|U~:/.|2tY߬_f4Nߩ[0m ~82d8𔎀NN0c{; w8tsRIv>]€L L+E?9Gս.u'tNn͇v7sltz!K5}4U4҅T2HYӻ[#wS ق\"]ߕ>' wdoMٳszYAw)տ!:vtslvVRjlFAYK^VPTˎ?,Aѳ)?`z|_#6޽?9fS7}=abzg(߮oGrki}&j w1u72R#juv}>sv{#305>O ]FtjUyPXup_NvA-꽧8|ޙegvNA-&_hvCjfdh~ܧgS?Ǎ޹~ua+j 6ee۔M-^i1sK0݆`} c=VZi$0EkNV{h|fup#;G|bohkrm͚ܶz-Ǿ8yM~UұM)9+ai߽߽߽߽߽jp2a-1.1.1/tests/logo-30.txt000066400000000000000000000055361414624405500154470ustar00rootroot00000000000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMX00OOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXKOOOOO00KNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMWXXd''..l0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0xxl;,.....'';cxKKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMNKKc ;kXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKd;.. .,,xWWMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMWXXx::;;dKNMMWWNXXXXXNWMMNXKKKKXNWWMMMMMMMk:. .',;;'. ;OXMMMMMMMMWNXXKKKKKXXNWMMMMMMM MMMKxxl,,,,co0MNXXx;;;;;:lddl;,,,,;cooOXWMMMM0olllx0KXX0k; ,dKMMMMXOOxlc;;,,,,,;;clkXXNMMM MMMO::. .'xMN00: ... ..c0XMMMMXk0XXWMMMMMWo ,dKMMMWOll' :kkXMMM MMMOcc. .'xMN00: ':kWWWMNXNWWWMMMMMMo.. ,kKMMWNd... ..... .::kWMM MMMOcc. .,xMN00: .,,;c;''. ;OOXMMMMMMMMMMMWNl lXWMMNXl..':ldxkkoc. lNWM MMMOcc. .,xMN00: :KKXWX00c. .ccOMMMMMMMMMMM0o' .ccOMMMMWN0xx0NNNKOOxl. cXNM MMMOcc. .,xMN00: lWWMMMMMx'. .,,kMMMMMMMMX00c. ..oXXWMMMMMMWNN0xl:,..... cXNM MMMOcc. .,xMN00: lWWWMMMMk,. .,,xMMMMMMMM0oo' .cOMMMMMMMMMN00l'. .'. cXNM MMMOcc. .,xMN00: lWWWMMMMd.. .;;kMMMMMMNKo''. ;x0NNNNWMMWWk::'. .::ld, cXWM MMMOcc. .,xMN00: ,xxk0kxx; ,ddKMMMWNNx;. ..'ccccccxXXK0: .lNNXK: :0XW MMMOcc. .,xMN00: ...'... .oXXWMWNkcc. ;OOO0; ,ooc;. .,o0 MMMOcc. .,xMN00: .... .''lkXMMMMKd;...................:OOKNd''. ...,'... ..cO MMMk;;. .,xMN00: :kkxdoooddk00NMMMMMMXOkxxxxxxxxxxxxxxxxxxx0XXWMN00kdoooddkK0OOxooddxkKN MMMx''. .,xMN00: oMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMWWMMMMMM MXOc.. .:kMN00: lWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MOl. ;kXMN00: lWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MXO: ..,ccOWWMNKKc ..oWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMW0ddxx0NNWMMMWNN0ddddxxKWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/logo-40x25-gray.jpg000066400000000000000000000447531414624405500167140ustar00rootroot00000000000000JFIFHH)ExifMM*bj(1r2iAdobe Photoshop CS Macintosh2006:06:23 21:48:35(&(.HHJFIFHH Adobe_CMAdobed            ("?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? _L"'e!c?2AXӴ +ϾUWUUmz5ٿ#1q%>F7z^{/qf>>;w9ţ{ֵWקifCh\BĀ s\ߥnNއ/)uޓf ]'Tӿ{_Yg5; 0>dWU׵P{(zߦ[-%>܊a1708R^ޗGYzmx']YTku7gEI)z̜Xr̦t1Ca.mlwozR]^LG35ׯ3ؤ7e2qiV׆?F״B1_K:ZõEI)W``鸁vBZ $'Photoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName iso-a4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-06-23T19:47:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName A4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH/8Ag{HH(dh 8BIMGG8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMS(Untitled-2 copy(nullboundsObjcRct1Top longLeftlongBtomlongRghtlong(slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlong(urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM8BIM (x JFIFHH Adobe_CMAdobed            ("?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? _L"'e!c?2AXӴ +ϾUWUUmz5ٿ#1q%>F7z^{/qf>>;w9ţ{ֵWקifCh\BĀ s\ߥnNއ/)uޓf ]'Tӿ{_Yg5; 0>dWU׵P{(zߦ[-%>܊a1708R^ޗGYzmx']YTku7gEI)z̜Xr̦t1Ca.mlwozR]^LG35ׯ3ؤ7e2qiV׆?F״B1_K:ZõEI)W``鸁vBZ $8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 4294967295 40 25 1 27/1 27/1 3 2006-06-23T21:48:35+02:00 2006-06-23T21:48:35+02:00 2006-06-23T21:48:35+02:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:1e6c3631-0494-11db-9a66-ee67d6f99181 image/jpeg AdobedC (    u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyz?܆4=(>7Dv+~=$U0(rۚl\[ ta g׳z('alw9܌| ]فcĐI./y!:\$RW/Su;#?){}l|iSlg'Em s2W6MO XKN&qZ4Ϗ̓.nݕ ErMC1S !&H `s}}6Bh-j1rmÈMQB,eeSJYH Sp}0]Ԫ_Von=U;Y&)g{K1kic7ͲWmWA"}SɆ͕_N1dҖ:뿛<ߖwg~PQSrdزdfle-eg*>߁#dnϔ{m󗮺蜥v>;c/;imJZ#udq Q$ϔ4d%_{D/^=>%~Mvό_"wm]-<}-j ,ĸԎ'ѽ;i}l\qYͣݽeE*["|%  dIȏk|˛ϚynSםC{{5En^V32E"- jp2a converted image
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMWNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMXdcl0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0dcc:clkXMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMNo.  ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXOc'      .:kWMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMK,    dMMMMMMMMMMMMMMMMMMMMMMMMMMMKl;.          .xWMMMMMMMMMMMMMMMMMMMMMMMMM
MMMM0'    dMMMMMMMMMMMMMMMMMMMMMMMMMMWo              .OMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMNl   ,0MMMMMMMMMMMMMMMMMMMMMMMMMMN:               cNMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMKo:lOWMMMMMMMMMMMMMMMMMMMMMMMMMMNc     ...       .OMMMMMMMMMMMMMMMMMMMMMMMM
MMMMX0OkO0KWMMWK00000XMN0xxxOXWMMMMMMN:   ;okkx;      .dMMMMMMMWNKkxxxxOXWMMMMMM
MMMWd'''''cKMMXl'''''dkc'....;dXMMMMMNc.;oKMMMM0,      dMMMMMW0o:,......;o0WMMMM
MMMWc     '0MMK,     ..       .:0MMMMNkkXNMMMMMWo      dMMMMKl'           ,OWMMM
MMMWc     '0MMK,                ;KMMMWNWMMMMMMMMx.    .xMMMWl              ,0MMM
MMMWc     '0MMK,                 lNMMMMMMMMMMMMMd     .OMMMN:    .','.      dMMM
MMMWc     '0MMK,      .;c;.      .OMMMMMMMMMMMMWl     cNMMMNc  ,ok0K0l.     cWMM
MMMWc     '0MMK,     'xXNXd.      oMMMMMMMMMMMMK;    .xMMMMNc.lKWMMMMK,     :NMM
MMMWc     '0MMK,     lWMMMWo      cNMMMMMMMMMMWd.    :XMMMMWkxNMMMMWXx'     ;XMM
MMMWc     '0MMK,     lWMMMMO.     ;XMMMMMMMMMMK,    .OMMMMMMWWMMWXkl;.      ;XMM
MMMWc     '0MMK,     lWMMMMK,     ,KMMMMMMMMMNc    .oWMMMMMMMMW0o;.         ;XMM
MMMWc     '0MMK,     lWMMMMX;     ,KMMMMMMMMNo.    :XMMMMMMMMKl'    .,.     ;XMM
MMMWc     '0MMK,     lWMMMM0'     ;XMMMMMMMWx.    ,0MMMMMMMM0;     ,d0;     ;XMM
MMMWc     '0MMK,     lMMMMWd      cWMMMMMMWk.    .xNNNNNNWMNc     ;KWN:     ;XMM
MMMWc     '0MMK,     ;0WMWO'      dMMMMMMM0'     .;:::::l0MO'    .xMMN:     :NMM
MMMWc     '0MMK,      'ldl'      '0MMMMMMK;             .xMx.    .xMMK,     ,OKN
MMMWc     '0MMK,                 lWMMMMXOc              .xMk.     ;xd;       ,:k
MMMWc     '0MMK,                ;KMMMMXl.               .xMK,      ..          d
MMMWc     '0MMK,               ;0MMMMXl.                .xMWd.       ..       .x
MMMNc     '0MMK,     ,c.    .,oKMMMMMO;.'''''''''''''''',OMMXo'.   .,dk:.   .;dX
MMMN:     '0MMK,     lNOddddxKWMMMMMMX0O00000000000000000NMMMW0xdddxKWMKxdddkKWM
MMMK,     ,KMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWKl      ;XMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MXc.      lWMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MX;      .kMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWd      cNMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMK,    :KMMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMWo..'oKMMMMMX:.....oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMKxx0WMMMMMMW0xxxxxKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
jp2a-1.1.1/tests/logo.html000066400000000000000000000104231414624405500153430ustar00rootroot00000000000000 jp2a converted image
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMWNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNNNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMXdcl0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0dcc:clkXMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMNo.  ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXOc'      .:kWMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMK,    dMMMMMMMMMMMMMMMMMMMMMMMMMMMKl;.          .xWMMMMMMMMMMMMMMMMMMMMMMMMM
MMMM0'    dMMMMMMMMMMMMMMMMMMMMMMMMMMWo              .OMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMNl   ,0MMMMMMMMMMMMMMMMMMMMMMMMMMN:               cNMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMKo:lOWMMMMMMMMMMMMMMMMMMMMMMMMMMNc     ...       .OMMMMMMMMMMMMMMMMMMMMMMMM
MMMMX0OkO0KWMMWK00000XMN0xxxOXWMMMMMMN:   ;okkx;      .dMMMMMMMWNKkxxxxOXWMMMMMM
MMMWd'''''cKMMXl'''''dkc'....;dXMMMMMNc.;oKMMMM0,      dMMMMMW0o:,......;o0WMMMM
MMMWc     '0MMK,     ..       .:0MMMMNkkXNMMMMMWo      dMMMMKl'           ,OWMMM
MMMWc     '0MMK,                ;KMMMWNWMMMMMMMMx.    .xMMMWl              ,0MMM
MMMWc     '0MMK,                 lNMMMMMMMMMMMMMd     .OMMMN:    .','.      dMMM
MMMWc     '0MMK,      .;c;.      .OMMMMMMMMMMMMWl     cNMMMNc  ,ok0K0l.     cWMM
MMMWc     '0MMK,     'xXNXd.      oMMMMMMMMMMMMK;    .xMMMMNc.lKWMMMMK,     :NMM
MMMWc     '0MMK,     lWMMMWo      cNMMMMMMMMMMWd.    :XMMMMWkxNMMMMWXx'     ;XMM
MMMWc     '0MMK,     lWMMMMO.     ;XMMMMMMMMMMK,    .OMMMMMMWWMMWXkl;.      ;XMM
MMMWc     '0MMK,     lWMMMMK,     ,KMMMMMMMMMNc    .oWMMMMMMMMW0o;.         ;XMM
MMMWc     '0MMK,     lWMMMMX;     ,KMMMMMMMMNo.    :XMMMMMMMMKl'    .,.     ;XMM
MMMWc     '0MMK,     lWMMMM0'     ;XMMMMMMMWx.    ,0MMMMMMMM0;     ,d0;     ;XMM
MMMWc     '0MMK,     lMMMMWd      cWMMMMMMWk.    .xNNNNNNWMNc     ;KWN:     ;XMM
MMMWc     '0MMK,     ;0WMWO'      dMMMMMMM0'     .;:::::l0MO'    .xMMN:     :NMM
MMMWc     '0MMK,      'ldl'      '0MMMMMMK;             .xMx.    .xMMK,     ,OKN
MMMWc     '0MMK,                 lWMMMMXOc              .xMk.     ;xd;       ,:k
MMMWc     '0MMK,                ;KMMMMXl.               .xMK,      ..          d
MMMWc     '0MMK,               ;0MMMMXl.                .xMWd.       ..       .x
MMMNc     '0MMK,     ,c.    .,oKMMMMMO;.'''''''''''''''',OMMXo'.   .,dk:.   .;dX
MMMN:     '0MMK,     lNOddddxKWMMMMMMX0O00000000000000000NMMMW0xdddxKWMKxdddkKWM
MMMK,     ,KMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWKl      ;XMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MXc.      lWMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MX;      .kMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MWd      cNMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMK,    :KMMMMK,     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMWo..'oKMMMMMX:.....oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMKxx0WMMMMMMW0xxxxxKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
jp2a-1.1.1/tests/long.jpg000066400000000000000000000027711414624405500151650ustar00rootroot00000000000000JFIF,,Created with GIMPICC_PROFILElcms0mntrRGB XYZ  :9acspAPPL-lcms desc @cprt`6wtptchad,rXYZbXYZgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ -sf32 B%nXYZ o8XYZ $XYZ bparaff Y [chrmT|L&g\mluc enUSGIMPmluc enUSsRGBC     C     Z;?;?;?;?!; $I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$O?;?;?;jp2a-1.1.1/tests/long.png000066400000000000000000000010731414624405500151630ustar00rootroot00000000000000PNG  IHDR tiiCCPICC profile(}=H@_S-VqP,VBЪKhҐ8 ?.κ: "ƃ~{SͶ@,#̊xEB4df곒wQ}LD:Ħs'%>'6ď\W\~\pXa##VZ x8U5.g9oqVKָ'a0-/qX"$PPJU#Dc~/K!9Q nب/1vzնm~+/׀OҫM-rtoMM.w']6dGy)no}>)*qC^xwGkoi4r8r, pHYs.#.#x?vtIME  ZtEXtCommentCreated with GIMPW$IDATh ۿ%^Mr]IENDB`jp2a-1.1.1/tests/no-output.txt000066400000000000000000000000001414624405500162160ustar00rootroot00000000000000jp2a-1.1.1/tests/normal-b.txt000066400000000000000000000040721414624405500157700ustar00rootroot00000000000000+------------------------------------------------------------------------------+ |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMWk:';oXMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxl;,''';cdKWMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMK, .dMMMMMMMMMMMMMMMMMMMMMMMMMMWo. .cKMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMWx;',oXMMMMMMMMMMMMMMMMMMMMMMMMMMN' . ,KMMMMMMMMMMMMMMMMMMMMMMMM| |MMMWOllcllxNMMNklllllOKxlc:cldONMMMMMN;;dO0KOo. dMMMMMWKkdoc:::clokXWMMMM| |MMMWc '0MMK, .cOWMMWXWMMMMMMd .kMMMWx'. ... .:0MMM| |MMMWc '0MMK, .:oxd:. .xMMMMMMMMMMN: oWMMMNc.,ok0XXXx. :NMM| |MMMWc '0MMK, lWMMMWx. :XMMMMMMMMXc .dNMMMMW00WMWNKkdc. ;XMM| |MMMWc '0MMK, lWMMMMK, ,KMMMMMMWO, 'OWMMMMMMMXkl;.. .. ;XMM| |MMMWc '0MMK, lWMMMMk. :NMMMMM0c. .cKWWWWWMMWx. .oOK: ;XMM| |MMMWc '0MMK, .oxOkl. .kMMMMXo. .'''''';OMO. .xMMK; ,0NN| |MMMWc '0MMK, .kWMMM0, .xM0' .c:. .,k| |MMMNc '0MMK, 'c;,''',:okNMMMMXo;;;;;;;;;;;;;;;c0MW0o;,''',:odc,'',;:oK| |MMNx. ,KMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MXc .dWMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMk. 'xNMMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMWk::okNMMMMMNd::::cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| |MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM| +------------------------------------------------------------------------------+ jp2a-1.1.1/tests/normal-clear.txt000066400000000000000000000035621414624405500166400ustar00rootroot00000000000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMWk:';oXMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxl;,''';cdKWMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMK, .dMMMMMMMMMMMMMMMMMMMMMMMMMMWo. .cKMMMMMMMMMMMMMMMMMMMMMMMMM MMMMWx;',oXMMMMMMMMMMMMMMMMMMMMMMMMMMN' . ,KMMMMMMMMMMMMMMMMMMMMMMMM MMMWOllcllxNMMNklllllOKxlc:cldONMMMMMN;;dO0KOo. dMMMMMWKkdoc:::clokXWMMMM MMMWc '0MMK, .cOWMMWXWMMMMMMd .kMMMWx'. ... .:0MMM MMMWc '0MMK, .:oxd:. .xMMMMMMMMMMN: oWMMMNc.,ok0XXXx. :NMM MMMWc '0MMK, lWMMMWx. :XMMMMMMMMXc .dNMMMMW00WMWNKkdc. ;XMM MMMWc '0MMK, lWMMMMK, ,KMMMMMMWO, 'OWMMMMMMMXkl;.. .. ;XMM MMMWc '0MMK, lWMMMMk. :NMMMMM0c. .cKWWWWWMMWx. .oOK: ;XMM MMMWc '0MMK, .oxOkl. .kMMMMXo. .'''''';OMO. .xMMK; ,0NN MMMWc '0MMK, .kWMMM0, .xM0' .c:. .,k MMMNc '0MMK, 'c;,''',:okNMMMMXo;;;;;;;;;;;;;;;c0MW0o;,''',:odc,'',;:oK MMNx. ,KMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MXc .dWMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMk. 'xNMMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMWk::okNMMMMMNd::::cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/normal-curl.txt000066400000000000000000002677511414624405500165330ustar00rootroot00000000000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOdllllloxOXWMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNK0kdoolllllllllodxkOKXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWXx:. .'cxKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNKkdl:,'.. ...,:ox0XWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNO:. .;kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOoc,.. .':okKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXd, .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXkl;. .;oONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXo. .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNOo;. .ckXWMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWNd. .oXMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWMMWMMWXkc. .:kXMMMMWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO' .xNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWMMMWXx;. .:ONMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: ,OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWWWKx:. .oXWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWXd;. .:kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWNk:. .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0xc. .lXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWo cWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXd,. .cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWc ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMWNOc. cKWMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN: '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMWKo' .cKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXk;. cXMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN: '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0, .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNc ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO. 'OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWo :NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO' :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' '0MMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. cXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' lNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK; 'OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' lNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. lXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ,0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXo. .cKMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWXd. .oXWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMNx;. .;kXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXx:'. ..:dXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWN0xolllloxOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .';;;;;;;'. .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .,cdk0XXXXXXX0kd:. .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .;lkKWMMMMMMMMMMMMMNOc. lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' 'ckKNWMMMMMMMMMMMMMMMMMNOc. :NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' 'lONWMWWMMMMMMMMMMMMMMMMMMWXd. ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .cONMMMMMMMMMMMMMMMMMMMMMMMMMMNk' '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMWMMMMMMMMWNKOkxdolllllllllodk0XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .;xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. .kMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWNKOkxxollllllllllllloddxO0XNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMNkllllllllllllllllllllllllllllllllllkNMMMMMMMMMMMMMMMMMMMMMWOllllllllllllllllllllllllllllllllllkNMMMMMWWMMMMMWKkoc,... .':ldOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .dKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNo. .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNKkdlc:,'... ...';codkKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMWMMMMK; :KMMMMMMMMMMMMMMMMMMMMMWl ;KMMMMMWMMMWXkl,. .;lkXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ;ONMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMXc .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNKOxl:,. .,cdOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; :XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMWKx:. .;d0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .lKWMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOdc,.. ..;oOXMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMWMMMMMMMMMMMMMMMMMMMMl ;XMWMMMWXx;. .'lONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .:dXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWo oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXko;.. .:xKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMWWMNk:. 'lONMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ,kXNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, lMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOo;. .;xKWMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :XMMWKo. 'l0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' :OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo lMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKx:. .;xXWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMNk:. ,dXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' cKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO' lMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0o,. .c0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :XXd' .l0WMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWW0' .:KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOl, ,xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;xc. ;kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWO'.lKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNl dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKo. .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .' .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO;lXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWXd;. .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .oXWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXOKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXk:. .oXWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .lKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .kMMMMMMMMMMMMMMMMMMMMMMMMMMMWKl. .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .oXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, '0MMMMMMMMMMMMMMMMMMMMMMMMMMM0; .xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMx. ,OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; :NMMMMMMMMMMMMMMMMMMMMMMMMMMMx. ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; lWMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, dMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. ,0MWMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. oWMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .oNMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .dWMWMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. :XMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMo .OMMWWMMMMMMMMMMMMMMMMMMMMMMMMMx. ..',;:;;;;;;,.. '0MMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWc ;XMMWWMMMMMMMMMMMMMMMMMMMMMMMMMx. .,coxO0KXXXXXXXXKOxo:. .xWMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX; oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .':okKNMMMMMMMMMMMMMMMMMXx:. lWMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .:d0XWMMMMMMMMMMMMMMMMMMMMMWXo. cNMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ..,;::;:;'. oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMx. cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'lOXWMMWMMMMMMMMMMMMMMMMMMMMWWMXo. ;KMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .;oxk0XXXXXX0xo;. ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWl .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'lONMWWMMWMMMMMMMMMMMMMMMMMMMMWWMMX: '0MMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .:kXWMMMMMMMMMMMWXkl' .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .lONMMWMMMMMMWMMMMMMMMMMMMMMMMMMMMMMWk. .kMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .:xXMMMMMMMMMMMMMMMMMWO:. cXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .:ONWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMX: .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,xXWMMMMMMMMMMMMMMMMMMMWKo. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNc '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. ,xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWWWd. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .c0NMMMMMMMMMMMMMMMMMMMMMMWXx' .dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd. .l0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMO' .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .oXMMMMMMMMMMMMMMMMMMMMMMMMMWWx. lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. ;xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .dXMMMMMMMMMMMMMMMMMMMMMMMMMMWWXl. ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: cXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .c0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNc .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK; .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk. .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'dXWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWo .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk. oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: lNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. ,kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNl cWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. :0WMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :NMMMMMMMMMMMMMMMMMMMMMMMMMMWWMWWWO' ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :XMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWMMNl '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx..oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWOl. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMk. .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMXc .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx'oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxc' .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMWWWWx. .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXkl,. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWl oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMWWWK; ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMWKkl;. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMWo. .kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMNKxl,. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO. cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .oNMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0xl,. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, :NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: ;KMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOxl,. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN: ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0d:'. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWl ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMO' .lNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMN0dc'. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMo '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWK: ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0dc'. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .kWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOl,. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk' lNMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMWKd;. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0, ,0MMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXkl,. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKd:. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKd,. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMXx. :KMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMW0d;. .. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO, 'OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWXd,. .cdc .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMo ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMM0: .oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMNOc. 'ckXWx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKc :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXd' 'lONMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWc ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. ,0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. .,o0NMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: :NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0:. ,d0WMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, cWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk' .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO; 'o0WMMWMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO. oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO, :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0, .cOWMWWWWMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0; ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: .;xNWMMWMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWl .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKc. .kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl .oKWMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK; '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMNd. ,xXWMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. :NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. cKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWO' ;OWMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWNl cWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. ;0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMXc 'OWMMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMM0, .dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk. 'kWMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk. .dWMMMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWo .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0, .xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: :XMWMMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK; .oNMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .xWWWMMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWXc lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKc .cXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMWd. ;XMMMMMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWx. .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. :KWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWNc lWMMMMMMMMMMMMMMMMMMMMMx. .xMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,OWMMMMMMMMMMMMMMMMMMMMMMMMMMMW0, '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNo. 'clllllllllllllllllllllllllllllllllllllllllkWMMMMMMMMMMMMMK, .dMMMMMMMMMMMMMMMMMMMMMMx. .xMMMMMMWMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .:xXMMMMMMMMMMMMMMMMMMMMMMMMMWO; cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx. ;XMMMMMMMMMMMMMk. .kMMMMMMMMMMMMMMMWMMMMMMd. .xMMMMMMWMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .cONMMMMMMMMMMMMMMMMWMMMMMWO, .xWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk' ;XMMMMMMMMMMMMMx. .OMMMMMMMMMMMMMMMMMMMWMMd dMMMMMMMMMMWMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl 'o0WMMMMMMMMMMMMMMMMMMMNk; ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO, ;XMMMMMMMMMMMMMd 'OMMMMMMMMMMMMMMMMMMMMMMx. oMMMMMMMMMMWMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,o0WMMMMMMMMMMMMMMMWXd' oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0; ;XMMMMMMMMMMMMMl .kMMMMMMMMMMMMMMMMMMMMMMx. lWMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .'lkXWWMMMMWWWWMWXx:. .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: ;XMMMMMMMMMMMMMl .dMMMMMMMMMMMMMMMMMMWWMMd. ;XMMMMMMMMWMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .;ldOKXXXXK0ko;. cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKc ;XMMMMMMMMMMMMMl lWMMMMMMMMMMMMMMMMMWWWKc .OMMMMMMMMMMWNWMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ..,;:::;,. .kMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. ;XMMMMMMMMMMMMMl ;KWMMMMMMMMMMMMMMMMMW0c. oWMMMMMMMWKddKWMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMXo. ;XMMMMMMMMMMMMMl .dNMWMMMMMMMMMMMMMMNk; ,ONMMMWXOo,.,OWMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .kWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMNd. ;XMMMMMMMMMMMMMl ,OWWWMMMMMMMMMMMW0l. ,dkkxo:. 'OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl lNMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMWk' ;XMMMMMMMMMMMMMo :0WWMMMMMMMMMWXx, .... .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl '0MMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO, ;XMMMMMMMMMMMMMd ;kNMMMMMMMWXx:. 'OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .dWMWMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0, ;XMMMMMMMMMMMMMk. .lkKXXXKOd;. 'OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWK; ;XMMMMMMMMMMMMM0, .,;;;,.. 'OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl 'OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKx: ;XMMMMMMMMMMMMMNc .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .dNMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK:. ;XMMMMMMMMMMMMMMo .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl cXMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl ;XMMMMMMMMMMMMMMO. .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMWMXo. ;XMMMMMMMMMMMMMMX: .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;OWMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMWXo. ;XMMMMMMMMMMMMMMWd. .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. ;XMMMMMMMMMMMMMMMK; .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,OWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx. ;XMMMMMMMMMMMMMMMWd. .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx' ;XMMMMMMMMMMMMMMMMXc .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .c0WMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNk' ;XMMMMMMMMMMMMMMMMMO' .,. .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .oKWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx' ;XMMMMMMMMMMMMMMMMMNx. ,x0: .OMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ,xNMMWMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMNx' ;XMMMMMMMMMMMMMMMMWMNo. .c0WMx. 'OWMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl .,. .c0WMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMWMNx' ;XMMMMMMMMMMMMMMMMMMMXd' 'dXWWMK: ;KWMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;kx,. .;xXMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx' ;XMMMMMMMMMMMMMMMMMMMMNk, .cOWMWWMWO' .;lONMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XW0o,. .;dKWMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk. ;XMMMMMMMMMMMMMMMMMMMMMWO:. .:kXWMMMMMMNd. .'cxKWWMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMN0o,. .;dKWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMWl ;XMMMMMMMMMMMMMMMMMMMWWMWKd;. .:kXWMWMMMMMMMNo. .'cd0NWMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ;XMMMMMMMMMMMMMMMMMMMMMMl :XMMMMW0d;. .'cxKWMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWl ;KMMMMMMMMMMMMMMMMMMMWMMMMWKd,. 'ckNMMMMWWMMMMMMMXo. .'cd0NWMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMO' ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMXkl,. .,cd0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWOlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllxNMMMMMMMMMMMMMMMMMMMMMMWMMMWKxc'. .';o0NMMMMMMMMWMMMWWMMNx,. .;lx0NWMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMO. ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMNKkoc;'.. ..';cokKWMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMWWMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMN0dl:,.. ...,:lx0XWMMMMMMMMMMMMMMWWMMMN0xl,. ..,:ldOKNMMMMMMMMMMMWMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMWNX0kddollllllllllodxk0XWMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMWXKOxollllllllllodxkOKNWMMMMMMMMMMMMMMMMMMMMMMMMMMN0kdollllllllllodkOKNWMMMMMMMMMMMMMMMWMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMd ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMo ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMWWWc ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMWWX; ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMM0' ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMWx. ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMNl ;XMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMWMMMMMMMMM0, :NMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMWMMMMMMMMNo. cNMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMWMM0, lWMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMXl. oMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMNd. dMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMNx' .kMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMWXd. '0MMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMNOc. ;XMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMNOl' cNMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMWKxc' oWWWMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMKc. .OMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMM0' :XMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMNc oWMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMk. .OMWMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMK; cXMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMWd. .dWMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMK, ;KMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMWo .xWMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM0' :XMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMNc .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMk. .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMX: :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMx. ,OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMK, .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMNo. .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMM0' .dNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMXc .oXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMWMWk. .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMXc .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMWWx. ,xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMWMK; .c0NMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMWo. 'dXMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM0' 'lOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMNo 'lONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMO' .;o0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMXc .,cxKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOllllllllllllllllllllllllllllllllllkNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMWx. ..,:okKNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMXdllloxOKNWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/normal-verbose.txt000066400000000000000000000133471414624405500172210ustar00rootroot00000000000000File: jp2a.jpg Source width: 80 Source height: 50 Source color components: 1 Output width: 78 Output height: 24 Output palette (23 chars): ' ...',;:clodxkO0KXNWM' Decompressing image [##....................................................]Decompressing image [###...................................................]Decompressing image [####..................................................]Decompressing image [#####.................................................]Decompressing image [######................................................]Decompressing image [########..............................................]Decompressing image [#########.............................................]Decompressing image [##########............................................]Decompressing image [###########...........................................]Decompressing image [############..........................................]Decompressing image [#############.........................................]Decompressing image [##############........................................]Decompressing image [###############.......................................]Decompressing image [################......................................]Decompressing image [#################.....................................]Decompressing image [##################....................................]Decompressing image [###################...................................]Decompressing image [#####################.................................]Decompressing image [######################................................]Decompressing image [#######################...............................]Decompressing image [########################..............................]Decompressing image [#########################.............................]Decompressing image [##########################............................]Decompressing image [###########################...........................]Decompressing image [############################..........................]Decompressing image [#############################.........................]Decompressing image [##############################........................]Decompressing image [###############################.......................]Decompressing image [################################......................]Decompressing image [#################################.....................]Decompressing image [###################################...................]Decompressing image [####################################..................]Decompressing image [#####################################.................]Decompressing image [######################################................]Decompressing image [#######################################...............]Decompressing image [########################################..............]Decompressing image [#########################################.............]Decompressing image [##########################################............]Decompressing image [###########################################...........]Decompressing image [############################################..........]Decompressing image [#############################################.........]Decompressing image [##############################################........]Decompressing image [################################################......]Decompressing image [#################################################.....]Decompressing image [##################################################....]Decompressing image [###################################################...]Decompressing image [####################################################..]Decompressing image [#####################################################.]Decompressing image [######################################################]Decompressing image [#######################################################] MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMWk:';oXMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxl;,''';cdKWMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMK, .dMMMMMMMMMMMMMMMMMMMMMMMMMMWo. .cKMMMMMMMMMMMMMMMMMMMMMMMMM MMMMWx;',oXMMMMMMMMMMMMMMMMMMMMMMMMMMN' . ,KMMMMMMMMMMMMMMMMMMMMMMMM MMMWOllcllxNMMNklllllOKxlc:cldONMMMMMN;;dO0KOo. dMMMMMWKkdoc:::clokXWMMMM MMMWc '0MMK, .cOWMMWXWMMMMMMd .kMMMWx'. ... .:0MMM MMMWc '0MMK, .:oxd:. .xMMMMMMMMMMN: oWMMMNc.,ok0XXXx. :NMM MMMWc '0MMK, lWMMMWx. :XMMMMMMMMXc .dNMMMMW00WMWNKkdc. ;XMM MMMWc '0MMK, lWMMMMK, ,KMMMMMMWO, 'OWMMMMMMMXkl;.. .. ;XMM MMMWc '0MMK, lWMMMMk. :NMMMMM0c. .cKWWWWWMMWx. .oOK: ;XMM MMMWc '0MMK, .oxOkl. .kMMMMXo. .'''''';OMO. .xMMK; ,0NN MMMWc '0MMK, .kWMMM0, .xM0' .c:. .,k MMMNc '0MMK, 'c;,''',:okNMMMMXo;;;;;;;;;;;;;;;c0MW0o;,''',:odc,'',;:oK MMNx. ,KMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MXc .dWMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMk. 'xNMMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMWk::okNMMMMMNd::::cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/normal.txt000066400000000000000000000035501414624405500155510ustar00rootroot00000000000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMWk:';oXMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxl;,''';cdKWMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMK, .dMMMMMMMMMMMMMMMMMMMMMMMMMMWo. .cKMMMMMMMMMMMMMMMMMMMMMMMMM MMMMWx;',oXMMMMMMMMMMMMMMMMMMMMMMMMMMN' . ,KMMMMMMMMMMMMMMMMMMMMMMMM MMMWOllcllxNMMNklllllOKxlc:cldONMMMMMN;;dO0KOo. dMMMMMWKkdoc:::clokXWMMMM MMMWc '0MMK, .cOWMMWXWMMMMMMd .kMMMWx'. ... .:0MMM MMMWc '0MMK, .:oxd:. .xMMMMMMMMMMN: oWMMMNc.,ok0XXXx. :NMM MMMWc '0MMK, lWMMMWx. :XMMMMMMMMXc .dNMMMMW00WMWNKkdc. ;XMM MMMWc '0MMK, lWMMMMK, ,KMMMMMMWO, 'OWMMMMMMMXkl;.. .. ;XMM MMMWc '0MMK, lWMMMMk. :NMMMMM0c. .cKWWWWWMMWx. .oOK: ;XMM MMMWc '0MMK, .oxOkl. .kMMMMXo. .'''''';OMO. .xMMK; ,0NN MMMWc '0MMK, .kWMMM0, .xM0' .c:. .,k MMMNc '0MMK, 'c;,''',:okNMMMMXo;;;;;;;;;;;;;;;c0MW0o;,''',:odc,'',;:oK MMNx. ,KMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MXc .dWMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMk. 'xNMMMK, lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMWk::okNMMMMMNd::::cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM jp2a-1.1.1/tests/run-tests.sh000077500000000000000000000232071414624405500160240ustar00rootroot00000000000000#!/bin/bash # Copyright 2006-2016 Christian Stigen Larsen # Copyright 2020 Christoph Raitzig # # This is a small script to test if jp2a has been correctly built. ## PATH TO EXECUTABLE jp2a JP=../src/jp2a UNAME=`uname -a` UPDATE=no if test "`echo ${UNAME} | cut -c1-6`" == "CYGWIN" ; then JP=../src/jp2a.exe fi if test "${1}" == "update" ; then UPDATE=yes fi ## INITIALIZE VARS RESULT_OK=0 RESULT_FAILED=0 FAILED_STR="" function print_intense() { echo -e -n "\033[1m${1}\033[0m" } function test_ok() { print_intense "OK" RESULT_OK=$((RESULT_OK + 1)) } function test_failed() { print_intense "FAILED" RESULT_FAILED=$((RESULT_FAILED + 1)) FAILED_STR="${FAILED_STR}\n${2} | diff --strip-trailing-cr --brief - ${1}" } function test_jp2a() { CMD="${JP} ${2}" printf "test (%2s) %-45s " "$((RESULT_OK+RESULT_FAILED+1))" "(${1})" if [ ! -e "${3}" ] ; then print_intense "(missing ${3}) " test_failed ${3} "${CMD}" else if test "${UPDATE}" == "no" ; then eval ${CMD} | diff --strip-trailing-cr --brief - ${3} 1>/dev/null && test_ok || test_failed ${3} "${CMD}" else eval ${CMD} > ${3} test_ok fi fi echo "" } function test_results() { echo "" echo "TEST RESULTS FOR JP2A" echo "" printf "Tests OK : %2d of %2d (%4s)\n" "$((RESULT_OK))" "$((RESULT_OK+RESULT_FAILED))" "$((100*RESULT_OK/(RESULT_OK+RESULT_FAILED)))%" printf "Tests FAILED: %2d of %2d (%4s)\n" "$((RESULT_FAILED))" "$((RESULT_OK+RESULT_FAILED))" "$((100*RESULT_FAILED/(RESULT_OK+RESULT_FAILED)))%" echo "" if test "x${FAILED_STR}" != "x" ; then echo "Summary of failed tests:" echo -e "${FAILED_STR}" fi } echo "-------------------------------------------------------------" echo " TESTING JP2A BUILD" echo " " echo " Note that the output may vary a bit on different platforms," echo " so some tests may fail. This does not mean that jp2a is" echo " completely broken." echo "-------------------------------------------------------------" echo "" test_jp2a "width" "--width=78 jp2a.jpg" normal.txt test_jp2a "border, width" "-b --width=78 jp2a.jpg" normal-b.txt test_jp2a "size" "--size=160x49 jp2a.jpg" 160x49.txt test_jp2a "height" "--height=10 jp2a.jpg" 10h.txt test_jp2a "size" "--size=40x40 jp2a.jpg" 40x40.txt test_jp2a "size" "--size=1x1 --invert jp2a.jpg" 1x1-inv.txt test_jp2a "invert, border" "-i -b --width=110 --height=30 jp2a.jpg" 110x30-i-b.txt test_jp2a "width, flip, invert" "--width=78 --flipx --flipy --invert jp2a.jpg" flip-xy-invert.txt test_jp2a "width, border" "--width=78 -b jp2a.jpg jp2a.jpg" 2xnormal-b.txt test_jp2a "width, verbose" "--verbose --width=78 jp2a.jpg 2>&1 | tr -d '\r'" normal-verbose.txt TEMPFILE=`mktemp /tmp/jp2a-test-XXXXXX` test_jp2a "width, outfile" "--width=78 jp2a.jpg --output=${TEMPFILE} && cat ${TEMPFILE}" normal.txt rm -f ${TEMPFILE} test_jp2a "width, clear" "--width=78 jp2a.jpg --clear" normal-clear.txt test_jp2a "height, grayscale" "logo-40x25-gray.jpg --height=30" logo-30.txt test_jp2a "size, invert" "grind.jpg -i --size=80x30" grind.txt test_jp2a "size, invert, red channel" "grind.jpg -i --size=80x30 --red=1.0 --green=0.0 --blue=0.0" grind-red.txt test_jp2a "size, invert, blue channel" "grind.jpg -i --size=80x30 --red=0.0 --green=1.0 --blue=0.0" grind-green.txt test_jp2a "size, invert, green channel" "grind.jpg -i --size=80x30 --red=0.0 --green=0.0 --blue=1.0" grind-blue.txt test_jp2a "width, grayscale" "--width=78 dalsnuten-640x480-gray-low.jpg" dalsnuten-normal.txt test_jp2a "invert, width, grayscale" "--invert --width=78 dalsnuten-640x480-gray-low.jpg" dalsnuten-invert.txt test_jp2a "invert, size, grayscale" "--invert --size=80x49 dalsnuten-640x480-gray-low.jpg" dalsnuten-80x49-inv.txt test_jp2a "size, invert, border" "dalsnuten-640x480-gray-low.jpg --size=80x25 --invert --border --size=150x45" dalsnuten-640x480-gray-low.txt test_jp2a "size, html" "--size=80x50 --htmlls --html-fontsize=7 jp2a.jpg" logo.html test_jp2a "size, xhtml" "--size=80x50 --xhtml --html-fontsize=7 jp2a.jpg" logo-x.html test_jp2a "size, color, html, flipx" "--size=80x50 --htmlls --color --html-fontsize=8 --flipx grind.jpg" grind-flipx.html test_jp2a "size, color, html, flipy" "--size=80x50 --htmlls --color --html-fontsize=8 --flipy grind.jpg" grind-flipy.html test_jp2a "size, color, html, flipxy" "--size=80x50 --htmlls --color --html-fontsize=8 --flipx --flipy grind.jpg" grind-flipxy.html test_jp2a "size, color, xhtml, flipx" "--size=80x50 --xhtml --color --html-fontsize=8 --flipx grind.jpg" grind-flipx-x.html test_jp2a "size, color, xhtml, flipy" "--size=80x50 --xhtml --color --html-fontsize=8 --flipy grind.jpg" grind-flipy-x.html test_jp2a "size, color, xhtml, flipxy" "--size=80x50 --xhtml --color --html-fontsize=8 --flipx --flipy grind.jpg" grind-flipxy-x.html test_jp2a "width, html, gray, dark" "dalsnuten-640x480-gray-low.jpg --width=128 --htmlls --html-fontsize=8" dalsnuten-256.html test_jp2a "width, html, gray, light" "dalsnuten-640x480-gray-low.jpg --width=128 --background=light --htmlls --html-fontsize=8" dalsnuten-256-light.html test_jp2a "color, html, dark" "grind.jpg --color --background=dark --width=60 --htmlls --html-fontsize=8" grind-color-dark.html test_jp2a "color, html, dark fill" "grind.jpg --color --fill --background=dark --width=60 --htmlls --html-fontsize=8" grind-color-dark-fill.html test_jp2a "color, html, light" "grind.jpg --color --fill --background=light --width=60 --htmlls --html-fontsize=8" grind-color.html test_jp2a "color, html, grayscale" "dalsnuten-640x480-gray-low.jpg --color --width=78 --htmlls --background=light --fill --html-fontsize=8" dalsnuten-color.html test_jp2a "color, html, --grayscale" "grind.jpg --color --width=78 --htmlls --grayscale" grind-2grayscale.html test_jp2a "color, html, --grayscale, fill" "grind.jpg --color --width=78 --htmlls --grayscale --fill" grind-2grayscale-fill.html test_jp2a "width, xhtml, gray, dark" "dalsnuten-640x480-gray-low.jpg --width=128 --xhtml --html-fontsize=8" dalsnuten-256-x.html test_jp2a "width, xhtml, gray, light" "dalsnuten-640x480-gray-low.jpg --width=128 --background=light --xhtml --html-fontsize=8" dalsnuten-256-light-x.html test_jp2a "color, xhtml, dark" "grind.jpg --color --background=dark --width=60 --xhtml --html-fontsize=8" grind-color-dark-x.html test_jp2a "color, xhtml, dark fill" "grind.jpg --color --fill --background=dark --width=60 --xhtml --html-fontsize=8" grind-color-dark-fill-x.html test_jp2a "color, xhtml, light" "grind.jpg --color --fill --background=light --width=60 --xhtml --html-fontsize=8" grind-color-x.html test_jp2a "color, xhtml, grayscale" "dalsnuten-640x480-gray-low.jpg --color --width=78 --xhtml --background=light --fill --html-fontsize=8" dalsnuten-color-x.html test_jp2a "color, xhtml, --grayscale" "grind.jpg --color --width=78 --xhtml --grayscale" grind-2grayscale-x.html test_jp2a "color, xhtml, --grayscale, fill" "grind.jpg --color --width=78 --xhtml --grayscale --fill" grind-2grayscale-fill-x.html test_jp2a "color, ANSI, fill" "grind.jpg --color-depth=4 --fill --width=78" grind-ANSI-fill.txt test_jp2a "color, ANSI, fill, --grayscale" "grind.jpg --color-depth=4 --fill --grayscale --width=78" grind-2grayscale-ANSI-fill.txt test_jp2a "color, 256 color palette, fill" "grind.jpg --color-depth=8 --fill --width=78" grind-256-fill.txt test_jp2a "color, 256 color palette, fill, --grayscale" "grind.jpg --color-depth=8 --fill --grayscale --width=78" grind-2grayscale-256-fill.txt test_jp2a "color, truecolor, fill" "grind.jpg --color-depth=24 --fill --width=78" grind-truecolor-fill.txt test_jp2a "color, truecolor, fill, --grayscale" "grind.jpg --color-depth=24 --fill --grayscale --width=78" grind-2grayscale-truecolor-fill.txt test_jp2a "color, html, no-bold" "grind.jpg --colors --htmlls --html-no-bold --width=78" grind-nobold.html test_jp2a "color, xhtml, no-bold" "grind.jpg --colors --xhtml --html-no-bold --width=78" grind-nobold-x.html test_jp2a "html-title, xhtml" "--width=10 --xhtml --html-title='just testing' jp2a.jpg" html-title.txt test_jp2a "html-title, html" "--size=80x50 --htmlls --html-title=\"C&amp;\\\"&'