%!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: phpgw_server.dvi %%Pages: 6 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: Helvetica-Bold Times-Roman Courier Times-Italic %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -t letter -o phpgw_server.ps phpgw_server.dvi %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2003.12.28:0956 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "22 June 1996", % filename = "8r.enc", % email = "kb@@mail.tug.org", % address = "135 Center Hill Rd. // Plymouth, MA 02360", % codetable = "ISO/ASCII", % checksum = "119 662 4424", % docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} def end %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N /@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X /yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin 40258431 52099146 1000 600 600 (phpgw_server.dvi) @start /Fa 134[37 3[42 23 1[32 1[42 42 2[23 3[42 42 1[37 42 2[42 8[51 69 3[42 51 1[51 60 1[69 46 4[60 3[55 1[51 10[42 42 42 42 42 42 1[23 1[28 45[{TeXBase1Encoding ReEncodeFont}31 83.022 /Times-Italic rf /Fb 133[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 1[45 4[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 2[45 45 45 1[45 45 45 45 45 1[45 45 45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45 10[45 34[{ TeXBase1Encoding ReEncodeFont}69 74.7198 /Courier rf /Fc 134[46 3[51 28 46 3[51 51 74 23 2[23 1[51 1[46 50[46 46 2[23 46[{TeXBase1Encoding ReEncodeFont}14 83.022 /Helvetica-Bold rf /Fd 130[40 1[40 37 42 42 60 42 42 23 32 28 42 42 42 42 65 23 42 1[23 42 42 28 37 42 37 42 37 1[42 6[60 78 1[60 51 46 55 1[46 60 60 74 51 2[28 60 60 46 51 60 55 55 60 6[23 3[42 1[42 42 3[23 21 28 21 2[28 28 28 2[42 32[46 46 2[{TeXBase1Encoding ReEncodeFont}62 83.022 /Times-Roman rf /Fe 138[61 33 4[61 61 4[28 61 61 1[55 61 55 1[55 20[61 26[55 2[28 46[{TeXBase1Encoding ReEncodeFont}14 99.6264 /Helvetica-Bold rf /Ff 134[66 2[66 73 40 66 47 73 1[73 73 106 33 2[33 3[66 1[66 1[66 13[80 5[100 10[86 14[66 66 66 2[33 46[{TeXBase1Encoding ReEncodeFont}22 119.552 /Helvetica-Bold rf /Fg 134[115 3[126 69 1[80 1[126 126 2[57 3[126 126 1[115 126 2[115 8[138 195 3[138 149 1[138 161 1[172 126 4[161 3[149 1[149 17[57 1[69 45[{ TeXBase1Encoding ReEncodeFont}25 206.584 /Helvetica-Bold rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: Letter letter %%EndPaperSize %%EndSetup %%Page: 1 1 1 0 bop Black 0 TeXcolorgray Black Black 711 140 a Fg(eGr)l(oupW)-8 b(are)57 b(XML-RPC/SO)-10 b(AP)1497 409 y(Methodology)-2 826 y Ff(1.)34 b(System)g(le)n(vel)h(requests)396 1114 y Fe(1.1.)28 b(Login)f(and)h(authentication)396 1271 y Fd(Authentication)18 b(for)i(user)g(logins)g(is)h(handled)e (internally)g(no)g(dif)n(ferently)f(than)i(for)g(the)g(typical)g (eGroupW)-7 b(are)19 b(login)396 1379 y(via)h(web)h(bro)n(wser)-5 b(.)19 b(Serv)o(er)g(logins,)h(added)f(for)g(XML-RPC)i(and)f(SO)m(AP)-9 b(,)20 b(are)g(only)g(slightly)f(dif)n(ferent.)g(F)o(or)h(either)396 1487 y(protocol,)e(user)j(and)e(serv)o(er)h(login)f(and)h (authentication)e(and)h(subsequent)g(requests)h(are)g(handled)f(by)g (their)396 1595 y(respecti)n(v)o(e)g(serv)o(er)h(apps,)f(xmlrpc.php)f (and)h(soap.php.)f(A)j(serv)o(er)e(is)i(identi\002ed)f(by)f(a)i(custom) f(HTTP)g(header)m(,)396 1703 y(without)g(which)f(a)i(normal)e(user)h (login)f(will)i(be)g(undertak)o(en.)396 1853 y(A)g(client)f(or)g(serv)o (er)f(sends)i(the)f(appropriate)e(XML-RPC)i(or)g(SO)m(AP)h(pack)o(et)f (containing)e(host,)i(user)m(,)g(and)f(passw)o(ord)396 1961 y(information)f(to)i(the)h(phpgw)d(serv)o(er)-5 b(.)20 b(The)g(serv)o(er)f(then)h(assigns)g(a)h(sessionid)f(and)g(k)o (e)o(y)-5 b(,)19 b(which)g(is)j(returned)c(to)i(the)396 2068 y(client)g(in)h(the)f(appropriate)e(format.)396 2218 y(Our)i(current)f(method)g(for)g(authenticating)g(requests)g (after)h(successful)g(login)g(is)h(via)f(the)g(Authorization:)e(Basic) 396 2326 y(HTTP)i(header)f(to)i(be)f(sent)g(by)g(the)g(client)g(or)f (requesting)g(serv)o(er)-5 b(.)19 b(The)h(format)f(of)h(this)g(header)f (is)i(a)g(base64)e(encoding)396 2434 y(of)h(the)g(assigned)g(sessionid) g(and)g(kp3)f(v)n(ariables,)g(seperated)h(by)f(a)i(':'.)396 2583 y(Further)e(security)h(may)g(be)g(obtained)f(by)g(using)h(SSL)h (on)f(the)g(client)g(and)g(serv)o(er)-5 b(.)19 b(In)h(the)g(future,)f (we)i(may)396 2691 y(encrypt/descrypt)c(the)k(data)f(on)f(either)h (end,)g(or)g(at)g(least)h(pro)o(vide)d(this)j(as)g(an)f(option.)f(The)h (sessionid)g(and)f(k)o(e)o(y)396 2799 y(v)n(ariables)h(will)h(mak)o(e)e (this)i(possible,)f(and)f(relati)n(v)o(ely)g(secure.)396 3052 y Fc(1.1.1.)24 b(system.login)396 3202 y Fd(The)c(\002rst)h (request)f(a)g(client)g(will)h(mak)o(e)f(is)h(the)f(system.login)f (method.)g(Here)h(is)h(a)g(sample)f(of)g(a)g(serv)o(er)f(login)h(pack)o (et)396 3310 y(in)h(XML-RPC:)396 3490 y Fb() 396 3587 y()396 3684 y (system.login)396 3781 y()396 3878 y()396 3976 y()396 4073 y (server_name)396 4170 y (my.host.name)396 4267 y()396 4364 y(username)396 4461 y(bubba)396 4558 y()396 4655 y(password)396 4753 y(gump)396 4850 y()g()396 4947 y()396 5044 y()396 5141 y()p Black 3842 5638 a Fa(1)p Black eop %%Page: 2 2 2 1 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8 b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p Black 396 263 a Fd(And)g(the)g(same)h(in)f(SO)m(AP:)396 444 y Fb()396 541 y()396 832 y()k()396 929 y(my.host.name) 396 1026 y(bubba)396 1124 y(gump)396 1221 y()396 1318 y()396 1415 y()396 1703 y Fd(The)20 b(same)g(style)h(of)f (pack)o(et)g(w)o(ould)f(be)h(required)f(for)g(a)i(user/client)e(login.) h(A)g(successful)g(login)g(should)f(yield)h(the)396 1811 y(follo)n(wing)f(reply:)396 1991 y Fb()396 2088 y()396 2185 y()396 2283 y()396 2380 y(sessionid)396 2477 y (cf5c5534307562fc5791560837)o(7db007)o()396 2574 y()396 2671 y(kp3)396 2768 y(2fe54daa11c8d52116788aa3f9)o(3cb70e)o()396 2865 y()396 2962 y()396 3060 y()396 3157 y()396 3254 y()396 3542 y Fd(And)h(a)h(f)o(ailed)f(login:)396 3722 y Fb() 396 3819 y()396 3916 y()396 4014 y()396 4111 y(GOAWAY)396 4208 y (XOXO)396 4305 y()396 4402 y()396 4499 y()396 4596 y()396 4693 y()396 4982 y Fd(eqweqw)p Black 3842 5569 a Fa(2)p Black eop %%Page: 3 3 3 2 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8 b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p Black 396 72 a Fc(1.1.2.)k(system.logout)396 222 y Fd(Logout:)396 402 y Fb()396 499 y()396 596 y(system.logout)396 693 y()g()396 791 y()396 888 y(sessionid)396 985 y (ea35cac53d2c12bd05caecd973)o(04478a)o()396 1082 y()396 1179 y(kp3)396 1276 y(4f2b256e0da4e7cbbebaac9f1f)o(c8ca4a)o()396 1373 y()396 1471 y()396 1568 y()396 1665 y()396 1762 y()396 2050 y Fd(Logout)19 b(w)o(ork)o(ed:)396 2230 y Fb()396 2327 y()396 2424 y()396 2522 y()396 2619 y(GOODBYE)396 2716 y (XOXO)396 2813 y()396 2910 y()396 3007 y()396 3104 y()396 3202 y()-2 3876 y Ff(2.)34 b(Business)h(la)n(y)o(er)f(requests)396 4044 y Fd(Once)20 b(a)h(successful)f(login)f(return)g(pack)o(et)h(has)g(been)g(recei)n(v) o(ed)e(and)i(sessionid/kp3)f(ha)n(v)o(e)g(been)h(e)o(xtracted,)e(e)n(v) o(ery)396 4152 y(subsequent)h(pack)o(et)g(sent)h(to)g(the)g(egroupw)o (are)c(serv)o(er)j(must)h(be)g(preceded)e(by)h(an)h(Authorization)d (header)-5 b(.)19 b(Here)h(is)396 4259 y(a)h(sample)f(header:)396 4440 y Fb(POST)44 b(/egroupware/xmlrpc.php)d(HTTP/1.0)396 4537 y(User-Agent:)i(PHP)i(XMLRPC)e(1.0)396 4634 y(Host:)h (my.local.host)396 4731 y(Authorization:)f(Basic)h (ZDgxNDIyZDRkYjg5NDEyNGNiMzZlMDhhZTdlYz)o(AxZmY6)o(NTU3Y)o(zkyYjB)o (mNGE4Z)o(DVlOTU)o(zMzI2Y)o(mU2OTQ)o(yNjM3Y)o(jQ=)396 4828 y(Content-Type:)f(text/xml)396 4925 y(Content-Length:)g(875)p Black 3842 5569 a Fa(3)p Black eop %%Page: 4 4 4 3 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8 b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p Black 396 72 a Fd(The)g(longish)f(string)h(is)h(a)g(base64)e(encoding)f (of)i(the)h($sessionid)e(.)i(':')f(.)g($kp3.)f(F)o(or)h(no)n(w)f(this)i (is)g(our)f(only)f(supported)396 180 y(authentication)f(method.)h (Additional)g(methods)g(w)o(ould)h(probably)d(also)k(af)n(fect)f(the)g (methodCalls.)f(This)h(is)i(certainly)396 288 y(open)d(to)i (discussion.)e(F)o(ollo)n(wing)g(is)i(a)g(typical)f(request)f(for)h (some)g(contact)f(data:)396 468 y Fb()396 566 y()396 663 y(addressbook.boaddressbook.rea) o(d_entr)o(ies)396 760 y()396 857 y()396 954 y()396 1051 y (start)396 1148 y (1)396 1246 y()396 1343 y(limit)396 1440 y (5)396 1537 y()396 1634 y(fields)396 1731 y()396 1828 y(n_given)396 1926 y (n_given)396 2023 y()396 2120 y(n_family)396 2217 y (n_family)396 2314 y()396 2411 y()396 2508 y()396 2605 y(query)396 2703 y ()396 2800 y()396 2897 y(filter)396 2994 y ()396 3091 y()396 3188 y(sort)396 3285 y ()396 3383 y()396 3480 y(order)396 3577 y ()396 3674 y()396 3771 y()396 3868 y()396 3965 y()396 4063 y()396 4351 y Fd(Successful)20 b(response:)396 4531 y Fb()396 4628 y()396 4725 y()396 4822 y()396 4919 y()396 5016 y(0) 396 5114 y()p Black 3842 5569 a Fa(4)p Black eop %%Page: 5 5 5 4 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8 b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p Black 396 72 a Fb(id)396 170 y (1)396 267 y()396 364 y(lid)396 461 y ()396 558 y()396 655 y(tid)396 752 y (n)396 850 y()396 947 y(owner)396 1044 y (500)396 1141 y()396 1238 y(access)396 1335 y (private)396 1432 y()396 1530 y(cat_id)396 1627 y (1)396 1724 y()396 1821 y(n_given)396 1918 y (Alan)396 2015 y()396 2112 y()396 2209 y()396 2307 y(1)396 2404 y()396 2501 y(id)396 2598 y (2)396 2695 y()396 2792 y(lid)396 2889 y ()396 2987 y()396 3084 y(tid)396 3181 y (n)396 3278 y()396 3375 y(owner)396 3472 y (500)396 3569 y()396 3666 y(access)396 3764 y (private)396 3861 y()396 3958 y(cat_id)396 4055 y (1)396 4152 y()396 4249 y(n_given)396 4346 y (Andy)396 4444 y()396 4541 y()396 4638 y()396 4735 y(...)396 5023 y Fd(Unauthorized)e(access)j(attempt)f(returns:)p Black 3842 5569 a Fa(5)p Black eop %%Page: 6 6 6 5 bop Black 0 TeXcolorgray Black 2413 -132 a Fa(eGr)l(oupW)-8 b(ar)m(e)20 b(XML-RPC/SO)-5 b(AP)20 b(Methodolo)o(gy)p Black 396 72 a Fb()396 170 y()396 267 y()396 364 y(UNAUTHORIZED)396 461 y()396 558 y()396 655 y ()-2 1164 y Ff(3.)34 b(More)f(to)g(come)r(...)396 1331 y Fd(Documenting)18 b(e)n(v)o(ery)h(single)h(call)h(will)f(be)h (dif)n(\002cult,)e(b)n(ut)h(should)f(be)h(done.)f(In)h(leiu)h(of)e (this,)i(please)f(see)h(the)396 1439 y(class.bo{APPN)m(AME}.inc.php)c (\002les)k(in)g(each)f(application/inc)e(directory)g(in)j(the)f(e)o (groupw)o(are)d(cvs.)j(In)g(this)h(\002le)396 1547 y(will)g(be)f(a)h (list_methods\(\))d(function,)g(which)i(returns)f(the)h(information)e (to)i(the)h(serv)o(er)e(about)g(input/output)f(structure)396 1655 y(for)i(each)g(call.)g(If)g(the)g(\002le)h(does)f(not)g(ha)n(v)o (e)g(this)g(function,)f(then)g(it)i(is)g(not)f(yet)g(w)o(orkable)f(via) h(this)h(interf)o(ace.)e(As)i(for)396 1763 y(the)f(actual)g(functions,) f(the)o(y)g(are)i(also)f(in)g(this)h(\002le.)g(Generally)-5 b(,)18 b(the)o(y)i(will)h(all)f(accept)g(associati)n(v)o(e)g(array)f (input)h(and)396 1871 y(return)f(same,)h(b)n(ut)h(not)e(al)o(w)o(ays.)i (This)f(code)g(is)h(in)f(\003ux,)g(ha)n(v)o(e)f(fun.)p Black 3840 5569 a Fa(6)p Black eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF