diff --git a/apps/PdfService/main.py b/apps/PatientDataExtractorService/main.py similarity index 100% rename from apps/PdfService/main.py rename to apps/PatientDataExtractorService/main.py diff --git a/apps/PdfService/package.json b/apps/PatientDataExtractorService/package.json similarity index 75% rename from apps/PdfService/package.json rename to apps/PatientDataExtractorService/package.json index a4416d1..28bf570 100644 --- a/apps/PdfService/package.json +++ b/apps/PatientDataExtractorService/package.json @@ -1,5 +1,5 @@ { - "name": "pdfservice", + "name": "patientdataextractorservice", "private": true, "scripts": { "postinstall": "pip install -r requirements.txt", diff --git a/apps/PdfService/requirements.txt b/apps/PatientDataExtractorService/requirements.txt similarity index 100% rename from apps/PdfService/requirements.txt rename to apps/PatientDataExtractorService/requirements.txt diff --git a/apps/PdfService/PDF_To_Test/sample1.pdf b/apps/PdfService/PDF_To_Test/sample1.pdf deleted file mode 100644 index 417b45e..0000000 --- a/apps/PdfService/PDF_To_Test/sample1.pdf +++ /dev/null @@ -1,618 +0,0 @@ -%PDF-1.3 -%쏢 -1 0 obj -<> -endobj - -2 0 obj -<> -endobj - -3 0 obj -<> -endobj - -4 0 obj -<> -endobj - -5 0 obj -<> -endobj - -6 0 obj -<> -endobj - -7 0 obj -<> -endobj - -8 0 obj -<> -stream -x `?\;3n6لl #""d%} 4g}R+T[Bj-Ѣ|-ylnv晙wfys;A!dFCܵk"^.BU V.\>iO!ɂY_lYZEnv8aϰ]huEV̝s$Ln]>gJ{z(r ~!V؏ "?G>r3.}F5zmË6 -z} -yHxGhLs;_s=8:e/C7ȃ}эVm8V24MB+Нx\j4 }ߌq*fݛ{ -=qu#\})1gθ=>w$ܥJBsiB PGG!Gb^ύ<CJEa0+7>wyh|}rON!?Acy:o!.۽! -&@+Apdz1sBP:!)\{4j,yѹ8kD"} -( -;-~{BrO/ĒG9+H߄##lc1#ywx+rt'z;<_x?c32L#KW"{SFo6ɀ PУdQ|?Dc -:ހOr ?_sW$A%eUGr?8/W%\­Zmw7W>sucs‹«)Qn2![Keoޟݙ - j?KmGoc.xluВӬ?:$܏ $'md twYNdƹjb.pps-c w9—e|OGOOY›'E\.nIJRZ[#cjtF{QmFq]ߐgyxH% adNqhc ƍcT Я&`³NT +QA;1"p_r&zKO{I,7 P20EGO6|=MF!d9g 8_0 o@`of> = ]Gg+Wբ,;w"?O׈1'-8=,~ECW{ jϟEף-]#"PH\ UfLܽpn<r.xA/))N#]h` uNA3sϠr U{Q_rϡO9|k:s Qat/  ]} 6.h*jm]!t%p wg'JxܳRlArDt=- h>^)5bhZWoo6f+ 9o]zUW-_tE ̿2=i' O6_xAӰClп_ߚDuxEy,) qfl1$Q9QͨH&ޚK.Kcs`ǜݻL&ʊEzLB*K& %iBM}k"b̑H9ywD2'=[ QE##vQǨ֑peDl|K")V 1#wTT&9*㏍5pL #P. ]ٚP͙5#i'#3kz636 r|#tcS$uQlikbtkhfhıS#p7rkˌ nOBJQtOH(cI+tM#\$>BQi3bLs02gdh uLf?>ҷffvՖ'_8(VRcZ 2Ɍ<?uӂ<m(OZ,/G=s{ -_'q$j -i)B=o."Cm FiѕDWF} }; DDK##Hqpzk ܉Θ?qZ44=cN9#25߶cҏ)S\)QBa1C'2PLJGFgKe%?ԕ;Eb MkW* u촙^j Wx4mF42"gV_Wk fd#h+٫`0OohtcsrW"ZcyڱrT;ћ[}kbHGǼ$;0#%31\Ec3ó@tюm$m4In6c'dDE-;،}l/{Nh,IL|p_vvg;.>]Dߧ7%GFi}z|i4bؘ6#i4hk'eaB܌;S.ܾcX2]iJd; Xх~Oy3gJ\D?TB%y &31v*  ZG̎ҧˤbDag,i vC-ƠUfKzׄJ-+`gSSv ):nn0nwgtXw B1v xfJMk]j fi. (/E1t`kF̓Jw tV42QpQ!H;aoۑY{sQas4RO,e%̲DC)e'_Lv.δϝU}3fn v\ -;"3[*j9͝V)sU%A&`Qp!8I֖H+<;,)6ʍIL9S\D-@-3?Fk]o}ZGjȠ`GG 0U CW23Zv a7_79uՂb(B*X[B]Is;ݘnM@K;`4*>>7 -r-EFGXW 4 +hA83;RE"62#"3("? )3^'TMliy?4:L?  -6X8N< ۗ 9$qHBu|\CI'Hq&Q8NC%3MMM㻛P3yX G dGC:"!pZd*44!ski #!4 BYMNڥǬW N"ǽdfztڙpf Nw!'׋|3nX'oklwֲ)UJ#fLdyðDqWX"42o:m6FTUF#iXtJ/9N;56Qsg *㣑 8( g??=;ٯ&Z7#Ȃz@(vI8܄, $Nx[ʏ?u;>}\;٤AѥvR>%S]k=XvRAtY] ȑ;s. ]d Y%YɑxHrIF\ppq9­Egk n{5iOjzon%ki&H36Ս1~~Kv_Yܧ]8H+YZD7(a^pUk}PElG -݃<KC#8O̞y++J'2e^R{(tI.s^Dno*%GF9ǹ/NsrO .sKkĵMگ}ww?* rF27HE*N&)js2ka<'͹{S-vEQp3eʲNT])j6pR+E{FQdEz=)%?IXR2|StJIN)FZ)?v.SU>eH4'(5Ǡ:.*NS_7Ȯce8}[\sђ{=~߰4yff^_‹/ov9[)vY -OnAX(4J2⒪a)#n͒W_1J2ͺTgqvA'O+^' [4( -B)Ii -85uvMc{Db0Q,R)j h)d I*d6YAno?)GI x$e FqVǺ˳lBZğN! k3 ~҂8 -v$eDq{]y7IRh|0jР L9S Dx`xᯞ{躛3<۶ o{ß,XG:Gbی>uۜT$&"-!}Iڿ”e -l>1jSla;}BB5*>?/2aDSZ*A9A埄9Q;?QGU~2 7ųL[ZƵQp|ZȊj%  ? v*'O!?Y4C G.EjzvdED|"Rq;ŵ8>ׅ!`JͰ ߛW$W^N :8e#(tSp*p˜)ٽf ڻBnCT]m=UmVT; PmP% .($Dx7nq.kś]/~ ݴ%ٻ?}mܴqףdso7~: P(PEEAޙRż M"[ B0th悶1ɔ/l2&SL^5 B0 c) ekEǍSsYH9IȜPUx񜊈wÑI y(ް]d^A$KJ,6#dƕ NR, GJ[l򨬺HpLzm›AmNSФИL⭱qSf1 WWG#wr}#WַKJ%ZP&Rr>QI62mْך>(ܣfSIW.H Uu=:1;g[O~kفxܞ>}$}KA P7*<zUb JT]bet]CZU͈CVK9m<V$ ̄fTQG09*LMrl:)h2;}紸NVtYm*ȹ:i -^Ֆt|5x6 vZ!lmvvkgc2^#>CD@dA!;OeYzy XAҤAdVXav '9&רdk`h!RV7x.n[gnH9@s\f YK74g@!K[8>eCnܶUE;{aӚ;Okw~=^ʮ=E8=F $@łmjvQiTS݅vWOE~*SZc0@TKmnmK Ȩ!Ӆ 1y]'jwwF/5Xz)Ew% -+vRWLaB`X$e^ΖnZ0AWÔK -LeLhRyMD_2dS]]EXՌY>J2?mtxׄUO=qݵ/SKۚ:Nހ?/t=Ks@_zg` aGL -L ͊행̪HfZm;MfX7oxv:4 hvBM[`Y+0|ED(9p7gOd6ߗuduiT?pPZt*(G7dz~hX5L> Rb Qֱ %A3fQ+WVhq7';AuBc/hTD+r=lߟ|gw'y>fp/\\?~񌉟P>/x=&RVށ:f~i|Q5CAaRN["|'^;B(*(*(նd #f#.|Og`}>#[0E*7 -ʍJjGI7qoka}S0i֔Ԋ)ev";#Z}"L*z' _ Z bbQ&"Ȣ yg0qAhKV.;ʡ/.tg{esƥn}ۆ2usnY.%[p`CwO[tͳn|nϴs(FdfOLa\ -ڽ %UL/hggxgIUaWhV1sU.N(7mÉtu4>e!PTs)Y%;r֭joxh`'sYl̳<0vm=𜈜8/<'DljWMۓtmIo[:E/5Oi܈rrL\TNC֖kw5 - *V \`Oډ}K -s@G@`[rFĈhy٪+@hQ4aqusB2j>X#"qf_ͳ~' ƒ,sK}k牗'o>f_8]{ոRb?ٿe~W9fP}|9DL&k"o!M`v#BccmTHC# o2az7}GZ9#pc~ $XM;O[GP'3w -I0'!OJыkQptLƉ4h֦'6p>W:(LE@o$V#Gt?@qo 9p3nڕ]-FHhOZBVAk:7ExgÂ` -EV&Ȥ|$X-'J͗)<|IyrHP(XۚM:*vH?~k'Os6N6oj'PM|l&aÛ} ،q^)N=qT^''v1hV͒j)LS}c0U{*I&9 J&$x/}e '=.ÉA+,|P{,(JБjl}?zn*yq -kVO#fw{0j&l˾%w2{s 0gN:L\2:- -aI.22I. M.X"*TL -:ވ03TS]|7[zߑdOLLj Ff)H-9 \[۲/emm2?&tݤ_arbW^/@a„crਛ1WVB{y hWS`mFHbQ>>k-fY]ȪJ\Ybt@%RX X,)s/%Xk3XR_@¶>xH#H|, -!NTZ;^7UXO-".gD2"C2eEr4+`P+z/,/ZYj2_ۻL4;N5+klXa%<^Fӻ\`;7,;{lu“ƷGܳW {n8u!i~ wj>|ū;voxcߴ퀑@Qu+G$x -[-,""@2􂂩 -& -S$t$̌]i  tU"8 :H>P1dRfi"yɳcDuڪTa-DdQ:`,ݩ1]˄$s@&e0&p(_6؛4_ OJξj(~<;O -0hsObCx~ ojޕOACQAѕD9?X<'U5zk,eW}__Wױ -}]׾Rj a]~}7ڊ2EI4 }N!['Co|>g_}v& 'w[ֈY3vni[]p!3 ->.$F[WELjhg={ΘdP<[" qu^t.G!Y q*L?h'8)jYlD1B`ALVD-2ܩ⠇™&&lE&3"}>Y$3d c<^x4B|v!CH$~AFf^:VdK-yDCR jx De7XX 6JVИlt^"H -9FRI!.vYD݉ӵIԤ?LeHGZFDl& FWДeW5Zuuj`jTY'H)i^d#0e2|)l(-O:dnhIaKT2$D$3yB̒@ݞ+[Hr DQ0DPPp鈌#$U^)˂l*yVpD׳*T{yUWşeX$OM /֭:Dظg`Qhbo0E`$t hJd]Tg9{@$3XduIOqY%@)wEFr%zH -gBX0 -_c9Y@F@Lvݧ-*~LۗXmrr/+a 29zYߛ,+创q$kb5&-/VO'GLH_jN5]-9UsV]G_z7m15^w6 ORPaU@]f[ل}^N1 =F@Em2m %{꘿glwK|㬛*~=CeFQlŎA LKy3K5Ė+Y -,% ѕx#S*tA˯m5㮒~k5=DХ*:5[-Pu>~j@%F6n#HEtЬYg6{ܡH!zQ٬p/px- $0xӑ\y|g/^&a}}hU=y%ݰXrdY0cfbJmPc(ezƴdGh‟5j\+_A\wԱK~m 'psxֽo3#C7>N:uo>.wW]7:[wK*'\mn8PGA} $ -7\Y+P pñx h]ٰ\IL( &I9"2' -`@ OzP_a&#xn+,.I*}einѪ\ja. s} JXO.j "G I5-pAmzÐxcOzͮǏ "Ӥ~ |tq09Ut f8.`܋oW`NX_f16`W}9LaJ`QgὌXYy|^u_IeM^6 -m۞<87ڍ~z?hWyEGZI ~r[wm|b}Ҫa^}tϩ'tt{)"W2шHk@4b3-0 ב]}pf`4%e&My!!lHtiC2t='46K9|q;I1׺|.gu۶m' mVv+@=ZyXV(=[ԓ+΃9<ܙOn=_;[C_uݦ/ݶ7e2aܧ>MZL- _cr|,qRkE"/"/'$(E<:>.p'EN4sTDz^.B,*EIp;PX/iVSv x7\AܔnBCg 4<>Wgt't֭NPyA&e&:bl dhT٤~?5.wZ;3o6Z77aj'"UeL_Ntoe3zݭ ~8:iEW{rn|vwuڦ>C - ʘmZcV~5PGnTVN%>{~x^uWl$PhTFzph;e<'#a )U-%jƚ1%5)SKbiqbI? +o]gE'Tkmm}̚ -Y[rJ~ICfey^VYy^NY!E^-!k,sB*< Ui qr9z8MϻIr - vrF?tH,47Z=3j@ -2\V&鼛H|{\h^n`lwy->XCCdk#n\wzqɈx+|eZC4iOՖ"I,eL9qf|g&βNEljVfóaq@8pDKH*4azGOQ=˴`P'_HZ.7DJ0(5۷dW_2p qn$0I3{W^1nEOKn>['lಪ -U}/hi169~N!V5'^iLHC%:,(ra0JK3,T(tK8i - Miu-"ĴL]dsUP{;o%JV/4ے8$a~ɿHP0$JYe@c,B2I,+?&cMNʭrc2Yٗ16VQem+l785gKP-h+Bfdɨ!:4oV-e+) "?],Cr,qҚ]d8o5\ӎ~~߫>}۟Koy Oݲ.|wQ\-/aa~r4 C=8\o!Z6#Uak`22255ZCJ~W޿?aSZP1:6@eԏusO>Éhx덟[n 9 0yKQ MZH -|kxr -JBl=LXZ's!g|`NzVz8OȶE۪M!(ZPu2>'1Zv])oRӪ1WF61^\YݐQ(cKR\9`{R>IB3zZ+ ^ T2ûtbaiBUm:·a ͌/́||>TT;h8Q/<c2 i54 ̋7K7d$ξ"]צۊD%E4eD5_<v؊fyʐ)lWeپoE`. -}e6?_j -Uji'JJL*B& Ddy̅]9Y{S$ߓio>{PWG]4Da $A -"(W1߼ -%Tп·]̮b&]l%z?(:-p }N& iݣhY..%^fv]16UqOehZ_lLtr);{yY!uSF==mi?nry:]}r]UW\'rIwAKѮ4C^$m0va-5[kAA}kFˣLNXۧϢ_ƾ{= -9%fhԟ9 듚 -,B㮯)~E,p)Kw̋5om5Ћdz B^-eZpe{е-Eg浐W"u6O%]cd< WlGmr6l6!VlyM/ecb!Z#}κi&?Q&JSbBdiGb8glIa0C%-wW@ngN+zQ Ar^J}&[ށvϾ[]|V6SW΃>3O[C\m׮{nF`rEݼ3wx|st݋\o/^'h֫ Z IWQ~g^dW.N$lQz3JöIV -s~PCΌ3$KhbKQ,9w-gf>-1P?si24>eL) 2SҳՓ<  |* w,Lu>x6eҌ7r!"L|Np_f -szh 3EdO7 $ -.zh .{3 $ j"/̃h?O4o1o5ġO%d.54Ȝ3[JI<"w w(wF Qx'`83Z)MP1ӨŽ`6V5)6] NOp/oD:P"Mѣ|&7^ EKa{- ~Og~ܛXw7wtU]q?b -6r/r eW&Pm/KZ8TD@]R4'3TD@%E"D+Ev)b(EDn2fxYm~~/)33!M- - _[*V -7`bv>棳槻q; -;a޺¼u66`7z|.3}'=& US-Adw -dw -];S ެD -g­ R3n3Tg,oR -| aF#MA/sKFE_ה tTfh yE^+zqocL2(̚.G'?D*DzdxƆUq9.m(T#"1i,жXݠn,%3'ܹL :c {fC*~%k(G_uuΘ7nP>~߄Wؿ}Ow%ɲC{sݺIa̫p -$i]߸O3Ntek4v/#&qEjQf-|kd >f&3;Mfv\d&2VYi|Pߒ3 -ef - >*_f򑕾q1117g:|joj"SCIǷM ^*G7N3ׁ>eNon,]ÎNi[\j8 %AN",mzZY:^Y>Q+]߽lj{>Jjd3Т"?Qq7:X/O)?;,~bSJl1-L PP@(mcgo0^d谤 YedPB)1 ,IKG"O$_~[S'6̫@H+Tz -]O lI[ƇY+bc.[!ec. u٘!łLڃ-^,Dcox;M˿3dUJ*g$̒zt$0V>U2Xw1xUT؞OU~`ٯV}/۞莾n3^dv11 aikg:;v/^ש]s+B5@\&: 5h&괛Uę̄,NRw[yqswh6>v@/ 쫊XP^/IˋX]VDGH\\eC͗G旭7e5ryy+tB:l22ϲ̒g)%%%%eהּ>gZZyyUkbkhyDꁚ?ey^y]_=U3Wf1(7*}F %bQn%t#8TYX@$~%j/װaY_K+R~`< a Y\6Y U' #s"XCN_C= %~z?Bd-?VGuI.y.8pݡcոޚ^ژQmjM@0:}W:nh;TGH,G>;dѻ2%h )V2T=-g I_zH_OMS~)AqC;#qr#5-hE.I}ocyi4 -C6n'+c&nS25D*)`3jQYLUL},A\Ui >J` V'6l؀d7ܥ{v`9ExI?d .a[*z9ǮW# N&:|d)6мvu kM>׿<ӞQV/^ ů]=|Ah#/*lp5UK[2kXi)~.{ UykR-<*ɽ^CKEXD[L8Z>,ݏVT G3'l9٦/_gfC $!$fAr! Q)2(XQdP(ʤ"0Z-J[WJ\E[ErosF>{:{kst~ ԷD4\&CJX>1}aC7X;°CBд_.b֤„Mt{}b-,ʔzlc,cm3>ΓkW߁r*C7J'4#A'{bӦ%B :ۛ+K/x= ۷]7m<锧#ǓI"* ǭ4q7WTJQR\WNB|*0:QwbW -e6.wU%\;20ۘ6p~1ߵKR?.JQQR"o@Ij/ٵȵByyCCߝzTCCS7ZutK=V^[xj.U`x tl(IRbARy4ܓ$H>$?ZV47OXVN?Kupi =>DUF,{ɡ~2@fj~.HJNMJJvb+IH2%#$QtIʗ$jpaOhG繓>DŽ<~Ͼ&M -߳ۥR.YL, -H>+&+ ŗG ij rq7F/݌ȋhIĐy Qgo( x3ۨo[Βo=kR\FȺ8CXr@4\L=w[GJ$ψN77xBjϺ9l#Л:[SߖvyڹObvH)N~Lܮ/ٱi۞ڿb A3+~{H~|o_cuo9ě9-9lD9/_F->I#1?8+NVUh'ի$(YހPB81k}oVIqٙ|LIoee&wQXN -{eos7_Dw =)3.]b='?O( - JTT Lv~SҭRoK[ti`iʽ+<^NAIg|_y1IOIQ{7+,`K -&^o#zIVjJJA -7C It΀r}rI\9Q.ESᄲ@8 O - ȁF|WjCr<|KY89qX2j Msvq`{ۚ|nM>+ϙmyƻnI}-գoAMLҕ"[^LsoGSFtm>+?r{GP'AW5 6ZX/- Fn@܍i g/0ȶ.FqwqZq=#h Mpi6O<h2OR-Hi(K>J ?Q|tC~,m -8a+KQx2b~:+ŸY1˗T-8EY:eHs,g4*}F1C4ml Aߵ>0{i6s07p7Ϣ-n̩&{>m̥V8%8֕i!oyt[Bwjk1DgR˿s 2w3b㣝{%nxqCR(Uii0怈5I4c!oz NJ=]ǭN8?_UbQC=fcml#K'fltP?c 2uYW= z'W_g K-C}aIpv-D`j,ӺFYOB)`F`0~W+c3 xO!4Ў@ -@ GYߗBgzz{{S?[k [Q6jLB頋^|ǡϦhc3)Yf]g?T߄rRʺ3믬; -V 4Q1h*UȱlZng - c,6_\rKCҙzmaNOo̩6&Bz̈(Zst<;w?*eas7#V/=GhߒCz%?܏=Gɦb-ͺSqom4 EdF+swRT -YL{=elQm~zHocjK˷ m&C\*`+0k^C2f]^/WEڝ~<~/dqӳlz G43m"a[O S5H( 0;il2Bl/1md ̃0y@cŞl_Omȩ-S<_'vO -LưEy_,f2^<ieZJ;~r Z' X쯌qUcc[fvĦi?sN 7.c{LtN:W%/ʲc`jW_iζ{ΰ"s~~"Pϱɮ=JWc┅v9s!]M'l}~۠R*E;$k017w\z ˔,ۣ؟c00Nc<>*znoPHf'1tTs o RhalTݺH [nSVa`lD{.m#;_Rk|e}u!W/-Pޥ<MQ4!UJBSg#O{oUξe+^.cC( mw+ˍ޴Cc#埢r*75 Q|1@kl TaKcLKbpócp@xyqxDž c@=.oX wԯ*P;Q@z@>a֦A۞? cm~`k>&TYn25bOh:kȝrGX,N۴*[.JyWb_D,{wo]nUG7Z(5THՌ.]/vϼj 8dd"թF?˄}z!ߣ Bޙ}}TO$2\&߯MDO+}8iꋔOBx -2ț6ʽt9 *ŞB=ۄCT1ڋ5mRNboxg4P@t}.G(c?an.EGQ!Rk -s/fVcmno1V>7>N:Cl6Zq8홷GjlACBz}j9yE=mh!@wXZwXTLSk+:z5z^eȹh9fj?l[Cs5SS4}BDz>Dٜ@ 1 3 Øs6l=D:|sOlc(UO\ud`&uy.N@`'m4N; x:;o/G>P>Xgi6R (c%*)OyHs`֦ ouhvF5>_,3Y$Xx$t[廇Zle ]_u>s6a߯ͧJSm hwBP=6Xc~.o碁mXo{z9W4eaĚ~&e)>oRW39O/a/HؗfCIAqęgX/RІ/F  -A6\=t2w#`ܙ^xoPTam!kK-}ASOE~V#"JeMUʑX))(4ۭBkٮ='9LJeh n#N ?4 莾~^?5e{.'<.3WR+"}8tC%>O,1_ul~o8T8K/aEGo?@N^X`VCC1?$CYuA|'0K+mzXA.2g9@2u g&"^HEugɆy -uztp̩K,D=;)m n :k^Fm2ܶv>ݣ!{Ns?D6>}a n~nUG#Hv^g] :36.PGF[\/Ɯo ~ g[#;18M P_2a_nḰ1n -[V>0#1(n@G}GV@G>Lm y6cT ^^=OO{7=cLg++!Cj>qZf=m4?Vb}} /u=f!IõP/k>= B;+[͵r1sKst7SУ \Kƚp`+5ш cXߥqyq^'g ߰>gX羍>†M\|t*Gm|n3~Ǖ)ie/ȉT~-p8uo*ޅ8-utط(rୠ= -qy^sS| -lU e{ƋZ+C+up`fz٦<۱ _o$ -Coscx#ڂϯ~O[֬/4'1l؅1Y瀚_ -,E4 q漦kw/as~͐+ǁO%W^!J mxl7,%jNiOXhn'j0KwKy.Zv ]Gsww#<|рۈ".K%K D#iGL@LhR!hkϵ=f lWDsBa~MGqGqGqGqGqGqGqGqGqGqGqGqGqGqGqGqGqC"\N} $´H>%䭣OP:? Rt@ҡ^olT -3_Pq@V -R)ÍJۆ@ZEJEky`/$%>\j-^0wC<`5p(P׿YxA'PP AÀIj@8dp'\ +tE3a֜RNRxU[lE؊֥ܩܢ:Z4PPZԓTLGůUC^I QҨ +{$EV$JAs"'K{dS>I -?ȟ5$KW"K["Bwǹq-V{׀.ǿ?;;ߦ 'C~W po+| Uc}ޥv lGF6=8= ڣ~UiS_YwfQ~!T\ӿ:2j:J~Bp`2p=uT <p> $~@(Q~\|)g)\|).R8&R8u\|)0 . .=͖BhJ7n&U*me}h;kwK/H#uR4.T{T[,JyRmX#BSJmgy{3ڃRRmT[(HRmHn[*AWnm o SˆjcEcڦCtq< Hݰ `d?2ZL' *zq-ʀII@9 4ϮQ1t]a*ǿ6Znn)JfLFiFo 3zFG4Z9F+].]Kv+<.&t`cHnW%גK!TTUʥ}SPW6J괶R]F*j4̑u=W*IT#N^(A sE_,ieՔ~SYfYwey.kq_YVu˫FqcR6M8~]ߙTߥ0Õ~UXBwυYQȕg{܊Wn* -nO8֚[EՈ858 @I"ZSODE\Eʦ\%WQ6G)r(IZq;q#NV^\,52q&0 \wM32j N:p5Sf0zZ]uiuSVxv[iN O3 wyVYF6< ̺qY{vO=eH[]T^}D6  :P]6PBqu]b$o]| Co%#kʼOT<ƚ)s - 4FnpZ\s?Pf>QU]QUue#&j̏Tw0gvB(֗n;M/QP+iy|VFː'Y'N5xXq]\L̿vm1ߦVJ$q$ǍUi"[ќOVz(%sgЋ@/--UJ " ]= W\$ -endstream -endobj - -9 0 obj -<> -stream -begincmap -/CIDSystemInfo -<< /Registry (Adobe) - /Ordering (UCS) - /Supplement 0 ->> def -/CMapName /Adobe-Identity-UCS def -/CMapType 2 def -1 begincodespacerange -<0003> <005c> -endcodespacerange -13 beginbfrange -<0003> <0003> <0020> -<000b> <000c> <0028> -<000f> <001d> <002c> -<0021> <0021> <003e> -<0024> <0028> <0041> -<002a> <002c> <0047> -<002f> <0031> <004c> -<0033> <0033> <0050> -<0035> <0037> <0052> -<003c> <003c> <0059> -<0044> <004c> <0061> -<004f> <005a> <006c> -<005c> <005c> <0079> -endbfrange -endcmap -CMapName currentdict /CMap defineresource pop - -endstream -endobj - -10 0 obj -<> -stream -}θ@@ -endstream -endobj - -11 0 obj -<> -/Font <> ->> ->> -endobj - -12 0 obj -<> -stream -xWY \ =)퉥|F7&EE\?T -i<` UJUM Vo -l,=}yG}Uz@g},Ǐh Cy͔1L๼?ݟy \3@u YdʼnN4+X*#"s (CrSD21$!I_@uDsES;+$D Ue/-6)dfa:/4ے37K| |ZC6RjJ86if:pcG}ݫ9Ǝ6#&}CGNGOF#['8\=d * N>6Mbڎ]-%kVhgtaEtl*:{cZě )z\LIQTKiMh*Š4O_:/P!;> -stream -x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  -3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ -(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 -6$1șKL@YC ^OCơ(+ -89M\gpez$f$垡\V[ -왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ -θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ -n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B -]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( -:=ׁ"lanUw?di - ^,*se+/k -s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> -< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  -C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 -Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o -":@ YD+^(zD"a^ -r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# -Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ -"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e -IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ -kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 -Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o -trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y -/H{cJF; -iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g -M,DWP?Od8:ژfJ -A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ -.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" -ǐ1$_?w%'9nES&k O9c I"}x -TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, -4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 -,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM -`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu -oi?58]l_WlEȉ'a#ш+J|( YY=5<#s -#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ -CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  -#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F -f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  - snǥ Id kA}M] -A -x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s -ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW -endstream -endobj - -14 0 obj -<> -stream -x /k8$9Y -endstream -endobj - -xref -0 15 -0000000000 65535 f -0000000015 00000 n -0000000064 00000 n -0000000122 00000 n -0000000244 00000 n -0000000391 00000 n -0000018032 00000 n -0000018106 00000 n -0000018314 00000 n -0000050006 00000 n -0000050600 00000 n -0000050667 00000 n -0000050819 00000 n -0000051816 00000 n -0000063894 00000 n -trailer -< <8EAF7D443EC4C92087A699265EE4AC6A>] ->> -startxref -64179 -%%EOF diff --git a/apps/PdfService/PDF_To_Test/sample2.pdf b/apps/PdfService/PDF_To_Test/sample2.pdf deleted file mode 100644 index 586231e..0000000 --- a/apps/PdfService/PDF_To_Test/sample2.pdf +++ /dev/null @@ -1,594 +0,0 @@ -%PDF-1.3 -%쏢 -1 0 obj -<> -endobj - -2 0 obj -<> -endobj - -3 0 obj -<> -endobj - -4 0 obj -<> -endobj - -5 0 obj -<> -endobj - -6 0 obj -<> -endobj - -7 0 obj -<> -endobj - -8 0 obj -<> -stream -x `?<3{I]iu%˖ 2mp`} ! I9}R6`64IsPhMڒ%M)MK3ZYN~95!3jC]{`cW/Xp< $ Brf{6hy:]3dpfX._| ]K;sيslMݲ|ε+w!+|jlj/`{4Ba// |}t];A5zmŋVz= -yhxя$N4:S݌">G;;H4@wk,t Eh%n5ݟ{=pu#\})!'x=;Q%GУ\ǹP(ԁG!|$g؇oFUerT"(ڋIT;Od:YJqO;_&Od;W[A@OAч=,c+|#8g{3?_/NW9 #" ()o"? ?"=BAy2. fnj;0v^^^Nt =Lw?gQvclg/ }V(E P9] nz+v_CKp+Zv(~'x?WPgX"2 Wl&N9I87חKs5u܃\{+w;oK2>'5gg,".׋]HC )-+7:vݨ胏q1Nt׀h7Rɋx# wrZq'S| $9CFp8< -!.eX5@'l+_+*f򕨠z/|{}#o^|MPhBQ1߄v1YΙ6'A.L5.82P4 -%@'7<~!gy>b_э"vĝ/r .t;Ns_50oA^&?&𧄩xpMh=jͭC MoBtᣰ,iM=>@x a< h1 ~: -B;٩hfyHn!:w?`CFt/zߑDa?XrXGɇdywBkW`? }=srtW}].C);\@ىd{n,({!W-hQn$͑[x|25] p/BZ?wm&Aly8x?ykVj]˖.YhW.O͘>id4^?lښAWۧ2^Q+FJ%`z.î٬"[&Ix`T=&6%dxK1hGK&.b%PrJ&BIEPCȘX$sht,҅gNiѱH$'0z3UQ8!2Ʒht$["c2c.j2.]oW[d e2{!f -bdѴb̜ySƌF3xU(cK"hMFm"Ӡ"۫oU- e^lޜYMnN3=^׳ wjP|4ȵ- ̖)MGt ׀sIؖpMЈEn nOBJ1tO˒H(}I tM=^$䎡HX45BS'#GUozn ŊSjBbZإLdnjgFà|1=8cҮ BEgN~X Q58nЙD"ӷ/4 -x!ܯzmVjXAжsFiՕDWFmJAWwDs##HqpzK ܉Θ?qY4<=Mޒoq{mLJ婌sT$y9v@9Pn4)Dy] P،rlDǓrYlsZ#zmAA>@M MoFFe -FLl-w7{ fPt }l,2}NWXD!Wi1ӕ{W03vS3"<_uioqpdp;fQw5g&%chi>'P;ʳl{nFl؇.ٍ`V#I4L6tU h^g;lLoJZ&'G$/$Z{Bu\qp;\s*݅۶H+M͗lt_[aԜ+O=O0cfSDžϖP"*QCL0Q_hRHi@z2,h):'fp,3;vm>]&. -;cHk(]jno727դ/!\+5gڮ2CMNeQR V(n.3{+obAK7m>͔P3aV̔\ P^P!b2vv21֘/%`hd^3-LC_ BTk#-ٷ=X.&YF3Ke͉B9ہSNZ@\i;ҹ1q4] Ur;NSDKL Bq2m#-͑!x -4v0`YSl Vsڧv[0#<[0g~ - Ż<Mkʠ`{{ 0U oe"6g>Pnnr@uYЫĢPTF.S1ݒ;#iU||nZD-hKV3\H/h|,OlOK={ߊ^ĮʌdhMdwdz:6Pq)4oPgMϫ KA`O+ŒpV1nAh~L!CEI:Ec7qЌ/inn݀b=j!{>89ӂnN!-{HC3w$@V0IӺpmzju.=iq8UgNjgN½68@6 #_cA8NuC %5> 3X'SoˏinpOHe5RHF #$a݉䮴EЩidtl8ީGf6kX_ukwjmfU[G#p"QvAϜp8;ٿ=їٯ&ZƷCȂz@"v8܀, $Ox[O= u;>}\;٠AѥvR>A;%S]k pjY;!C:4!ܡCw'\0tkEJ#H  -wiS4`AQ+4أ6QHw 'ȡ>BAmeYΤоpIh[j=tm1COszA\;\+dU $#Z]p; @K;A8t\jN Oo^M$flbl_Yތg]8H+YZD7(a^pUkʝ`DOae#AEBC8O̞y++J>e/"F MQ+\ɉl7޲ -fI1ӝܳSK\2RK:q|m#G[PZ4RݓBHFrHɤ=]mNFcu;̚GZ$9wB/;e\jW ';Sv,IUHW# -\)3"S(ҋJ7GO'N’VF[QLrrSk!`??lF?~ {UW7s v,@F1Aa9x<`w1VVwjښ!v-+K۲vǚݷo|饛o,M<Gl[ލ>)/rzQ3,Ja)$,&3mFG=Hhј] jɹΑM7\xcO.~{65q魐tҬL.UYw\ӱIੀI$oP(` -@R!N k]َIvl¾Vҋ-En)ɂ?|y/6ٍsSOy 1i K,P`YTb [,}1U|h #R2:|TIxoho8굃(u^/ rS=˴%yk\vםTV^p?L@}xpy^,EI3N꩎^pQgGVDHG(&:I*:I*:IZg#Q\xӻ|]x{x/f\ yp%N2xDS6bMZ^; 0jR!,lP~/f -1D U-C=T0TIC 00.Q,,}`-۞v!Zd&Wg\nݜ=s6#2 rMso77s OAmH@M JBy;7{gJ -D04hn1-A $S $C;L2yd2 D0D^%M"Q%-EύWsYH9IȜPUx񜊈Ñ-I y(޶]dnA$KJ,6#dƕ MR,V'EKm򨬺HpL.zi›AmNSР}1%ՙ{=[} $f7j*z'z_=Ǘ4K4Lҥ$zmr+e!Xgڲ95{}P"K".f75]4Q[[R{t0׺cvΎɃݷxsܮ=} -$KA P7*<zUb JT]bet]AZU͈CVK9m<V$ ̄fTQG 9*LMr\ຒ/8|1h2;}־iq;η6TsI'uҺ<-j=*A&B -^2dG| m8ȆvXw~,+-zI4@~6HI??!P4{AOrLQ -MsB(:`on]¹ݶݐjsܱ -s^,o ӜQw. lYvkMozaIw}WݸMkӏ!jv߼yߎcinЛ%/Hsp)9 -'U`NK1Ш|--(tLoz;F?ҀPv0M!oё鑥v0O[W`b՚z襼Zgo)H\']W8„+k5:+#H@՝ aJU2) -=фx%DjG5beȮ ƝU_45rUd?8r_֏Nggi%' ?m'o/7w=mCo~@F: -<2G4, -Uaw1>a% -:aS8#XrB /wJHnVѨW8 ?dIoKt3fO|^x@Ə˄s@| ȯ1ʫkwv_oZ'߮WkPP؇Ӗ1{qD#GJWf%J'J''ږ0i6bu L3s]daGQ(Tn#W '7N{7 )D3 ;.HOrv"`k>ONjEt@g  *PU2Qnad"tQ1S%+}ځ/.pẇfws/:eC}nܟ?~n?ym"G(gQ_2-^V<`I#>b0,`٫rUFd'Y9Յ&c'UoS%]FV&jXf)iT˂^TC#ٗYvƋ宽[ (Qd -2›wiLy V7Z -:td hs~ ȵ(?˟rV7egsO;b=;Ez0Ȇl^AF5=gw -[ms -0Fof:[-hEm#Y{KxC7ExgÂ` -EV&Ȥ|$X-'J͗Qc &TL?L>,x -Z㢜3+E#!M>زPX?;wo?9`}P$ Tۑf dε|qQؕ4YAՙ蠪L)DȠ'(,1*J^WЫ) -:~.F8"ф3L2"?pV'D}l҉|tC7 Ldx AnʞFv16avWv2#=Ly !DѢȜpF cQ86J?H/z;盲?vٸ>#^~e|ؔ*m3k+-2j,p>Hʰc^G# r kP ƀ%%kٔu.5%mQ9uשAKYb:J%%\_7)XM.w%78r<=b}4"~hՉ\(OOwT3*RUـΰüY.C>R^ӽN \fjĐb΢C@oiցЗ@K;&8D{\LZ@6MS`Wӹ7+N v,S84 -XWce'+ũ'n{ d?ކG'\=f-t3%dW~'xcrٯۗ}?O |o~ѵ#RGtka2y{qQPJiØq) K-lt0b"PZͪY3M7ŀ3S`o -S7ӽ8iQ%pA$oE/#l`Dqz81yabE :>p:ijy.z XE&?R +3on^z#ܠ1Z6qk]adU_f_SuȠ1?if:JF'YE!l2IxesXF&bܥ9eKD%ʛIA03ffjʈ+\ `KO8};)I-Al4%7;=͗Kwwkլr1{@TXT+MNQ%(Lpc,zVu3ʊ^h//B{yjThqZ0ʇ?b #+ YV+K(1: XJ 9|-}&߶k\ qh[և}ip>C?ĉJ\pK ->%Q9PHU&TDqHQTW4`EQ+p'1Rf2p:^&֬\#;mptxMr9xpCx->ف'Io^k :l&|B*>j|>;vhʶ SnɃo vȳ (౺:VKГ=Z]D,lAgߋ $SHpD`f _aٗFIj#i"5jVӎ6Vͭ n]cCI[_{ZԊ ,gu@LvJ=8+~4|*gwVrN~ '#$ 4NGw6&jgZTQJqÂMY"Xd>gvR@iɿ1|g6n`nǪzBT}j#[l|zkPF{#UiԚAEDKK -`C(jq9b?¾lj[I{.cٱ;QRJ3!+92>C6ɧxω Yi;F -XxYQOgzh\]<.+oX9$}s7h̗k3쳝3}8GX6{d" lWHXYQ:X+XÅS%:6BU2h$L(K\b3T̀`9LݼL!HC@O| ]˄oӭd3g4eh OJf9Pm בx wW:^;p}~߯'o׳hv_?;{`D*K]d6uv0rQw:{:RitL,fJtA0|jHQW#%ϬJYm[%0TfS7gU f2+x:&+Q 0xaځ.8eF|'ݞSkuߵ|_Uoemndiz-يCB3KflbK-A(04_J(!+G֧:*tN˯m5CGI\?O^ -Dei*lwX6R_uNX?i;e6hc4[Xo,w(t@^-cl6) \ X8n}L4f#gNȢHrG3F^ -/؈/ -xq_>E <nبr`0S~BbJmpc8ٸ Vt~d^+s~aaS<)/eLv -{=^gO1n6}|ߛP5c|3_t_Sw<8g~ucTO&ۊݾi,u_Etg߅@n$Cʢx]=7#KY9hA)":TD |!_ N$Rsjn WTCK%cJG5KJ.i OATD * "p։ -D%RJrb.6b̀TlF2yԺ5w|z&vNvvGmtnJh>8PGA $ -/\Y+P -~p1UEC8i=DWi6: &U[UYJA$qEyp_ Iy^'= 1N<x3q$~y zcJhU .3J1sOZ9>T[dF<jF -@ԐQ#[Ҥg9 (F:SAХ'OЬ|lNf?NiKSs4ӡ・q z ̅'{Lx8#B -' ImM>\^cXv~zx/g,_ݴig.x_ڶy~3Gﵫգ,y$>3-~w{]1viՈk9zԏV^:6c +hD|5#HkX]duGD-F0@0މ1IyS^m7jHt3i#šz0?|'\ӉL"GXqL4i48%|{6(['m~J;ۚ&[&ӕU#LcLkm 'lNͮ^ -U.Cav\qbxPA->{P$gxVz95A2mkhFD]jZ{> ފf[^=gW~֛>%=gܤ;^yl>%@/(x>p~m|3g1fVYU,I5v74vyds4lMK$ZWe`-UrӅZfatҽpD"[ -2Ya:;A$ 4%Mt(c96 NA~bZwi+ipA;/ 4ztVZwYEb&ez֛ (̺`;0d2þ~uCRR݇|5j^^w֭祅[5|Y/DUh(Wڬ@>j߾MK}[ -<%ճxL8V7@=RtVdDbҞPxX$bHD1U_J2e#>),eyy lN4gN5{"ٸ' yO>28(~]\?l*-\ 9\|,0:،:яjvJ}…(Y0y{lK/h!J2ܹɚ[?Y5/z:^rی1qDU WXwAsq9Թ;.? -iU\rŤ ~@x=1!j8߀V. BcijCVn.;< )6Ҟ+KLE=W~|W?Xi -06YX |T/hn+'%lq2M8q,|E6d!(Y&'Mˏ1|Sdc*LOPܤP`;ɃЮpW^FWGQs)l-8Oa7ILLi -| e/ЍnnЍXe+VC}l8Na⡽0*}̙cE5"XjE5НآYz̋A*JazV be=y^\m?ݿ͸o]Uaot۫_e?x?ڌs E:9w; z#@ۛ;eZZTKA B3EEN:-6ls2Z8;B 2%mk%ĸo0I;?5mVpihsws11l@1~["\T畝]Q+#lmgàl4mA)dF6z0`nKʭ&oʂ. _r9Q1' 9NVCt)] gIK Z܆vvw4.?,RQ"Ee-ʒ1NR# -,: W_4 kNӜUFN-}m.LЧZ ^Y*ehy{wnS6-37Kwxw%*&=\} )r깘$«j:Z.'-S]B mհʚ $,J9#-De!_WѾUm{VUh;I{r.]*̂r.RƲ3ikg -ńJ1a7;Ƹ}Q;kLc])Gdčh"oD5tTIѹ}Z۪?<2U]d{gU)1KGicWܔԄPfSR,wmE-}K\.cL,OY*|#^yo^$32--h!/Bt.1h):8z0ɨ{*)@e K @Mf;l;jR[mxX5U[VƦ߆hؘfkT9%&H|LZ+OLA1sλ?v\a0C%-@ngN+zQ Ar^J}[v\M榍>+^㩫s럟-?oŭ_bS`JEͼC3wᆏxm|sW9ڻxTl@;boYo$< -~07۫l B-J/{F)Bb6ʔRaN˙30cƓd Ul103tl>fe"Mggv찉,R򐕞-'=eeeU'hPSr`cgγI/fKZrVw a0wtɾb5a$&NF1}Ew -q>!*Z -j h:/ -- v./I4Rwcvmy?yw7;gMpô{nRk#f"XSK!1ҟb8_0롅"7 ? D(\Ȼꡅ"7h(] D(Z 顅"/Ch?O2o6o1gGͧ2WOw3̖R38|O8_o#Qy(Ug1^< #y=@f jVgJ7&o4*a' U 3>׎M/s[N>e/[eIg6vvv?|6Ph) ?}6BolUӏS.Fa)(c'| PwGV2>ǑZ@ǰvo$,pw~vd,5mGvtJX+r2U ) -pʏGai|dw%_mrBMݫFNqe{IzD%|Jd+Rbidӆ;{h}x/|u<|,xb|BKõeL%YM[9OKUFV/@/*`͒X,|*̧|Y֍HaCӄ!J KY'`n|BGBXFtw.^`{xC^*}W+޻OwG_v^Lv11ciK9;z/|7]sB @&G pb1Okxl7Mfi73a d1Wm6aSYĉo/n)xp$Ed|/UULzq ҧWVm\oiom9oU8MJ%.nH-YlGg tO_+/W|KPyqc˪i6Npۡ a_ȡ UE,PxQEt.+Et`Dޘ\e͗Gh|{W_T7WWh5eee%RfKLKK,K%3Yi}ϴ4֔rC |LU_=U3Wf1(7*}G %bQn%t#\?TYX@$%j/WaY_K+G|^?`LN a ,t<'鄧 ǓN*񌠐ǭ=5qOjGxANkgI aTl59|?hGuGgHl ok@D Wk EVtgU +wĶZbL]1"F'R'G0b7?Y\DlˆGhnn\^?a7ϋnߞhm~_(!I['-zTVa?!k{4 =H)՛,uV;yawgUӗS̚]NҳM%Us%>JRlWV\Nb]=qb2Xj \kLw]^Xڭ |tK$8[(KK}׺V+J o[v{_Rr~ pB֝'^Wn"ck,OW e - oa" %A/Lh64Yا$/Ǫ=7{֦2eNqgJV4 s=W\|CݦQ obs~ÕgRH4#\{W2d$KF@uy z?m//A~5$(BiiDž#-~~ap\(ΧIS뤯gEEƅ'.8g!xq_ÒKVB*uم-WKdFocRYmcpLs yy1,(aNݼyrk{if<&cj{D~PejY7m?˯މ% -Ls4Q_yU|p~6OG_I4_G]ȀIB\c,^i9ObvHJ)RH-{<]xz^Ҳ}ӝ^tqASHy ߽ZmQ0sd 7=|Z(|وr^L [[|&:wG|8~xsq$8V63:P'٫)ހ'޼P|Weog1'!y%/+CJ{xPB+{JňwRq {'J|W(IZKK4;z7$ߐ$ۓW{6=ߓNI6sI鉉UlazyoF!,YPMxF:䤤€'o76.h.D΂!Rg8$ϓߧ_"f)G(xM@Д0ڲ+?*(N 5rZmiVi5i{t"=n2:;!;-V~Cz/x:9 X2FZ,^ҋ:(6|~LCy3Y2<빁i?sPNêcm$P毀r?}PwDݢ8 -C:FɇhzIhIa︝Spdsd?p@yJ}*'/ݠsLG{w2S:G/[_(PtP<X>wډE(;H?~iq}P~94G ٙ'9 G^6kqV]@ -3t  -@ &~0o -oh/ Q73<*3yq94FΓ ,ɛC|7~N0S?\1[q:xXrA7bYC]D`Lt@ijvcT!hb:m 9U 2e- Q^LNU0<6ʟh~ꁾQt58"97=#hӟG|ȉ4h䛅4 iu)#ޏ w 6Afn2?֎&>'R7 ϡo,ծR1|X!:W Qu?'rc㴿>e%'daХ*4% >jsѼP_)|:6 -|T แ峘 6 zN?tNGe4s 3NQ|d2'~4H|rMua؇FO0M|JnnP?:lN\jS3j=h-ϞKGNj-tv(hO{:m sd(0L6}Aω<ʛ8m&DTMu'TOӹ9>)9qO#N -yoh=%%08c"Mv{{D;""hS{nXݯb\fr9 2"} fe۱^{ FkRonWA?ND]}*AA:̡c6zF9LqF0v//_%x[C*G~ru -2`=Xٻa>Bt+B fZ[@N;oKDߞXOnwɷA?F@k?5kgyDM$_`}uyC)tigm^7F!~0up=a3V;`.ȵql:<2heYMM((١;ʺ3믠 &3^)[(l:q͗!{ﯰ6z?x7&+A~zЯ9͑vΑƜZncJǢߞ2GG[3;pr20v?wh^qhsL #jXBѪ;ufF"9Pbϡ@fr -`:-d6n˭C"Dhe\h3!S[N_e1:Wd~ D^{!u?vb{<>goq B9zm_M[shб¶!#%fmypC7(wKGն 9ٱ%}++#ҎtT T>8(elwWӳVg#=~uM-bi0-F]^*W9*ωg-33lӴ9Z'L=&\'se1m0L+̯l4`=gs59?N?F)7cd׃KԥuqB:.&pO>kmPIp5?5LKrUkJeP?,ۣ؟c00A?1z -xP_fq"a֦Ah^ -k۱v_XdVـ3y SjsT+Zf[6r~30*Ӷlf? KQTVyl{@;Ϸ.Ѫ{[g[a*hiE s.]/vϼj dT"F? }\u!LȾT'@yXo`Ԧcn"'p4yާ)T^<e}ruv{bONeB!NÚm6$׍߃y1N)O/xϔfb -Sv+ qֶ|rk lZMӌ.Hy_)۽ za6޻7(-?RQgzusn@m2]gszTIsP*1нh;_9t詥b_~xɸk˨YcPޏsSg }1 l{@:y~[zGu -F98gmoX6OSM$uxK>kafKiv!%QL鬟}]t o0Xbf=:0;ms3촸o^m3D?vocӞzێL:$/ROR-=3ԴK 0:4t㇞g6=:~!'m8z4γ|k3=KlZ><'JM'P۝mstX6V~OHX߇}~>=<|L10ymag~7`40PĖl|bcC{aCGP.:ǂqh20<~/e0m4N; xY:;o/G>P>Xgi6R q?c%*)3O3yp`%֦ ouhvF5;S3,3vv,}f*'g/;oDJq?Oч7*oOyljHڢMV5քkTb`}{?cOΩORr5T Z0!l{egژl]u򫼮E]2=Hʵ^dKMW `O}w6Jٍrsio :r }F{!_`d>jk+q JM_ -a_jGIMUm~AS6z.ރȴk[DNۓƱe* >ۍut-!g ,v*ԱJP;2r<y@ȤDKf)YaUi/5K ǼWibn֒Bn>~`ӗlrSB;&;%IbN~:𺋨8W^]ۗ}-Ykt1Os;~̃yQd7OIY9k r9tn|&IFo`3$Iqao5o9y0_߀ԟ!nzh h٭zܮ (Cc+J]vqWN9jY9B^W2 -9_/7&+#'5t>O zا^/މdZ߯*0f+{Ǩ?q4GoֻzЇkUT4dk4C"t%\Q{bsZ}>]0>J= qgŹꧠqMD|MȥA, :H5dir>#p&pu!}l@ %zDDඈ%uE_Nem+\0j[oц-m n3=Ch6(D8_Xud<2dzUwZHsDPVYG[p<-~Kx'::(xk=w"(#qQGQ6ԪH;2 ycq?}1R{suGZUw蒫1F/KW.yd[D_ ?}- wÆi?<(%dB$n,P#,?l'h/Q,汧]2tİ\Z,=%{D.\/BE݀, F'^w%&1sO⫂ebc>Ԟ9:`t7:!kxg?i֥޿S(]NjeaYZA F1Ͼlq`=k&wYΧ}JxsBRuW"Xz-0;&jYw=z[w7krYu5Q ,F(6P!6dS' -AO;oi~#wX+xEСjOAm>0z1~g9sمp\ar-Gt_jroTز - 6B?d;=#=w5g :y@4A|r%K7PWq 8P xF7Cx {!=! '~1O?}2tt7{[jZO@q?. R ]g>si7'HS" w.'T\&Rϸ]jw4UER]]=K~&}v4DO:)w$\qD OA,s:aqj(I-XS~IExhKw&^:Y!nq>&F!c ۺ @0W' 3A6; -Qdc#-/Z%T:fP2tC M3{xQ:gmx&j'3D)1XkcvTqV~_M˔{h$CUGoi<0/\ - O:T9oM4c-X#քCw)fb\D9v(r%a2·l#-go\a&i0jQ\gLqezlwr"Y_3\/"b۝*ws?=H+\:]&-J -:x9G Nϋ|SJSך=1'7dD}@|C ˾0|]9.CЇ`/)%NK*G>{ݪ2=eb-}8v03U=PˇlSa}XI7yosx#ڂϯ@[Ҫ/7'F1l؅1ZZ_,軥4q漖˕w/a~ZYOţ^"Jk!3fU\ъDAL@A=Pjwk]-> q'5uOkSms 稜w»mBE/eVsh{Z],ZŢJ*2WIy%VIF@Vt;$٧$)"t -)_^Ms -PPuGl[|M0]]E>mk|13#C^m**)`9`obVWvW>M<֛z7zC~U>w Giڎ,H-o_m8= ګ@7v7 lۖW\[M~5y %FyH`*p%up> O>8J݀0pɇPLJSQU2U~Y~h.A U>!ZmY킸` -p72K]MiBsy|):.M_F f]>#Jy^ZҵhkJג*_PShC:H J uR fa0@jDj(\!$5)6~tP/5I RCԐ' 5d *yЁ7+w@vwL؇+)|!D˷"g2ֹw=|sH93=LC^\+)~stGW/e@0Eu>dZ`WqW̮@ÿ| w}!ْ7Wk}(5~YJτ3ܕn.n=6niuS`e UyR?* -ARlӞ-o-odަ.=R"&xf_kVl|-fB-j@䉨9(.73){ppn1úqI=|!optѤW}Y0T-/2B),qR蠈s04Q%7[D2)[Dɖ2EQ(.JR8VcNcSCfTJMmʺ=\Vϑgl$g֓ \V.584XEGNꢪ'[tNPWroeŕ5wjL9T- -`}+H[>;VQ«믦AC«kipoPcD6V4qa t*?RNX\ܠfsr#rs툧6=GAwʕR}Ҙ[;VD; :y=PxKR]R`նn6R"I$?np-ي,<2Q魔Q%tn瀞ZZEAEt> -stream -begincmap -/CIDSystemInfo -<< /Registry (Adobe) - /Ordering (UCS) - /Supplement 0 ->> def -/CMapName /Adobe-Identity-UCS def -/CMapType 2 def -1 begincodespacerange -<0003> <005c> -endcodespacerange -13 beginbfrange -<0003> <0003> <0020> -<000b> <000c> <0028> -<000f> <0019> <002c> -<001b> <001d> <0038> -<0021> <0021> <003e> -<0024> <0028> <0041> -<002a> <002c> <0047> -<002f> <0033> <004c> -<0035> <0038> <0052> -<003d> <003d> <005a> -<0044> <004c> <0061> -<004f> <005a> <006c> -<005c> <005c> <0079> -endbfrange -endcmap -CMapName currentdict /CMap defineresource pop - -endstream -endobj - -10 0 obj -<> -stream -}ϼ @ -endstream -endobj - -11 0 obj -<> -/Font <> ->> ->> -endobj - -12 0 obj -<> -stream -xWێ! }+f1R2H}6ЛTiUu_ 5E 9 -` iӗWWu+o?3]!16Gcpc^ccs~py=?<:f8N}s;(ώezK:Y_Y3,B':)+#"й c 2r6@l05E$,Cwh.zl' -5hj fUBbq&ٖy=K׹1h#DbK|DK?0 dI:zv;ڌ ղZ #HpYޅm2ZP|-X8 \XAI~鼌:Cwt}3/dy;-2/:JrPj[lYB}+۬Yt¢Y - Ųȇ yżQ9O.hx~^T~g-ߜ ѻY}&KٰwcJ  1~fMw!${A[Dr ]6vǔ61G/qk|c|= { ̛E1a3r)83 2Mm/2kZ&NC^f^ʥ]ZZs).N5qx9;C=gSjt;UfRUq`:죤l߱rp]d>m:YpdJԵJ -{ٴ95> -stream -x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  -3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ -(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 -6$1șKL@YC ^OCơ(+ -89M\gpez$f$垡\V[ -왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ -θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ -n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B -]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( -:=ׁ"lanUw?di - ^,*se+/k -s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> -< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  -C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 -Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o -":@ YD+^(zD"a^ -r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# -Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ -"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e -IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ -kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 -Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o -trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y -/H{cJF; -iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g -M,DWP?Od8:ژfJ -A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ -.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" -ǐ1$_?w%'9nES&k O9c I"}x -TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, -4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 -,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM -`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu -oi?58]l_WlEȉ'a#ш+J|( YY=5<#s -#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ -CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  -#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F -f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  - snǥ Id kA}M] -A -x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s -ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW -endstream -endobj - -14 0 obj -<> -stream -x /k8$9Y -endstream -endobj - -xref -0 15 -0000000000 65535 f -0000000015 00000 n -0000000064 00000 n -0000000122 00000 n -0000000244 00000 n -0000000391 00000 n -0000018032 00000 n -0000018106 00000 n -0000018314 00000 n -0000050247 00000 n -0000050841 00000 n -0000050908 00000 n -0000051060 00000 n -0000052075 00000 n -0000064153 00000 n -trailer -< ] ->> -startxref -64438 -%%EOF diff --git a/apps/PdfService/PDF_To_Test/sample3.pdf b/apps/PdfService/PDF_To_Test/sample3.pdf deleted file mode 100644 index fb7a70b..0000000 --- a/apps/PdfService/PDF_To_Test/sample3.pdf +++ /dev/null @@ -1,619 +0,0 @@ -%PDF-1.3 -%쏢 -1 0 obj -<> -endobj - -2 0 obj -<> -endobj - -3 0 obj -<> -endobj - -4 0 obj -<> -endobj - -5 0 obj -<> -endobj - -6 0 obj -<> -endobj - -7 0 obj -<> -endobj - -8 0 obj -<> -stream -x |T?~ιeξf2I&IX (" -Ժ``DE[ZX7\Ё`+Z[.ZJ-sΝ;Lj{~sϽs,gA!dCCƢm;!A˖^v})$!5l5KWw$B}m|=0BQ!UZqKe^ ^y._o[}*_;l#{ cph/A@~4k>ڀD4RnC+@q0߃j#PÐ]p ʽW݊tTƣrt>/%oFy2w[w?G{_Bh|~# -W܋G{lP 9֠ 'q(IݗOp&]g WerڇGI\?|h7|{O;XCA4MA\f1j5™Ou?# P'ko"Bi+?'߅ KYr7m_O8ktBj!n #]}=»Fp߈evh$!Mcx- L&CSoKwcL|!^ n|?>_ǟdYIsO;_,n?͵~{.~J/zl/:ކC,`q<_;6?ğ7W$a'M5;Arp~Kq#&J ]ܟC= [m3AᘨI7HGC-0P { p A݅`|&>jf^;P~2$<$g,!d3INTy\[]]m/w)y/+$WׄDET\/#ΔfH3t[zSn9څBwz>H~E~-T o$R)\-#~sppuCQs~S݃aGsQx/ pP}|#?[ >2_< -MG/%-RYx2+$w ]P i+n;M [o< +֮X}eZ˖.8zA9n>qcnjP_7bxCRkU'*Xy,~v9 ]T&Ks!cd{O&9g(=N,% $M'kgbs!ʙ6s9kBMC&%b^(rQ/oI[yHʹN3Bn>giM+cgf5BvB>;3q3{bɽsǸtx/ӬBNI:iPrF<~ZDpgEZ(D 1`|~AU#]SgғʘRr:F/DvA8}lK8$&1@kȴi7SxHԖO>RW!ŧ]g=m <]㲋ӠY|!ݲ+Q(a>Ю]2B9icwJrZ6R*K1 -rswSlپĤŐA鎄Ɗ\ *4m&\*v.cu Gve <\^3ak6\h҅K\ڧethvkCPĪɐn̊)tթ%Բ[J %eCAR*bYEL{ -j5vg䢖vcM0 GP SQhzKf/MHUSYfweFDvEb? :RY'Y^'TMMW Es -jü~ -4l5yY -}G8 g]Sg]@ EY=^rڍ(?QP{\BCq|xӴ& q -6#ǝqgl0wTZ@ߠ>5P-4 -oޚjMZî]{]$o){Gny9rKpai -=}GF֖+CkJttoѮRnb/Uþa/\2j\_ROyd0j,'peCC) - -|eޘSzeh 5ѱ^_ݽڽպnc]%ґ52\6fLE[uoqQLҊ:3Ge`Q|o}X~qH7mӝĈqT؇Q % @61Ee騍kFlFݹ(Мo謷6Nh*QLTT'G6:ځda Sz~ .qܳmb8Dk6܍fxo$ΆѣF׋|i^3)|_m][$W ,UD 2 6eeR0{Ev*{ G{tI;uP|UrY%w': z8RgT_{ ?wK׼|r2-ӹ0RbZ] -@3b/Nb&8F;-@V3Ǐ}M@}FF1|B9".NO#Ϳya==*=p+`()"< L&xaaX*s)p [?9r=7 -b(/x?e\Et͉4|[Z`ð9 oy;;N2tPUEzK C薦oyyq٨ntbl y Nq -Vܫ+kwīk-+w[[bHC4O B*R HG:N-t<0f؈mYmO͌{Zl˝tOӮ&!:-εw!:H.dEf-hs)gR}d 8#ƂF`.;?~0AwU· Ef ĝ۠(4%q7^Vțܽuz͐70xvAw.N.~1 ú[bŬb-\Zw6o weYې(&`WV -m'c Ps{`p9U̍zhN5 U%sTWORMG>{0N/(^_HS6m}~Zm\> - i/{$( y" RʡG^Xt'v.ZND ֍ wDܕ-ZT~r#!Ik]d@xTr|&)L:fmu(?2L-Vٴ-lD2#j?C {-yӆ286$D{UDLz=T)5h`(ˢʑ[hSvu7='yGoߴw}tryOƅ#[>>Q%` M7ALJ\Pt*J75FOZ K̠BKhd-xPEfP}2}//C:1\}$}Or^*2Vxԯ׻<Uy2 Ǵ#U#{4P,O۠tOw W _JԀk1 P9uJ.J.J.&Hb4z}r@/3އǀp 5!s{x*SG}Dyd"{bH'Q#Aa'4ݡZpDjxҏxGEGSM5Ž> WI`$EdKO+oxןqk{ׯd'sWr6>}gy|s ٛ=y\}n%e;/xpX'wcP(hIr H˟4E -D4hn-E؊"$Yβ\SPME!Z" -z,=ժ-О^ф i"' I uUph:/q~0 ޚVC{AI7(SL_0JţӺH4Hf2D #k8^Cv{&zrǩNh2>6D[ca)pڛ0WWW#7j}#W1ʚ-ڀ!OڣFsFN6jmdڲ5|P*[m"^n5][4U__gRg|$w{NΉɖ[ȏK=xS>{ O^Exen.pk&u - {Zi5]zUݎЌ`I<*(5v5e]e[O!,V.Ucw{p.N۷gwP=A1aI \`\n`eaa" XsG"ri| @ Xdi2G7R*U=puIEpoڊBm{:"<3w#s*o)Z7oi7!G[89'WԳ}=u'y[>+8~it~#l~ON,Cg%܁hZǺTXzt%QA -kQAYZctY,3e( ]wbpblkNl%XZ,p-]!_U^yK~b M&1TŚ(XAm^1BbЮSU?U%S`c`dTCmnc1QK G5DqcZo/_B eTu2ue))L"sXOu,ZEo@ug[xƂbo$ ]o0a}l//r)ZO͟(SKxL9<]k-)ʒ΢8Nܜ  PuZG`[%tcb̊?tLSj7 yѨb4 -QT9u&PM50"Ilu[p3FQ/} -K/wݵg!=~;Zw#xqeZe%>69U\s/r ?}M"IhW%x BF }TABxV'@ P\ç<|}ȏD$wi`p~2dN! $i/zF|&qM" -1 WJ̃b|4kC} HԱGpZ( -Z#-rJ??~ܩ>^#7vfԝ[ -5GHhOZBvEK: KL>ziCK$n >m1ߋqZ׸ᐎHS"od  >ΦP_&ڭG;R\m`{o0:A0`Mͪf31wp/ \MM#/\'C{im,# $k@yꛛY6qs8%Ly+"¾ d޲;wπ̯z9K~#hI,Mb/ ])UonVj Tl`|Z~C'hܮ55(R*FHⵁkZ%5j`UT.D2(ӒDeKqNՀ-UI-B)nefK 2~˓R,G)c"B aQ9ø$DDa"ԸbGg̨9?oFd8zG;m$ZradLN//Iv2sڥnΟm}qsN%';M¾K.ze;GpӦ\^VIrkh{i* TkYO"`ӑ`uizbN_:NtKf __GGZ活ʜee`qsp$V~\.,u~m1[yP!vLؠFvG5.mFq.J F[/4Od q.9hLրЖ@c'k&8E{^N+k04> Ug9_&:/%'^{ԗb=~ 7?×#]Kip9뼰1);RP1 */3j5B0M1*?[B%T!TI1|5Q\XEYyPp}q& Gا8(E{"F @ƿ}~! cUB'R5HCnkϿ÷vƻ1iV=Ka켋sG==n>{ ?ơ3U+ -QY$[TEDyc9ܹ1%%6RVflմq,`L;~[HFAf%٬俅ZfuzSqSnm5?ӷӺƆ`uS. Vͱ}6qmm5#=cP{XMSqdgз)R׽UI'%"ٍ]\e% -E @/--Ƣ?jQцqrWHzeQJYQV3(,t|8vWY]fUvYT˒1+EPUC.ӌ̉BM*SAuq㮑F@'p$ F8QKUdyRⓉ^G>;=GBUGTv6Q[<*9 LAMEC?x{teetVal=D۹=N6^*damxNpO71'|ݗz;10$֬݋/[xmϲ_9m-7>|(u <}<ٴtsQUy]!@**`dv1Ii3ƀ*3Xd]o/3032:։jjj5Vgr @ W |(8:?-tuN@C6ԫ1SSSU*CmY L Oڴ#l;HNx\%?+qR/Yo -T|_6pB=ڟ裑2X(45?` )Nl4Mxj60{j6|:@ߏi3cXU{,B4ٰ 6J)42KЖ:-XtVu<$E> }"m(Wx6ɮ* %6zgܱ&B4["AS0g}a$;a[c~rS8@ZC~ܩǟxž bK@rsȓ$RDUj]__mߠ*F}}:M4,r"mqOJ8 "HY嘅ӘY)*(Iݠt> LjBL#vi6 -"i[Kk7Xm*%s`4^)@LiԐB1jeOLh:d[AA:! g3(Trx4CN(~CFsn9al o!1f587; -=Yx}Hm=^7BjaRmMGЄv ^:s.k2qkZGq0p;ÕH s-Z}|u93~ȝ:9훑PDxt\9 aRl4wT0uoNYsem K jH&6$Č]Q(XP4SMeb*3vuک -\ژiKP̗mN}k-I51~tgE7Y,?H!F#S -8GNOn*<{r3ɺF  Yg45aP7=> dI; HH'#,Z2p͍ 1tzi+(Mhjȁ=oU+:RB-|@!E`HjY-rW|UH12"W6|b\4A SiUjH023DE$-F&Sj$\u(GCbbդyܪU -}}gIZZƕks]mzʛѷ8x7eh< -'Cd N"Tru#h @>maCUJ Ů)!:8h6cƓ.pzhU]Wx,%r*+ Mᡡ4|h( 31<x3q/Φј}\`NhQ ε 680DU6hK\CռNa"\[CĭрPG8颖&e!85EpD!v -^g]tʙџI㴦@ȩ9E{hX㴌&=8}CBU}Q}|jB'Ze5D3yrHߣ/?={qU3/Yݯ? ۟>8yo~rqYk'NZ/L~t?[|/o~N_9hܮ<Ϩ?}t3A WъJkTWH ldmwʲGaRKwb 蟦Ur俲ZhB9;ʻ/ u@Ӄ47O"GXq _ Gh_q\Xзo?WZwL{!uH"N:Ry(LO@xNb=IbyPA+AL̇c>[qknY) S{*(E=T2^I֞f$p)u23R.PW6DTUwce]'~pq7;ۯkԎwsqO|q٬wd+l2:`a5R <#,h Rr$l=-GZV", ,f+ÕVo -%2K^AM0j=l{Y_Lc`4RjZv|mv@;1mFxʤ0׆5`/ZbeC`G}Sl["%Df$gȸS,1i5. .0!8c څ dcھ tй0 BBAa fftXmX`{ 9܀9NzbܷL!g<˪-,tDk71zaHfN׷Ԡƕ 4QFS\gZV>>qhK` 4hTavwX[BB4#AX7 -?3J(E9^()?6phoo[@k.'ݧye[ 00FAހ 4-urjGpz ir+81Ia@.Ӊ2LO##^|yȄCP?p%?.z VБ: t(ol049plI9CU6w;K¥TJ& n--dP1TӺ,&+FhP)+nSV.عqӑ?+Cc7&PΔCmL=L0]1`#^{ C1ÍnsYdF"m`gHGs>!ۀxT{U,~Fe&UCi"@ Rm옄2!0 zΒZ>Ĉ ~:<>›LN6^<|kS Б39 */3K -D88z_ʊy0Dǻ ٩d'yVsXޖ/˞6A}S$m†8>=~l\ `/{"OC%(DΦht iLQ=hhGS``aQSE .V{I0mS$iYiS! Һj1͚Nb±+MWpXA$}XpH`n/ 3Ω/g/4^MaX*%%@5͹AM,ec]xoGƵ%N4ܥRA8ͱl6?sNs/8>cYȇ{ȥܴunϟ jRijMĞ%vTZ||SdVv uF50N"cSs20m -/+J,0HW+y0KxeitC<"7MK$U&*1]K #i\YjȎ DA`zL;FGa6M;d5N69Y:(ٍec%l"ވq -W -6 -H)HaF8UV+ãFSKqo r9~ŇNmY|ei|? B -+A=4F+-ҊT 4]&|>)4> kK2ݒjFBЛek,*PQk-Rk1(-/GDR.6DXya-u&0Yhg= -l8b道tq.3J l=b,4>/2U3X0B=K4^ Qjc4\QG*mfSZؚ֪,&8}G6TOIXa&(ى9Y2qMxמ3r;p7\S \ma/D|~ݥ,q湓Per3:OM/҈pábdÒ!k -ͳՔƴ55ք N#s~" cp1U✜il%e#-7ܴ}gmcm|[V܉o9˰,&7>Hx媟)'oC%nUz>QFzFF. sYّedĶ9P[yw#TTiԇƒT2I@iїNv{9j8)Uɉ*AW@eqvmbTt @UǿdGaĆ3lwv:WtQr2 Sdhd'vNk,o -\\ZZ-JSc+(kyQ:"/%rtLa EMfɌ3)82mQ{fEhdu˦ ? t|_xGA ŎDJUrH\jdTŃ7.]c̒C7oܾ?W=YЦo}s]3W;NzNi񑙮YKC #WW{OCgh86[ b|8HhyʪYS94cu[iLR[|UUnXUCr\oĻ[|E}pz¦liRJWnbLS-tp"LP0at( TLrҀN̴p\eDa4yN!:A :@p9CxS ɚ|LmY_(8sG6gKRE|ܗb;>E!31-{ -`hxP?{OXȏ/2ǣyl ?ԟ>H d{I9){'6kO;͟l0VWGA#4Hyfi -AT b1 - -JhH!RUa0XsfWl%I0z4|Cqt+ -ۜV'g@ї˘kӜ1Mej +#S85q - dMxR|n =g'*6G)__gN0EE.oݡ:o~xLݬGplX0׏o:EW@gfrNu~jX;VyS'yD[Yl I4<窓=-R\=kR}f7:DUfN|N%Ң!Cީ4Ej'z{ɎA,#3;14!D"eREDS|zo_,Fb-U٢TO~~";i!?B3-DWcZ梫ߜI(̓%uLWr!-,/0E/w4;g88Bl-i&G058UNO#KGaQbsxQ #@H}B,yq -.z݃vM4At83U{򏴦_Tyno U?wpKmmUuގ޽MuZ<"kܵפt:{N&a(@$eQ6ADmqQQA@oučWf]G>F1{4 |? }ֽUԩS[];_Y,'R>+^5wyѾ3xWʎUgdpI!I&pmbbWOKB 2bq% ;W6s 8^}\FB ?U#d߷%|0,/ - C6lF *6Y(~RłYC,CH3Ks`H_I9.3QǾHzQš\ea -<,X(Nս9R؜*x7 ז|c€`==|˵.UݖK捻m=ۦɏ,j״= 1wCvO1,2`0pk nvo=8vGm VUvۡ 9#pk n5nP*+.]ye=^V"]U(H]Q[]~UߥTeRTմ3ȓ8T7gAjwKeNLf3VyWqm[- k$|XjŖ-[/zHZr4b򒣹%>t HxcxR&SK-)%/[3xWXbWt#Qzy>9_ l]g\-p/.̼LJwZDml|e6ˍ!OF@B:5C P|qe`7GAa״ -)$ᰶ(9[cW,o/(#PS6I)Vز) TRmJ ț q~ Y L%lT›iC,e ZU,+S俨bኩS;'MbYm<<*M)TlLKG0?/H&9G -RWH^ISu~:#¼E;ArFgipmh̙_1/gWO3SЁQ#.T+AhǞ/@iI=ԬN PYqʭ*{٭F[EcO̕r-,y,>XLtG{џ04x8yQ,@_%&##dJf=(&;O1Rj 5,=wrRH ĉ%a?6 V{ɇWMg`ݥoxbqӦ9گo?VcգGn9}P7~v\3}\\7k{ -5_7u'L]>H #SkgΣV4eSI;,0f9l:lƲX &,ۀuha{T=œ-ә=52OuUQ~_O׾tڶnO_޴n㥗<>Gv#kڗSgxW -5ˈI|&62MRW=UV+t9])iW -)N#]ew:%gA4MJ XǷGp]N:i17;M3Ope9zb>x/d8o5+f%I٘7?OMw2a6|Kc^Ts{z"RvQV,-o^%&c2_Y;YQ3+weZYbZs=|vƬVr<܁{ʥrNSn-/\yەZ_-ҭ]UruUs\ӓEiEՀ^CvlLF-DG/Z2Bu5MbXW!I<.)5oyxV2􌊯/c/Mg_ -FEb][ax*+=)P ( 4DsUȑ[jax9RY˭W9<3RhyŒ%K(AvnjGdNI<%%y=deg /c tҷJKJ{Y 7n}c\~ׄk~=%msp2熝y";YfWd+":?3楹 q곞*2˵(CPX,BN[;܎vɄ%z|W,$o[R(wU_@R17o^p8Ow,r4;tGccCGXg;eŪ&Rc9T~<V6ҭ9sR$ -9]p;y1wց>}&I Q+Zs͗qR.wuJk Pa.6Tg>=ng*Y:kNVpNN:33<-lSEΈ2B$5/!LZloH"72]RƘlkM Ek[lגY;*lC+[qԵǵߥlW)+;䔰5ĴkLV'C5sQT"J!/2f9't*N`W 5/ڒjNU+~w@ȋ)^9o@Up[*f?mqVZp_r[8;p{@ DͯZfTmG;6W[_n^)kc"E}UJs\YAM%U<ΠҔ#יK-bG"/s rNUF1:ϩ}g9f:^_X|NN?*ʨ,4W L9otR>!=)?Y};RLi+#y_nn1caJ;է)t8T6]:[X -COH4 +3ݍ7 -YaVLʊCA/T?'R^trAԵj@l/5b:`i#\JIIu| -3y%HA xSSD,ڂ>>:OD]kl@Z.Ly4]L+~O<+N;<[ *84uj&Bpj7[R1 ~tGc%2!!0%/1܏g E3:;=$mB]KNc&GԼ!>FkV z=8tL>bVwTwQ\oo d]L7Pqg{CZ!*R];V<~lؾ V<;k+Gϑ-$'j|{"vT`Lo<~|rvV6G{VEu1eUVdFv0= q˕| 5, 6XJ'eu)RO4J`YڨpC!!}NpNڜ+KS\2}Ý[Z~OCߥ4OnS|Y0 d|>-zIV(-8){!ǝ=:?rre\9w\% m'(X;֫bS|Mk%$Woɉ^f"lxACn3dLLk{{Os.j}7^ג7`3>&!d|u@w Mk1Й #,>E:枟ݢ4d+ #, u=h} RіÊz]]߷eE9|yjY},RyޑoiAT O Ι$[Qi9}7ꇍm9^I1} 6p|N_`nhLMȣ˴z,-)zQL}.F"$C`Pd[ag؏x"~M4ZцVjlaתѓ@ZcoJ4zZq} #p7^帍:»9X[W]Hcq@k+BzX렴/p֢e^_ -w6n@4 Ch%,W~;!VǺD _@cPWBޒ4 )}tߠ$>&r8EIc MF Qɸv18LWt^Lׁj%xgfD9qz&D49?H˜]o ;$YqnCUt΃ gpe<' Ё<'1 2MHW -a^A"ogwxXԧftӟy30"/gsby<h{4 x˦gn+1X!ӴygS.5Q&hDU --^_jS,z ϜFirZ;z! -tsA]$+v=7f9Mu߬9>0I%h?5Ʊ)=$ :heYEMH(dS֝YeݙWG@|/H!z98˥ƛ=>w=ƀ<b-]>u;!w}<>͖Gi7* Ӓpp'[88QomR3v0ңOd_'%?G]O=[ɦ8ݿ -[vvqY~D@Y}Zy(nuHUg -E@K}hz"d 3O|QfBJ`06 1$/q:N}HOHE3Av`{< >gW8my1P˶/w¦NGY>4bOgې#ce~,.;n[ZˆmlJI~aH#ݸjj՜c1Wzjq]Ι4yoZ?NHk1m@9ꍀUyBOu>smPi p#D9.43-moډ1 -m2I_wNUts)Fѧ@zemҼ ,\E3='ZnC ӎ;(u}Ecp3 =L:dЦLfsNO1:iߠ>.^•Ikxzjm}/rOTb()n}1(,{@fJ$5),A`(havA?M -6djI/Yc'v(h~#M@NjtL->Z*Aݜ -`La5Ō@#9V*Pᓬ{qݸg8<v>L3[͇&8$ZknZڜ@| ΨgzcAGOp K?.;p$y^bx—2 ci@+?VΓL8^5!ʀIAAu 2o,b0vh <[^kMy~|~aBYOit`{h+ټVI~%+9nؔa7Αi^cU>Y&9JrvLcGv%\kle ]nٝu>c96֢?-kƣڕ kA ^:H]^OO%c|1IqKf=bퟚeOKcb|=N1Ru <ߤKøPC57[e8Ʉkx] p=>,e¾4r]?&։"# -m,b<7eo=͑opgAR-O~@|@QT^Cn5x{+̈́N<3i[LC<#%nu\_vw+p|q͎㸆Fge)h%asN4臺~?-e< n9y]=OnQB'im!az@2}ĕKX%ki۾m)D߰NXK/aEgf[zFYgcATsj8I9jGi&@6mLyM G"/y[mK W` O+yhmƉjTnh- Is.'/<N}m]1T2 a5bAO"&v|ȯ|Vaӿ|A6՘yGkmR%Sȶ5G[[o"nKXֲL}8 f&U#h i,vFP-RC.xUȤTSf)mgyהWyJ)M$86_\ ŘfOSN -YvH~s6`N/Y$MOZl9:5w$MɯPw^wk?Q:HoE=̹})y\9\޴@4wOi@Ɖ&㐕OdOo챜= >L)CkDB1XC*=.2" ey ;ϴSqCy@s{(<4lg;ec=k[y\_kQ\:M&1ѨS )5KE")p,pZy }aBn -c%"|$?;ZIJe.[WF˵S;W"8q|9ߢ mpY&FU{"{輻8P\'.,P~qyd<2d|"J-"oHGYGYp34vq5Q7.][9]"qAaęA"m~fĽs ,}"GW}0Fؼ&oW<\w{a=jjYw9z[ͼy>{:GAgƬHkGa-8I6ʢ-j_(Q-tXwy -;8ut4Zj76SCu>x1i ` 6=Nx(/ -{XA5KIn2 -[VpPi}޶~cĽGwZ舧txR^xƥlо4߃/ĵ:w̢g } = M[+GEw-j.O+B~ -tp>REvu n  WFt;K5USa|i4uӻ^_g{ՠ, ?Ex -2gh{hs/]/ǤtDΎ=tg$Ƕ$<6QAvk -xKg<~y;$ȞexNG>:JujƔR~63ƒ$yl] =MS@c^v>&F7!cۺmA6hgwvB6? -QdcM?Z)_%7?^2:Tf8sxA PH{y9d=6G#uThGC̱q;3i8y\5 r+w8`Ys翥MًBtBp.d"/4)Κ؎ c&ΥvXq\c Arl#-/{_I`aLӦ>:#϶^nqezl5wy2DH Wjo[:'-h:x9}D Nueko}' 2Zs 萿eȲanq➇:3#s: ӗ:-SBh: -,UeYsX3㰺 v0#3>v,|w&;ZGiҿϜQ~gRt(}D}b}&]c>D D?Yt絟|@u.b-&+ !'RwAyކb:-Qw5Qf=H w;#oeh -Q -EY=x D'R轛tLȁHoЛ&NAak஝H4u%Dg _1i^DS H4 w.Jt&zك.ہ`-r]|,F/Bts54kh6;=N_|ESr7G#aJ 0@4tC;JL|w=c-Ν_%ƩzVIohh=kLZäf]J/FWG>IQҩ -)֢;$EV$Ic"mN T sˆ )"]ڼ"ݚZ=l7oWtj`' C@|T TӀN!_ew5 /z>ޑAy焣rD-GF}wpT jR@CR7/s9GъȚa䷩ӁE>Q3p'heQy7:z1`lF26D7W(%{A__5%A_-9?BSj^+5ϒHCs -9WjΗcR(f)w`,Sj-5?#57I%Rs\$5Grͧd øс2'wCvwL؉߷Cb-0#g3-h-6=U-Dy7jx>TTЋ`~i.t.@>V4:@iō"cJ+cU~ --WG)wJ|il/pg`S)o`-i;6-\|dXt/_"U2]KNFSKR'MZv͠-'n㧴h5RK&ִ\Qa21ɛ$+K4qve9-S'?GXv[Ӳe54PfnVtevrմ0ysjZ0kgBqsҷIŤasPgr2nT/QT/D/(7o+W\.*].O8ަᵛD(58M8X 7ngw Qrs%?WD)WDɕE(VQn))RG\3N~;N~ĩj** 3*>p,`z-^|^4iF_(%ϛqsg4ΪmQX4M8|MY/n&'4hVNP/*xxpksv@uy< -š/4a| M/"g]ʼvpғ%?5TK(sZ.px6%vnmb u-Lp t:R ;eD TxDa.Ģr+hobbjjPZ&ʐ]LŊ`T!5ϰ]QAm,rYeآ杸.VENJh<,UT0ν@O= -JK"< rxܵ^P6 -endstream -endobj - -9 0 obj -<> -stream -begincmap -/CIDSystemInfo -<< /Registry (Adobe) - /Ordering (UCS) - /Supplement 0 ->> def -/CMapName /Adobe-Identity-UCS def -/CMapType 2 def -1 begincodespacerange -<0003> <005c> -endcodespacerange -10 beginbfrange -<0003> <0003> <0020> -<0009> <0009> <0026> -<000b> <000c> <0028> -<000f> <001d> <002c> -<0021> <0021> <003e> -<0024> <0033> <0041> -<0035> <003d> <0052> -<0044> <004c> <0061> -<004f> <005a> <006c> -<005c> <005c> <0079> -endbfrange -endcmap -CMapName currentdict /CMap defineresource pop - -endstream -endobj - -10 0 obj -<> -stream -@ -endstream -endobj - -11 0 obj -<> -/Font <> ->> ->> -endobj - -12 0 obj -<> -stream -x]&} -_ (Rw϶hI6RU}E`SUkձ?O]*?J:#߿-ҋܦ6ƦO~?octkX?.JubcO!]BmBk`WF{ߛ ^-^FU֑54hl2f4\ {|5 -ٰ{cܓX!ٍ!!PkD~E2aBv_%Zdu2s sV· Pȹ2y-(`;*/}L `?,xt r"cVgzsy(mu`}U[k5a`5gyL aE7Gnヱky !͝%qKIm.txNiukrVSpl{v#Czd3 -/x|44!Iukg )*I$Z[]qNʠV`%a^Y[uH&\SWF}r_n>HkŐ^Pw-KkcX%Asq}mJe|iԇtdW-J:;˗%S%_yyMB~+:VW -&i׫LbTRs|L\S[wR -5RVbnXaHqn蒚,ЊX( 7؈0ar{3#vIC9λ0s<)RoǙ>*#kK_ǚVlHFf,jΊV,55Or*/rZi}RiB ]:ù'cn>Ѧ $joR>o(5 -"i_qc`/>`=MH5<( սr{gCpgM٭ #&⁹T3q듍%3W\ͥqs9*=YɭPn߻4 Û"c6> tU%^lgi]ܘ.JwzIXBÉ:u5"dOh]e7DshqEHRBoœz<]t)gڬvDڹ&֜GǽA̛uuNR޷~gon!RL c94@-O}i!Ph_b;[fNZ;G"D+!/h7~$~aMIc}ۄ? <䇗F~?}v((Y2Z޲FާwXdcl!!_Gl02dUCRv'#RzW -)WH:"WOy ? |Wi1-'h-b -endstream -endobj - -13 0 obj -<> -stream -x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  -3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ -(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 -6$1șKL@YC ^OCơ(+ -89M\gpez$f$垡\V[ -왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ -θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ -n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B -]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( -:=ׁ"lanUw?di - ^,*se+/k -s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> -< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  -C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 -Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o -":@ YD+^(zD"a^ -r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# -Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ -"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e -IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ -kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 -Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o -trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y -/H{cJF; -iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g -M,DWP?Od8:ژfJ -A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ -.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" -ǐ1$_?w%'9nES&k O9c I"}x -TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, -4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 -,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM -`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu -oi?58]l_WlEȉ'a#ш+J|( YY=5<#s -#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ -CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  -#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F -f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  - snǥ Id kA}M] -A -x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s -ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW -endstream -endobj - -14 0 obj -<> -stream -x /k8$9Y -endstream -endobj - -xref -0 15 -0000000000 65535 f -0000000015 00000 n -0000000064 00000 n -0000000122 00000 n -0000000266 00000 n -0000000413 00000 n -0000018054 00000 n -0000018128 00000 n -0000018336 00000 n -0000053434 00000 n -0000053965 00000 n -0000054032 00000 n -0000054184 00000 n -0000056014 00000 n -0000068092 00000 n -trailer -< <5646AC7C14E63D400CD5E21609B4C86F>] ->> -startxref -68377 -%%EOF diff --git a/apps/PdfService/PDF_To_Test/sample4.pdf b/apps/PdfService/PDF_To_Test/sample4.pdf deleted file mode 100644 index 1732f21..0000000 --- a/apps/PdfService/PDF_To_Test/sample4.pdf +++ /dev/null @@ -1,617 +0,0 @@ -%PDF-1.3 -%쏢 -1 0 obj -<> -endobj - -2 0 obj -<> -endobj - -3 0 obj -<> -endobj - -4 0 obj -<> -endobj - -5 0 obj -<> -endobj - -6 0 obj -<> -endobj - -7 0 obj -<> -endobj - -8 0 obj -<> -stream -x ?^U}N3=3;{ù aaEF9T5.+F4QA#^D$b?U==;gv>g0BȁW]҇߃/[j饣 ҕ,q!nݿlE= B_ ׌X |8qKyn sW^pc}0.]pLZxcۏ~?AH"AaEQF!(.|Ww~=KVz^DQ% -^ף HDs!v4]hz 1t^nD{P򟢛m[pmHGh,.GwWyC4.Cp{%='Гh7|RQ-B{уC|c2)Gh z84 -JD߅2h -:4}18l䊡 ZB{p|.I -SQq5Ao7)zk(I>]x?Yk8s9zSrAjS66ahicOr#|o^'ANimB<Oͤ?<­A2M|E%IRYCK~@&&*47kZˡTȡ}0P >@܋-AE|6>jf>^W㫡&o'YA-eIy0N!{YLVE!8S9prn1ww w~Ž;ɝoWr|Ja𑨈ntivJom_h*:n}akk|B܀Hp8Sq(9IpSd< -'ì>95@}n;_-jF򅨡xqC4zKc菼y()Ђ'j|A& 7@.Ƶ+.82P4+ @ǀ7"~)ףOSF.;w!? o׀+1'Э8=$~AEWC>^"?Džxp h=Z_Z⥈ͨ? zO&*@r`,7RBs@B<@NK/)k%&h uDsOKe{ A3uh|&C A%}}j -ghjo$bt:o9<;~TJ'r}?D3O˱WihzR) mſ-&3Wps@=`Bm] v~5 / x>7[o7/튵kVKWX~ɲK_iyiSǚMg8ftèj 2xj*SDy,C ST!KsR,_wHXPЖM@ľy6-7 9|-i49hD&&كSnhU$Ze$`ՇC.h=? |G.l8.nGtk339L}xy[ -܅?NX6:Ӌg&ϘےVɳYGw\ %D9v@9hY -DEݒ d)811k}ڶ*xQw8z/+3;:xL>:8(0(ɳvt(}ԬN*hvK21.gV_w~(kfMq4J*-Э4p"ĎS #ձL^X5Nw~MPWASLGǢmǘm#њnMe/N.F#-9mP-7f⍳6'8e;d\9*\B&K%4&҃=@1Tv"&B,nXlaXij ʅݼuƴs&[iV~21=4b'68b*#lDFhvHy`y6nmpϙ,ocFw;,l4%Jnϳ^|N̙y6-8~BL[41y TFE zaSW'eS$!1MLй֎|SP+ [-=N`PK:cTv54Jt؏.֧ABeF|C;u<&er3%y3l%TȁLLM=fRA;+XJs(PL$U$,.{x8Fl xƲhveke}єGϥ6P;f."0 ABbp“d7mhkM 30R ܘnt[1 E٢Y ْSTf)ޭڧethVKE;:R!(bD ΊՓVS Sn 5[&[tB* -YHK8`fa3mi w# YW/ln0D*a=jYU4#\ewy,2#";"? V$8 -Nҗ32 E+Okja]?^̺ RZmxV7N/3/BbB E9]nEC(,ЁăQ(mlijhӈ6fФ;鮂 !{&?c -4JiAf6-d Lk\I6n\׉uʰ7ң΋gp ^ph}\11xV<g%ajj:Ww#D ~]SsV*ӹW{=loOsD]J# P <Z&Qþ =]0 rqK7ӥ(dY$DXG1v{ DLua)rpA(e:OjF jFpzJxP,'b^EVqd -I!VA0Pzq$c|L96l(Z (Ő}wx?;v{E7;rh$kWj^Eo<[x.'3_%ԭ]B{HHc ! _"+#9a&SC;8*pё?je\4]nZ@t6"M @TY\Ȋ;wPg`KjFgV X/YszK1`?4?\E?~ {t_77k @F)ManxF`w1UQS5u#FuBxkUۯ8g[}ݻg2-^ߙ˿~]G8_0!ؙc -vRu*7 Ů-dUJ1͜W7ȃ2HF -] xjw0@|f\c NW-3Lh#/ 轜^N@7ې%*V[->p`i`v7ЖA5l< U@A'SnQ#ƾ5 r%8aiqm!WSr0 >!N5H3l<3qa2)`p( yhA4,Dj) 59l/4zpk*0T Rj۞F>>=Zwx֖=q0@bsc>HL%ZB Lھ”e)Ewic|L诧t-%aP&LH%4{*Ay@98?'u~UQnf`ܷ(p~o=%  ߋi'wi!O0Yf:tO5Y;?qy$BRLwTcTmTx՛< -̀Z v{ -Jc*LQlŚ" `J^MA0SR;;V\r.:eٟia[8v#ϼy^|Ziˀ4,:84 & \D)47]S5 3x'~q -)Nd1(l+A3Yk4X:XCC1ޱD "Z9.[OӀ8cVDXz~?{C - IIkC |=Z]]_uMzyz^3++^! %ه%|zgs|K!KQ$w$wD -׺HF.E\ڐ!Cv$6a,3Uڙ*JZ'7{5Lɉ)Ϟ JjŔDDb J~x[ -ɬYV_ 57hTcbI& Θm*#HJAhWtÝロ;yW,%K7yֺg|\˷%x`<9[/pӞjgP!G9+1]j9h*7 T3~!7K!/NӜC1fNn9} eU8`2AU3\20{x<ﳾ!29?`. \Z­ \Y6rC|SCg#">NLx -<F_$~iԮч෦[ڰ>|lM K_ncҸ%b>$GT]ksAU6Tum{s -,p@EWE5`[; 1aVL+S yѨb4 -QT9u6^_C5fjg_5pY7LGt,rױy+7u%;< {7Bx=_ޜ - b#5bWH#݈cra5e DBtv'@ P\g>x -zŃ#{\“HM?z^|>q"  WJ̅b|8 -O(bXE=DMC(h S`r* .x8ǜ3y .7|BB+xrZұe|U;S%B t,EOY~Vo& -מf'DQ ]/vmᴋaHVʮft̵@|$hob 5mFn8nЊtc5]k;9Uq9.rb7Ye:}jLVM@%nt!m1ߍNKjf kpI$r.w~oA9 ? v"a1`ȱ#[Jsap`8.'V=&}d.owx>r?,_s3~#jN-Iu/\)rUonQŚ `-ov蘡fп?šq7CpmxmD@kZ9T-jUTDAiIE=Ga)ήs߾ޔ}_Zj -F{iPoxR([$Q94,# -!j-BzH+I*xd{h@h*;bE%Oo~оxTӻh1; 'aJ#+d\f pݥdI|IR8YkŷSI87JGyc풥uA7徏Z7o~$G|E掞}VaO=UW}鶶aLw`ɔI?EF8^DJx !'{!Y^FH9jΧT A\Q֎n-یws]HNO s%՛}˄ey<=|( ~<Ӌ|(bOk`&U_zuN)ڍ=Xht9X1ev7 )r8p1YB[QpݬaxMT@.h7W۵G/WjVK8(JhOe]-'~{rX?|{Ox^w !þ8s|o?s~cЖ{~O;Q谹.hK{xlqۈE}tm.*X¡>KaL4D̰P -@2ŀi3W6Sſ ->4lk\TEYyáH2@D81MH%q@q'QD:nCƷZ˂`౪dm8zک}6p&Lԭ_ {e_;t\[G Ss@o1R1^~Q˲$!M8*%qᩗfs%N;HQ0so6`-2SN$~ 3%9!' gg~*ٚkz!ouԍꦂ].VT P ?TFm(c8bEzЧ&vZx^pd{ӷg RAVٻGd/p( *'Lii1q'k*pze W9]oK갦wa5ÌB{ )(tҧ55̮2ˊB:`(T+SBM*SAu±q@gT4cUUjNU$ -I&$88ܰ;ITej,břI' X*jwd"t -Tr쁠4hC|H7w>ܛ[{OSb❗w6`r&M/kkij2i=}H<Ҿ<Ѳt@B繸C٢E DA*\نŽf9!I"c@TA""QQiױNTf5QgTP+(J8OU:?5ά.0) N@C6ԫ!3) 6@JCmY !zmmݑ_ -OLNr(y=5tLy :sOg=c~&TzW‘MCVA&D1i=X:Bt: 鬫Z~}ڗŭ}(b  a]h "~2t!:O7#NAiۄ -m7>iXNkﴖ(qZi]Qf:N0K/So<a&6_ ;F(ʹzt..x*iOwɂ;5Fg;8`0%2=;-hFZ|Pss':} H_g%%"m^6 %mOU}]%T ΄i/e.[el"8JzX"wñ22mTfǕGZw7@u]OSh!ވG'>ߕҡܞg~~Gӻ=y_r?}۲xr8ډ>"s|Bxe.vd߅ƅ>^ Q0d5<}[v6{,sD , fd*+ʊX"B) Rԑf#BL CLkPUATd2F=ƫ 7A7x4c $FE9¾5!"S]#)+)ي3|&zS`N1t-Hǁ_][S9?9]0(9z㹡žiwʪ*^[ݺi*\ՍetNѼ' oX֗F5%(KHDh/Ђa1KZ-c%tԦ -Al[ٯy!_]U5ù8nt~لkfqҼ uh@&l&jl"pee*H~zu%jFS& hNͩZ.W8Qկu`\Yj=סޮw4n>}xMD#_;-ѣ&z{DxMB Er*NXqO˰ CYߨ9ҩB2VxDU& -蠈Iy.h 3 <Ux3q7Κڠx=g}@YZG(9 osG6G5S5t90MCq$Hڣ֠pZ*-vI]m Scs: -}w~_0?`9Tۥ ?7k13.Yz?x_=fkmivew^p #_|]u;iuu+qՕ^)㇂QA1ȕlB}DA~ $`ClQ'G7Yۙ\ 1ށ ޣ\_-sL(|4MT?.$a-1ZT@T7Ww䢂u멿Ӻ{ g-1,jW "&Bܼ#Oϓr=%uI"n:eOt(L_ Cl&E1 -'-dL@{ [lg:RlOIXSyG)jO/D,,SOW{Z)ĥ1k{evJсj*u}<k4o{yQۿΝZ[oxg̶sg?妝Ҏ_fQ!*jZ\vłv(iaڕ);J7[R xݜp [#нP˿ C -YU{C hȌI\$ϹtsAx@~E!>6ض1  B6^Mfk ++.OR0&\D&\4rhhq"J,(t4;)P5͹~ّ@!wAy4#qk.Wp qhr/0IBp22<ɑ`0bu(56g"ؙ#1n|6ˈDSz"H'4u-7;C6:w?4w4M*Y׬YwolhGyQP7Bt=B{S3,L&n~l2u# 0˅]4dD%Q;oNa: Gr׽aedvZ*6_.ۛ{F -rO5WrDr]ONM3=8pIY^Y|*2Jt.jvG:{SL{' -buzU ىozfPaPIO(<%rG;{FzxY Ҏs%I}7UI5_pV{F*w|Fu,ŋ -bϕ25߾w=!u(.+k?:|:? Dx RnUnU5!-R_餔!"#Y!E(^{f3LWC@/z]N]dž=^ -FtӼExכ@zB|)uMC?%4S# J( -tɣLE2!3 $P9 z_&QXXƂ>8NF75S=QéПF`y(=p@}0prkz|I*m/_iz'!ڤ/4Ig.μSx 'k}WS+" Gq;NqVxbqn\ghޜ͡rΜнXLBwAj_`,@c>d_pBVmF"]U:,硒H|Js ğ+pQUv MgIRHT~Zh1LkWw߱\=SC7- !H/ӛe/0XbObC,t7|I<$rI$^FWogpdDibELBEE'(bQ|"2ןN ٺ?NJ 4?/GMJVL8Y/VGw!.4gnn Djќ -c>k8 fs"g1;ƚ$}6aA S՜(952qv/q߹k3|{Kq݄7]S ]n8b\>K9m꺩>R.tV;& |ӷ5 -/f2;mN;뻔E밠*Ah*ϖX]تhoc1r~HF-LryuYw[oῖ.ϗPe -绦 K24E1P?T餀ޠcĭ*N0+CoPMMmWykxV F/Y*MPzw6Xucz"Y4 r)\!1ތ,>r܄aeZLQ ݘCэ!Eيe "ɦ7pܑ}\t -5Hvӗ!(M5.N5M(&J!" v$QW'~*j8_dn堧lf˟[A} O^y ž5Ƚ#|Ks8ƛЙ^Gc7"dmKDC9leM&*b;ora*!SPW/ɴ%V(%~SZc3. -yۂ?$?ҟ0hVK•*]Jةд^+]nrq. jF͵A6-0:˥2Ơl!0 sW)3}SEl<ʼny1T`l:V,Z#,)$3; ZI1-6lWp$zlzie^C -# (, \SXҖ1ή9A罬42Ggť, -hbD*ǎ̢`+Գ5يX -`q[?y/5޾O/o'n]=|[p!\0Yc+;/ r" Ck2IyBxJpd27+,;b~}?#$b<btrTi0Fd2A@i֗NN9j@R3V#*s -CuQGnͮ*xӍ nsARVCŗY0TκEXn&m,I1vRLPn{̓{]:Wx0z1v6{*%ORi~I:$}(%oIq0k3D2L0DK$X(Yb#1yxؤ^AIDqTH́Hq"E$*,ITi`QpA[hK'Z|][ٓxʫ|溫[Ȧӏ?cD?_y28J? .,G1?x7!㘣.V;Zs&bleϻ)?3:<,63%2663/<3sidAjjIr2dv 9sk Gc(Zlɚs.tdgsO,+Ȧ-ƼyG̀H9_[U]OY{mxgsz'ɶ6*%r@f1eP"b BP1B}Um&:@$ L)lƞՍЅzli,CLE6MFbL_i cAނxSL)=IlE!iwݐgCIIlIt]g?}}v3G-jgqs.\6>HgweOH`."k<ρ]!a3*CaY]lxLL9S}^^v5{Mw-a*<= 6 K7#6 -:ޏT(`_ag̮bCMيSlx(AIt+vmNF ccˣ6 '>-:$Qpx-|45H xi7ԠXF I AQQ=pmQo䖫ΟU;sCCVxGĶ79g 'zY;VW'DGYlZjPGS'uzJ9855le4"9_"-L.6}{5GqlJ1h(s%7 1M 躑kE~Y2i^लY - b#hۂA~ "3i B -2-DW-bYZ梫PI (S%2TZs -B6 m@l.|u+]Mi`bUT]L"v -DNZ4+xE*^ɲ_m'9IW:RXq #IBޘ,yqG.Z^eփ  ҙϬVz+8zKWTYZ;6_;]?ng>ulgZ"3j7ƛh?CW? ~W~A5k6R̳s=:ϒp}Pvkn'` OU>V*Ͷm̚fa֍;~0c&`IGa7ʜ;Gsx[Q}9t+;>ʺ#곁*% |lll|8]:Lsl\!x 2isJCD"?wz^'i9.p*] [МM1o ڽ>{7tl'wn!76Gq=)Z|R=)J铢LeEYRsjQ?" -ډH]~HVkNU7a4R4PvdȰGPДglc*ӂ?34P_ݙ<1fTUf͔.B{Xo5&AW(|jb[h*mEvJUrpb+Eːm>aA&Sy(Uŏ>o|:S^EW;u-{^SC~r{蹟lm} |3+pNzE^c7CC}N_;5gY΢kvVb֚4ijNSS+Xg~f -A}?ioP)bS|P-tđ:^FcLBr 2TSfKL5 } xTEkoIzٺN&a AYM}At130㎢̌7̈(N?x頻[unթSNUݎU1r?Sy;(ԷN7*//; r;JzJu,O]SW;̥hR=7K+^[lzD-csOpCo{3jORpK2%ek{*K -;4Bgs>}uòFߴ Y Y.]|2I>-i2[Ɣ'3Wu!!:5b,iѹ>(G+s9?qvMk^B눒Qp쌤 s#|!)qy6eb3Y[)}(%5C|Ī -6*Kx M⳽A,e ?dVW6_C$yӾ63g*L&t4q"goZB=j3(cR? TTk[ʸor[孛hSқ.lݟ_-Kɯe^iE\ *@^!'NpKX&UW%90gtiI9fsڻYf9@ځa#QV*}Ѿ=<%#%;1T0QʭqK>w=VÂkGwW,Q!6(Kbkb)ܻ`n$r h/4b}_h+0VЈYRBcG1EFKODۦtbbɼbai˖~%aV<4WwM݅oxdqӦo?c퇮?yCC{e+׌l(WB.$ɗ$-k>}rkSks&N̙:3gF~sGIeIIIS_ G9?^IMN8R\қ:q uZ0u/x%7mԕ/+L]ި+L]^a -EJ2ŗm~iL)Y/:bM%n/RV(O˜0ex3eŊ1a=$5MIѓ=ق=!55NOWK8oGJGT8\'&aO5_ƣ\!b@~K:}].qĸĸQ%z `k`v宛\KJ+3;+g]}Z~,҇6<_QfO -lG(eP+; -mG]SIn5;\zze M,cӃuo0\|?7oFpbI>ʃO#$$5i}J|Ez4-ȓrL>?ERP]fUb1&˼߳ 9e0̩bVP,ݡ.sO8xޓK5?>[Zn r?xn٢,]J̨Y%WW5WUE/H琫̑#iqOKJa&'9sR[Ps(Ym3q%KPfݴɜ$yJJz?{N_z7-<*-)!ӯneVﵗ]~q_soxo[^>/#2w}";ٵ'fWZ2f%e5qBܼTwQ7N!orNʔp'g:܎vJxHAdPUuCkT<^_HGQ߬ϧ@}K sk ǹf-0}Xhqtq ַ~rbWi~<V6ҭ9slQoӜ8Ps_I:{^9 -IFP4ami?U3Zlޒ;Pʪb[9jkZ4ByJ>2} 8+ʑl]̂tu¤E(*쳏y\1R:x;bbb8;b`S/2ghr,Ŝ&Ecb>9ܼR4<*IT= h*Iq|9r9"*v;+RP_@研Zeq8;!01yVRb6}wk[/Ҕ2oi2ȹܹZ#QQϺ'i=%u''ޏ\$qS=V^KSjN-NaUCIی}<%C: T=w:_wfğu8Xi~w3Dqڡn')Am(7% ;@H4G -ڹ89%-99z+4$і$#YrTן,fi%0msn~$uKW3yr5/-_ Lx|4C,+~<)}1rpڴ,L -ബ_\ƙhGo0݌ApRX~؏ ~=[7MLk3\سS]&ֵ=44or͛?ٳS.dfO'gJ'9Fg&7jOuۿb50R;N˙+CŇ:vÃR3lTڟXm=q-O?M w9Coɗ?vi#Gx{(p񻨰g}7v$EGlG`e~Tt`U4Vsyt xÞHR+`eEY>&$]foee)w@YZw[$G7\ֳ/$W #9+P)M*M/oʝ~OY,udFC!!}n`nK /_vi7nH6mQ3>smaiFn~ 5+%%фTOn^UK@$z:`Zjjq7 ]Nxܩ|У(ח+Wȕs'HZ<)Dhjz["ᤞIcqI8]ҋ/GF:<G2;pA3>p<6_M~:f]ג6d|M|TWt4㽭 HHdr:Ҿ`hQ(g7O-;|K.P襍5 9:sk?(-g_Y>rEH8|.ωҭ y@-tD(G]iM %"t>⮇(vN@=mLd?nxƹAh3Dz0[Hs^~@h!!?AUzZ{p&p7"]OrHAx*~jWK9X<Ɓ'X!H+JK -j-:YHWRQ tiFπVO5xwoHe-P(0>uŔ-K0JM͠`'S=Du_B9'j[.4{hrNKUxY^wT)Ab -U/3?0&!-n@^_u#@4 <ȿ]oL;$xVŇk;(EQAU `C{ :>@P *_3̛?ڋCM4ֳ8.4B~&YelS36=_=}OFpDoٔa&+}2rl¼&}¢c޵# -QKmjEM33!SHu1Tn3կVJ= n9Mph˱GW3{yN^uzW.PJT#em|pA!41e } g^}@39_jsL&EjjDCΣ/ |Wڡ܈kEjfp*4% ~>1|ԉyɦ6SO@u,-<䱁 ΋068Lx*w"kg2e$93vx:y=nj QƿY}r}aÍG-ƣJxTxuqqtLb[iW{,5cZoZhɳ~%zQ>!EyX}rWgAe#FDY<.cэTyM~1^Tө(" c*SNTNI=< (ٙ9z!N:o="'p$xv i"!Q"=ta dmB"V.:GRf()_PFJPQ˨;?qQxM'mS }O?~Ow+^6j*)-x--9u_MSHQS 9hkn!7xԣo-{'bb#HQVqeVѦ(/;e.Q'ޓtGM>^6k$Dz؎J~t9CKOK;`֗;A7¤+\C">`5}/c;XH~ȯz^Я4Dž"<ZӓT駀^1}G=@3~މa?wJ7yR}ƛ>+{jקN]ǵ\csLJx~y3MQ~0jΗiC?ү>rLr..xH>Jrʚi瀨u4}!o| KJ^v>(_/5 -Z -:t"h~f˒ʼn xxv^W=z^'Ð%?V &0]d; ^C}>0d5Xzea[Ny^" Lh=0 {Ո]_</} h:h7  *#GCKD9Cl<~ݞǡs GclqԬ̙%vSs=cN6CLb=uY֟hQ1z,%J)ά+fLy(5nV GR5/[̍bd:./ƺ߂?[{Le28cK`L0= -qQxc<c~{BU GΈK?Kz/%?G܏=[ɦ(/-';t 8,?hX, ʬ1t-OȌ<cqW:*TJQ {پmj}nwYxe\臨3!oS%0v[y1g/qF b 9m_s¦N;chȶζ!G%FeqT.;oXZˆfے>ރ|ŽkGq#ժN5/ʇbfݕ1􌵾^O^h*޴J"Mt^!W&*G-3;jӴ9^'k9c7e1`eWij=϶ c~+WbgdׁUeB>.d&p*l}z۠RcᆋzT(n3-}olSbė)~G>ǶaT/9+Avw5։t u3}"PrAvdu8N]X+@ϗ_k^k-0@McM0K-v2u.HEE]EK;m9AԊx;"W 6SNȺ\h*|iCn&} -M! -?Ij} 삮Xk yZ'lyah.g 8$ -y, yAYCҜigz*XgeZ3-3kRc;V9^q?Qx X\D9cyl >?x)ɠ؎ ̱cŻ׸Sl&ds_W;2hi#1nʁz3/Ngf3'@_gYn-ooY;(ҵtP H؁'Mς`V؝oS@?wAf XXoR2:Y;U -y=*7d!R ,õ",M>OACCV# oXYnΡ\KbR Ŵ½E/>IS?FyԦ`\..K i5W!}: ЮV_H.- zEiSXr]+qvѵ{!|i_X,ʌBS1N hP'Dyƈ5H0v2 W%te;=Bϱ'?9΢^ -*$r۔l{tԳZ= Jgz[3{%[ js[4F0m -;S H<$v,}ֱF;u4G_NSP/4,#(3Cu y־.:J6'Su1ls{hDg< -c[ | ygY,2pZ񟈱ռoBC±zjcgqϴq=UGY㏧m罏>z֣҆j_iR2}آ2Ok?Of?i}/6=ݢ%}9ǡd:aXkln6=&A#OT )h{s~=\W: # ñ3,=oF:OʼĄq-e(Ҁzk< -}]~/M8^6!IAu 2,\o0vh #2[߶][SeGϦwO?j>4!ҬT :i` lޫ?i17eX~kCsdՏcRľSlcɾ"8z'bقqyO4gL4Z4\~xP2k%*֘X`n88i,#^l6;&\G--E?}1Ǡ>2aÓdsՎ2?Ll^6-KdqOWz/7GM5m: lcT s іVid,SŘ{1OŲE~z?2H+@,]eTrKԐKw݄5^2)ŔY -ym,0*O6)A3^S116`I!  8bΟ%KGB++͑%bL~輋}A:|. mdK^ᶵݬ:݄?^Ƹ{2N4r$>>:r\hz=]'I31ۇb ݈77<#w`i:>;ڷi^ d -M}Ei.s qvzW#B ֢4J&Ѩ K:Uz83Y :WUqz%UhcL|ne8L2Y>3L7n޲QXp9ຈ׋ @oLCI+\(\nQ6.uk#Ū磀=tCn(A8_ed<2d'r$ʻZ-ylGYG]p gtHpO!y#uexQhΗs}ɫoEG̤B7?{Y>v.dOƪ0[-;?ԒͲC\>z^g#+G&/p}hRH! -bkV -?я.\[ȄXs<,܎=e˧#σe:@JTb Sy/%=i2Z&@% f= BW^weIhxJ? ʺ7zyqtx]AO|VgLtٱ&~OuNi_#cD=`|hNU9R@Si)ՍMLs}Bmιx/ &y)? -锥 -cߊaYJ8Ɓy EV*]@;JvȕХ0Mn1?;an3jjYw5z[|y>{?8GOUj;Y,=*7([yأ5&lEZ?G#[=FNvy<"^Щ 6SCm>|1nqgqS{ ̧ P_2߃>i#d1"T š\2lg5/O7+=)MzC *ׇ ^^L{au=M :X[G׉twݺ i[ڝ[մB?><+/Kmtpϧj̢qt9Dy{V4.9D!-cK5ct5У]E#@j݃s -B>}1Յs:̏p_~|"B.i8uVQ re[=Oɫ);{LIG&uv;%HM$~)3ڋNuA"M'!{Z9h8)UMuS~CixxKw8M= t=ó{j|̛]Mnbv F;hc3d#A6x->fMUe|ce CɡCGi^@iw>/Lhv<ʔНh976sGu V g>OB -P= -^m۸zzK~ EskUۄr-GfdTj+8- zZ)![)h-j<7&9\Z32Jr~8`p.õ} Zp> ,^QO Vd&ZR!&HK* + K~5?DC=OHoV&~sQ d ;Pw!\+j`,0rAPyv9 1[SAZ'E"%'|)x"\D^t\|)RrRBR2k\|):..m}O/zPK.B-]D|U.ݭ娱"]Cۥg RZy|ԼDj,5.5WH͹RsN@U4K-"YR. Ij."9,]ZGd r=qWC".0#l.6=V-By E3Pg]"y\_ors͗r o+J&P||3n=DtWy*AO&KN}(WZ՚[d֒nR ->@6OrnS^lz#˕mNPŷRne]9KvQX|A5ln Z|Wyh: kQ۴|b]KS692x;ȁa9"X$ӛHI2$¤xƩSCⱢ/$UHM3bWT'~g/\V],I*qeUDklxΊ)CS~J% ;hw**2( )r?q׆zm~jC)* -endstream -endobj - -9 0 obj -<> -stream -begincmap -/CIDSystemInfo -<< /Registry (Adobe) - /Ordering (UCS) - /Supplement 0 ->> def -/CMapName /Adobe-Identity-UCS def -/CMapType 2 def -1 begincodespacerange -<0003> <005c> -endcodespacerange -11 beginbfrange -<0003> <0003> <0020> -<000b> <000c> <0028> -<000f> <001d> <002c> -<0021> <0021> <003e> -<0024> <002c> <0041> -<002e> <0033> <004b> -<0035> <0038> <0052> -<003a> <003c> <0057> -<0044> <004c> <0061> -<004f> <005a> <006c> -<005c> <005c> <0079> -endbfrange -endcmap -CMapName currentdict /CMap defineresource pop - -endstream -endobj - -10 0 obj -<> -stream -߽@ -endstream -endobj - -11 0 obj -<> -/Font <> ->> ->> -endobj - -12 0 obj -<> -stream -xێ z~$(v@/MA;HsH+d䟜͉=SEgfk|_yzuaf<5]r/|/T.o_;sWW|Owk7GzoѧC]D l׏+LW5^8v{x; -#W)6Tѳyu.&Yq٣)i5>P3hWFK藪桚DU麽yug|GFZNs[L٠zz>KKkWXu0weIE?W{OݧRtQ?WΓnrGG̬..Ǣx.ʮf_4uk$)XL&bVZ}|Lf!NOq]7VRĸHbiYvӁ  )2P"^̞9hJx>8W-|U~'Cv* ; ̩f#i1a;-?2M)OTusڦvXy-սWDѤ9kڣr&/id\5eM*۲QP35YP1F:͔$ndzc6TZ6)-n/vq9؛)iqv\,.U -gWu_q΃I5 p#a8>0O4yއ|\ɍhn[,_ڲ0x|aPʛ[Eºڮx`55*ۏtO+$6zlRqR7,%GFg(QFdtSR9e -L<)RxDR7+I|dc:c }NpswnyHa!+| -ixVL< >ȇ T|G<͎Y>FwF0| ^!a]lY`jc cepxFK< -o.C'UYhjs|D}_G> g&+OKW)c@ -P8/BrAT5z<)%RxDkob(%FRT%XJJq+UI"ŊRB)B"Е7HBjR}R}Ԛ(5GQJ -BCPq -^#|֙Fwk0| A!aVVP+6fVz`lRȳ9cc q~XYI,o6f^J(_bWHlt 6P/6T/=F6T/%xćk2j>ȇjTÇjȇjDZoohnJ)_aWHlhnz -u^f#l֙ Fw)YgPNR NX#Ny9f,ΰYgcTذcmM6P6T=F6T%<0Rmrk%.xąkorh/p5r(jJRW|/e^cƙE*Il,RM{^cK,xHDCzr\ R5H:fxf R%pE$uQ - _ ĂjTm OX~noX$/ļ -endstream -endobj - -13 0 obj -<> -stream -x]XTW&n1XvɮI6lI6!ņ"һCw 3"U"Hˌ~ϑg9s{߹瞹y5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xcٱђs{f-*lhdվF^&&5!+ll2CJigbyDApIXed2yD}ll72*-R8-&6^Q) -XPG7瓜,f>VܖZ^[P\TRZV{rw[wO^(k}W]60xmph`hdpxC!! G$]64|Ém4 WMM#ȋ.6!.1>-!˝Q㛒VQY][-L(D',ͮjȩn,k.o)mV5׶vԵ]W{u}C#7fmg 3cp1f3kݦa(cK$P,"'E$A'"GtG!A( %  -3毨w p@$ :6&>6)>Å隐噘㕔㛜',N/ -(.+WK KkR겫º撆 ສN*讳, o#8bQp1.C\ldJ1^˯9>'.T,B164 -6$1șKL@YC ^OCơ(+ -89M\gpez$f$垡\V[ -왐$R`a&pe]:K/_~}:UA] ދzx42Pd(B I贺qqjʼn *@PҢ+׮;g` ưSE3EK !V5(wRl2׬{.BlB|R,m>qm~1c8Ŧַ=ļ1<2Uf. Sb՟wغA!E^}H -B!`^IC?QxQ/( ( + APmlj`zaZy}ySk{w?I|3>B/wy4P8?q53[ݡyD@"&\K{Wol;s- "j⒕/qi n )xrR5fgw3/>m~M5W^& }|BUPix3C „܄CvqiԱ 7Ky#Tqi'\Bn3f≲cCl=}TP3MFc:\aZm1iƙXbֻ -θr‚¥ɷ\,,N>E)Zޢ(tGnO*\/XMg*>]#-ln~$yZ 5HߩͧVk;ř5 侸GJ5Py;TNyD'dMSNܭOnV' 6E9p45&{{_UF]bށeyF۔8K]3 naIi8pZ\xiWmP;'W_ݚ˛!'8n|Y/K l Lʃ4i~yRj[M<=b6Dtx][T^GkZg@n{~hgb7Py/Fow sM8U֡~d6q9X_Uݹ**w͜, J/g-.ݚYUj'ov%cCE 4T`5fE#;ĉ`dX[ikNIc}'-;ccN588ح G7 rE[-[I1X<s6y۩ -n" Uan&\FC0:8()s_ F0O̗vo3|B䬒3y_S7ڎsEXO{.cNcNe.٭bc.06 PDw~IX6Sq|r}bn\&7ZG 1l;iQCz }ު]B -]RjC[wKZ=N-36c24X .liIش4ߖ57c:GM96}cL>5h L .zr%VE}rNdTo$#g @!PZA9K{?x!@rLmx\;T^ܣ^-|W C齓f㕘+xBKL}$^/^?U{3)yߝv+)"iM"O  H-0 C`n)Prg!A?6U$8΋;ͽAp7 h\bb!tŗ>MͣiGާ(l6h1G{iJiI( -:=ׁ"lanUw?di - ^,*se+/k -s1B7KmDH t5vF!]ck7 ve+8Kf1F9^-8~JV(Tc>#)H҄ qXPF\m> -< 4`eWZs C~ 3%A5*#]LOr1=Xq0Pq ŜJlɢ2A`  -C;`,ۧ8orj-{&]&)=W ?U>Sqd#∱A6 'e3 -Cb8?qv3 R7ƀ٠00W? bT0?a7P72vynW^׈.ZVxbIG,h[ڞDXCеnAHnZJ8#2OoU **l\^sIOoQO5ϧWv7FqxuHRJkܢ\Vŕ2^O7 읔뛔 ;AX%t 4>V:睔V1 xEaDAvkN M' .&M?0A/GJb-zF?2&k$H'o -":@ YD+^(zD"a^ -r9|,@, ;OUm؀l8`}p_I(1:p BЖumW{q. ϕ<Ѩ٧hlc 8/Pw:;<2cK8vS/Aq!Xpu/C2S"+n#"XG&k;FaJvE5 OU"e0\# -Bփ,$i)b&sl&T} Tb-:̧gt^'y L4DA|qA@bY$նx,$%JJ -"B/ۯMP闒]j6D@j̧{Au.Hx~ 6[q} 2SN@w嫽>e -IÄYPr>& (=="yhNT]p&Y.-MMT@`&y>IyJi[$&Tr/RllD/ޥ5M Y@ߏ7:·EQZi($ -kϥBe FމF|bo3@d8SS y1}J2}Z\#ɤvk5ITHZD N8=kf #S^L͆UoqdV6@A@ȉ0QF8yPcBFI殣S\@FspD` m4rSB|e\qk=#ATݡ*pF ,#gҞHwK_hG,4[=9ܒ iu/`01lh$To8i4}Y 7tõ򪛦 -Qe;iI흯᤯ dڽ7Y Ik2OStMM`ᶂH[ 3ie4ఠJi _~= qT ڰ$d¢66jPHV)׷zΣH'&&3SpvgROA6o -trnpF7Hȇc8 ]x0f[d1fቯ!de%3hA^:4iy[6/G_6+x'w_Hf1t,)@2S:U؀ !S.{1#KfN;>EAP[!11 #m҃=; ijtyGG!`Zb[US4u/vz!I4 OC || A*C!vdm/"Me&c-s LAo ]y H:6 e99Óh?; rx>22eHQ䛜k&U {N!F!|F :< .PvuU; tMubTnxy%!e ^;u[y -/H{cJF; -iXpwVU>ʭ>53l Mi#~VQ'kA0\ Pk8虿52ҢdV}0F@A}n;iǍ"ЍD7y|-R+0SbduI-9oXf16g -M,DWP?Od8:ژfJ -A<\΋6TNǓ)_:A35 ::hn_o슘ȂD DlPeIgǻ:&mJ:f41-+pمe~d/&^FS0u-Upz]E!^+?~6%<a]DFW8.૏-A&@ -.P4qhaC/g1&NyQ GLhb?L܎ ȅaC`P 7 |0H2a-*̥t3U3|m8rS@ZZNY_k'qD*2sA`!R^S@ AhP~s)5Y%@,y"Yy yT8kns mJHW g['zz#kd .:S1tvS vi b=UKr%G3wX@sS)" -ǐ1$_?w%'9nES&k O9c I"}x -TƸ @`ctyɓN\S[N!G$O^A:j&FylĜ=V8Mg4rr.a3.20p՚PnU'4'#μt@1>c=PL/!ƹZ/E$KE?]'Q5w>k?ՇݪV?[3ZmSWdIY$ZS׏1kǛfIH*[~YS+2ndy&#w%HGpջ'M!}{ޗވtF#w90;:m7, -4X'cRc vٻr& y#A̺PYʬC`6ISk2[gl౥;:B[Eo쑪ħ8OZˇJU'A(PfcC0GnBW!3[ CqWH0q*wRa,u1?˙̂2.88]H Řv\N45.3ܐ1#ѧӆfZ?ܲkVQ lÕ%q|C?[q"+A ,cG/EۓCwNRZ2f0K5^0;Yc6~0 bNgO>N4W0ulEul:-645J$378<<04<8Lv<>^'/JokWϥ+lD{:Y̏y$Pa !óJ0$ *%I%ՀbÚe+|ujBKgeT2's`]m,,H/Izu6ʹ7N)$+9hWbP?(mݭjc\qb#:CNU;˙n=vi|쥐[} #/HOΌUR9Tkүߦ Vn!y`<948 "pY}@~*.>x7jA ݿаFK(T5N!ςmI| l5r|5z.SOUP[]$.N63L(e~ Iبܲcm=vi899=~B$Ur '3[ = dx!l Ry|VQ'o yAeK[4^m2tX}x[ޢ'7+Sf(Wԡ /@ΫtOóZ-Eە\Q@㻋鲽wLv z>a]/Ao66~$q %UڢS\"/,?G\=Zۡ`)w_ޫnt$-kPJ]F6i'~a`1vr{)7Df%t c|t%'Jwx +}:4U§b *NM>)6ЙOmV8`ȼ#(>7_J~Awi HRbͱCAG{~]dܣ?T};;Y Gbm&Ւ= C#d;aʏ?B7 -,:g*4c%9PZCӽ_j4*'{PY+;o_s͊ &ۺK'ۡ"4:Eie9aF疕7=/q1WRm~ARmg)/Mat~Wo?$tRFQ]bBԈQE=% 6{F<"OVnS>VM -`@|IU3#Bh؏rLYU ,"iuEȂZr-YUdzQs(sxʸ-&o7Yψsept2֗|Ƀ{g}1Ӌ 5e9fp&%^oΣ[({E_K]be ռcN˻Gu -oi?58]l_WlEȉ'a#ш+J|( YY=5<#s -#6l'kege|l$Ja>.Axzw{X" '['GCXAblꠂgM"VVaJ^Q 7J|u &B]}`@{D,| tJ/hzAojD z8 1!.m?e._`xlzDΤ)Ao0p pS o5D#A/nE)sGמ^u8zP)wi~ -CG_!BZqK"sJ)$>g8#76Km s G+Yȉ jg ܤZ>}Mh([=A&lgK ͠+`*DV\y8k28)dYb}_qpsӚr 3#M/,㙔Dr_]L*cKxQ~m KD HυE,PAxYh!RrxBM0  -#19fb9AD{"ƒy52\T3omW}ޕݗU ~ nP[F -f`x8 $DR:HdnyxrFeR3 :p2\R`Pj",TqXB'!O6," Gy9ӠijզIHcAAǽr6s:y4Zy슃lJm-8s3 ks I|P$|H-uepk:[bǘ  - snǥ Id kA}M] -A -x)d&-9߉ /TW_ H6&<Fꃠ~|򺬪Қ2(;:5@Z^[36kZ˨"'y<<2aXl)5F! %d AiEg/t?tݳ_'ZD$Y\!a"O+khhXfDT$ /m`r6 ЅM0݂>i"Š>:jK%x֬նuGo ̓?,,,,Nq<8LZp7ӿ{֢euQEQ !=\Z]>YVqCy<s -ɥ+lu_\4EO02R`5!+4$Vj[6[o@goϮfAqi5MN(!' >n(k[t',D//%*DX#=(ȵV4OُP[i3:H:ewddktHXc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5Xc5XoW -endstream -endobj - -14 0 obj -<> -stream -x /k8$9Y -endstream -endobj - -xref -0 15 -0000000000 65535 f -0000000015 00000 n -0000000064 00000 n -0000000122 00000 n -0000000266 00000 n -0000000413 00000 n -0000018054 00000 n -0000018128 00000 n -0000018336 00000 n -0000052149 00000 n -0000052701 00000 n -0000052768 00000 n -0000052920 00000 n -0000055600 00000 n -0000067678 00000 n -trailer -< <5796935E67F5DE8381B43A10689BDEEB>] ->> -startxref -67963 -%%EOF diff --git a/apps/pdfProcedureCode/MH.pdf b/apps/pdfProcedureCode/MH.pdf deleted file mode 100644 index a4d6334..0000000 Binary files a/apps/pdfProcedureCode/MH.pdf and /dev/null differ diff --git a/apps/pdfProcedureCode/compareJson.py b/apps/pdfProcedureCode/compareJson.py deleted file mode 100644 index dedce3f..0000000 --- a/apps/pdfProcedureCode/compareJson.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python3 -""" -Compare a main dental JSON file with one or more other JSON files and -return all records whose 'Procedure Code' is NOT present in the main file. - -- Matching key: 'Procedure Code' (case-insensitive, trimmed). -- Keeps the full record from the other files (including extra fields like 'Full Price'). -- Deduplicates by Procedure Code across the collected "missing" results. - -CONFIG: set MAIN_PATH, OTHER_PATHS, OUT_PATH below. -""" - -import json -from pathlib import Path -from typing import List, Dict, Any - -# ========================= -# CONFIG — EDIT THESE ONLY -# ========================= -MAIN_PATH = "procedureCodesMain.json" # your main JSON (with PriceLTEQ21/PriceGT21) -OTHER_PATHS = [ - "procedureCodesOld.json", # one or more other JSON files to compare against the main - # "other2.json", -] -OUT_PATH = "not_in_main.json" # where to write the results -# ========================= - - -def _load_json_any(path: str) -> List[Dict[str, Any]]: - """ - Load JSON. Accept: - - a list of objects - - a single object (wraps into a list) - """ - with open(path, "r", encoding="utf-8") as f: - data = json.load(f) - if isinstance(data, dict): - return [data] - if isinstance(data, list): - # filter out non-dict items defensively - return [x for x in data if isinstance(x, dict)] - raise ValueError(f"Unsupported JSON top-level type in {path}: {type(data)}") - - -def _norm_code(record: Dict[str, Any]) -> str: - # Normalize the 'Procedure Code' for matching - code = str(record.get("Procedure Code", "")).strip().upper() - # Some PDFs might have stray spaces, tabs, or zero-width chars - code = "".join(ch for ch in code if not ch.isspace()) - return code - - -def collect_main_codes(main_path: str) -> set: - main_items = _load_json_any(main_path) - codes = {_norm_code(rec) for rec in main_items if _norm_code(rec)} - return codes - - -def collect_missing_records(other_paths: List[str], main_codes: set) -> List[Dict[str, Any]]: - missing: Dict[str, Dict[str, Any]] = {} # map normalized code -> record - for p in other_paths: - items = _load_json_any(p) - for rec in items: - code_norm = _norm_code(rec) - if not code_norm: - continue - if code_norm not in main_codes and code_norm not in missing: - # Keep the full original record - missing[code_norm] = rec - # return in a stable, sorted order by code - return [missing[k] for k in sorted(missing.keys())] - - -def main(): - # Validate files exist - if not Path(MAIN_PATH).exists(): - raise FileNotFoundError(f"Main file not found: {MAIN_PATH}") - for p in OTHER_PATHS: - if not Path(p).exists(): - raise FileNotFoundError(f"Other file not found: {p}") - - main_codes = collect_main_codes(MAIN_PATH) - missing_records = collect_missing_records(OTHER_PATHS, main_codes) - - with open(OUT_PATH, "w", encoding="utf-8") as f: - json.dump(missing_records, f, ensure_ascii=False, indent=2) - - print(f"Main codes: {len(main_codes)}") - print(f"Missing from main: {len(missing_records)}") - print(f"Wrote results to {OUT_PATH}") - # Also echo to stdout - print(json.dumps(missing_records, ensure_ascii=False, indent=2)) - - -if __name__ == "__main__": - main() diff --git a/apps/pdfProcedureCode/extract_bypage.py b/apps/pdfProcedureCode/extract_bypage.py deleted file mode 100644 index ab13136..0000000 --- a/apps/pdfProcedureCode/extract_bypage.py +++ /dev/null @@ -1,183 +0,0 @@ -import re -import json -from typing import List, Dict -import fitz # PyMuPDF - - -# ========================= -# CONFIG — EDIT THESE ONLY -# ========================= -PDF_PATH = "MH.pdf" # path to your PDF -PAGES = [2] # 0-based page indexes to parse, e.g., [2] for the page you showed -OUT_PATH = "output.json" # where to write JSON -FIRST_PRICE_IS_LTE21 = True # True => first price line is <=21; False => first price is >21 -PRINT_PAGE_TEXT = False # set True if you want to print the raw page text for sanity check -# ========================= - - -# --- patterns --- -code_line_re = re.compile(r"^\s*(D\d{4})\s*$") -# a price token is either '$123', '$1,234.50', '123', '123.45', or 'NC' -price_line_re = re.compile(r"^\s*(?:\$\s*)?(\d{1,3}(?:,\d{3})*(?:\.\d{2})?|\d+(?:\.\d{2})?|NC)\s*$", re.IGNORECASE) -# lines that definitely start a notes block we should ignore once prices are done -note_starters_re = re.compile(r"^(Teeth\b|One of\b|--|—|–|Age limitation:|CR\b)", re.IGNORECASE) - - -def normalize_ws(s: str) -> str: - s = s.replace("\u00a0", " ") - s = re.sub(r"[ \t]+", " ", s) - s = re.sub(r"\s*\n\s*", " ", s) - s = re.sub(r"\s{2,}", " ", s) - return s.strip(" ,.;:-•·\n\t") - - -def clean_money(token: str) -> str: - if token.upper() == "NC": - return "NC" - return token.replace(",", "").lstrip("$").strip() - - -def get_page_lines(pdf_path: str, pages: List[int]) -> List[str]: - doc = fitz.open(pdf_path) - try: - max_idx = len(doc) - 1 - for p in pages: - if p < 0 or p > max_idx: - raise ValueError(f"Invalid page index {p}. Valid range is 0..{max_idx}.") - lines: List[str] = [] - for p in pages: - text = doc.load_page(p).get_text("text") or "" - if PRINT_PAGE_TEXT: - print(f"\n--- RAW PAGE {p} ---\n{text}") - # keep line boundaries; later we parse line-by-line - lines.extend(text.splitlines()) - return lines - finally: - doc.close() - - -def extract_records(lines: List[str]) -> List[Dict[str, str]]: - out: List[Dict[str, str]] = [] - i = 0 - n = len(lines) - - while i < n: - line = lines[i].strip() - - # seek a code line - mcode = code_line_re.match(line) - if not mcode: - i += 1 - continue - - code = mcode.group(1) - i += 1 - - # gather description lines until we encounter price lines - desc_lines: List[str] = [] - # skip blank lines before description - while i < n and not lines[i].strip(): - i += 1 - - # collect description lines (usually 1–3) until first price token - # stop also if we accidentally hit another code (defensive) - j = i - while j < n: - s = lines[j].strip() - if not s: - # blank line inside description — consider description ended if the next is a price - # but we don't advance here; break and let price parsing handle it - break - if code_line_re.match(s): - # next code — no prices found; abandon this broken record - break - if price_line_re.match(s): - # reached price section - break - if note_starters_re.match(s): - # encountered a note before price — treat as end of description; prices may be missing - break - desc_lines.append(s) - j += 1 - - # advance i to where we left off - i = j - - description = normalize_ws(" ".join(desc_lines)) - - # collect up to two price tokens - prices: List[str] = [] - while i < n and len(prices) < 2: - s = lines[i].strip() - if not s: - i += 1 - continue - if code_line_re.match(s): - # new record — stop; this means we never got prices (malformed) - break - mprice = price_line_re.match(s) - if mprice: - prices.append(clean_money(mprice.group(1))) - i += 1 - continue - # if we encounter a note/flags block, skip forward until the next code/blank - if note_starters_re.match(s) or s in {"Y", "NC"}: - # skip this block quickly - i += 1 - # keep skipping subsequent non-empty, non-code lines until a blank or next code - while i < n: - t = lines[i].strip() - if not t or code_line_re.match(t): - break - i += 1 - # now let the outer loop proceed - continue - # unrecognized line: if prices already found, we can break; else skip - if prices: - break - i += 1 - - if len(prices) < 2: - # couldn't find 2 prices reliably; skip this record - continue - - if FIRST_PRICE_IS_LTE21: - price_lte21, price_gt21 = prices[0], prices[1] - else: - price_lte21, price_gt21 = prices[1], prices[0] - - out.append( - { - "Procedure Code": code, - "Description": description, - "PriceLTEQ21": price_lte21, - "PriceGT21": price_gt21, - } - ) - - # after prices, skip forward until next code or blank block end - while i < n: - s = lines[i].strip() - if not s: - i += 1 - break - if code_line_re.match(s): - # next record will pick this up - break - i += 1 - - return out - - -def extract_pdf_to_json(pdf_path: str, pages: List[int], out_path: str) -> List[Dict[str, str]]: - lines = get_page_lines(pdf_path, pages) - data = extract_records(lines) - with open(out_path, "w", encoding="utf-8") as f: - json.dump(data, f, ensure_ascii=False, indent=2) - return data - - -if __name__ == "__main__": - data = extract_pdf_to_json(PDF_PATH, PAGES, OUT_PATH) - print(f"Wrote {len(data)} rows to {OUT_PATH}") - print(json.dumps(data, ensure_ascii=False, indent=2)) diff --git a/apps/pdfProcedureCode/extract_byrange.py b/apps/pdfProcedureCode/extract_byrange.py deleted file mode 100644 index 2256799..0000000 --- a/apps/pdfProcedureCode/extract_byrange.py +++ /dev/null @@ -1,208 +0,0 @@ -#!/usr/bin/env python3 -""" -MassHealth dental PDF parser (PyMuPDF / fitz) — PAGE RANGE VERSION - -Parses rows like: - -D2160 -Amalgam-three surfaces, -primary or permanent -$110 -$92 -Y -Y -... - -Outputs a single JSON with records from the chosen page range (inclusive). - -Config: -- PDF_PATH: path to the PDF -- PAGE_START, PAGE_END: 1-based page numbers (inclusive) -- FIRST_PRICE_IS_LTE21: True => first price line is <=21; False => first price is >21 -- OUT_PATH: output JSON path -""" - -import re -import json -from typing import List, Dict -import fitz # PyMuPDF - - -# ========================= -# CONFIG — EDIT THESE ONLY -# ========================= -PDF_PATH = "MH.pdf" # path to your PDF -PAGE_START = 1 # 1-based inclusive start page (e.g., 1) -PAGE_END = 12 # 1-based inclusive end page (e.g., 5) -OUT_PATH = "output.json" # single JSON file containing all parsed rows -FIRST_PRICE_IS_LTE21 = True # True => first price line is <=21; False => first price is >21 -PRINT_PAGE_TEXT = False # set True to print raw text for each page -# ========================= - - -# --- patterns --- -code_line_re = re.compile(r"^\s*(D\d{4})\s*$") -# a price token is either '$123', '$1,234.50', '123', '123.45', or 'NC' -price_line_re = re.compile(r"^\s*(?:\$\s*)?(\d{1,3}(?:,\d{3})*(?:\.\d{2})?|\d+(?:\.\d{2})?|NC)\s*$", re.IGNORECASE) -# lines that definitely start a notes block to ignore once prices are done -note_starters_re = re.compile(r"^(Teeth\b|One of\b|--|—|–|Age limitation:|CR\b)", re.IGNORECASE) - - -def normalize_ws(s: str) -> str: - s = s.replace("\u00a0", " ") - s = re.sub(r"[ \t]+", " ", s) - s = re.sub(r"\s*\n\s*", " ", s) - s = re.sub(r"\s{2,}", " ", s) - return s.strip(" ,.;:-•·\n\t") - - -def clean_money(token: str) -> str: - if token.upper() == "NC": - return "NC" - return token.replace(",", "").lstrip("$").strip() - - -def get_page_lines(pdf_path: str, page_start_1b: int, page_end_1b: int) -> List[str]: - if page_start_1b <= 0 or page_end_1b <= 0: - raise ValueError("PAGE_START and PAGE_END must be >= 1 (1-based).") - if page_start_1b > page_end_1b: - raise ValueError("PAGE_START cannot be greater than PAGE_END.") - - doc = fitz.open(pdf_path) - try: - last_idx_0b = len(doc) - 1 - # convert to 0-based inclusive range - start_0b = page_start_1b - 1 - end_0b = page_end_1b - 1 - if start_0b < 0 or end_0b > last_idx_0b: - raise ValueError(f"Page range out of bounds. Valid 1-based range is 1..{last_idx_0b + 1}.") - lines: List[str] = [] - for p in range(start_0b, end_0b + 1): - text = doc.load_page(p).get_text("text") or "" - if PRINT_PAGE_TEXT: - print(f"\n--- RAW PAGE {p} (0-based; shown as {p+1} 1-based) ---\n{text}") - lines.extend(text.splitlines()) - return lines - finally: - doc.close() - - -def extract_records(lines: List[str]) -> List[Dict[str, str]]: - out: List[Dict[str, str]] = [] - i = 0 - n = len(lines) - - while i < n: - line = lines[i].strip() - - # seek a code line - mcode = code_line_re.match(line) - if not mcode: - i += 1 - continue - - code = mcode.group(1) - i += 1 - - # gather description lines until we encounter price lines - desc_lines: List[str] = [] - # skip blank lines before description - while i < n and not lines[i].strip(): - i += 1 - - # collect description lines (usually 1–3) until first price token - # stop also if we accidentally hit another code (defensive) - j = i - while j < n: - s = lines[j].strip() - if not s: - break - if code_line_re.match(s): - # next code — description ended abruptly (malformed) - break - if price_line_re.match(s): - # reached price section - break - if note_starters_re.match(s): - # encountered a note before price — treat as end of description; prices may be missing - break - desc_lines.append(s) - j += 1 - - # advance i to where we left off - i = j - - description = normalize_ws(" ".join(desc_lines)) - - # collect up to two price tokens - prices: List[str] = [] - while i < n and len(prices) < 2: - s = lines[i].strip() - if not s: - i += 1 - continue - if code_line_re.match(s): - # new record — stop; this means we never got prices (malformed) - break - mprice = price_line_re.match(s) - if mprice: - prices.append(clean_money(mprice.group(1))) - i += 1 - continue - # if we encounter a note/flags block, skip forward until a blank or next code - if note_starters_re.match(s) or s in {"Y", "NC"}: - i += 1 - while i < n: - t = lines[i].strip() - if not t or code_line_re.match(t): - break - i += 1 - continue - # unrecognized line: if we already captured some prices, break; else skip - if prices: - break - i += 1 - - if len(prices) < 2: - # couldn't find 2 prices reliably; skip this record - continue - - if FIRST_PRICE_IS_LTE21: - price_lte21, price_gt21 = prices[0], prices[1] - else: - price_lte21, price_gt21 = prices[1], prices[0] - - out.append( - { - "Procedure Code": code, - "Description": description, - "PriceLTEQ21": price_lte21, - "PriceGT21": price_gt21, - } - ) - - # after prices, skip forward until next code or blank block end - while i < n: - s = lines[i].strip() - if not s: - i += 1 - break - if code_line_re.match(s): - break - i += 1 - - return out - - -def extract_pdf_range_to_json(pdf_path: str, page_start_1b: int, page_end_1b: int, out_path: str) -> List[Dict[str, str]]: - lines = get_page_lines(pdf_path, page_start_1b, page_end_1b) - data = extract_records(lines) - with open(out_path, "w", encoding="utf-8") as f: - json.dump(data, f, ensure_ascii=False, indent=2) - return data - - -if __name__ == "__main__": - data = extract_pdf_range_to_json(PDF_PATH, PAGE_START, PAGE_END, OUT_PATH) - print(f"Wrote {len(data)} rows to {OUT_PATH}") - print(json.dumps(data, ensure_ascii=False, indent=2)) diff --git a/apps/pdfProcedureCode/not_in_main.json b/apps/pdfProcedureCode/not_in_main.json deleted file mode 100644 index e762c9d..0000000 --- a/apps/pdfProcedureCode/not_in_main.json +++ /dev/null @@ -1,192 +0,0 @@ -[ - { - "Procedure Code": "D0120", - "Description": "perio exam", - "Price": "105" - }, - { - "Procedure Code": "D0140", - "Description": "limited exam", - "Price": "90" - }, - { - "Procedure Code": "D0150", - "Description": "comprehensive exam", - "Price": "120" - }, - { - "Procedure Code": "D0210", - "Description": "Fmx.", - "Price": "120" - }, - { - "Procedure Code": "D0220", - "Description": "first PA.", - "Price": "60" - }, - { - "Procedure Code": "D0230", - "Description": "2nd PA.", - "Price": "50" - }, - { - "Procedure Code": "D0272", - "Description": "2 BW", - "Price": "80" - }, - { - "Procedure Code": "D0274", - "Description": "4BW", - "Price": "160" - }, - { - "Procedure Code": "D0330", - "Description": "pano", - "Price": "150" - }, - { - "Procedure Code": "D0364", - "Description": "Less than one jaw", - "Price": "350" - }, - { - "Procedure Code": "D0365", - "Description": "Mand", - "Price": "350" - }, - { - "Procedure Code": "D0366", - "Description": "Max", - "Price": "350" - }, - { - "Procedure Code": "D0367", - "Description": "", - "Price": "400" - }, - { - "Procedure Code": "D0368", - "Description": "include TMJ", - "Price": "375" - }, - { - "Procedure Code": "D0380", - "Description": "Less than one jaw", - "Price": "300" - }, - { - "Procedure Code": "D0381", - "Description": "Mand", - "Price": "300" - }, - { - "Procedure Code": "D0382", - "Description": "Max", - "Price": "300" - }, - { - "Procedure Code": "D0383", - "Description": "", - "Price": "350" - }, - { - "Procedure Code": "D1110", - "Description": "adult prophy", - "Price": "150" - }, - { - "Procedure Code": "D1120", - "Description": "child prophy", - "Price": "120" - }, - { - "Procedure Code": "D1208", - "Description": "FL", - "Price": "90" - }, - { - "Procedure Code": "D1351", - "Description": "sealant", - "Price": "80" - }, - { - "Procedure Code": "D1999", - "Description": "", - "Price": "50" - }, - { - "Procedure Code": "D2140", - "Description": "amalgam, one surface", - "Price": "150" - }, - { - "Procedure Code": "D2150", - "Description": "amalgam, two surface", - "Price": "200" - }, - { - "Procedure Code": "D2955", - "Description": "post renoval", - "Price": "350" - }, - { - "Procedure Code": "D4910", - "Description": "perio maintains", - "Price": "250" - }, - { - "Procedure Code": "D5510", - "Description": "Repair broken complete denture base (QUAD)", - "Price": "400" - }, - { - "Procedure Code": "D6056", - "Description": "pre fab abut", - "Price": "750" - }, - { - "Procedure Code": "D6057", - "Description": "custom abut", - "Price": "800" - }, - { - "Procedure Code": "D6058", - "Description": "porcelain, implant crown, ceramic crown", - "Price": "1400" - }, - { - "Procedure Code": "D6059", - "Description": "", - "Price": "1400" - }, - { - "Procedure Code": "D6100", - "Description": "", - "Price": "320" - }, - { - "Procedure Code": "D6110", - "Description": "implant", - "Price": "1600" - }, - { - "Procedure Code": "D6242", - "Description": "noble metal. For united", - "Price": "1400" - }, - { - "Procedure Code": "D6245", - "Description": "porcelain, not for united", - "Price": "1400" - }, - { - "Procedure Code": "D7910", - "Description": "suture, small wound up to 5 mm", - "Price": "400" - }, - { - "Procedure Code": "D7950", - "Description": "max", - "Price": "800" - } -] \ No newline at end of file diff --git a/apps/pdfProcedureCode/procedureCodes.json b/apps/pdfProcedureCode/procedureCodes.json deleted file mode 100644 index 912b351..0000000 --- a/apps/pdfProcedureCode/procedureCodes.json +++ /dev/null @@ -1,1026 +0,0 @@ -[ - { - "Procedure Code": "D0120", - "Description": "perio exam", - "Price": "105" - }, - { - "Procedure Code": "D0140", - "Description": "limited exam", - "Price": "90" - }, - { - "Procedure Code": "D0150", - "Description": "comprehensive exam", - "Price": "120" - }, - { - "Procedure Code": "D0210", - "Description": "Fmx.", - "Price": "120" - }, - { - "Procedure Code": "D0220", - "Description": "first PA.", - "Price": "60" - }, - { - "Procedure Code": "D0230", - "Description": "2nd PA.", - "Price": "50" - }, - { - "Procedure Code": "D0272", - "Description": "2 BW", - "Price": "80" - }, - { - "Procedure Code": "D0274", - "Description": "4BW", - "Price": "160" - }, - { - "Procedure Code": "D0330", - "Description": "pano", - "Price": "150" - }, - { - "Procedure Code": "D0364", - "Description": "Less than one jaw", - "Price": "350" - }, - { - "Procedure Code": "D0365", - "Description": "Mand", - "Price": "350" - }, - { - "Procedure Code": "D0366", - "Description": "Max", - "Price": "350" - }, - { - "Procedure Code": "D0367", - "Description": "", - "Price": "400" - }, - { - "Procedure Code": "D0368", - "Description": "include TMJ", - "Price": "375" - }, - { - "Procedure Code": "D0380", - "Description": "Less than one jaw", - "Price": "300" - }, - { - "Procedure Code": "D0381", - "Description": "Mand", - "Price": "300" - }, - { - "Procedure Code": "D0382", - "Description": "Max", - "Price": "300" - }, - { - "Procedure Code": "D0383", - "Description": "", - "Price": "350" - }, - { - "Procedure Code": "D1110", - "Description": "adult prophy", - "Price": "150" - }, - { - "Procedure Code": "D1120", - "Description": "child prophy", - "Price": "120" - }, - { - "Procedure Code": "D1208", - "Description": "FL", - "Price": "90" - }, - { - "Procedure Code": "D1351", - "Description": "sealant", - "Price": "80" - }, - { - "Procedure Code": "D1999", - "Description": "", - "Price": "50" - }, - { - "Procedure Code": "D2140", - "Description": "amalgam, one surface", - "Price": "150" - }, - { - "Procedure Code": "D2150", - "Description": "amalgam, two surface", - "Price": "200" - }, - { - "Procedure Code": "D2955", - "Description": "post renoval", - "Price": "350" - }, - { - "Procedure Code": "D4910", - "Description": "perio maintains", - "Price": "250" - }, - { - "Procedure Code": "D5510", - "Description": "Repair broken complete denture base (QUAD)", - "Price": "400" - }, - { - "Procedure Code": "D6056", - "Description": "pre fab abut", - "Price": "750" - }, - { - "Procedure Code": "D6057", - "Description": "custom abut", - "Price": "800" - }, - { - "Procedure Code": "D6058", - "Description": "porcelain, implant crown, ceramic crown", - "Price": "1400" - }, - { - "Procedure Code": "D6059", - "Description": "", - "Price": "1400" - }, - { - "Procedure Code": "D6100", - "Description": "", - "Price": "320" - }, - { - "Procedure Code": "D6110", - "Description": "implant", - "Price": "1600" - }, - { - "Procedure Code": "D6242", - "Description": "noble metal. For united", - "Price": "1400" - }, - { - "Procedure Code": "D6245", - "Description": "porcelain, not for united", - "Price": "1400" - }, - { - "Procedure Code": "D7910", - "Description": "suture, small wound up to 5 mm", - "Price": "400" - }, - { - "Procedure Code": "D7950", - "Description": "max", - "Price": "800" - }, - { - "Procedure Code": "D2160", - "Description": "Amalgam-three surfaces, primary or permanent", - "PriceLTEQ21": "110", - "PriceGT21": "92" - }, - { - "Procedure Code": "D2161", - "Description": "Amalgam-four or more surfaces, primary or permanent", - "PriceLTEQ21": "137", - "PriceGT21": "116" - }, - { - "Procedure Code": "D2330", - "Description": "Resin-based composite – one surface, anterior", - "PriceLTEQ21": "98", - "PriceGT21": "72" - }, - { - "Procedure Code": "D2331", - "Description": "Resin-based composite – two surfaces, anterior", - "PriceLTEQ21": "118", - "PriceGT21": "92" - }, - { - "Procedure Code": "D2332", - "Description": "Resin-based composite – three surfaces, anterior", - "PriceLTEQ21": "147", - "PriceGT21": "116" - }, - { - "Procedure Code": "D2335", - "Description": "Resin-based composite – four or more surfaces or involving incisal angle (anterior)", - "PriceLTEQ21": "188", - "PriceGT21": "146" - }, - { - "Procedure Code": "D2390", - "Description": "Resin-based composite crown, anterior", - "PriceLTEQ21": "133", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2391", - "Description": "Resin-based composite – one surface, posterior", - "PriceLTEQ21": "99", - "PriceGT21": "62" - }, - { - "Procedure Code": "D2392", - "Description": "Resin-based composite – two surfaces, posterior", - "PriceLTEQ21": "123", - "PriceGT21": "77" - }, - { - "Procedure Code": "D2393", - "Description": "Resin-based composite – three surfaces, posterior", - "PriceLTEQ21": "133", - "PriceGT21": "92" - }, - { - "Procedure Code": "D2394", - "Description": "Resin-based composite – four or more surfaces, posterior", - "PriceLTEQ21": "182", - "PriceGT21": "116" - }, - { - "Procedure Code": "D2710", - "Description": "Crown – resin-based composite (indirect)", - "PriceLTEQ21": "244", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2740", - "Description": "Crown – porcelain/ceramic", - "PriceLTEQ21": "853", - "PriceGT21": "729" - }, - { - "Procedure Code": "D2750", - "Description": "Crown – porcelain fused to high noble metal", - "PriceLTEQ21": "800", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2751", - "Description": "Crown – porcelain fused to predominantly base metal", - "PriceLTEQ21": "727", - "PriceGT21": "613" - }, - { - "Procedure Code": "D2752", - "Description": "Crown – porcelain fused to noble metal", - "PriceLTEQ21": "735", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2790", - "Description": "Crown – full cast high noble metal", - "PriceLTEQ21": "808", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2910", - "Description": "Re-cement or re-bond inlay, onlay or partial coverage restoration", - "PriceLTEQ21": "69", - "PriceGT21": "57" - }, - { - "Procedure Code": "D2920", - "Description": "Re-cement or re-bond crown", - "PriceLTEQ21": "68", - "PriceGT21": "57" - }, - { - "Procedure Code": "D2929", - "Description": "Prefabricated porcelain/ceramic crown – primary tooth", - "PriceLTEQ21": "224", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2930", - "Description": "Prefabricated stainless steel crown – primary tooth", - "PriceLTEQ21": "205", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2931", - "Description": "Prefabricated stainless steel crown – permanent tooth", - "PriceLTEQ21": "199", - "PriceGT21": "171" - }, - { - "Procedure Code": "D2932", - "Description": "Prefabricated resin crown", - "PriceLTEQ21": "224", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2934", - "Description": "Prefabricated esthetic coated stainless steel crown – primary tooth", - "PriceLTEQ21": "184", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D2950", - "Description": "Core buildup, including any pins when required", - "PriceLTEQ21": "197", - "PriceGT21": "164" - }, - { - "Procedure Code": "D2951", - "Description": "Pin retention – per tooth, in addition to restoration", - "PriceLTEQ21": "31", - "PriceGT21": "27" - }, - { - "Procedure Code": "D2954", - "Description": "Prefabricated post and core in addition to crown", - "PriceLTEQ21": "229", - "PriceGT21": "191" - }, - { - "Procedure Code": "D2980", - "Description": "Crown repair necessitated by restorative material failure", - "PriceLTEQ21": "137", - "PriceGT21": "115" - }, - { - "Procedure Code": "D2999", - "Description": "Unspecified restorative procedure, by report", - "PriceLTEQ21": "IC", - "PriceGT21": "IC" - }, - { - "Procedure Code": "D3120", - "Description": "Pulp cap – indirect (excluding final restoration)", - "PriceLTEQ21": "40", - "PriceGT21": "34" - }, - { - "Procedure Code": "D3220", - "Description": "Therapeutic pulpotomy (excluding final restoration) – removal of pulp coronal to the dentinocemental junction and application of medicament", - "PriceLTEQ21": "106", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D3310", - "Description": "Endodontic therapy, anterior (excluding final restoration)", - "PriceLTEQ21": "544", - "PriceGT21": "544" - }, - { - "Procedure Code": "D3320", - "Description": "Endodontic therapy, premolar tooth (excluding final restoration)", - "PriceLTEQ21": "639", - "PriceGT21": "639" - }, - { - "Procedure Code": "D3330", - "Description": "Endodontic therapy, molar tooth (excluding final restoration)", - "PriceLTEQ21": "829", - "PriceGT21": "829" - }, - { - "Procedure Code": "D3346", - "Description": "Retreatment of previous root canal therapy – anterior", - "PriceLTEQ21": "545", - "PriceGT21": "456" - }, - { - "Procedure Code": "D3347", - "Description": "Retreatment of previous root canal therapy – premolar", - "PriceLTEQ21": "641", - "PriceGT21": "538" - }, - { - "Procedure Code": "D3348", - "Description": "Retreatment of previous root canal therapy – molar", - "PriceLTEQ21": "789", - "PriceGT21": "613" - }, - { - "Procedure Code": "D3410", - "Description": "Apicoectomy – anterior", - "PriceLTEQ21": "471", - "PriceGT21": "407" - }, - { - "Procedure Code": "D3421", - "Description": "Apicoectomy – premolar (first root)", - "PriceLTEQ21": "550", - "PriceGT21": "460" - }, - { - "Procedure Code": "D3425", - "Description": "Apicoectomy – molar (first root)", - "PriceLTEQ21": "639", - "PriceGT21": "598" - }, - { - "Procedure Code": "D3426", - "Description": "Apicoectomy (each additional root)", - "PriceLTEQ21": "264", - "PriceGT21": "230" - }, - { - "Procedure Code": "D4210", - "Description": "Gingivectomy or gingivoplasty - Four or more contiguous teeth or bounded teeth spaces per quadrant", - "PriceLTEQ21": "343", - "PriceGT21": "307" - }, - { - "Procedure Code": "D4211", - "Description": "Gingivectomy or gingivoplasty - one to three contiguous teeth or bounded teeth spaces per quadrant", - "PriceLTEQ21": "133", - "PriceGT21": "111" - }, - { - "Procedure Code": "D4341", - "Description": "Periodontal scaling and root planing - four or more teeth per quadrant", - "PriceLTEQ21": "160", - "PriceGT21": "134" - }, - { - "Procedure Code": "D4342", - "Description": "Periodontal scaling and root planing - one to three teeth, per quadrant", - "PriceLTEQ21": "107", - "PriceGT21": "90" - }, - { - "Procedure Code": "D4346", - "Description": "Scaling in presence of generalized moderate or severe gingival inflammation – full mouth, after oral evaluation", - "PriceLTEQ21": "75", - "PriceGT21": "60" - }, - { - "Procedure Code": "D5110", - "Description": "Complete denture – maxillary", - "PriceLTEQ21": "858", - "PriceGT21": "730" - }, - { - "Procedure Code": "D5120", - "Description": "Complete denture – mandibular", - "PriceLTEQ21": "852", - "PriceGT21": "730" - }, - { - "Procedure Code": "D5130", - "Description": "Immediate denture – maxillary", - "PriceLTEQ21": "935", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5140", - "Description": "Immediate denture - mandibular", - "PriceLTEQ21": "934", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5211", - "Description": "Maxillary partial denture - resin base (including retentive/clasping materials, rests and teeth)", - "PriceLTEQ21": "650", - "PriceGT21": "556" - }, - { - "Procedure Code": "D5212", - "Description": "Mandibular partial denture - resin base (including retentive/clasping materials, rests and teeth)", - "PriceLTEQ21": "691", - "PriceGT21": "595" - }, - { - "Procedure Code": "D5213", - "Description": "Maxillary partial denture- cast metal framework with resin denture bases (including retentive/clasping materials, rests and teeth)", - "PriceLTEQ21": "974", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5214", - "Description": "Mandibular partial denture - cast metal framework with resin denture bases (including retentive/clasping materials, rests and teeth)", - "PriceLTEQ21": "986", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5225", - "Description": "Maxillary partial denture- flexible base", - "PriceLTEQ21": "974", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5226", - "Description": "Mandibular partial denture- flexible base", - "PriceLTEQ21": "986", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5511", - "Description": "Repair broken complete denture base, mandibular", - "PriceLTEQ21": "109", - "PriceGT21": "85" - }, - { - "Procedure Code": "D5512", - "Description": "Repair broken complete denture base, maxillary", - "PriceLTEQ21": "109", - "PriceGT21": "85" - }, - { - "Procedure Code": "D5520", - "Description": "Replace missing or broken teeth - complete denture (each tooth)", - "PriceLTEQ21": "89", - "PriceGT21": "77" - }, - { - "Procedure Code": "D5611", - "Description": "Repair broken resin partial denture base, mandibular", - "PriceLTEQ21": "93", - "PriceGT21": "77" - }, - { - "Procedure Code": "D5612", - "Description": "Repair broken resin partial denture base, maxillary", - "PriceLTEQ21": "93", - "PriceGT21": "77" - }, - { - "Procedure Code": "D5621", - "Description": "Repair broken cast partial denture base, mandibular", - "PriceLTEQ21": "121", - "PriceGT21": "104" - }, - { - "Procedure Code": "D5622", - "Description": "Repair broken cast partial denture base, maxillary", - "PriceLTEQ21": "121", - "PriceGT21": "104" - }, - { - "Procedure Code": "D5630", - "Description": "Repair or replace broken retentive/clasping materials – per tooth", - "PriceLTEQ21": "107", - "PriceGT21": "99" - }, - { - "Procedure Code": "D5640", - "Description": "Replace broken teeth - per tooth", - "PriceLTEQ21": "91", - "PriceGT21": "77" - }, - { - "Procedure Code": "D5650", - "Description": "Add tooth to existing partial denture", - "PriceLTEQ21": "110", - "PriceGT21": "92" - }, - { - "Procedure Code": "D5660", - "Description": "Add clasp to existing partial denture per tooth", - "PriceLTEQ21": "125", - "PriceGT21": "98" - }, - { - "Procedure Code": "D5730", - "Description": "Reline complete maxillary denture (direct)", - "PriceLTEQ21": "188", - "PriceGT21": "158" - }, - { - "Procedure Code": "D5731", - "Description": "Reline lower complete mandibular denture (direct)", - "PriceLTEQ21": "184", - "PriceGT21": "173" - }, - { - "Procedure Code": "D5740", - "Description": "Reline maxillary partial denture(chairside)", - "PriceLTEQ21": "169", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5741", - "Description": "Reline mandibular partial denture(chairside)", - "PriceLTEQ21": "160", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5750", - "Description": "Reline complete maxillary denture (indirect)", - "PriceLTEQ21": "255", - "PriceGT21": "214" - }, - { - "Procedure Code": "D5751", - "Description": "Reline complete mandibular denture (indirect)", - "PriceLTEQ21": "256", - "PriceGT21": "215" - }, - { - "Procedure Code": "D5760", - "Description": "Reline maxillary partial denture (laboratory)", - "PriceLTEQ21": "252", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D5761", - "Description": "Reline mandibular partial denture (laboratory)", - "PriceLTEQ21": "252", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D6241", - "Description": "Pontic-porcelain fused metal", - "PriceLTEQ21": "691", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D6751", - "Description": "Retainer crown-porcelain fused to metal", - "PriceLTEQ21": "691", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D6930", - "Description": "Re-cement or re-bond fixed partial denture", - "PriceLTEQ21": "87", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D6980", - "Description": "Fixed partial denture repair", - "PriceLTEQ21": "155", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D6999", - "Description": "Fixed prosthodontic procedure", - "PriceLTEQ21": "IC", - "PriceGT21": "IC" - }, - { - "Procedure Code": "D7111", - "Description": "Extraction, coronal remnants - primary tooth", - "PriceLTEQ21": "80", - "PriceGT21": "75" - }, - { - "Procedure Code": "D7140", - "Description": "Extraction, erupted tooth or exposed root (elevation and/or forceps removal)", - "PriceLTEQ21": "107", - "PriceGT21": "77" - }, - { - "Procedure Code": "D7210", - "Description": "Extraction, erupted tooth requiring removal of bone and/or sectioning of tooth, and including elevation of mucoperiosteal flap if indicated", - "PriceLTEQ21": "179", - "PriceGT21": "149" - }, - { - "Procedure Code": "D7220", - "Description": "Removal of impacted tooth - soft tissue", - "PriceLTEQ21": "223", - "PriceGT21": "191" - }, - { - "Procedure Code": "D7230", - "Description": "Removal of impacted tooth - partially bony", - "PriceLTEQ21": "286", - "PriceGT21": "249" - }, - { - "Procedure Code": "D7240", - "Description": "Removal of impacted tooth - completely bony", - "PriceLTEQ21": "378", - "PriceGT21": "295" - }, - { - "Procedure Code": "D7250", - "Description": "Surgical removal of residual tooth roots (cutting procedure)", - "PriceLTEQ21": "173", - "PriceGT21": "144" - }, - { - "Procedure Code": "D7251", - "Description": "Coronectomy- intentional partial tooth removal, impacted teeth only", - "PriceLTEQ21": "173", - "PriceGT21": "134" - }, - { - "Procedure Code": "D7270", - "Description": "Tooth reimplantation and/or stabilization of accidentally evulsed or displaced tooth", - "PriceLTEQ21": "145", - "PriceGT21": "106" - }, - { - "Procedure Code": "D7280", - "Description": "Surgical access of an unerupted tooth", - "PriceLTEQ21": "452", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D7283", - "Description": "Placement of device to facilitate eruption of impacted tooth", - "PriceLTEQ21": "84", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D7310", - "Description": "Alveoloplasty in conjunction with extractions-four or more teeth or tooth spaces, per quadrant", - "PriceLTEQ21": "163", - "PriceGT21": "142" - }, - { - "Procedure Code": "D7311", - "Description": "Alveoloplasty in conjunction with extractions - one to three teeth or tooth spaces, per quadrant", - "PriceLTEQ21": "146", - "PriceGT21": "128" - }, - { - "Procedure Code": "D7320", - "Description": "Alveoloplasty not in conjunction with extractions- four or more teeth or tooth spaces, per quadrant", - "PriceLTEQ21": "202", - "PriceGT21": "187" - }, - { - "Procedure Code": "D7321", - "Description": "Alveoloplasty not in conjunction with extractions - one to three teeth or tooth spaces, per quadrant", - "PriceLTEQ21": "162", - "PriceGT21": "149" - }, - { - "Procedure Code": "D7340", - "Description": "Vestibuloplasty - ridge extension (second epithelialization)", - "PriceLTEQ21": "796", - "PriceGT21": "747" - }, - { - "Procedure Code": "D7350", - "Description": "Vestibuloplasty - ridge extension (Oral surgeon only)", - "PriceLTEQ21": "1236", - "PriceGT21": "943" - }, - { - "Procedure Code": "D7410", - "Description": "Radical excision - lesion diameter up to 1.25cm", - "PriceLTEQ21": "124", - "PriceGT21": "115" - }, - { - "Procedure Code": "D7411", - "Description": "Excision of benign lesion greater than 1.25 cm", - "PriceLTEQ21": "254", - "PriceGT21": "208" - }, - { - "Procedure Code": "D7450", - "Description": "Removal of benign odontogenic cyst or tumor - lesion diameter up to 1.25 cm", - "PriceLTEQ21": "252", - "PriceGT21": "248" - }, - { - "Procedure Code": "D7451", - "Description": "Removal of benign odontogenic cyst or tumor - lesion diameter greater than 1.25 cm", - "PriceLTEQ21": "343", - "PriceGT21": "288" - }, - { - "Procedure Code": "D7460", - "Description": "Removal of benign nonodontogenic cyst or tumor - lesion diameter up to 1.25 cm", - "PriceLTEQ21": "142", - "PriceGT21": "121" - }, - { - "Procedure Code": "D7461", - "Description": "Removal of benign nonodontogenic cyst or tumor - lesion diameter greater than 1.25 cm", - "PriceLTEQ21": "194", - "PriceGT21": "143" - }, - { - "Procedure Code": "D7471", - "Description": "Removal of lateral exostosis (maxilla or mandible) (Oral surgeon only)", - "PriceLTEQ21": "194", - "PriceGT21": "143" - }, - { - "Procedure Code": "D7472", - "Description": "Removal of torus palatinus (Oral surgeon only)", - "PriceLTEQ21": "194", - "PriceGT21": "143" - }, - { - "Procedure Code": "D7473", - "Description": "Removal of torus mandibularis (Oral surgeon only)", - "PriceLTEQ21": "194", - "PriceGT21": "143" - }, - { - "Procedure Code": "D7961", - "Description": "Buccal/labial frenectomy (frenulectomy)", - "PriceLTEQ21": "353", - "PriceGT21": "107" - }, - { - "Procedure Code": "D7962", - "Description": "Lingual frenectomy (frenulectomy)", - "PriceLTEQ21": "353", - "PriceGT21": "107" - }, - { - "Procedure Code": "D7963", - "Description": "Frenuloplasty", - "PriceLTEQ21": "480", - "PriceGT21": "416" - }, - { - "Procedure Code": "D7970", - "Description": "Excision of hyperplastic tissue - per arch", - "PriceLTEQ21": "334", - "PriceGT21": "246" - }, - { - "Procedure Code": "D7999", - "Description": "Unspecified oral surgery procedure, by report", - "PriceLTEQ21": "IC", - "PriceGT21": "IC" - }, - { - "Procedure Code": "D8010", - "Description": "Limited orthodontic treamtnent of the primary transition (Orthodontist only)", - "PriceLTEQ21": "250", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8020", - "Description": "Limited orthodontic treatment of the transitional dentition (Orthodontist only)", - "PriceLTEQ21": "250", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8030", - "Description": "Limited orthodontic treatment of the adolescent dentition (Orthodontist only)", - "PriceLTEQ21": "250", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8040", - "Description": "Limited orthodontic treatment of the adult dentition (Orthodontist only)", - "PriceLTEQ21": "250", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8070", - "Description": "Comprehensive orthodontic treatment of the transitional dentition (Orthodontist only)", - "PriceLTEQ21": "1302", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8080", - "Description": "Comprehensive orthodontic treatment of the adolescent dentition (Orthodontist only)", - "PriceLTEQ21": "1302", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8090", - "Description": "Comprehensive orthodontic treatment of the adult dentition (Orthodontist only)", - "PriceLTEQ21": "1302", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8660", - "Description": "Pre-orthodontic treatment examination to monitor growth and development (records fee) (Orthodontist only)", - "PriceLTEQ21": "136", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8670", - "Description": "Periodic orthodontic treatment visit (Orthodontist only)", - "PriceLTEQ21": "288", - "PriceGT21": "215" - }, - { - "Procedure Code": "D8680", - "Description": "Orthodontic retention (removal of appliances, construction and placement of retainer(s)) (Orthodontist only)", - "PriceLTEQ21": "102", - "PriceGT21": "85" - }, - { - "Procedure Code": "D8703", - "Description": "Replacement of lost or broken retainer- maxillary (Orthodontist only)", - "PriceLTEQ21": "95", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8704", - "Description": "Replacement of lost or broken retainer- mandibular (Orthodontist only)", - "PriceLTEQ21": "95", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D8999", - "Description": "Unspecified orthodontic procedure, by report (Orthodontist only) I.C I.C** Y Y**", - "PriceLTEQ21": "IC", - "PriceGT21": "IC" - }, - { - "Procedure Code": "D9110", - "Description": "Palliative treatment of dental pain – per visit", - "PriceLTEQ21": "75", - "PriceGT21": "36" - }, - { - "Procedure Code": "D9222", - "Description": "Deep sedation/general anesthesia – first 15 minutes", - "PriceLTEQ21": "109", - "PriceGT21": "90" - }, - { - "Procedure Code": "D9223", - "Description": "Deep sedation/general anesthesia – each additional 15- minute increment", - "PriceLTEQ21": "109", - "PriceGT21": "90" - }, - { - "Procedure Code": "D9230", - "Description": "Analgesia, anxiolysis, inhalation of nitrous oxide", - "PriceLTEQ21": "22", - "PriceGT21": "15" - }, - { - "Procedure Code": "D9248", - "Description": "Nonintravenous conscious sedation", - "PriceLTEQ21": "45", - "PriceGT21": "45" - }, - { - "Procedure Code": "D9310", - "Description": "Consultation- Diagnostic service provided by dentist or physician other than requesting dentist or physician (Specialist only)", - "PriceLTEQ21": "54", - "PriceGT21": "63" - }, - { - "Procedure Code": "D9410", - "Description": "House/extended care facility call, once per facility per day", - "PriceLTEQ21": "36", - "PriceGT21": "39" - }, - { - "Procedure Code": "D9450", - "Description": "Rural add-on encounter payment", - "PriceLTEQ21": "31", - "PriceGT21": "31" - }, - { - "Procedure Code": "D9920", - "Description": "Behavior management, by report", - "PriceLTEQ21": "86", - "PriceGT21": "86" - }, - { - "Procedure Code": "D9930", - "Description": "Treatment of complications (postsurgical) - unusual circumstances, by report", - "PriceLTEQ21": "66", - "PriceGT21": "30" - }, - { - "Procedure Code": "D9941", - "Description": "Fabrication of athletic mouthguard", - "PriceLTEQ21": "85", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D9944", - "Description": "Occlusal guard - hard appliance, full arch", - "PriceLTEQ21": "308", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D9945", - "Description": "Occlusal guard - soft appliance, full arch", - "PriceLTEQ21": "308", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D9946", - "Description": "Occlusal guard - hard appliance, partial arch", - "PriceLTEQ21": "308", - "PriceGT21": "NC" - }, - { - "Procedure Code": "D9999", - "Description": "Unspecified adjunctive procedure, by report", - "PriceLTEQ21": "IC", - "PriceGT21": "IC" - } -] diff --git a/apps/pdfProcedureCode/procedureCodesOld.json b/apps/pdfProcedureCode/procedureCodesOld.json deleted file mode 100644 index 1df028e..0000000 --- a/apps/pdfProcedureCode/procedureCodesOld.json +++ /dev/null @@ -1,344 +0,0 @@ -[ - { - "Procedure Code": "D1999", - "Description": "", - "Price": "50" - }, - { - "Procedure Code": "D0120", - "Description": "perio exam", - "Price": "105" - }, - { - "Procedure Code": "D0140", - "Description": "limited exam", - "Price": "90" - }, - { - "Procedure Code": "D0150", - "Description": "comprehensive exam", - "Price": "120" - }, - { - "Procedure Code": "D0210", - "Description": "Fmx.", - "Price": "120" - }, - { - "Procedure Code": "D0220", - "Description": "first PA.", - "Price": "60" - }, - { - "Procedure Code": "D0230", - "Description": "2nd PA.", - "Price": "50" - }, - { - "Procedure Code": "D0330", - "Description": "pano", - "Price": "150" - }, - { - "Procedure Code": "D0272", - "Description": "2 BW", - "Price": "80" - }, - { - "Procedure Code": "D0274", - "Description": "4BW", - "Price": "160" - }, - { - "Procedure Code": "D1110", - "Description": "adult prophy", - "Price": "150" - }, - { - "Procedure Code": "D1120", - "Description": "child prophy", - "Price": "120" - }, - { - "Procedure Code": "D1351", - "Description": "sealant", - "Price": "80" - }, - { - "Procedure Code": "D4341", - "Description": "srp", - "Price": "250" - }, - { - "Procedure Code": "D4910", - "Description": "perio maintains", - "Price": "250" - }, - { - "Procedure Code": "D1208", - "Description": "FL", - "Price": "90" - }, - { - "Procedure Code": "D2330", - "Description": "front composite. 1 s.", - "Price": "180" - }, - { - "Procedure Code": "D2331", - "Description": "2s", - "Price": "220" - }, - { - "Procedure Code": "D2332", - "Description": "3s", - "Price": "280" - }, - { - "Procedure Code": "D2335", - "Description": "4s or more", - "Price": "350" - }, - { - "Procedure Code": "D2391", - "Description": "back. 1s", - "Price": "200" - }, - { - "Procedure Code": "D2392", - "Description": "2s", - "Price": "250" - }, - { - "Procedure Code": "D2393", - "Description": "3s", - "Price": "280" - }, - { - "Procedure Code": "D2394", - "Description": "4s", - "Price": "320" - }, - { - "Procedure Code": "D2140", - "Description": "amalgam, one surface", - "Price": "150" - }, - { - "Procedure Code": "D2150", - "Description": "amalgam, two surface", - "Price": "200" - }, - { - "Procedure Code": "D2750", - "Description": "high noble", - "Price": "1300" - }, - { - "Procedure Code": "D2751", - "Description": "base metal", - "Price": "1200" - }, - { - "Procedure Code": "D2740", - "Description": "crown porcelain", - "Price": "1300" - }, - { - "Procedure Code": "D2954", - "Description": "p/c", - "Price": "450" - }, - { - "Procedure Code": "D7910", - "Description": "suture, small wound up to 5 mm", - "Price": "400" - }, - { - "Procedure Code": "D5110", - "Description": "FU", - "Price": "1200", - "Full Price": "1700" - }, - { - "Procedure Code": "D5120", - "Description": "FL", - "Price": "1700", - "Full Price": "1700" - }, - { - "Procedure Code": "D5211", - "Description": "pu", - "Price": "1300" - }, - { - "Procedure Code": "D5212", - "Description": "pl", - "Price": "1300" - }, - { - "Procedure Code": "D5213", - "Description": "cast pu.", - "Price": "1700" - }, - { - "Procedure Code": "D5214", - "Description": "cast pl", - "Price": "1700" - }, - { - "Procedure Code": "D5510", - "Description": "Repair broken complete denture base (QUAD)", - "Price": "400" - }, - { - "Procedure Code": "D5520", - "Description": "Replace missing or broken teeth - complete denture (each tooth) (TOOTH)", - "Price": "200" - }, - { - "Procedure Code": "D5750", - "Description": "lab reline", - "Price": "600" - }, - { - "Procedure Code": "D5730", - "Description": "chairside reline", - "Price": "500" - }, - { - "Procedure Code": "D2920", - "Description": "re cement crown", - "Price": "120" - }, - { - "Procedure Code": "D2950", - "Description": "core buildup", - "Price": "350" - }, - { - "Procedure Code": "D2955", - "Description": "post renoval", - "Price": "350" - }, - { - "Procedure Code": "D6100", - "Description": "", - "Price": "320" - }, - { - "Procedure Code": "D6110", - "Description": "implant", - "Price": "1600" - }, - { - "Procedure Code": "D6056", - "Description": "pre fab abut", - "Price": "750" - }, - { - "Procedure Code": "D6057", - "Description": "custom abut", - "Price": "800" - }, - { - "Procedure Code": "D6058", - "Description": "porcelain, implant crown, ceramic crown", - "Price": "1400" - }, - { - "Procedure Code": "D6059", - "Description": "", - "Price": "1400" - }, - { - "Procedure Code": "D6242", - "Description": "noble metal. For united", - "Price": "1400" - }, - { - "Procedure Code": "D6245", - "Description": "porcelain, not for united", - "Price": "1400" - }, - { - "Procedure Code": "D0367", - "Description": "", - "Price": "400" - }, - { - "Procedure Code": "D0364", - "Description": "Less than one jaw", - "Price": "350" - }, - { - "Procedure Code": "D0365", - "Description": "Mand", - "Price": "350" - }, - { - "Procedure Code": "D0366", - "Description": "Max", - "Price": "350" - }, - { - "Procedure Code": "D0368", - "Description": "include TMJ", - "Price": "375" - }, - { - "Procedure Code": "D0383", - "Description": "", - "Price": "350" - }, - { - "Procedure Code": "D0380", - "Description": "Less than one jaw", - "Price": "300" - }, - { - "Procedure Code": "D0381", - "Description": "Mand", - "Price": "300" - }, - { - "Procedure Code": "D0382", - "Description": "Max", - "Price": "300" - }, - { - "Procedure Code": "D7950", - "Description": "max", - "Price": "800" - }, - { - "Procedure Code": "D7140", - "Description": "simple ext", - "Price": "150" - }, - { - "Procedure Code": "D7210", - "Description": "surgical ext", - "Price": "280" - }, - { - "Procedure Code": "D7220", - "Description": "soft impacted", - "Price": "380" - }, - { - "Procedure Code": "D7230", - "Description": "partial bony", - "Price": "450" - }, - { - "Procedure Code": "D7240", - "Description": "fully bony", - "Price": "550" - }, - { - "Procedure Code": "D3320", - "Description": "pre M RCT", - "Price": "1050" - } -] \ No newline at end of file