Add test PDF for visual inspector demo
- Created test_visual_inspector.pdf with 6 images containing text - 3 pages: Pages 1-2 have issues, Page 3 is correct - Demonstrates visual markers on actual issues - Script included to regenerate if needed 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
parent
59efe72607
commit
0986285d4b
5 changed files with 310 additions and 0 deletions
128
create_test_pdf_with_images.py
Normal file
128
create_test_pdf_with_images.py
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Create a test PDF with images that will trigger the visual inspector
|
||||
"""
|
||||
|
||||
from reportlab.lib.pagesizes import letter
|
||||
from reportlab.pdfgen import canvas
|
||||
from reportlab.lib.utils import ImageReader
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
import io
|
||||
|
||||
def create_image_with_text(text, width=300, height=100, bg_color='red', text_color='white'):
|
||||
"""Create an image with text in it (accessibility violation)"""
|
||||
img = Image.new('RGB', (width, height), color=bg_color)
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
# Try to use a decent font
|
||||
try:
|
||||
font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", 24)
|
||||
except:
|
||||
font = ImageFont.load_default()
|
||||
|
||||
# Draw text on image
|
||||
bbox = draw.textbbox((0, 0), text, font=font)
|
||||
text_width = bbox[2] - bbox[0]
|
||||
text_height = bbox[3] - bbox[1]
|
||||
|
||||
position = ((width - text_width) // 2, (height - text_height) // 2)
|
||||
draw.text(position, text, fill=text_color, font=font)
|
||||
|
||||
# Convert to bytes
|
||||
buffer = io.BytesIO()
|
||||
img.save(buffer, format='PNG')
|
||||
buffer.seek(0)
|
||||
return ImageReader(buffer)
|
||||
|
||||
def create_test_pdf():
|
||||
"""Create a test PDF with accessibility issues"""
|
||||
filename = "test_visual_inspector.pdf"
|
||||
c = canvas.Canvas(filename, pagesize=letter)
|
||||
width, height = letter
|
||||
|
||||
# Page 1 - Images with text (will show markers)
|
||||
c.setFont("Helvetica-Bold", 24)
|
||||
c.drawString(50, height - 50, "Page 1: Images with Text Issues")
|
||||
|
||||
c.setFont("Helvetica", 12)
|
||||
c.drawString(50, height - 80, "These images contain text - accessibility violations!")
|
||||
|
||||
# Image 1 - Red box with "CLICK HERE" (bad practice)
|
||||
img1 = create_image_with_text("CLICK HERE", 300, 100, 'red', 'white')
|
||||
c.drawImage(img1, 50, height - 250, width=300, height=100)
|
||||
|
||||
# Image 2 - Yellow box with "Important Info" (bad practice)
|
||||
img2 = create_image_with_text("Important Information", 350, 120, 'orange', 'black')
|
||||
c.drawImage(img2, 50, height - 400, width=350, height=120)
|
||||
|
||||
# Image 3 - Blue box with "Warning" (bad practice)
|
||||
img3 = create_image_with_text("⚠️ WARNING", 280, 90, 'blue', 'yellow')
|
||||
c.drawImage(img3, 50, height - 550, width=280, height=90)
|
||||
|
||||
c.showPage()
|
||||
|
||||
# Page 2 - More images
|
||||
c.setFont("Helvetica-Bold", 24)
|
||||
c.drawString(50, height - 50, "Page 2: More Text-in-Image Issues")
|
||||
|
||||
c.setFont("Helvetica", 12)
|
||||
c.drawString(50, height - 80, "All of these should be actual text, not images!")
|
||||
|
||||
# Image 4 - Green box with "Submit" (button as image)
|
||||
img4 = create_image_with_text("SUBMIT", 200, 80, 'green', 'white')
|
||||
c.drawImage(img4, 100, height - 200, width=200, height=80)
|
||||
|
||||
# Image 5 - Purple box with "Learn More" (link as image)
|
||||
img5 = create_image_with_text("Learn More →", 250, 90, 'purple', 'white')
|
||||
c.drawImage(img5, 100, height - 350, width=250, height=90)
|
||||
|
||||
# Image 6 - Gray box with instructions (bad practice)
|
||||
img6 = create_image_with_text("Instructions Here", 320, 100, 'gray', 'white')
|
||||
c.drawImage(img6, 100, height - 500, width=320, height=100)
|
||||
|
||||
c.showPage()
|
||||
|
||||
# Page 3 - Correct way (no images with text)
|
||||
c.setFont("Helvetica-Bold", 24)
|
||||
c.drawString(50, height - 50, "Page 3: Correct Implementation")
|
||||
|
||||
c.setFont("Helvetica", 12)
|
||||
c.drawString(50, height - 80, "This page uses actual text - much better!")
|
||||
|
||||
# Use actual text instead of images
|
||||
c.setFont("Helvetica-Bold", 18)
|
||||
c.setFillColorRGB(1, 0, 0)
|
||||
c.drawString(100, height - 150, "CLICK HERE")
|
||||
|
||||
c.setFillColorRGB(1, 0.5, 0)
|
||||
c.drawString(100, height - 200, "Important Information")
|
||||
|
||||
c.setFillColorRGB(0, 0, 1)
|
||||
c.drawString(100, height - 250, "⚠️ WARNING")
|
||||
|
||||
c.setFillColorRGB(0, 0.5, 0)
|
||||
c.drawString(100, height - 300, "SUBMIT")
|
||||
|
||||
c.setFillColorRGB(0.5, 0, 0.5)
|
||||
c.drawString(100, height - 350, "Learn More →")
|
||||
|
||||
c.setFillColorRGB(0, 0, 0)
|
||||
c.setFont("Helvetica", 12)
|
||||
c.drawString(50, height - 450, "This page should show NO markers in the visual inspector!")
|
||||
c.drawString(50, height - 470, "(Because it uses proper accessible text)")
|
||||
|
||||
c.showPage()
|
||||
c.save()
|
||||
|
||||
print(f"✅ Created {filename}")
|
||||
print(f"")
|
||||
print(f"This PDF has:")
|
||||
print(f" • Page 1: 3 images with text (will show 3 markers)")
|
||||
print(f" • Page 2: 3 images with text (will show 3 markers)")
|
||||
print(f" • Page 3: Proper text (will show 0 markers)")
|
||||
print(f"")
|
||||
print(f"Upload this to test the Visual Page Inspector!")
|
||||
print(f"You should see red/orange markers highlighting each image.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
create_test_pdf()
|
||||
BIN
results/test_demo.result_images/page_1.png
Normal file
BIN
results/test_demo.result_images/page_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
results/test_demo.result_images/page_2.png
Normal file
BIN
results/test_demo.result_images/page_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
BIN
results/test_demo.result_images/page_3.png
Normal file
BIN
results/test_demo.result_images/page_3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
182
test_visual_inspector.pdf
Normal file
182
test_visual_inspector.pdf
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
%PDF-1.3
|
||||
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
|
||||
1 0 obj
|
||||
<<
|
||||
/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1451 /Subtype /Image
|
||||
/Type /XObject /Width 300
|
||||
>>
|
||||
stream
|
||||
Gb"0U:P__`(r5Yt,l\28,"<@I,_]>K;\UNM/2/TUKS@F<@6n$%)pH;'AY[?(A8K7P(<BUV5oP5_)H'2LKKEZjcgQ:2kA?a"F7-S[hR>5Ke+`K+F5HMYqn-F1kFQb_3ELetzzzzzzzzzzzzz!!!!-Pbh%7gc9ZY>2%[UT9kiZ\T1,>XXXaK2c%;%cCBBH/t-eFe<mAeVosi+]%+I7b*DM-b`:YfI!O-84F*Y%-VsFQr:*-H0'CR\NW8W"5/tgK[8jA:QSiOco;5659H$*"/mTr1!2ad+N;+?^WWt1`eAs^qgsZF`4ZI;I]RR,S3]^`m]A%l1@!&BKo1FT#))=VJh:"U\T0IATJlGalfWd2RW6Ce_a,eF4hn&('/ZG\QnX_n22I0.l#L2PGG<4U6.I5S59uF:B2f.^DIqI>c]6>'O%iZi'(<GmtFrDl3\>MUc*'J&[3496qX)6O+hJ>\EHSB<JTL]SgR3HS,l<m\[mZfno!UmjdH)pc9;$5$6\8r!fbf#@dhQA_Tlr_Z&X&h0OWQD=>oUnR_+Kbqs:Y#oqn6ih=9Bg/T8Il`+05Eg?K6mr9bhg$:!;X9d+($j:okI^Hj2U>`:CfL^$[VL(Ue1.BQ#4<Rg\UPXQ;8$GmkEm2k7l")qKa`D]6@3?imWMil%5KiR*/'BZX)CpX08^'-9Z%F$9s$kJ=7DN'Zc[2J9'pSMHtUUcll[Oj2-N@ie@@,_1NH*d+s=#Q[\59#nusFao2+Jp!"En4k`%&1?Qar/V&HY;s`MmK+@.?)-^<loLn*-f!>Sp(A"+/NA#QqU9RQF/%nh'A&=\6X\H'Y:CfL^Me84R5>\JbQA6"DkHA7c_jS6O6N>j`9\Y3W^<+BS?7Csjc^sB.3T3oZhL'Xr+^Hq"Bu!H4FC`rRq=RBNU)u'9)"?iWF7QkXR6?\XkOm?S3<_2#k"RFXqYI"T>g=+(<L'``oUnR_BZB71_gVFKi6ImiV_R*m(n*\H:1NZppCt]9RMmc.[^O&n_kOSWeX6&R))Y#fI<s6`>u9T'rLcIIk`HASr$aF7QC(.0oUoX<7Er,d]6alq9P(&K4RBk7pje5/H2:JBbTSMWn``>pF@#G0eRm.Yo/a3?IOp*V-V^@`H8'`VDU0Bu'ZclPB=.rfjd!Aal+Qc2&`)0kV2m]m,G*5]V+haO5-nO!CH!7tS2?5rl+ukHps:2Y'Z_>:b1G.=ARLNpF`k!'OcGA?.8,uJ[;33mUPCGI*_`%U8F/W`7bZLnRlWWBn`$:l.%_Oh5LDW6_EA&X.@7BuAa$gLF;.bToM.^=daI\F3;0sWWR:sH^-?;f$GnUIQS8#9;6dlD^OCCKS-aD[QgDPC"q>6`Q8)kh;]r-bL"NtZEoVmTO_KL;hrXZT/]\ec$7#Lr0NG]W<"BoEpY15IVrIm%V[(P<Z$YljiKsZHzzzzzzzzzzzz!!!#uU&P*!Ym<5~>endstream
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 120 /Length 2263 /Subtype /Image
|
||||
/Type /XObject /Width 350
|
||||
>>
|
||||
stream
|
||||
Gb"0UH#+0p*5M)GH>j0WTFrdu!g24eE`>HpUC[t>'p3IV%>':aW)s+$0lf["&PF]GM:%uQ_8O8"9oPfDs6tg_K/`R\)@sIqlL4BTh4<6Ph)?@cgR@Tlo>g:bRsjmWn$g'"g"f[M<g<Xbzzzzzzzzzzzzzzzzzz!3#KQhP/$PWtnE/7YZ6JmdqSsNGZBuaYr[hoH+CbMs8jW"W_Z0qN&SO+8_>V^><!?7L9aGiB:36<aR>/De,dTs"dW/n=tYn@@IYt^3f"@Ih/A?Y]VGp81uG[peeoHYgio'hm`&MIoP`;r/k<j=`#c!V-O^Ah.5(#,1Rr/okLDu0@G?8`o9S$Z!k)PUpXA^;>knsZL?SBHJbh\e9?tPU-dD(Q"lPcpYA$^kFD>#2DouOmZWj2:RsH:=3!s=*D5MZ=-M86YuE:mV>CthWtA3qhm*"QghM7'CW;XWP?[gWX45f0n*F)8;h#fa%np!ZoCPH3Q"LM'-[/"j,p(#\L5AEgdbd,So\Dp[JeN2#Cgn571;7rG8S;JH,"St`=Y5Ok\=5D^p<HY?0Cq*I\i-jtW=4!0<ul@qh'Vf;'o*UWk`#1N)&[24oLL'fr&5@hr!lI,3R.cr=ii;RD>%B+lkYTMR>AL_IXTH)G$ZXci_^=fL)L:EjRV!Bd(V9fbeeftOCIac\j;'chH1e#Ue[9@cd2K4Fr!a)n!p&bgn@MDEqV5'I;66tYGhqu%9.4dp!e$T9:>X"[ltDF?F"F:k&gK8LOO6r-MLF\CfGoP=!tGV'k<dXSlt<"1W_<I2JoD8(9!itST`nkfe9f",8"sjPfIeGqIZ).HHFI^4l7Z-bq:MF\'+;h^K:A?Y0%RGA!ZN0H'&mOF#RMlMRf5OBQKsqA8oC:T4JFJ5(U)27A*a+Q/ZA_BDIQ&4,qDk?+[RaV&PI03DW@\OR8<B=1>ThlUJEQ1tSl<L?kb#Y+AjVV5&0[cZ[T4PPh_O]$nPU1S7e3SVV8k+5QqcXkqauS+#Wco@:ELU60\bTJ9,$8o/&E)4WD(B,O(+b$[5f5d<X*`QRPT/R5dJT5Se:n!sojh$8)QNI0eI:JGEae'U77S-[>M_cum"<&&$L_map'IJT$]MO\$'cR$?=G<FPis.2APU&&r\4lsTu4hJ@mY1\XP1NiT9?8WTH?4:[?nPk84_$RGqQ8)':)=1uJ-rrm8GZd2@\#Z"R'U\9C]rq&Ph-E$N.RR(,cTjYaoUcUG<pssK?:sWC@_9$cVZ12PG:*,3HTcci]OrP&hVFiKP\XmAf=pn4`uUbo?p:ZM-3kl%5o6S!/7W?LMPi4_%o/MRZ]&>@b$[Gl5d<X*`QRNc#Iq?FVq,SV>5M?TNRN7Z)Ht[4f51-X?2?jF-N;'7m:-%G"'$G=S)fXD\;g6SI<pT2ogE`/c1M>%Z'E-]4)q2K%gSWVb$[#_V_Wo9:71.LN+(/W?pBQ7YsKqZbNc&1Y&8e?_p2CK".>4mb870k=6Ts1\a+T)-8">6[k_?&G^QL>.-J)dU\*a=a%Q&;B]^fF:M'%>Y-N4#K?Yg9aq-`r@@#4pL.NnJr@A#h$E6uDQ!sV*T7K&4d=43g9"hrF5A6/;o1ceAU%q+Q[<;=[TZYWn]l'7b8,_Is=io3?<#NOX-d;-a`\;+<Yb+@W=<WrEUG@df\S%-@b,G.>o&MFro02?daHuAcFurlMY0"e+^;[Oa$th&[f6h:l[r_;VqG\?L#H,SbB-5$eQ,.nbJRX=4Wf>/_Q0J,`:+RHcg[dKd:X-(S`a.OdR.48CG.DcR:[K[Mfa?n(G=fI2Sk"[.T(Sp8KF^h;Qd7jM2W%\Ac6?)dO@loX).`'#X++Y1kCljHohQdV<decZl<<?`@a5PXaVK;YH"*gQ4lfN4]a(*GnWI7"=ACo_4aDD8X0,koFA(5olHOZul@-67O"73d-sO0a*q*@eg?50u-t-TK4%a=##T9-db@_\[hoL$lKB4Wc`<rSD)jN__D:qm6[UirR4')Bq-$kbJd'<h;54OeC'Qf2uA^4PDbRLnl0.?"\S[4j,k1;JAnh>6O0JW2?-+5R^$r32OZ](SrA7C$/D)7*C.tX"bNQSJCZ;,PaW7K48VY08N^RL6(qH1#:[Zn7US:L06WbDRKs)OL"1.Y3O2_eCKeaM2O-2O^p3(MRHGp$`VC&G)<?dm./dJm6TR>8MOe2W2sU\IlE0Yn(%I$QMZNK!=U<$e)(ckSi0<F$KjIO"pY%OqR2=B#J)Z)A'2@Sn!Czzzzzzzzzzzzzzzzzz!%ICZ[=\bf~>endstream
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2549 /Subtype /Image
|
||||
/Type /XObject /Width 280
|
||||
>>
|
||||
stream
|
||||
Gb"0U$#g>t*!btg,d%GnKncJs5U@_PXUpaH)Ti3CWhW1eN^;K$ALJRAheM.!lABp.UPPpALo-1h8DKGcOG&E.+qjGBSbsfr41jtKHS9[,2<I!lREY+!s53kE^ANGls8Tf]-Bm+N6psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF2ru7_'0//kii9d)4WUf\/P`t-fWn>rHrJ#asCm5A2"&B_B^UJ.5Pg)(W4tUjAf'D)"GAH+82g'Isrrd%Tku'ZgpDf*>*^&'j%Alo!_-k#Hm)R^:BuZ,#j5QM<A5pRB?GHJOA7TAgI_V1!pVc1n8h.3@TNI-"W&JJ@6Amu`DZ$t#kgF%?VQ+_#>uHrS=0cl.$r(S`p^gCfHs!XaaZN9thnJDf_ha+TerJNh*iU_n0Nr1o`'5C=/bZ0)s,@upTEO@Flpm!P1EX/;nPE.^HpU/o>TODT3(;.<AANm'Pr(cWQ7j>]Cu2M]Akd,/Jj7EPmL@Y>H0!&eZ;jq+fa8Jn[CBSc,Q1K).J#A=+<K?2&$9%XQ?";NF*$0!][a$YlhbcPNu[EiE#XrL%j,\KHR19qji]m^o1L&^DXQ>m2,O;58\$0Bi`mN;<!\XWL^/Pj&f'!g#kmWLL^#5&I\8.)EMGG7e'bo!GMTh`e5]g]R4hm25WLIER]Yl)q$0n*Wq>puBJ<i00,AbH/WW<adb2aa[Er=#MEt.7`;buHhl+`kB52'#3Rgi,fO!6Gb*6W:p;e\nWouZ7.MeP;7l!NMoiXH!Y@%;R$BYq<LG-V5C23DS-!i"-*BNPN\AGIHe(_6D;c(2B;t$PULLVJg\u!B:)Wq]KhV8bR%NK.0X%N<epnT%O0[spgk`!J:[53m1mft4hnR?p2@+JrWBU^pY9=i)obG0Y/jchl*VF[gmrLjq"4\F_o")tM6Y\@!Ik0+,[aisD*9TB[)2fHE]Wcmb>":)t<-J#>J6bcQhH*h^0%lD(/=]OH'\&."82dmjZ.`C>7g6kJ)pX?"an$5N;#3QFZB?@PQPGYrS.`bI^aWkASU`Qna<jQG"a"iB"=IqMB-`-OhYneb@]t9K*.g\5[(J9s=Ngr^6o#9nTaZo'7C7Ie]-/H-')B+PS\O]?BnW24fQs_Ihn%MMGVY928Sc-Vuj7;<C0)p.E9B)0u1)3KF%NYC6<Y<>S=_3k4rq,H=Y^H*,7oG8e96PJmMg]%oL[t94a2mP93T"<=b*@2CHaK)/<N=hE11FUrTr7&u.G)Lf@,PbSl#?+/Tk_m&TffWY+,heV\n0&t0)p.E9B*$8Ot"hS8"R5O@'sk+KCT!L.>-0:/YckY<O(ONXL;e^9L;T4ZTtX'?U-lhPUIcrB$L>)m*Xs:n(?88?f*-*]dE_ec'g:C2nME;OZiZ53qY[;QRs0Anp`U3,gOOW-/dn,mD=RPe8p"]pDftG9"K3%J^k&?An!bFUU'a<!t6%[Nq.i+Is'_H9D)*u*^2uu8"4dWad7=`V2tZAePgHeNus^l=nB)u9HDA&S,Jj=pE!?O0-6fIKcN7dl44isjmo>m7l`)\PUY%:&W9?e;eG^SPk'ORW`<D9H/H=G=PgHdZ_eD(7ZAKS>@!%u6m4UX>FWL`\./VOOH?EZ6pGbl]+#V>8\%%a!W+Y859!RoWM=`LZ_-IFQ<;tIiH*8;165`ZcH7A1_%^V<[dFu,8P&XP,q?=noK,(DQ6tW+BP`'Gl.0^`]"RWT#)jC1X0AhA;IVB[4Zo<A^&#/mDCflN)>CIdI:%'pUJ'VX&1>O].]/`'7l!M*8b!Z\Ge$!ZlINXb/pOWe()f(nX)9V0hH8f#d_,B`o=6g"F_H;XO]@>0%imb"5p<*Z(h=CCO,WrR3,k]SrrISN>0-sjTF?%48&^T(o158niPLMfCY/:31m$<.AA3-bIMMP:aNZ:q275KfLCO,`hm:OrEcTsc0B(R-UMJK<;NEE3`BQa[L8)>1s0Y;;,D1HX^!l'<$)W^5NY\8,R59hi8&^]+o10b'M-dk>1_!Kg*2qBTgt>,%eZ%#8'L$m+ThK+KW`Hg"S*Qph$JN_!ZY(5G<F9M[`.*CDkL'=c]/>TjDdJYj1?`AuU64U9-^Mn7;[l;Dh_?jHMCBq8Of;`G,\%Yo^SY&OrrUXqrJ$d%;VStd;`$I^3`%91R7HfWl.ii0ACVh%6!fijL!CoqI`du$P.])`/%K-.T]"`FClZ-3O&&B/*a@`&:Rq3AGuRHPrI&TAjgRd#ED?)5Ln*YS91]4RUJd+\O5+V,`N[q"nk0>OeJap&,i=&W\F?Z60lA!2Pq"r4:p]A2A??rhTN&'b(9LpAQ&!C9gsDHZ`K>65-m0X=)Io"@YsE2B&8L[iX/_a2N?((kL$@jPXSj]qPlEREI^q7Meot#$1QUVk9n;Jna]A>Wd%SX?Sk%B.;1sZn7RZl@9(L6P/tJEpKf$hh[s@T*;MuPMO,/UJLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCM!1,r+3k=+Zi~>endstream
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject <<
|
||||
/FormXob.2c2d8c1a59ccd390014a13df1823520c 6 0 R /FormXob.4239313bbffe37482d3f1e78247febb9 5 0 R /FormXob.c61c5faae8c5519bf83811c2a31afbe3 4 0 R
|
||||
>>
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
8 0 obj
|
||||
<<
|
||||
/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 80 /Length 1760 /Subtype /Image
|
||||
/Type /XObject /Width 200
|
||||
>>
|
||||
stream
|
||||
Gb"0SHUnlS*!btK%spT278X2APSBr^+VdBXo_M3)&dk?LrDb",77$mGWO]17lYB4#;)>3%bSOEbO!W"Th-+sQopKFU[<0sbgT0/2GJACT__fZh74r[f^;G_nF3\\DS,%*ebc(-al%k.OLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLknUFdH%':2/+Xj/L0D?U!H(`SMcPE7;i!2gZ1uM`-+3?['^uUfj9Mei0%Kqg_[`OU:&rJNJ>IBZLB_;CQsT)lOP9^Z?DP)0frt"_5)_7b2US(1s\@2S)Soc1GHj^:4,LCk+stsS%W0TX6OPe/%N%u[QB1'ahsD:d;Pe^S].eR:GZ(oIjUp<[kUr@RB*OQc7aB\<JO;dfCQ.`%,EoCmegVsbP!=Mc`G;((Yn>1Qa2([\Q]!WE`n%$X:JH`.Hf-pkQ$@Cla,]7W#ls#_nR4E*JhDk=_^$67ImA%Q*jsPZo%EU?hs^V7pj<NOZm%5MqJmoO$9RiKHYuq0^nElfkHXT8XFKN@qaXQN\E!LHUiC_3i]FET&;g.W3)1d1"=S+n8[A2F(L-F.Ku$R@fOE28"Clp73qTFm?*sJc':DFl[;iG4m"I]K!Bq3f]8gG*#nAs!#$8lAV\2u`,r9LgJs[G=T"i-1Y#FtfJZfU2%ZNuK@_U=Z)W#)El!dM?glq?TK9+N;`TTf@bnVM]9k*1KK,C>9XrAn9mOn#o+Z#1X./oD1%_XGSa;L)/*tl3eRO)Igg9(c=9P?3YHHNu1Rbk[:LU).nsp'X5g\g>O2i<mVD"M-f'OEjhf'h/L='PMCjGBF@rb,kA,kDdHcdEV>l4>c$jN#+ba!Un$eOd_gRU^&Q7o_YY.B^%6afL%=4PVV=.1'pFZ/9]no/0CG/`gb:304;ZCn#$"J'dIeM1-KDm%FAh*:?$HJoT?*`o?p*B"@bRu?Hl?]gtdniu7Do:BVjqu$jpoW,N(jl+?e!CDKg"ACZ(ICB\`Pi!RMX4[[&.D,c&rZ3S-Z#\YQemm1kb.l#)1p*m`Q3Jm/OqT>Z`T[-Ao;[,a`4UkR4:jq[I$]Y7)^CfqeLZtcQ_h8fh8A(4_>Ucb8<]_R"h+hVM<<=RG29o?af>BD<n3*T(@Bbp!a[\kh\W#4jP^]uA?P8t`MX&JAE@;l74aT@%?7Y`]]054#AViMGrk_G&-\u[:5PQVF*/]"KNMoEYHOs23I!XLqt4X67(KB->\P6<pDA62SVg;,b!)ZRVW/jbXa+Z`5^](ir+(k53+>mk=aqRaJ4RZAnBI\?g0C2j3+JBOMi:anWH&.SAJ&V82n>#m!BWl&,fq4lb!+ci9\`S:HDRo.BQZsTMri-ss5GA_qi3e;l504J.+=N^E]A3E0HK76j^T!CH)c0nj.>1hAlV?$:.#M7PTM3=/,P"?esj*,QAN@<j1We3^?ZF3-&BU=n4cuU?P0!Kd$Da)b+lm+LBY?:9-:&c-V%N6,k-'$EUek'.jVDDMll(JBA!m1,NZ*C1$\;]6WGci0oq1+f-(*<a=d$f,_qa;]7ici[hN&JCi0,fGdOF[=V80<i-g/g^!U@QQ[)>/4RI=sXK:J,?`0/>^^Hh!HrBo2g!<pV1X'$oWLb!8)6J=h,Nb+co-e3#]Er%1Zd<Wajrp*Z:8XS0f'r#nmfshA0H0GN$@3`R*9"!![$E49K?ZR(%k8[2`O]d7.m"8+4=iPTl[ZcU&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J<DAoagkMd>.~>endstream
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2270 /Subtype /Image
|
||||
/Type /XObject /Width 250
|
||||
>>
|
||||
stream
|
||||
Gb"0TI8!XP*!bu?=)2B:rFIL[<U7o;C2'm*S(3g?[8s>/XdQTi]!gmb[^Idi+ta!1:qXS4:d@8L'MpPrJg`9]G_&*oj[B;t]5lk:?7t$ILI[@8kAi3\CIb/gh.Q)Ek</Lok<AWechX,Q0jS?G&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J5Te&J=7Cogk<ooF^UY`+:%758<isS9sUbYU%%h\*1l-06V]]CH%]2VJFo/2O&LQFs,_YQ':p/VdeHX*kT2EIG&9.^M`nEI:RR*Is]prrFYn#fWG+UG,:[DKPCJ$R=8l=\+R45gTY'gD"6j*nR)JXFWU"Y\(ImSZt%<DqOH2dJnb6d9I]?p[fiB5^p.n#3Fk?iYM<;q?=9A/kN:ATf4<C`)JnVO4)M%AWCpE`A=@MC6e:fZ]P)Raq5RY#Psgr1[eA;6etG7qa#p^FrDr!/Sc@Q=pU4/4]D>gc>*2Vn1,m/Gn3kt8li['\Hn5te(OPl/pWGa:.L7N>_;@'9@<[JIfm!Y;Fq#iQ>*W-"?9%?^H5lQWk=<Lu)bGP5ObE.$h3ueCl2fsEdh>lTn6C@jE`DEN@Y6eMrn/d0i\NHOV7gu!C#d$!c-s:"Fp6_:k[T8imJ(imbu`b$:NMTpr=[DAT>d[e:Mt8r3&G@,o^\lq^-V.Z8)/H?fJDcrV_gUnVVOd(duGZT-kBK3>2u38o=s-HoZkh#<J:\\i(1$E%%S1a)KC;H17f>'HO)g7iPAqb*?VHJ-=VTGHa%]JF'3,%lla\.dQTcMN;e)ejTWs:%[[umnS*_+Za2jAnhE\CDT?cfD27\&:WLNs_X7auj8$^d=E\jJjg;5%@nm"!I^E'mX,_Qe&oVaV4_kS13@#q!q9<I-_q%%:)GIc*FJ_4uX).EJF?3I[[T[Q%?<<*Z`kk3Q-1/B&q1trKafIf*XtP!U<=p/r^rsb%=JQsubg/'+G&+AuNQ3q!o.`f/Sd^nm<Yi28.jDM+Nm_T'*-N1B#ah.UZKO'F2A\=L>s7W0<kQ7iQ03N*>Q=V70^V?XR<HLKI8KQNg;E@e([#RuX?N6D2q.4hko':A'<sh`Th1SA]4V_=o5+uk:]>gka/d9qO+'F+WK,Cnma+q_KLX-/jm#i@42rBQm+X_ZVL=*kL5UK>;"%oHQTRK+]92`]*Tq!u(?gCneoRmJNV7C/L2"P8)itN!c#Kl;?%8Q@eYKmPTL#nCO`pQK:Y>[:G-j1KC@^n$jKsQ<U(MaWMMk^R($_>]3UQ)WXLrhTkAL1Nqp](e_I6for/>(<NMIrhW+k(O4lk$Jjm<a%SE6l$kPB!(2UAaW(-Ef.<N/uep?`qNBl?2jm,PcmdOm/<;::9Nm&u[`!u6_rQ.)>/,QZ*6DWc\b(&-m8I'UZEYbsNH18`kuHI@h;pnXOZH6&@OI_'4/n[p-QAEOajbmVe+LoX:Set;ZYPY+[I-);QJW*%($W`ZD'UE6ImY9f'+3UL&-fRd[]Mg`IuMJk,M8%]:X9(SgoZl;S4g4NuBM*C5I>sIQ`gQ!_l->Kl%='W'uDQh0\0f\R!VF47Uk!oU$#tFHDU\BX]08rLu]D,]k%$.>k<VW/CgHi*j`d/TtPibJgBfD4#X&RhfV%+)MF!"3kM]_@G]qhc<gT0(g:A`ZqOaL)Vk-@Z3<$YGAS)gs:&lK-"rl'-,5*M9ZU"qTa'"@_N%9r#nG[fBdUbhC,+\E4!Ehl-FX!ID,=L8V2%,a`PBpiBBpXPO9:8Mi4hq9Jc`Se+-(0e#sAo0W$I2iVDDl'D%1j:).pF::q\nUk@]<`:?.)UEC>OVK7@+pU91[Q?,6QDZ>O,qk&.sg4Q*]br2pUa\[#&)fll[H8)WI:\/C:U4Z]YGM+6U9^"OU"r0`)g?f3J@+Ci'L9m(mB-5CW(].TGe^7*=S;MTPi2Rh6P+rr"A(6QcGDq]71jX+KFt[W)E.je3]n![peTp*t>+'88?kl4`HDs4l]n*a"b`C6WIld>bWJ(Y'u_7%uuW0hrKT)nOnirBfD%MCo!"GD;9O\:"i=i%pST,'b75d[?%e*l^o7.rXYfeoV^M%qTF529R4sP*n7Ig(40>)S[_Ul@:!We&UqeUjQpnr+naYj1^;eRLcPQ4'N$S9m>8"nMT59!dcGYu[$sMuMpfSliP7EmKkjDgWjh9t+)0=k5;K+,LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkr2^IfkUlr,2~>endstream
|
||||
endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2098 /Subtype /Image
|
||||
/Type /XObject /Width 320
|
||||
>>
|
||||
stream
|
||||
Gb"0UBiEMR(l%"a5&LXl$S!>%iiZ9`.U&YaY./u`/g0/6Q90sJ14UL"F.VBnPD\TMe!!(WkM4Z:dW?k)VOqsC&dedBzzzzzzzzzzzzzz!!!AhcCHJPbE!]-qU6h_PKfRUQ^@*q]/Q_7]6E^CTs(Zg2kCib%eoDIe(Ap=m+JSpq:`5lD/a6SregYUF^4Kqs.96dIe/EoU))hacQ^-&KpuFRB54fT=gR8-KaSP-';\T@AnGY"G^.]7:#WO'F`l<=?2O9YP:A+7/81DnGB^*QrV$'YkN/==RSKD7V4[53\PljB5;4da4[4Ak<968+4Y"3rs*j#;X^(P:L"j(TfD-,=`MKE-l07H+TqQ>X[\Y')G5^4KfQd;emA['6qi%;FUMXjbi<oRt;6`JteWSh_ldoLWH<$lM\@AK?:tJ-25,kSGRj7rrniJfjq!-D18.[*q-eGJ)B@ZY+s7"u7feGBC[VF?m6DaTp[#C',>Ibd15JIF6*n6:0m/6bTml(+Ao=Jqu5.,DqJjNOUDtnEFXN^LjQ06>W09KcCq!g^!*7RRFC<u%`^SLc[/^r#T%1QL$G'.rlO/m:1$*0q[7[rl(^Mdt+eJ+c/HtR*Tm-Le\:RjCQF^it-2Q3uAA`r-rP8a-qm[7Dk4ABZBH2-l;;cAkmeDB&"j&7=hEnj37orIoaH'LL:n6j:s*Vp%G[r/m!j+]EREo]bk^#@WfY&*parp<m_&)P^]U!5/n[TpRrh0,X\>C'@t2Fm`mj]D'j&(_d=),[*mgSP1T2Dmn?Fj?L;'<[O^hoO_/Gir/O?#==ILF4s5>"_n]/($r/NTBibX]sM,oB&bXEpW8`=8Bmt+04Z9cOOpuq5l'8hp\K!X(6*cDSq2<m`B7D@%0_nmF`KTQ]tk5<(:WV:t07,2KdoQ9r0:Mk:-5Wi/%TW-bjD*PGUF:fs:G+Z"$AG%Hf\&O4=ciIC-E4FR7m(SfQh5Q=!p@<-%6OV:_!`KPOM';HJ3'8,agr2uH+"3I^n9b$Vo4D4A5P]f*%M^4!%$`go28\iW^0n&q%N,F*]JX+d^g6dOeIo@r'UC_c7#lJ1O1kd;_DB5`$<Lb$C>=j()&k#J/QGIOk`QgCc'fWOpdNr2Pmn*&tKUo',R?+OlO)&X>2$;V3h1GbJJ>$>*]-7Sb5T31pM=$t7[Lm2h2P)^L,n,E:_p%,Y2hdW)09PRM=B5`$<LatiAIAUhmLQ1\9s5qD;V#7eaE^sqSq)Qa>M\gNVA=%BG='&IirH:X#X)T*>pX#U$qK[(#1&XI>bcgE3==hHMf4nI'4aQa6[CoGB6X1N"X+bu@!8?EU[]B@r,QDN&Da4]XcH]0(Bq!XSY?kL:U&5B2%gVpd]mI6UYeIh8j[3%lDgQiC--ORi9Zp*+DHY$&g`&g*il[?ih4.Z4MG*ToY4cdor*-/uRYHP$)uLJAWq*3)WuUk_o&n>kKD]KNg&;L%3"W'd>L?j,XI.mQ5Ak3G+$Qds;Q43QG&-=O[mOERSf^[$9pJX!9:;TYp2#cebEcM;'(tk_ltg39Z-fK^CYoM"Q!Z&ncjJ[bl:0"k&3N/q)]Nj.hU^7ia0g,cI%DG5pXN'24GfTJj2[5(b7B=*Hc*Tc>hS[`pCo*<e?nnj_SUo<oTdqVT$<CIRHNJLaiX,E(HX3#/]s!kVad>=[.(Q4p/j6N<&A;c=TmgJc't011du.7e]Q@ted1j$dEuCQH@("(<ZP7#ZX:Ir%>QS0\<6^Wfs<'91?d*Yrl3mSTZ+%D\[e`snF)HpD#)TdT:;<KiQ0)2;cAmnJ8t;L=`p&<042G`hUS4BOaiejWtfI?'hqf8=L9HR`g4$kfe@,:(&iV1,#$I*GB\9,kP$@MT0Mcc=3Kri)`OW6f6r-(GW-j@i=3Q%iLaK'%Z/:)rhSi6Pq><=OC/NZda^P+Oajdos0fAEWg`(adP<,I^V;uQ,2'A>fD,-N%IAuJeO7d5e"ckTDd&(U]mEh-;jtkSs"A%krSkeSq>#<dS=#\REofpSPlpcjZ2_S3@B9X=-6qnjH?ra2&2aktW9XB6VaDYCq>Z/g`^Y*/:0Yce<C4%)h>RXW]%X&Bzzzzzzzzzzzzz!!!#WYOE("02E8~>endstream
|
||||
endobj
|
||||
11 0 obj
|
||||
<<
|
||||
/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject <<
|
||||
/FormXob.1310210de56a359f75cadd6058093d5c 8 0 R /FormXob.85598c76e5387c61e079109a4090d1fe 10 0 R /FormXob.fe6121c1aa08a49ce6c0bd2422036546 9 0 R
|
||||
>>
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
12 0 obj
|
||||
<<
|
||||
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
13 0 obj
|
||||
<<
|
||||
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
|
||||
>>
|
||||
endobj
|
||||
14 0 obj
|
||||
<<
|
||||
/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources <<
|
||||
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||
>> /Rotate 0 /Trans <<
|
||||
|
||||
>>
|
||||
/Type /Page
|
||||
>>
|
||||
endobj
|
||||
15 0 obj
|
||||
<<
|
||||
/PageMode /UseNone /Pages 17 0 R /Type /Catalog
|
||||
>>
|
||||
endobj
|
||||
16 0 obj
|
||||
<<
|
||||
/Author (anonymous) /CreationDate (D:20251020161349-04'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20251020161349-04'00') /Producer (ReportLab PDF Library - www.reportlab.com)
|
||||
/Subject (unspecified) /Title (untitled) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
17 0 obj
|
||||
<<
|
||||
/Count 3 /Kids [ 7 0 R 11 0 R 14 0 R ] /Type /Pages
|
||||
>>
|
||||
endobj
|
||||
18 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 341
|
||||
>>
|
||||
stream
|
||||
GarWr9i&Y\$jPX:ItbE6&maiL1uX6udNf;FjhN`n',IsXJs<Hg:Y-'n#Xrd8=7TiGM"0G'\HB?`YZN(lJP1Nn<o@lRg/V'H5\cXLWQe5!HU8*Re2Z'rnZ@:sJ/>HT`hpOU*nK9/qZ*Zp?=GnqpB^3Zg\lWZTo68Cf!.WaZc`5in9GDZ%R(!@*)"BsDt<AuYIWQc+ns`3FKk/3P![CZplDX#&*C#u/GnVu^(3)n,O=E=1orRgOGl#P9O=Gh+\K90X1KCIpC'cT[(dJIdRo`IU_IC8%(.j!C^d9i`=VAP6Y9rsUsP`DLoE7j?<cPm=s6^fP\i`S;Np$AJa*p4#]m6~>endstream
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 344
|
||||
>>
|
||||
stream
|
||||
GarWs9hPRC&-h(ireg6C@b[=(,b'$WZqsRqaMDY\bhC3WKAA-SoA/g1NJ)uDKfj9?JA\,A)-_W,%uV_71&)YXbn^"8\FmfqB4*UZD!1LRV[l*=<,/qp_WaF4(>qiqc[,[GDuFLaS#tC!?$4sh\hih/i6T1!ru6I11s&fn"1a/8,Fq*/abM4Z=s1c_&/sbfWXIJ@*k#Q]GOhNl[:$otBErSq[H$5h`F>80m8I?;W?c#k,hdoL]=QEFUh!;+FCil4DK>8,14!Eb`$k;JWPoEIU_(lWjeA,ulbnYu9;@dJA4iG\d24hBH&gG/fiT->V6-I8_9*A$T[7,A=saK3GDm#MXT~>endstream
|
||||
endobj
|
||||
20 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 442
|
||||
>>
|
||||
stream
|
||||
GasbV92EDi'SZ;\MW51?/=k35\e>/!#\\19)`FO!BXP%f9\#d(oV'c<'%:B[h"6!gSBbOsou"r$O+@VX@*ZP=n/[m5f\d.]pdmKT@+iNS)B7_SSCInc`.b=90mXAeShRgo1_kUi"ZO^NMCDDo$Ibd]rX+,JKC*!s`3K`nK2<aBfXW76cW@Xn6.)UI3TAg)YU-,:S@1@Y@,oZp1Ih%l$8;+t<Qm9SWZt1Rmdq!uZh:C#@kaEJQ#g*-FO3u80@>oG>q4iWhFc1hYI4r'_j8bX;T\rNki)>`]lI15^[ObkfsST8VodBK%7U*+4ust^O'%Jk&hHsIW1DRX-QC5H*H?@\rGCjBpH>n<pFV"SO'[^q#?LST4n2!.,#"X2_L!\h,(tfsFPG7;rAVi!7GdY`jEnI,#ZXm%9V`O4h'ntl%(?h6^"W)t.%GYckaT]4~>endstream
|
||||
endobj
|
||||
xref
|
||||
0 21
|
||||
0000000000 65535 f
|
||||
0000000073 00000 n
|
||||
0000000136 00000 n
|
||||
0000000243 00000 n
|
||||
0000000355 00000 n
|
||||
0000001997 00000 n
|
||||
0000004451 00000 n
|
||||
0000007190 00000 n
|
||||
0000007544 00000 n
|
||||
0000009494 00000 n
|
||||
0000011954 00000 n
|
||||
0000014244 00000 n
|
||||
0000014600 00000 n
|
||||
0000014684 00000 n
|
||||
0000014762 00000 n
|
||||
0000014958 00000 n
|
||||
0000015028 00000 n
|
||||
0000015325 00000 n
|
||||
0000015399 00000 n
|
||||
0000015831 00000 n
|
||||
0000016266 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<e9790a42050f762a07099aba1d88bb8b><e9790a42050f762a07099aba1d88bb8b>]
|
||||
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
|
||||
|
||||
/Info 16 0 R
|
||||
/Root 15 0 R
|
||||
/Size 21
|
||||
>>
|
||||
startxref
|
||||
16799
|
||||
%%EOF
|
||||
Loading…
Add table
Reference in a new issue