From bf1ca90a9c71c635b5555e5730020ec6b9bf95a4 Mon Sep 17 00:00:00 2001 From: Warren Date: Wed, 1 Jul 2026 17:17:49 +0800 Subject: [PATCH] Add PDF to fax conversion support - pdf.rs: Ghostscript-based PDF to TIFF-F conversion - tiff_to_fax_document: Parse TIFF and convert to 1-bit fax format - CLI: Add 'convert' subcommand for dry testing - CLI: Add resolution option for send command - Test files for PDF/TIFF conversion validation --- src/document/mod.rs | 2 + src/document/pdf.rs | 98 +++++++++++++++++++++++++++++++ src/main.rs | 117 ++++++++++++++++++++++++++++++++++++-- test/output.tif | Bin 0 -> 14315 bytes test/output_fax.tif | Bin 0 -> 3738734 bytes test/test_conversion.py | 76 +++++++++++++++++++++++++ test/test_tiff_convert.rs | 33 +++++++++++ test/testfax.pdf | Bin 0 -> 10914 bytes test/testfax.ps | 41 +++++++++++++ test/testfax.tif | Bin 0 -> 14315 bytes test/testfax_gray.tif | Bin 0 -> 3744512 bytes 11 files changed, 361 insertions(+), 6 deletions(-) create mode 100644 src/document/pdf.rs create mode 100644 test/output.tif create mode 100644 test/output_fax.tif create mode 100644 test/test_conversion.py create mode 100644 test/test_tiff_convert.rs create mode 100644 test/testfax.pdf create mode 100644 test/testfax.ps create mode 100644 test/testfax.tif create mode 100644 test/testfax_gray.tif diff --git a/src/document/mod.rs b/src/document/mod.rs index 1972e38..5248295 100644 --- a/src/document/mod.rs +++ b/src/document/mod.rs @@ -1,5 +1,7 @@ pub mod convert; pub mod tiff; +pub mod pdf; pub use convert::{document_from_image, document_from_tiff, DocumentFormat, FaxDocument, Page}; pub use tiff::TiffFaxWriter; +pub use pdf::pdf_to_fax_document; diff --git a/src/document/pdf.rs b/src/document/pdf.rs new file mode 100644 index 0000000..89159b4 --- /dev/null +++ b/src/document/pdf.rs @@ -0,0 +1,98 @@ +use crate::error::{FaxError, Result}; +use crate::document::convert::{DocumentFormat, FaxDocument, Page}; +use crate::config::FaxResolution; +use std::path::Path; +use std::process::Command; + +/// Convert PDF to FaxDocument using Ghostscript. +pub fn pdf_to_fax_document(pdf_path: &Path, resolution: FaxResolution) -> Result { + let dpi_arg = match resolution { + FaxResolution::Standard => "204x98", + FaxResolution::Fine => "204x196", + FaxResolution::SuperFine => "204x392", + }; + + let tiff_path = pdf_path.with_extension("fax.tif"); + tracing::info!("Converting PDF {} to TIFF {}", pdf_path.display(), tiff_path.display()); + + let output = Command::new("gs") + .arg("-dBATCH") + .arg("-dNOPAUSE") + .arg("-q") + .arg("-sDEVICE=tiffgray") + .arg(format!("-r{}", dpi_arg)) + .arg(format!("-sOutputFile={}", tiff_path.display())) + .arg(pdf_path) + .output() + .map_err(|e| FaxError::document(format!("Failed to run ghostscript: {}", e)))?; + + tracing::info!("Ghostscript exit status: {:?}", output.status); + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + let stdout = String::from_utf8_lossy(&output.stdout); + tracing::error!("Ghostscript stderr: {}", stderr); + tracing::error!("Ghostscript stdout: {}", stdout); + return Err(FaxError::document(format!( + "Ghostscript failed: exit code {:?}", + output.status.code() + ))); + } + + let tiff_data = std::fs::read(&tiff_path)?; + let doc = tiff_to_fax_document(&tiff_data)?; + + std::fs::remove_file(&tiff_path).ok(); + + Ok(doc) +} + +/// Read TIFF-F and convert to FaxDocument with 1-bit pixel data. +pub fn tiff_to_fax_document(tiff_data: &[u8]) -> Result { + use tiff::decoder::Decoder; + use std::io::Cursor; + + let mut cursor = Cursor::new(tiff_data); + let mut decoder = Decoder::new(&mut cursor) + .map_err(|e| FaxError::document(format!("Failed to open TIFF: {}", e)))?; + + let (width, height) = decoder.dimensions() + .map_err(|e| FaxError::document(format!("Failed to get TIFF dimensions: {}", e)))?; + + let bytes_per_row = ((width + 7) / 8) as usize; + let mut pixels = vec![0u8; bytes_per_row * height as usize]; + + let mut result = decoder.read_image() + .map_err(|e| FaxError::document(format!("Failed to read TIFF image: {}", e)))?; + + // Convert to 1-bit packed format + let buffer = result.as_buffer(0); + let img_data = buffer.as_bytes(); + + // Process each pixel - TIFF is grayscale (8-bit), convert to 1-bit + for (i, &byte) in img_data.iter().enumerate() { + let pixel_idx = i % width as usize; + let row_idx = i / width as usize; + let byte_idx = pixel_idx / 8; + let bit_idx = 7 - (pixel_idx % 8); + + // WhiteIsZero: 0=white, 255=black + // We want: 1=black, 0=white (MSB first) + if byte < 128 { + let idx = row_idx * bytes_per_row + byte_idx; + if idx < pixels.len() { + pixels[idx] |= 1 << bit_idx; + } + } + } + + let page = Page { + pixels, + width_pels: width, + rows: height, + }; + + Ok(FaxDocument { + pages: vec![page], + format: DocumentFormat::Tiff, + }) +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 81a6420..d263d35 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,7 @@ use std::sync::{Arc, Mutex}; use tracing::info; use telfax::config::FaxConfig; +use telfax::config::FaxResolution; use telfax::error::Result; use telfax::modem::detect::detect_modem; use telfax::modem::ModemDriver; @@ -32,11 +33,14 @@ enum Commands { Send { /// Recipient phone number recipient: String, - /// Path to document file (PNG/JPG/TIFF) + /// Path to document file (PDF or image) file: String, /// Serial device #[arg(short, long, default_value = "/dev/cu.usbmodem00000021")] device: String, + /// Resolution (standard/fine/superfine) + #[arg(short, long, default_value = "fine")] + resolution: String, }, /// Interactively test the modem Test { @@ -44,6 +48,17 @@ enum Commands { #[arg(default_value = "/dev/cu.usbmodem00000021")] device: String, }, + /// Convert PDF to TIFF-F fax format (dry test) + Convert { + /// Input PDF file path + input: String, + /// Output TIFF file path + #[arg(short, long)] + output: Option, + /// Resolution (standard/fine/superfine) + #[arg(short, long, default_value = "fine")] + resolution: String, + }, } #[tokio::main] @@ -60,8 +75,9 @@ async fn main() -> Result<()> { match cli.command.unwrap_or(Commands::Serve { config: None }) { Commands::Detect { device } => cmd_detect(&device), Commands::Serve { config } => cmd_serve(config).await, - Commands::Send { recipient, file, device } => cmd_send(&device, &recipient, &file), + Commands::Send { recipient, file, device, resolution } => cmd_send(&device, &recipient, &file, &resolution), Commands::Test { device } => cmd_test(&device), + Commands::Convert { input, output, resolution } => cmd_convert(&input, output.as_deref(), &resolution), } } @@ -103,15 +119,36 @@ async fn cmd_serve(config_path: Option) -> Result<()> { telfax::api::start_server(config, queue.clone()).await } -fn cmd_send(device: &str, recipient: &str, file: &str) -> Result<()> { +fn cmd_send(device: &str, recipient: &str, file: &str, resolution: &str) -> Result<()> { info!("Sending fax to {} from {} using device {}", recipient, file, device); let mut driver = ModemDriver::open(device, 115200)?; - let data = std::fs::read(file) - .map_err(|e| telfax::error::FaxError::Other(format!("Failed to read file: {}", e)))?; - let doc = telfax::document::document_from_image(&data)?; + // Determine resolution + let fax_resolution = match resolution.to_lowercase().as_str() { + "standard" | "std" => FaxResolution::Standard, + "fine" => FaxResolution::Fine, + "superfine" | "super" => FaxResolution::SuperFine, + _ => FaxResolution::Fine, + }; + + // Load document - handle PDF or image + let path = std::path::Path::new(file); + let doc = if file.to_lowercase().ends_with(".pdf") { + info!("Converting PDF to fax format..."); + telfax::document::pdf_to_fax_document(path, fax_resolution)? + } else { + let data = std::fs::read(file) + .map_err(|e| telfax::error::FaxError::Other(format!("Failed to read file: {}", e)))?; + telfax::document::document_from_image(&data)? + }; + let page = &doc.pages[0]; + info!("Document: {}x{} pixels, {} bytes", page.width_pels, page.rows, page.pixels.len()); + + // TODO: Encode to T.4 MH before sending + // For now, we send raw pixel data (modem will need T.4 encoded data) + info!("WARNING: T.4 encoding not fully implemented - sending raw pixels"); let mut sender = telfax::fax::class1::Class1Send::new(&mut driver); sender.send_fax(recipient, &page.pixels, page.width_pels, page.rows)?; @@ -159,3 +196,71 @@ fn cmd_test(device: &str) -> Result<()> { println!("\nDone."); Ok(()) } + +fn cmd_convert(input: &str, output: Option<&str>, resolution: &str) -> Result<()> { + let fax_resolution = match resolution.to_lowercase().as_str() { + "standard" | "std" => FaxResolution::Standard, + "fine" => FaxResolution::Fine, + "superfine" | "super" => FaxResolution::SuperFine, + _ => FaxResolution::Fine, + }; + + let input_path = std::path::Path::new(input); + let output_path = output.map(|s| std::path::Path::new(s)); + + println!("=== Converting {} to Fax Format ===", input); + println!("Resolution: {}", resolution); + + if input.to_lowercase().ends_with(".pdf") { + let doc = telfax::document::pdf_to_fax_document(input_path, fax_resolution)?; + + println!("Converted successfully:"); + println!(" Pages: {}", doc.pages.len()); + + for (i, page) in doc.pages.iter().enumerate() { + println!(" Page {}: {}x{} pixels, {} bytes", + i + 1, page.width_pels, page.rows, page.pixels.len()); + + let bytes_per_row = ((page.width_pels + 7) / 8) as usize; + println!(" Bytes per row: {}", bytes_per_row); + println!(" Data rows: {}", page.pixels.len() / bytes_per_row); + } + + // Write TIFF output if specified + if let Some(out_path) = output_path { + telfax::document::tiff::TiffFaxWriter::write_fax_tiff(out_path, &doc.pages)?; + println!(" Output written to: {}", out_path.display()); + } + + println!("\n=== Conversion Test Passed ==="); + } else if input.to_lowercase().ends_with(".tif") || input.to_lowercase().ends_with(".tiff") { + let tiff_data = std::fs::read(input_path)?; + let doc = telfax::document::pdf::tiff_to_fax_document(&tiff_data)?; + + println!("TIFF parsed successfully:"); + println!(" Pages: {}", doc.pages.len()); + + for (i, page) in doc.pages.iter().enumerate() { + println!(" Page {}: {}x{} pixels, {} bytes", + i + 1, page.width_pels, page.rows, page.pixels.len()); + } + + println!("\n=== TIFF Parse Test Passed ==="); + } else { + // Try as image + let data = std::fs::read(input_path)?; + let doc = telfax::document::document_from_image(&data)?; + + println!("Image converted successfully:"); + println!(" Pages: {}", doc.pages.len()); + + for (i, page) in doc.pages.iter().enumerate() { + println!(" Page {}: {}x{} pixels, {} bytes", + i + 1, page.width_pels, page.rows, page.pixels.len()); + } + + println!("\n=== Image Conversion Test Passed ==="); + } + + Ok(()) +} diff --git a/test/output.tif b/test/output.tif new file mode 100644 index 0000000000000000000000000000000000000000..2397864cd91c7d7cf137456b69dfaaf84ad7c548 GIT binary patch literal 14315 zcmeHMc{o&W`!{6QG)h9oD3z4#WtnLxSt_CUDv@mneJjMsGK{TAGAN~GjHMb&S=;!M z>?#==Dv~W`jBRAbGQ-UL&Peau`^WFPet-SC-s|GJ=A8R_p8I^B&wZcIxu5$ShY#-( z5EBp(kP+YttPubKmLTvG00}MIZ$tod#Xb+X39i_DKcN*{2(U#~Z2qMZzxhameqtH{ z7p(tneB*Dn?266D-?ZXix=%nr0VKT4feT=6Ua>_09L3+R-L~St2JqRrGS26(2H4AS z0Jb(rP(ThigMn*x09yvIcklxM{#t<_-)vYpTi9ADTln||1_h!n`T7SbYins}>1${U z=xFKeGt$yG($ZGe);H4DG1?0d1Rc8ao+>Z zjSB$KzX#7R<@VwCNAuBTS&9WraKM9!t6Ymc;-3XU-tDK?enKMR{k>IQs>S$Kddqo% z<973xmz@}Iwd6llC3AD5|6MQ6Wysi0^rwWOuKAT zReCn^GIO4Y@aAZeZY+~*=>Xgq9f`v}yqw2-awnC17KweBVhdzqMxKVvf_L{+$BJW1 z2hntA`@wE`Sl3VwqJ<$(rXx?L^31I4H|^MP8rd;tzIQp67U2%!U&7!`Ey9#t+82~O zL*jxKN$D}X4!gdX(M``VlFKQR<-46WZt-9Vyz&P4-BsEGMKVU*YMA!(kMX=7q;S)V z5;-7_mM+>Syq@V$w;UAVbZ`QvjR)L9BNH>3Wai@jFFW`*h40iJ%8$ZBnl;qT>!9fJ zgU|$)#E0@|!Q#ur>N|bgL)j6D?lcCYu`-Y}cW~-*=uE4HnN1j)%Dcbx@@IZYxz@21 zYTJ4yX~a5Wy*1jfpFr;qotfYV zR9@?l0}Vy+pM3x?Yi^96+y5&1lV&1E-B;*&dK75AMD&hz12;FeNi?PGT9avzAZCS( zN!cng`3~BnsDvG_k-qTBKF(0dmhK^$UQt|{qc3SrwD(W=Y zCo5wtJALc);(%vKm?!=yeDlYdLeKD{AFIdD`>Bt=)G|AhA;N#6NUZg=(32%|)Vb}q z(Tge+V!6PZU&AN*?gu`-HiG}#ozXex1_)xs{omuv&KLY~Sytq5%o99lqvxoPn@RNT zxba$n*eq}OcDGw_Z|LR}&++VD#dl>vG3bL&@_MhvwoYad!2@q&Ab$oJ-Z2m76;&(UVbrYq$n`7TMu3ru*_8|^hGX>c^__t; z#l-|FQaet3CZ+8^H^h>M1syzW{MaHAlN2`WiO!bs*-|P^ ze&ll8H~faABWYdLdVBP9tw{4xlTd7p9Hxz+ehWwd`Q>qHmVbVEZ}4YlJOmiksc zu(Q6UWie;{VU7-*F^uZmr1JC}Z_Bj^J7PY04N{o&nL1E07xiWtrqeX+nyQs#p-_JM zo-m*IhEkr3rx6 zi|f>tU=e9TtYMGR6Q^jX?=5qB(bQ8fPMuZ9D5YQbijTje2+x9%G!a!w>95uGqL++z zhxkvaqVTxdCB(Sw`?aSyRR4J;`_hMqeAM({$wZ{0uGcmIS#ktbf^CMpG5($)viqJ% z!upUQh_v!{;lP;E4Do?m8`~t;X*UeT2MKWvZZ@xXqsn?+wc1b%(UgIwtueSII&egS zDvT0SpW0m2EDe%EB}DHOgJ#`Yv!yI83iPGm=)sn!Vy2L|XEz{ayUi^<)SP4w`*=7x zJry#QJ|dS!Hu>^r>g%8E5__7JPnL4BwtMz(wiOcq^)#1S)P%!&1V`1cRo~i|1#CP* z!ks0N6gVsq`2?~~tuEXgY*3;V)g%@>Bm!4#gp~v(QFcEUhytqihofIIBZGBey7D%q z&NambO_+%!7J{RWT}u79sVB;0#Rbc1GNkAbJYFRi52&-qSuC0^gNilCG`j!06Z@=@ z?@y;J1V_JqQJX-pVSE1InGP-Ti2|+HGgTL{OQx5kvI|K(t7fa=WHFtrtrFRl2aE)p z(5xF&S`9HEX^D*`t5!}#Udie=JOQnJ)@1^;Vq*SP>kecm?^**bByo?EGmfC*vaCf7 zX4h$Doua^8L+)I+o*sQu&LA`2(kaG+5ap#h{{u~Ad;SwnZChGE=zl}%-Q`_jW3js9 zbXr_}HD>{GXs0e+e4f_-5GhK)yBcJ2=(8MSEQvkdb1sVCtML#E2sn$G=1pnDz9vou z+f(D}X;_5h60O-P#IDBdy~AEY?q|x)Wc?W;M}stfd&fPXNsw*n;2pv!!OU30cNs}O z>dXk(2iTyF9=1a!u$hsOb1;6sNS|QRCeyt62L-1WnoCC>+Y7|l(!#Zgtskv1ziFHu zEpCM?+c=DkYk6Pm+|N6t-v{eU`rA04G-p#432$KlomuFNZvlTXVTzg@0(qV3t2^6- zAg0b)$ODT(4jicr%<~oJ7h*5m`J^ zVGF~Uqd{i$c|VJrHmJfjFmNGLb|CNY=C8aU&FEAZ8%T65E? za25UGOWdD{;5D z9So_B%UZaI*cL-jv=-fggh|NtE?Doptk)R@I${dBQu;$rdwUMeNG{PfuA==)WlF=A zy?X^fDV0`*!12Xh2jKW*`3Sj|<_1cEkazr<;+GKwzcV|u*oM;PehvG$gb_#$LxC-;dNCK0ZE6d|%z?QlubD}^B zwCF{kSHZBo8!Kqj8X@6)JOxs8co)=$a3~1ll!*s1>c5)t2Ok8jkt%o}3cO)7ve9l4 zI{P|+MoXb%!9~=>q_voE%-G76=paf~xgf(I?jqQbl;2gV%u;PpmK;l8*vj~4axpSi ztqs?eZSbap6YvmorgohcUJejl)`9_%+Pn;!P@vL@S(2LbHvP-(&OT_}goU*2QOES4%_B z=;3Aaj^?aeW=fii#5>|oB4#6`lOr?kAoefwp>ZSeA?DkU*>P`mbWUq>w2i0dmgA*j z^{o>_85vz>HkI}kJi)~-i3l1$=|XEBd2o_%>&dlm8O;+*+)}Vd`}8i+3*u40?Jy~d zlok|es)bmtQT8x%P`6xjL0kajXwn{c&+^Y`=ud8-t7}KCe&SmB#MOQIy0_C_da`@e+r2Ao z>(trHQ*qGvi*2oRF*x|!ea|NV3WwK<%kN&~IhdPT`!vY+c7KzC8)Lt#dIC(}wm zf_8z=@j#9yvWle z{o0b`+&1v_letDjQM1DHK-&S#7D)YL+mhook&R$$4y zJzb-1`GC()*z$+Nn{C^Y<%$C#?odA?#XT-bV|cLa)3Q8%C?&dU^E^Od|7c686l*sEdHa*^(tzsM{k^CwLo zA0Y0R8B*jZ6`R8{aVx0L41%7Wg9aA`h-h_W!ii4{JF=-ymv4xya&sdtGft}DInomn zGa5gIb3LexIW^1N@h(FEv|-&q|Asi_{Ri50;}lgzG4|hTOHF8Zrin6*MnGhG`h2aN+mLl*2y_z)me|Ly?E(4*i6{T zQ4Mt#=v09k7Ch#418pu#37K!otu(WK@nYo0J)oHaDpz{w-)9_zbzi>>nNYozILtot z6U;8qQNhpyavf6eK+N-u-xnMAqkb0)QHQsl1$tAUp8b24$?h)+uDjj$&7mpn&r~7C;y>}`$;VX_vyB4WyGClcYUjYSDE z;kC{M4+68NU#ljXJd>FT|C;qg=k8hlvOYhGO63FA_Z zUvaQ${mXd6xrtuao1K$9f*qsifdS!bXQ!(dH-fS@Hs6c1$I?H=`Z9`r+wc>+8GfQp z30h^?4cCW-@W$Rbu#>YzcGe^#}N+Gsb24kD^4C`ybivaL%ri%HoP|W@yvaU>3lL; zz!yxKK>Q1R5VYbeYOV( zjg_`#Gy&h>o^)EqV+?PYii(0sLU~j7;s4zI+M`=_vyY4KQgU?Q;y3yc4w+WrQ1JMF z#g=XVAC!W$UK^?strPAaw|l9Ry~b@gxb6M_!YOxdW`EKY>|endFav|znhUELY;+eg zLbVctNHNMM=j`ZoMP*TRCZI>5VrECx%KxdrSLedt?x)kfofzNMPtJMD7z;-H2Pb6! zi3BhB72c@)uzVNr&a5kr{vZ;l0o*$hG$G$>U$};M_El0)<~(yMAD!+;>u_Mr&I3sM z{qAcmw-0ueBNO`isZ?)Ae#U)lfmBhhNPg?99=FD?l{8;Jo~h|yo#006rDP}Nds)u8 zDqTfOPc5fQqcq!z9i+GWrxt!kgdg#P?hN81P6Rmsi1TLW(0#t=6*)eE4nLu4w@@GFB(VS5Xk5?T4#q4xB}5GhS1Y-j9%^ z6Trfk0>0lT^&`*Mxd9vhkU{P>K{2@>jRx&DZbd5BVh5d_jd0D{JA#$#0~DPVN?vcj z1>X<{*<_nx+dF+`OLOf`wKk6|pG^(Q78@G^wkk%du4@cXJPJ!38XPpOFGaX)Y<$rQ ze0k7UAC|OC^97n>pTqyhv*mC>kCzF^$3Z=&(HH2q{~I^kRnDs~kEgy@c*EJ{{c6F%%uPT literal 0 HcmV?d00001 diff --git a/test/output_fax.tif b/test/output_fax.tif new file mode 100644 index 0000000000000000000000000000000000000000..ca4d4002a7f39338a1236b1552f4688bf7ae8f89 GIT binary patch literal 3738734 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 z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U`2X9Xf0KrTIE=&ZFNr}27*qHM1#24z zNRdDwxPW~oa1h6^Z~!YuuyPWo$TxD48zIG09DF$5yW$~0fB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72%MI', header[4:8])[0] + + f.seek(ifd_offset) + num_entries = struct.unpack('H', f.read(2))[0] + print(f" IFD entries: {num_entries}") + + # Read key tags + for i in range(num_entries): + tag = struct.unpack('H', f.read(2))[0] + type_ = struct.unpack('H', f.read(2))[0] + count = struct.unpack('I', f.read(4))[0] + value_offset = f.read(4) + + # Tags of interest: 256=width, 257=height, 259=compression, 262=photometric + if tag == 256: # Width + val = struct.unpack('I', value_offset)[0] + print(f" Width: {val} pixels") + elif tag == 257: # Height + val = struct.unpack('I', value_offset)[0] + print(f" Height: {val} lines") + elif tag == 259: # Compression + val = struct.unpack('H', value_offset[:2])[0] + comp_names = {1: "None", 3: "Group 3 MH", 4: "Group 4 MMR"} + print(f" Compression: {comp_names.get(val, val)}") + elif tag == 262: # PhotometricInterpretation + val = struct.unpack('H', value_offset[:2])[0] + photo_names = {0: "WhiteIsZero", 1: "BlackIsZero"} + print(f" Photometric: {photo_names.get(val, val)}") +else: + print("✗ TIFF-F not created") + exit(1) + +print("\n=== Conversion Test Passed ===") \ No newline at end of file diff --git a/test/test_tiff_convert.rs b/test/test_tiff_convert.rs new file mode 100644 index 0000000..dfda59f --- /dev/null +++ b/test/test_tiff_convert.rs @@ -0,0 +1,33 @@ +use telfax::document::pdf::{pdf_to_fax_document, tiff_to_fax_document}; +use telfax::config::FaxResolution; +use std::path::Path; + +fn main() { + let tiff_path = "/Users/accusys/telfax/test/testfax.tif"; + let tiff_data = std::fs::read(tiff_path).expect("Failed to read TIFF"); + + println!("=== Testing TIFF → FaxDocument conversion ==="); + println!("Input TIFF: {} bytes", tiff_data.len()); + + let doc = tiff_to_fax_document(&tiff_data).expect("Conversion failed"); + + println!("Converted successfully:"); + println!(" Pages: {}", doc.pages.len()); + for (i, page) in doc.pages.iter().enumerate() { + println!(" Page {}: {}x{} pixels, {} bytes", + i + 1, page.width_pels, page.rows, page.pixels.len()); + } + + // Verify pixel data - check some sample values + let page = &doc.pages[0]; + let bytes_per_row = ((page.width_pels + 7) / 8) as usize; + + println!(" Bytes per row: {}", bytes_per_row); + println!(" Expected rows: {}", page.rows); + println!(" Actual data rows: {}", page.pixels.len() / bytes_per_row); + + // Sample first few bytes of first row + println!(" First row bytes (hex): {:02x?}", &page.pixels[0..8.min(bytes_per_row)]); + + println!("\n=== Test Passed ==="); +} \ No newline at end of file diff --git a/test/testfax.pdf b/test/testfax.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4b495465cdd3a396a9aa724ba5e5b93ce2a96deb GIT binary patch literal 10914 zcmcI~bzGENyS9i*gMjo1LrcyK-AIRYm*fmE)DS~=NtdM3A>9Z_NJvXa2_n)dh=6nm z-{5xdcb{|i`ObTOzwetrX4bQwyPo^L);+UkU5skdvK$ajer(3RZ*h6pjEo8nZU_rA zBpl%&1hjGiazG^|w4~%wpDLF8Bs^5rMoj62}8}Ox*{E2k+N_* zn5Z~V9Ge#i1|rODuth{bN-zg2q&1KaHKPGS2_Rw4K#;7R84@N9vp_&$Vq(}XNN1Rt zJ+?=Na=e6U7Z^8m_l#uso-pzW_EQS}hGZPD9$CRtsZ=)!9#E6TNP?EGPNF%2y7yM|dT^9iO$y%31>M zAWFyX6Q2!eEN4XsQxbS#)8;ub9hM$Uc_56!n%z?jg7rLU-)&z#IhhzBX`vvo9zo*G zyFZ!>!zujHzpm=x^GVY_g3Nt1WzT8J;I406Qqe)k1{T@mi)5VeS&#m?NBZAZ!R=mi z{pR!$16MPmmvh7%-XZzDrP}io1k&k6^LKTdNPDvk9!ijGCRsPd+dbJwM@5fkf%aB2dC8D>u@pLV%=D*C>4# z;7tL4P5qAM#^4_XMd_l#0se}|1qgZqhq?d_e?_Z-{S=6@;Cf^7#@cUH$X}|zHKoju zW_AdxKTZ6ORT+jfgQD&LA^iWzH{@?<`U60J$IqVtc{UaUx{%OGxw0tFV3tw${Out8E2WKoPGZ8huHX` zQ?29H#{QsT_)-BjD39qqQ)H|VJqf&3ndZGBfwJ$iCd zUzE}3r5~ozXy#cp?9?8&!Xu-Zy5HVD?%M}%28o)o)Gw@H0imSGWnG=4g1CT(WX#+gru z%1C)c)+)GcU}n?Kkynr^6VF~LCOQUpci^xxdiT9!;a8)HrZ`$Ong~V)Q`)@dlD3+* zB`#$$n^v`S$=l{ev9Ya{LnA}~?R!9FyodAscIH^_fu*agwT3SZ6`Z=hXfGXAj$0?Q zGt-Gou-`!AKcXFS(;t3!jQ_sI+&qxK*Z8@xL)T4>GlTd?`zFWl-QiPN zp_7PTz0FmRt(8UuZR+3Q7H-fiAb+R2&N=^_J+3HKGmB5Rt;*$mayUklTIcOZBX5cD z_DNDyvr|`61BR1wsvpby729^7pX^)J5`Dt$M`Rr0HcP4J#)<0^RZp^!I|q%VPqlj- z02aBPrzg5DZ*(*I`ljv~a%hK=6epmuI_k<5mR6Hy_Nl5Kc0Yv%2zT*ubxf(zp+As9 z9)0^(QAb0M9%4P6r#z@rQE%f54VZVNp;)ATq;}sX9FDmaQg2=#BxF{hSJ5GF&1lI8 zCNhZ7$7;qF#u28WLl+@0?7x+`bf03;G#nm69HGpRCM%HeNg6GT(xbW)pN}U2jqlkW z9uj{Yut>ED7!vH@9~De<2{6rJ&}o_6*qQnHS<15wC)HuQ)N{pl*|tWP3-;67aj;b{ zSt`=RGrGdz9}4rYmH)eY|9$acgEU>ukvHw>rYS(A{#=aQJiNSrt5l{QmX_x9R9nL8 zd=wqfLB}YU;U4`d1&5-(d(aT?z_%On&MPeWUS%36J8d+kLQs(fKeit7sUac{?K>1kFP$q%Z7VIP^d$h7KfAsxRlI z^o6D#ShTc^kJZ3IluP`})dLtzo|4RF5qsHm{^|r2vTcQQ#VxOCe5aE5hIxF2xSUs2 z^QU5LAUNE%)S_OmuQyGG9}c}8rXOx$7ps=9^MF&>zA&BXZ|B=Eabc}imq=9X_z=t( zjXe`i`h1`^<8bFkh8L+(|M~kL2BGCf?;YsIY}$-M=oCuW-7k(6hi!?8ILL9y7`NQC z)*tDo*?d}3Hoi?oxLQh{B!7jboX4fHvG?MADX}!IO|eEC$w}A7C7?Gm$Lh zrr2;r#+JyNLT+lXo+)ugzMmd3FRtg3XuEX0##``EzC>x6Z{m?~0#`X%{QLL0M_7Bj zGaD0M*$GcTYkUP21`4+Hi(T5cH^aDbJtUqNYfw2?lq8eb+Q85{o-8FY)q7;^bhKaOZ$hA5taewFhn4sXJ?AR#1CIyY8kDBT0^l#$URv z=&|=>jnGA(hkC~XNXn#^Y2-3L#$#|<$=D>u*Xwpx3L;aiK0%UP783asJ-gOO@8F#e zlV~6YB#`T0L9og@&rcdn?~)SVi%%QIfn9lg6ZG6Fq9$f;7Weu2!)d`#hhWo?S41tn zRU3jOtB#=UY~CZdPa23mCqWVvjEwS1{D*>-W#y_9vN~`A)Bx$dKqt=?<>G zIBUT^aAr`~SU3d68b26ACWJbFlIHCXQ$&zQqCF*fG)W7jWQ$$)t;ixwsZ_gF0!1SfImL{dMc+1FUR3Y?sz9C{t|LOxRJNRAMr zo`5tYVHx~0G4P_`)co=6#}I1aY7gOC7N*fFRM3IQ4`+^nPPVCIi%u^+FHGB3v0STLE1V!(o1BNcXj(-o@d3a&}X@%UcO-ci*s1 zi}+gwLZdC|4gPici zUGG{67gvjLCYS6y2dn&)1z5pFmK5Xit04BL`GUC|pP={3<#YVou76C=yp`|BYrU>n zoJY{dvxl%d=1|XL>wnv&5|K;v>NmMdQ53}&1o3K)!676@8!8faScRwqL9qk~oqviGMWpy9Cd9jjGiMRNM zbX^i}=!8ED?gZnEt>b~?cWs(sIsC{^(oPdXkz$6*6jBxS|qERIyq}-Yh){dqsd-&x zQXG~3p~vv-xg^ZNQ%KI135S$BCK=&jS5nwbM)$!e(a#nmMf|u`9U)BP84xp@s>fGl z1Mf+xwU4yt6~=dtIpm)PiM08Pn!_Rr9=$RWH^x;{%zW@l{?He*QId>Tz+#l9jOQTp zfR0r=tE8Bt>=OuWq7$z_>G@VGzx?-rLDN%cK8s%?8rIIt83$`88?TXW`d*KZ;Dr3v z0f90^Z8G${U*9jva`?FA!05K`)1=(!hj?>4n8u;SG;;y>&WmUQDY2VwSq+#0cIY$m zt?^4hFfaxCsfphB@B{zSazzR9(%byQaxPUAs6GDVrtw7RE-zNW8xsqRxXKG2eiA!5 z^|Bgzzvq}R=-^u6&pyHP&4f=e?9CUSaw4!kr^Z~wIUUx}??c$PJe4TsobluNbxjN? z3EO>@3!t-SpUxd)Nl)aQvA#NuQ3ejG{h(pFJ9;lg$-~Y^OUvbpzK%+ky_nZI(oR!= zEjVgd9AWcOtWP-i4vsxq68L=IY_!;`zVJHuY1b7li9cq(qP1<@hi41>B47f{FNYR0=(=d{alVhdvW&E`a zmTjU1zkS>?U6XSCz%Uls_;*KsS0T;-`j>Vq*F8Bo9h0rCBAgSJaxfj3lZ?|CHCD7B z2j!4#gRK6P?PgfN4)b6ufM$j`y+#wFd*!wL`6O=tXP?qc|6Gp0lP?#<)N}czwZi+U zhx#d}Yrh$f$0i)o;sKMC#F;$_I4_T}2qi~pf zR}-(DioV~zO6*9|02g;Dw~D;}$HFIHbp9M_Dnrb{;ML}uM~mqIU$9_nhUC72|%7gZ^v zc5ef?UX5-1><0|_Z*OCC?jD?Hl5#{H&jM#!0%jIit15JOvIXj^Li2Z#cRZRgFg&~~ z;ogn<#J8>tN|tIb_EpamgPWu~PaEd%C~%2JrG<2zyXU)kWFLkes&w_Pviw@6y+=e_;U^KIv7+~>@) z-?snsy_gkYHAU-L*-vR>E{h&aT}`TtN>HdRxRR@?$ra(VL%SfNAsjI3`+|?gW-OV@ z=<}K(NBA4Fy2RX*KCnC|dE#6EQ$Ks&6*<0VwehTPb(J-;cJ=yX=34gRWLfjU z(Rj-^!_3I?+z-)Lu*mZF^fT&$7_sYXeZ3?KQwZ#$;^av*)}Y8j<3fB5+hV;f64uzr zBBJ7xVyF#SefsCeJGp!syPDo51SK4kRFi(Jkp_x))kPGCa^>!-2~MJCMZ24IHs57F zD?9bN;zxUhMuRnl=`gNv$Wl!$(BWQvf8OYgMXt+OdX!R>B`F!mjlHezwDA+Qfcpba zr*VOncZ2Cq_An=Q&Zk;0x_jrbN^%sATis~%^R-{Slt~uoLDyi*2v+fK>FQBh3cdZU zuy0x@DqS&NHe~hv=Q}v%-NUABl#SSs4s`P8Xc9ofxYqJLuH6IuR@;#NMJIcqTwp2mr99s{b=>;+x=w=!bWNY&@2Cy+Zf9ItwDJifTdU#Lk+2lE^ z0w>{pC;6$P;=WhJ#d0C7-`9z!&}_rQj4JQAZ?#PN)8nouaL_`DBNkfUX{BoQX;T=Dsffg0PU?qG(rLXK-!R;YAIUpHcN{<`qWoC#Vp<;XouJcp zFU+0VE3=VG8bEZ8=5}xkv1j|`ikD_~Mu}Fx4bDNBSl!+l6zn)^avewks9nPHOejgg zvZ|_L1Q81T40f-LJI-XWf=-mSY-*kkPgZy@cQoO>R5%Xf7Qu&J0eYCQZL1~KRHz2E zKVxeJPrB99zv6BZ#FNRfm$_JR+x;*T(0^N=t0p{TNsIl|VJnJixwP`c%@;WHOgiDw zRJtIkd(Eb82s&{7f(&)ZxX3R6k6WK`)QS3>|StG_5DHZ!q{NJ{_UC zCfUze?OB^9ynUwoM*54}A5}w^d;ELRJb3-gPO^=oh9AWYn)(q$H=O=x-4b{uf7hTq zrkJF2jLDahI~zkSNQK5eq;q4>%S}%J*~9O8y^LS02FQ>mEoiOd=IG^Tz=uNmCaG55 zz@kr1ihPc-u3o9h7FEipCTf%FDOJ@PmT&TOV^(3*S*A{rpn2CcM^Cktj5+X1)lv__ zx7DP&ZUqS>^^Sh~h_rjwx9QcY2o_gU@V9iG2AAr~AqJmz%b8F&Hkiu^o>S9PfFN%9sFH}&DdxV>5#fyROHr!fesQL1THC|w z%v+;v^mYfJory_ps}2Kq;}1p1S`@@~9p+!_YOv^FH6;apw|~VH^u+V1E@|f&jjh}4 znr>~b;|I=Lhp-5X1uTM3X49_?#e(%Bb%Q}14=Fd&zev#e#!U^jjZqzz844_acgFv^ zupAfadde6W%lGl+R!o2RAzx;GdDD=3=Ww?H%-!$oH2if~?|8|_D=b?Sd>qRdOiCvyqOX*;P}dZG(w3VQQZJ@K zu}8|;_jMat6t#G<8H7r|U-Jg5`V(9RHTT~0^voVv7OeyLq=qmF^;lXrWQ3hoLFb;}=(E8ZXC1Z0}-(bvkNkEGA?PHD*l7I$zIvNMI|#uh+g-a6HI zJZT_LU;B2O4JcJbJEcnu-dCLFA0&Q9IQYVRTl|u*WNkI*^(?Kkp^kKqCkiE8v)`qD zjgWPmYhg)%Wkt5NIUrPnd(7bGLmVlVlXouUyhe<^rS?YU-_j@3)=qqpUp%^+e;dEI ze;_(Nab<3Tzo)bEj+}0f$L6Cgw=BSlaRQzRRzi0H+w^VOBo?NUZ*Uc>_znF z(yd4XtMKN=UYJ8MfDh^T9N9t{Rz9j6TWr{If2){U#aq%CpOz;g9xz3Py(MGQ`Wdf4 zD6Fhx?Bo2f$h#-kO7Ezm`G~n36Gzo_O`rL7f3FFWn6Ftlm`V1?2fMmEz;T19=*0UL z`v%?H_nHm`E0pr{^gqA)CXu%?mo?AU@&Tc&P}(m##9-AwFNctz^Lb5u@FDXn`EkUB zw<7*3}&Lcx_Wj%XHo)CWg%LbNbZ--epm6NMxx3j^+Iv6$*dse>xj{8@;mYfBQ;EbxxR$f0Vtaq&n#~X=*!E75uKS}c|3dH%Fl8#B@eel*p?Op|Z zD=zqucl?~*1moHQ%-jyztHN9Z_q1x z@>7p*+aBp)SGhtYO{Bz&;PEnTi)Vxf9N~!ZdiTTNAA}LRYVLH3vT$v|Gk92(doHGY z_sM+6Vmih&gqN0yV1N5vLs)*1Ltc8Z>iXwpe%Y9~p9mVngNbi$N(cM?!}i3_^@wD3 z5)NJIsVvRYY!m$7U(xde6P?JdWWM^Rip92!Nc+`(Y$Wac62QWvy~dWIKw%u#Z~mZS zPBTl7Uibar`yW5X%ZNs4ljf6!GkCQ3MBn)wA{S>P4)zXbqC`^(eZ=H+V;9TO<_R(m z5l-XGPXu>NPH|+7E)3v}RaP3C^zNf4MD%=RR8sJ=uUz9GS3hMuOXF+L zpWgWa!rWGqRXpOBmfYt zlyyKqOuV;U(aKvk2*l>mvo9v>tQ)R>G2}zbf2>>&xyR{~Km|ZfHoR!Mjxja2DL%k$ z%mEC}4aYw)o!8Eff;iEvIn9HI9(wP+L|;{Os#%E_@}@)G;Xr)ln%7Ij`~&H+O5Qt?~o%H}YFG z`=2Lr$*=au;!Jwym}pPZl6C8t#$XxIm278`RE14OP7vAiA*D=t&gXj zqK_TnAxa0-AC~2>dp5j)?h^_++UaY!-OOmUyp4Rk54S~UJ&8I8vP3Gwh)iS0w#|Qv zu(|~66?_G|q(`CSWzgebKYtNLxt@=+$DJ5oEMIom7h+uvPoDX3i_YgM!sO|}eLA+wmvq(J;B0rY zgR|431uRBq&)mZ_AIDRVg;B==C#-|$J{OROr@%FY24wIIWA4zcz^=|H;9FzPl&sjN zN237~-`kiRs$Cn4abBE3O=Goe-1IJM(0O<4B-vCDMSY~c^&UfQ(1HACjN-Y){(EnH`tukG!o$n|*Oo&>+{4k#!WM=En!~K%4x-Gv zE$z%eI8>Bbmsc6A>?j4ZhRb_7!!*5Av@E=AEd-&=;$qk$;%2DhbQp(+nInhgFZO{8 z5awbbN++eEBujTA;34E;?`V%YeFl2i+c~%hd5ALqQV~LpZ>B-az+WOrTTx~`Wi=oY zfv~fMBY|9;f}9Wz2sb;>(%H-&=8kZ-1wuIam{BI3p_W1#sAKj&45F??nXQpXMCw9%!9+hg&yVaS0He`ztkLDIDf^&X@Rf@ z!Sz58PB7?CN7AUrafUnI5H^4}j?K&wu1HZjy5Ck%B#nPIgSvsT!;N}8)JO9%HLCFXyBcO0gPiYiw zL5vH`#m52W=Kw>rAbdg)0U;g%Hn4yY7%T$%Pm-u=p;V<%bP*JN@dg7WeU zazo6`crAJV7X|%agrb2u+K1m@QOeHD#YL1E3bQnGwL|{@ai#-vc0swidF+21pHPdx z((35yZ1-y^LM=crJJ?MIT~H8(pz;c}5VAx#+nXU#&EQ}41))|7vzQ3#CK8UcgNglG z=n{6wKL&R2n|~H2z-2hXZa*28LG~LAM`E!WVyVD*;$im%dAyG_P+N`35Ox!GHpR&&E#k8 zZ*H(`KezEG{nm^R1P7W;0-jb*7!Ad|x7X)K6jQ&F|CnY$ znG|~>2+|-tl&(}}e&YNM@eY**2wOpj^BRZY+lo!GHGs0Kw8zigj9knzffs8LW+ynmwi+l zdLy=7rcbv`sjflBa@j1;{s~0XDKqH+5dgwo5JJ`)0L|!R8j-=ka#$0tuo}GS&ERa$ z7K!gd-`ZTo_pGdqrCKu59+>|z#mthATTZQN>PAltUGrCw(^_)FXyMgR&(xt)|7?|6 z#UrIXiWqtT52XO~+g+~-Xr4Vkrh(AfxBw_fh3k5xhk;ul{Pvy7=BTC;OusZJ>v&3r zQd8(H^e(G*$1l|+DT$J`%R`;^wWS7-Xg86G!!GXB7C!W2Gm}&2D86K%U@5;N&;i)yZBG4p=ep1lUrdmjXgtdX%`TK?)9*2;d*AJdlDk z&`^Y1T839f1}rGc3zifV2uO(i&k`uMpMnDv_KP|Q5d@+x zb%BNul$RU+;2(?eKkzdDTygyTH(b8Ih;zPWR$X zF+;-xv6$|6-lj{FxWkrjfG-`Ckf2Omtar*CZ)$LdLGN=wh$MCVsFH>0ty@u^7#IIF bOD;$=XQYQSDlZT)ub=>mj4Goli~WB9inU-| literal 0 HcmV?d00001 diff --git a/test/testfax.ps b/test/testfax.ps new file mode 100644 index 0000000..54f5287 --- /dev/null +++ b/test/testfax.ps @@ -0,0 +1,41 @@ +%!PS-Adobe-3.0 +%%Pages: 1 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%EndComments + +%%BeginProlog +/Dict 2 dict def +Dict begin +/PageSize [612 792] def +end + +%%EndProlog + +%%Page: 1 1 +10 750 moveto +/Fnt1 12/Times-Roman findfont definefont pop +/Fnt1 12 selectfont +(Telfax Test Document - Page 1) show + +10 730 moveto +(This is a test fax transmission from telfax Rust server.) show + +10 700 moveto +(Testing US Robotics 56K FAX USB Modem) show + +10 680 moveto +(Date: 2026-07-01) show + +10 600 moveto +/BoxTimes-Roman 14 selectfont +(TEST FAX CONTENT) show + +10 550 moveto +(This document tests the Class 1 fax protocol implementation.) show + +showpage +%%PageTrailer + +%%Trailer +%%EOF diff --git a/test/testfax.tif b/test/testfax.tif new file mode 100644 index 0000000000000000000000000000000000000000..308010700e76619d7e06e23af9799a3a3c35bee8 GIT binary patch literal 14315 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 z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r O3>YwAz<>b*`+)$E?|Q8O literal 0 HcmV?d00001