From f23003947b2b34644cdedf9fd9699d8173b20ac7 Mon Sep 17 00:00:00 2001 From: Matěj Cepl Date: Mon, 13 May 2013 15:48:02 +0200 Subject: Add a simple testsuite. Example files from RFC2849 --- README.rst | 17 + examples.ldif | 164 ----- parseLDIF.js | 95 ++- test/example01.ldif | 20 + test/example02.ldif | 14 + test/example03.ldif | 14 + test/example04.ldif | 56 ++ test/example05.ldif | 11 + test/testAll.js | 106 +++ wikipedia-LDIF.pdf | 1829 --------------------------------------------------- 10 files changed, 312 insertions(+), 2014 deletions(-) create mode 100644 README.rst delete mode 100644 examples.ldif create mode 100644 test/example01.ldif create mode 100644 test/example02.ldif create mode 100644 test/example03.ldif create mode 100644 test/example04.ldif create mode 100644 test/example05.ldif create mode 100755 test/testAll.js delete mode 100644 wikipedia-LDIF.pdf diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..420055d --- /dev/null +++ b/README.rst @@ -0,0 +1,17 @@ +Pure JavaScript libraray for parsing LDIF (from LDAP standards) +addressbooks. + +It is oriented mostly on impmorting export files from Thunderbird, so +although it tries to adhere to RFC2849 as much as possible, it doesn’t +support: + +* changes +* hierarchies +* different schemata +* linked values from files or URLs + +Pull requests for full coverage of RFC are more than welcome (with +additional tests) + +Whole project is covered by `LGPL v. 2.1 +`_. diff --git a/examples.ldif b/examples.ldif deleted file mode 100644 index 7428db8..0000000 --- a/examples.ldif +++ /dev/null @@ -1,164 +0,0 @@ -version: 1 -dn: cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com -objectclass: top -objectclass: person -objectclass: organizationalPerson -cn: Barbara Jensen -cn: Barbara J Jensen -cn: Babs Jensen -sn: Jensen -uid: bjensen -telephonenumber: +1 408 555 1212 -description: A big sailing fan. - -dn: cn=Bjorn Jensen, ou=Accounting, dc=airius, dc=com -objectclass: top -objectclass: person -objectclass: organizationalPerson -cn: Bjorn Jensen -sn: Jensen -telephonenumber: +1 408 555 1212 - - -------------- Example 2: A file containing an entry with a folded attribute value - -version: 1 -dn:cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com -objectclass:top -objectclass:person -objectclass:organizationalPerson -cn:Barbara Jensen -cn:Barbara J Jensen -cn:Babs Jensen -sn:Jensen -uid:bjensen -telephonenumber:+1 408 555 1212 -description:Babs is a big sailing fan, and travels extensively in sea - rch of perfect sailing conditions. -title:Product Manager, Rod and Reel Division - -------------- Example 3: A file containing a base-64-encoded value - -version: 1 -dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com -objectclass: top -objectclass: person -objectclass: organizationalPerson -cn: Gern Jensen -cn: Gern O Jensen -sn: Jensen -uid: gernj -telephonenumber: +1 408 555 1212 -description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl -IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG -VyIGluIGl0IChhIENSKS4NICBCeSB0aGUgd2F5LCB5b3Ugc2hvdWxkIHJlYWxseSBnZXQg -b3V0IG1vcmUu - -------------- Example 4: A file containing an entries with UTF-8-encoded attribute -values, including language tags. Comments indicate the contents -of UTF-8-encoded attributes and distinguished names. - -version: 1 -dn:: b3U95Za25qWt6YOoLG89QWlyaXVz -# dn:: ou=,o=Airius -objectclass: top -objectclass: organizationalUnit -ou:: 5Za25qWt6YOo -# ou:: -ou;lang-ja:: 5Za25qWt6YOo -# ou;lang-ja:: -ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2 - - -# ou;lang-ja:: -ou;lang-en: Sales -description: Japanese office - -dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz -# dn:: uid=,ou=,o=Airius -userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM= -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -uid: rogasawara -mail: rogasawara@airius.co.jp -givenname;lang-ja:: 44Ot44OJ44OL44O8 -# givenname;lang-ja:: -sn;lang-ja:: 5bCP56yg5Y6f -# sn;lang-ja:: -cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA== -# cn;lang-ja:: -title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw== -# title;lang-ja:: -preferredlanguage: ja -givenname:: 44Ot44OJ44OL44O8 -# givenname:: -sn:: 5bCP56yg5Y6f -# sn:: -cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA== -# cn:: -title:: 5Za25qWt6YOoIOmDqOmVtw== -# title:: -givenname;lang-ja;phonetic:: 44KN44Gp44Gr44O8 -# givenname;lang-ja;phonetic:: - -sn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJ -# sn;lang-ja;phonetic:: -cn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA== -# cn;lang-ja;phonetic:: -title;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg== -# title;lang-ja;phonetic:: -# -givenname;lang-en: Rodney -sn;lang-en: Ogasawara -cn;lang-en: Rodney Ogasawara -title;lang-en: Sales, Director - -------------- Example 5: A file containing a reference to an external file - -version: 1 -dn: cn=Horatio Jensen, ou=Product Testing, dc=airius, dc=com -objectclass: top -objectclass: person -objectclass: organizationalPerson -cn: Horatio Jensen - -cn: Horatio N Jensen -sn: Jensen -uid: hjensen -telephonenumber: +1 408 555 1212 -jpegphoto:< file:///usr/local/directory/photos/hjensen.jpg - -------------- Example 6: A file containing a series of change records and comments - -version: 1 -# Add a new entry -dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com -changetype: add -objectclass: top -objectclass: person -objectclass: organizationalPerson -cn: Fiona Jensen -sn: Jensen -uid: fiona -telephonenumber: +1 408 555 1212 -jpegphoto:< file:///usr/local/directory/photos/fiona.jpg - -# Delete an existing entry -dn: cn=Robert Jensen, ou=Marketing, dc=airius, dc=com -changetype: delete - -# Modify an entry's relative distinguished name -dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com -changetype: modrdn -newrdn: cn=Paula Jensen -deleteoldrdn: 1 - -# Rename an entry and move all of its children to a new location in -# the directory tree (only implemented by LDAPv3 servers). -dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com -changetype: modrdn -newrdn: ou=Product Development Accountants -deleteoldrdn: 0 -newsuperior: ou=Accounting, dc=airius, dc=com diff --git a/parseLDIF.js b/parseLDIF.js index 286c573..3e932c1 100644 --- a/parseLDIF.js +++ b/parseLDIF.js @@ -1,4 +1,4 @@ -// Two compatibility shims +// Compatibility shims if (!String.prototype.trim) { String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g,''); @@ -11,6 +11,14 @@ if (!String.prototype.trimRight) { }; } +if (!Array.isArray) { + Array.isArray = function (vArg) { + return Object.prototype.toString.call(vArg) === "[object Array]"; + }; +} + +const debugState = false; + /** * * Base64 encode / decode @@ -160,9 +168,15 @@ const usefulFields = ["birthyear", "c", "cn", "description", "mobile", "mozillaHomeCountryName", "mozillaHomeLocalityName", "mozillaHomePostalCode", "mozillaHomeState", "mozillaHomeStreet", "mozillaHomeUrl", "mozillaNickname", "o", "sn", "st", "street", - "telephoneNumber", "title" + "telephoneNumber", "title", "givenname", "objectclass" ]; +function debug(str) { + if (debugState) { + print(str); + } +} + /** * parse LDIF string into JavaScript Object * @@ -178,18 +192,64 @@ const usefulFields = ["birthyear", "c", "cn", "description", * - ignores < links */ function parseLDIF(inStr) { - var record = {}, key, value, splitLine, colon_idx, + var record = {}, + key = "", + value = null, + splitLine = [], + colon_idx = 0, out_records = []; + function handleAdding(key, value) { + value = value ? value.trim() : ""; + + // base64 encoded value + if (value[0] === ":") { + value = Base64.decode(value.slice(1).trim()); + } + + if (key && (usefulFields.indexOf(key) != -1) && + value.length > 0) { + if (key in this) { + if (Array.isArray(this[key])) { + this[key].push(value); + } + else { + this[key] = new Array(this[key]); + this[key].push(value); + } + } + else { + this[key] = value; + } + } + + key = ""; + value = null; + } + + record.add = handleAdding; + inStr.forEach(function (line) { if (line != undefined) { line = line.trim(); - if (line.length === 0) { - if (Object.keys(record).length > 0) { - out_records.push(record); - record = {}; + if (line.length == 0) { + // > 1, because we have always .add property + if (Object.keys(record).length > 1) { + record.add(key, value); + delete record.add; + + if (record.objectclass && + (record.objectclass === "person" || + record.objectclass.indexOf("person") !== -1)) { + delete record.objectclass; + out_records.push(record); + } } + record = {}; + record.add = handleAdding; + key = ""; + value = null; } else { // comment line @@ -208,26 +268,19 @@ function parseLDIF(inStr) { // should be at least compatible for reading of RFC LDIF // files (so it doesn’t hurt) if (colon_idx == -1) { - // TODO - // The question is whether we shouldn't trim - // the result of .decode() function as well. - record[key] += Base64.decode(line).trim(); - return; + // multiline value + if (line[0] === " ") { + line = line.slice(1); + } + value += line; } else { + record.add(key, value); + key = line.slice(0, colon_idx); value = line.slice(colon_idx + 1); - - // base64 encoded value - if (value[0] === ":") { - value = Base64.decode(value.slice(1)); - } } - if ((usefulFields.indexOf(key) != -1) && - value.length > 0) { - record[key] = value.trim(); - } } } } diff --git a/test/example01.ldif b/test/example01.ldif new file mode 100644 index 0000000..0c5770f --- /dev/null +++ b/test/example01.ldif @@ -0,0 +1,20 @@ +version: 1 +dn: cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com +objectclass: top +objectclass: person +objectclass: organizationalPerson +cn: Barbara Jensen +cn: Barbara J Jensen +cn: Babs Jensen +sn: Jensen +uid: bjensen +telephoneNumber: +1 408 555 1212 +description: A big sailing fan. + +dn: cn=Bjorn Jensen, ou=Accounting, dc=airius, dc=com +objectclass: top +objectclass: person +objectclass: organizationalPerson +cn: Bjorn Jensen +sn: Jensen +telephoneNumber: +1 408 555 1212 diff --git a/test/example02.ldif b/test/example02.ldif new file mode 100644 index 0000000..51b95ae --- /dev/null +++ b/test/example02.ldif @@ -0,0 +1,14 @@ +version: 1 +dn:cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com +objectclass:top +objectclass:person +objectclass:organizationalPerson +cn:Barbara Jensen +cn:Barbara J Jensen +cn:Babs Jensen +sn:Jensen +uid:bjensen +telephoneNumber:+1 408 555 1212 +description:Babs is a big sailing fan, and travels extensively in sea + rch of perfect sailing conditions. +title:Product Manager, Rod and Reel Division diff --git a/test/example03.ldif b/test/example03.ldif new file mode 100644 index 0000000..c579dde --- /dev/null +++ b/test/example03.ldif @@ -0,0 +1,14 @@ +version: 1 +dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com +objectclass: top +objectclass: person +objectclass: organizationalPerson +cn: Gern Jensen +cn: Gern O Jensen +sn: Jensen +uid: gernj +telephoneNumber: +1 408 555 1212 +description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl +IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG +VyIGluIGl0IChhIENSKS4NICBCeSB0aGUgd2F5LCB5b3Ugc2hvdWxkIHJlYWxseSBnZXQg +b3V0IG1vcmUu diff --git a/test/example04.ldif b/test/example04.ldif new file mode 100644 index 0000000..7635e63 --- /dev/null +++ b/test/example04.ldif @@ -0,0 +1,56 @@ +version: 1 +dn:: b3U95Za25qWt6YOoLG89QWlyaXVz +# dn:: ou=,o=Airius +objectclass: top +objectclass: organizationalUnit +ou:: 5Za25qWt6YOo +# ou:: +ou;lang-ja:: 5Za25qWt6YOo +# ou;lang-ja:: +ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2 + + +# ou;lang-ja:: +ou;lang-en: Sales +description: Japanese office + +dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz +# dn:: uid=,ou=,o=Airius +userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM= +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +uid: rogasawara +mail: rogasawara@airius.co.jp +givenname;lang-ja:: 44Ot44OJ44OL44O8 +# givenname;lang-ja:: +sn;lang-ja:: 5bCP56yg5Y6f +# sn;lang-ja:: +cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA== +# cn;lang-ja:: +title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw== +# title;lang-ja:: +preferredlanguage: ja +givenname:: 44Ot44OJ44OL44O8 +# givenname:: +sn:: 5bCP56yg5Y6f +# sn:: +cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA== +# cn:: +title:: 5Za25qWt6YOoIOmDqOmVtw== +# title:: +givenname;lang-ja;phonetic:: 44KN44Gp44Gr44O8 +# givenname;lang-ja;phonetic:: + +sn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJ +# sn;lang-ja;phonetic:: +cn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA== +# cn;lang-ja;phonetic:: +title;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg== +# title;lang-ja;phonetic:: +# +givenname;lang-en: Rodney +sn;lang-en: Ogasawara +cn;lang-en: Rodney Ogasawara +title;lang-en: Sales, Director diff --git a/test/example05.ldif b/test/example05.ldif new file mode 100644 index 0000000..2f7506f --- /dev/null +++ b/test/example05.ldif @@ -0,0 +1,11 @@ +version: 1 +dn: cn=Horatio Jensen, ou=Product Testing, dc=airius, dc=com +objectclass: top +objectclass: person +objectclass: organizationalPerson +cn: Horatio Jensen +cn: Horatio N Jensen +sn: Jensen +uid: hjensen +telephoneNumber: +1 408 555 1212 +jpegphoto:< file:///usr/local/directory/photos/hjensen.jpg diff --git a/test/testAll.js b/test/testAll.js new file mode 100755 index 0000000..9aabd43 --- /dev/null +++ b/test/testAll.js @@ -0,0 +1,106 @@ +#!/usr/bin/rhino + +load("../parseLDIF.js"); + +Object.prototype.equals = function(x) { + var p; + for(p in this) { + if(typeof(x[p])=='undefined') {return false;} + } + + for(p in this) { + if (this[p]) { + switch(typeof(this[p])) { + case 'object': + if (!this[p].equals(x[p])) { return false; } break; + case 'function': + if (typeof(x[p])=='undefined' || + (p != 'equals' && this[p].toString() != x[p].toString())) + return false; + break; + default: + if (this[p] != x[p]) { return false; } + } + } else { + if (x[p]) + return false; + } + } + + for(p in x) { + if(typeof(this[p])=='undefined') {return false;} + } + + return true; +} + +var observed = {}; +var expResults = { + 1: [ + { + cn: ["Barbara Jensen", "Barbara J Jensen", "Babs Jensen"], + sn:"Jensen", + telephoneNumber:"+1 408 555 1212", + description:"A big sailing fan." + }, + { + cn:"Bjorn Jensen", + sn:"Jensen", + telephoneNumber:"+1 408 555 1212" + } + ], + 2: [ + { + cn: ["Barbara Jensen", "Barbara J Jensen", "Babs Jensen"], + sn:"Jensen", + telephoneNumber:"+1 408 555 1212", + description:'Babs is a big sailing fan, and travels extensively in ' + + 'search of perfect sailing conditions.', + title:"Product Manager, Rod and Reel Division" + } + ], + 3: [ + { + cn: ["Gern Jensen", "Gern O Jensen"], + sn:"Jensen", + telephoneNumber:"+1 408 555 1212", + description:'What a careful reader you are! This value is base-64-encoded' + + ' because it has a control character in it (a CR).\r By the way,' + + ' you should really get out more.' + } + ], + 4: [ + { + mail:"rogasawara@airius.co.jp", + givenname:"ロドニー", + sn: "小笠原", + cn:"小笠原 ロドニー", + title:"営業部 部長", + } + ], + 5: [ + { + cn: ["Horatio Jensen", "Horatio N Jensen"], + sn:"Jensen", + telephoneNumber:"+1 408 555 1212" + } + ] +}; + +var resultsCount = Object.keys(expResults).length; + +for (var key in expResults) { + if (expResults.hasOwnProperty(key)) { + var lines = readFile("example0" + key + ".ldif").replace(/\r\n/g,"\n"); + observed = parseLDIF(lines.split("\n")); + if (observed.equals(expResults[key])) { + print(key + "/" + resultsCount + " ... OK"); + } + else { + print("Test " + key + " fails! Expected:\n" + + expResults[key].toSource() + + "\n----\nObserved:\n" + observed.toSource()); + } + } +} + diff --git a/wikipedia-LDIF.pdf b/wikipedia-LDIF.pdf deleted file mode 100644 index 78703f7..0000000 --- a/wikipedia-LDIF.pdf +++ /dev/null @@ -1,1829 +0,0 @@ -%PDF-1.4 -% ReportLab Generated PDF document http://www.reportlab.com -% 'BasicFonts': class PDFDictionary -1 0 obj -% The standard fonts dictionary -<< /F1+0 35 0 R - /F2+0 39 0 R - /F3 2 0 R - /F4+0 43 0 R - /F5+0 47 0 R - /F6+0 51 0 R >> -endobj -% 'F3': class PDFType1Font -2 0 obj -% Font Helvetica -<< /BaseFont /Helvetica - /Encoding /WinAnsiEncoding - /Name /F3 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Annot.NUMBER1': class PDFDictionary -3 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Filename_extension) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 234.6398 - 694.7102 - 300.1918 - 706.7102 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER2': class PDFDictionary -4 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=International_standard) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 234.6398 - 658.7102 - 275.0878 - 670.7102 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER3': class PDFDictionary -5 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Plain_text) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 322.0588 - 631.7736 - 365.2134 - 646.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER4': class PDFDictionary -6 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Lightweight_Directory_Access_Protocol) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 62.69291 - 616.7736 - 93.36123 - 631.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER5': class PDFDictionary -7 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Tim_Howes) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 234.5328 - 568.7736 - 282.0528 - 583.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER6': class PDFDictionary -8 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=University_of_Michigan) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 478.9527 - 568.7736 - 532.0027 - 583.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER7': class PDFDictionary -9 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=University_of_Michigan) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 62.69291 - 553.7736 - 101.0229 - 568.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER8': class PDFDictionary -10 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Internet_Engineering_Task_Force) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 337.558 - 538.7736 - 361.5438 - 553.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER9': class PDFDictionary -11 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Request_for_Comment) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 426.1653 - 538.7736 - 445.0653 - 553.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER10': class PDFDictionary -12 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=ASCII) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 141.3893 - 377.7736 - 171.6982 - 392.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER11': class PDFDictionary -13 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Base64) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 62.69291 - 362.7736 - 92.96291 - 377.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER12': class PDFDictionary -14 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.ietf.org/rfc/rfc2425.txt) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 499.2829 - 362.7736 - 508.6109 - 377.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER13': class PDFDictionary -15 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=OpenLDAP) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 85.2629 - 309.7736 - 140.0529 - 324.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER14': class PDFDictionary -16 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Netscape_Communicator) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 495.9327 - 261.7736 - 530.6716 - 276.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER15': class PDFDictionary -17 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Netscape_Communicator) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 62.69291 - 246.7736 - 127.5508 - 261.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER16': class PDFDictionary -18 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Mozilla_Application_Suite) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 176.5643 - 246.7736 - 290.0278 - 261.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER17': class PDFDictionary -19 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Windows_2000) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 106.5742 - 168.7736 - 204.3282 - 183.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER18': class PDFDictionary -20 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Windows_Server_2003) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 223.2095 - 168.7736 - 320.9635 - 183.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER19': class PDFDictionary -21 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=Active_Directory) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 274.6229 - 153.7736 - 342.1029 - 168.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER20': class PDFDictionary -22 0 obj -<< /A << /S /URI - /Type /Action - /URI (https://en.wikipedia.org/w/index.php?title=JXplorer) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 62.69291 - 135.7736 - 100.1829 - 150.7736 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page1': class PDFPage -23 0 obj -% Page dictionary -<< /Annots [ 3 0 R - 4 0 R - 5 0 R - 6 0 R - 7 0 R - 8 0 R - 9 0 R - 10 0 R - 11 0 R - 12 0 R - 13 0 R - 14 0 R - 15 0 R - 16 0 R - 17 0 R - 18 0 R - 19 0 R - 20 0 R - 21 0 R - 22 0 R ] - /Contents 64 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 63 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Page2': class PDFPage -24 0 obj -% Page dictionary -<< /Contents 65 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 63 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Annot.NUMBER21': class PDFDictionary -25 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://msdn2.microsoft.com/en-us/library/ms870068.aspx) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 280.5229 - 360.9469 - 289.8509 - 375.9469 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER22': class PDFDictionary -26 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://msdn2.microsoft.com/en-us/library/ms677268.aspx) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 241.6229 - 345.9469 - 250.9509 - 360.9469 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER23': class PDFDictionary -27 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://www.ietf.org/rfc/rfc2425.txt) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 76.82091 - 294.7969 - 189.0029 - 306.7969 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER24': class PDFDictionary -28 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://msdn2.microsoft.com/en-us/library/ms870068.aspx) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 76.82091 - 282.7969 - 263.0449 - 294.7969 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER25': class PDFDictionary -29 0 obj -<< /A << /S /URI - /Type /Action - /URI (http://msdn2.microsoft.com/en-us/library/ms677268.aspx) >> - /Border [ 0 - 0 - 0 ] - /Rect [ 76.82091 - 270.7969 - 263.0449 - 282.7969 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page3': class PDFPage -30 0 obj -% Page dictionary -<< /Annots [ 25 0 R - 26 0 R - 27 0 R - 28 0 R - 29 0 R ] - /Contents 66 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 63 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Page4': class PDFPage -31 0 obj -% Page dictionary -<< /Contents 67 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 63 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'toUnicodeCMap:AAAAAA+FreeSerif': class PDFStream -32 0 obj -<< /Filter [ /FlateDecode ] - /Length 713 >> -stream -xmjZQOq-w7 AnShy\!PA#ߞazlnC;_Uvt\햇|xj~fx^Ocϣa}/ßkn6<|[Z7xC,$v<,WmXm4Ll*Q&Y^oߝ_s [V lG;Nt =eOW+@_7-}ǾC߳- B/ B/ B/ B/ B/ B/ B/ B+J¯+J¯+J¯+J¯+J¯+J¯+J¯+JoFoFoFoFoFoFoFoF;N;N;N;N;N;N;N;NAAAAAAAA'IŸ'IŸ'IŸ'IŸ'IŸ'IŸ'IŸ'I_E_E_E_E_E_E_E_E?_?31,B`C0~Ӵzj]2HmG?qendstream -endobj -% 'fontFile:/home/pp/local/lib/python2.6/site-packages/mwlib/fonts/freefont/FreeSerif.ttf(AAAAAA+FreeSerif)': class PDFStream -33 0 obj -<< /Filter [ /FlateDecode ] - /Length 9607 - /Length1 14096 >> -stream -x{ixչ93#ɲu/dIZ5^[ıgqbqqV@B)R|@:}yh}SgO8B}F_;%$aZr߄FU^F8rgAX ўn3#7sdfzwpvYmʃuC!YG,Y_FgAQlmY=dwgV;<ˆ&,lc{FAi 0dgeٶCt`hB Yy_ \WgQNѮŮ^'VG`PW2w:*P4FGr 4KezL:.yX~1 `D( Dp*Nč7^?Jz]0GUY 1tF.- S,&A VQuVtzЫXC *6z R z%W?t\'9ރ_%䄑 *Iɼɓ'PhA#`͕`O3d6z#8`XA0zSH%lE9%7Lf]:'7 z.iTm Iad;o9=^12bPcwqC|qEѧP9G~=ctؖY~ߙikx'r?HOAhL +0~Gp"$ÄYgFa,dJGMSLY?p@ޒlCUb#n[GtE=C1wt(cW'*|~/(Db>9@2d&j]XMX710N\VdPPAжvF5_o+m]gX45ލwk6e^Oй"ՙ[l]~`HY2+Һf,j7VUili$ָ!REWl2e;FKe.gA4 12[=Żne(7imw֕WeMW m:C:p jVgSI0Ċ Pj>[#D Ѿ+,]fg ZSS3 -^qdZR7(1 j9= ̾VZ/.8ZG}"6^FohEZ1Nf7xȔ*rTCbŸѵ Mc7GϢÐyi -]W,n'RW1 cXń?gjx>b'`"O?ŸC~&gItod&7 t80-af!0o+2{"%iE]Y/&m\2vsMتݕɧip]_/g -:ۣHe:SFw -j9,ck;\￿?oRYr/n DĔWLlǢuR.+yw:Zk/~YX_-Et/,A^\zu( .C X XIe_HBLWܵcSpP#/3s|~Wnӻ+zCL=NHwJcuMM39}|1`Znt7TA?`r7݀ӋF@p¾߬m4 -S`[V:nеq]{oQtz%sONE,ԙ -}’%8d"fa^V <?ewwlhwiW^y/>wUYKۜLAM_EtV2W}b/⃗\_^"^˟/Gw]5-> ;+'G$H'M Kr)jyWy7Ͼ7?fHT-,,)JҜgp }u7?[|ՙ{^ -瘾Lo vL*h !=&D _ׯ6NBm.IB;<091 2b@:س&ӚEWȽ_u@v2TedͰBiEu#mȽҾ{:#gS>\쯿שNy Y=rs~@z"]-8r?!6+npW $6P[4We<ǧyk\<k!E -[(Z 睘d -,h㫫տM|&ްmU3.Rj-2SY\R8Sůy-f^9C/BX۟wꗻ7Awjqҩ 5@Br.'ZٴK2W:ߒ< Ϟ[Q& />2$݈+e7x& b&ߒq3"4఑Zzj9&)8-ERX]u5sM5P+nxh - 8Р4 E=0Nb?ыӲ.way2Q߶j+;w\Î:nެfNekux0Ơߚ0~т~.sߑ/9Kw#`[Ǖ ϫ~x 4ݳ[ -v^.wsŽ[sxEPѸco}(JW ru/{gi.:g9a䃬ә6 FwUlZ\I湴&.9ok [ 1Bl%ԲEBMto A}ɦ͛*Fղ6k>xp >^Z&֜i9Hf;x<MV &< zTFFKnO[LRnUK{oԋ̞H7HXI v 1ɉ$!%,&#`K,~hLMtUߎ˂zuh(ԙ{`Oq$d =-w ->eɹ(v\8{bsY| qG*n+[ :5HfTj$[ DHF@" {_Sݟksk gKOtٯT"Kok[eT:#5:Ias<#^O??/԰sIA?<^P^'J*l#r'Q };afy+: Kr[3'Ac;ă5yJҗ { -/g\ҁ2K =o.kΟkq'=6l)QGt7_pӯV^ [YWӲ*ZBsLĢ舸*-0[^ďhrmF;Y 3b}A yGfꠀd_~yXuƭF$aߴBE\%?S ׳!\5'B=IsY,zGN|v^vZMM͟?Fh)7$_?4N7Py>@)f2oS|uU5YdRe6)91RiiNQ"ho=hP)uzh.'7PlJ]]PtV.gͳn+os=ڎ!N  Q.O&l*!vP{7rrb\^JmfO, -]kA#/qx%h]Ldܑ?yjlp?Hڋ4NL<˹_Fs@[OwK'YM2]_*|vH51 N_i2l-MNM3~t/Rxɴ -Y ]rpol"e㼠w/QZl>kˢ5wk?G S$yG@YxD^I"08y%˕-s_0/|])/y\\k KV93-2uqVkJs~7ت+p}fXQ2+_Wz%Z}T[& @| -+ M)k*$ӷgԮ)e϶^rK/vw7d{R+Ƕeߐ(. -R,;HSsac!1hlZ_Z欷AˋLWM7wEXlT)4޿~"TxO$p&LY0@&]'ޙ.1U>U2Զ' U2UAqQqBosfW8oB%/KXZE5!!I|3kx-"%].o_AAisZNU8F I  |w8.Q -2LicDkJ8.{umHJRn񇓹TW;/9F{ƗԗYt VMeMB^Lsa-d\3 - eP:,S[9JMqG|V*t^,'WAL5#ՠm|g+) -e~ k3M+J쉫?l9C}zh,.D -ԙož$H~l23h{ Q|VQ.#oKZ׏_~*CWӲVG}Hs4pNbF=qҦ3O^4y\jyE@-{VM_{6O: }U;luXWOk¢B? ˝/35݀gt~5<@ζd4̓]xkdBɀ?1鵧&|$qU:@}RN?M -6LK.knR3-}R!RtaV?t|wWF Y`i)p3SHǗ~} -/]']pc)|o8F5ùL'v/i;>zm-?3_ds'o 7̽-4bW_An{ү=PsSq|Ÿ \!vc!?b0F.'2I$,poæ@)pNpy2c&^ x?Z 3atp92Q)gHzz|*C#tC0!T :h vN3A RW)Dv -w;wQp)o-K:N]{^;w꿧EdOP*Rۑ -ȏ-a:&d/a^YX P1XeIt!A\̰Pk`5*c`8?PC~."\?AtL~+hs`Cc,Ci|R`Ͽ"$4pB2WKd7I0)\Ly`(\J Ѱ"Ea$GS -M2~+*t+$Gke/f4#hC;vEȮ1ġ]28  M1+v>26;#?̻yjߑ=c;fx,N,ۦ3FĶ{GGf&pMǦ'Q=&16:q`QV>){q`&b, -$QȨmjLĜ( d*LG#Z/EzB{&Y:CƦIJʉUD*+/ʹIߡ#1VD \{3P^aDRXN 0o'CIP7ٷ?98wPVtԮ3;Bl>E>D"^QjCVXh"G).HIc0w>ڽtZNf`TkwS;ęE£鑽3cۈ̔H~>wlzd{`۞b"K-2_Q}~ JC]=3{tx'x]CԪ}}TSD/];"u -XqсmS>L/N{FGacci[iTIxa@p/7={2Qv2tH2THp/M3g %Omh?Ay/$jL] <Ӥ 5ݔ((OAuYFy:*?MQ)NCk%VeyJEHڹW+\Hɥ,W\"&kVs \fŠqu\=|[ 3 jW#dT/cj6N>HDx75ǩ^E4Lb-95LKvW -"SmO;#i;筸Lb ۩Ր`=_`">R!`J;TJVDo8 --RJ(FGjBQhYDS .&xm;M 4Ŧ`/Zё%.InyHM4bH7ciɾB:,@endstream -endobj -% 'fontDescriptor:AAAAAA+FreeSerif': class PDFDictionary -34 0 obj -<< /Ascent 800 - /CapHeight 800 - /Descent -200 - /Flags 4 - /FontBBox [ -879 - -545 - 1767 - 934 ] - /FontFile2 33 0 R - /FontName /AAAAAA+FreeSerif - /ItalicAngle 0 - /StemV 87 - /Type /FontDescriptor >> -endobj -% 'F1+0': class PDFTrueTypeFont -35 0 obj -% Font FreeSerif subset 0 -<< /BaseFont /AAAAAA+FreeSerif - /FirstChar 0 - /FontDescriptor 34 0 R - /LastChar 129 - /Name /F1+0 - /Subtype /TrueType - /ToUnicode 32 0 R - /Type /Font - /Widths [ 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 250 - 333 - 408 - 500 - 500 - 833 - 778 - 180 - 333 - 333 - 500 - 564 - 250 - 333 - 250 - 278 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 278 - 278 - 564 - 564 - 564 - 444 - 921 - 722 - 667 - 667 - 722 - 611 - 556 - 722 - 722 - 333 - 389 - 722 - 611 - 889 - 722 - 722 - 556 - 722 - 667 - 556 - 611 - 722 - 722 - 944 - 722 - 722 - 611 - 333 - 278 - 333 - 469 - 500 - 333 - 444 - 500 - 444 - 500 - 444 - 333 - 500 - 500 - 278 - 278 - 500 - 278 - 778 - 500 - 500 - 500 - 500 - 333 - 389 - 278 - 500 - 500 - 722 - 500 - 500 - 444 - 480 - 200 - 480 - 541 - 364 - 350 - 250 ] >> -endobj -% 'toUnicodeCMap:AAAAAA+FreeSerifBold': class PDFStream -36 0 obj -<< /Filter [ /FlateDecode ] - /Length 710 >> -stream -xuˊQOQÄ t߻ABr!l=vBRPsF{|to۰[۱[oaٺGj<^Vr؏Ƨñmn4v輪}9_mجowauZ/0_۶n2ͺU[>yضnSx߷Nk!w[~lâid28~;+y^/.隝Z؂Vmhg;:؁Nv]+}aߠoٷ;}~`?٧? -/ / / / / / / /+ -ү+ -ү+ -ү+ -ү+ -ү+ -ү+ -ү+ -үoooooooo;;;;;;;;' ҟ' ҟ' ҟ' ҟ' ҟ' ҟ' ҟ' ҟ_______IY{ -߆4S> -stream -x{w|\ՕM4hz3oMY,KbٖlKl5Kr4!lBY)!B1 n` b L,X3߹=L}w9;2|}U8?yGs:s8<ͻ8J10_68u$l_S[/޶S\uS)B~> 9g?}϶k}cz"n8~~ -}ndu*Q"T "#ߴԷJ@7!gBRzIF76"QFʥRr/Rs*jZCfY.y@?}#L[%\ -G1` +Cr@9(|BH4i Y ّ9[r#ybTJQQd/CT A9IBiT*P%BP5AգŨ-A -EhjA -G@+*AkQ'BݨCh=ڀ6"> SHGvC{#: iFږ钎e_cv-cwsLcm}xZ^qM|cv۲)mu4hYٵvrMŒ$@Px׾?X_ºV5--nM'4uw]ouyง )<G.aQ8Fr ~Lf gɰ ˌN`2Ӹ4wᜳN1w .sEcx TԠn_"TX·Ѩ/6xv%o v"ww25vh=HU~ ){:y7^T  >Y}v3XH|&y?ز!|>}br˛;Qطf Oצª;<ٻCHO1|Cz>݄&0꓉ϟPaߕ+9LSEzS}z׻%[sZcX!XTn̨G-y_D7=fQx yvyT T`P"%Lnbd*Y1z~4H3jiMf:0x+⡍jܗٝ½5q]W1!X.Z{&;7ﰦ)ޘ7 [Vn4ڿheQuCV ~_ -*\erESF9/Z*g}C&7Vc_)a< cN-똺_sVY]RfwtjHjV0 [q{32z޲b>.5Ml!YvnnkW,Ne/5ܓuF[ -9[!++H;{fQq]۳4ˆ]8> 2jد$c{ݾwO{mX϶aǐ- ¹b:&W}t{gވ }xݶ5m tvb'x1: ;;C-:B|`A\LY͞;C/kq=e`Ny7iL#`4F0uy;LW_˕ܜ[OS'ئ rk!TL3D&~e/h2__dsU22s&V㫖z pn*$ aJlm0c >w/{pIK=_|`x"!mb;g@ orV/ -7U]ֶ|پ._cwU]vX }!͵=ub+݂@W }Ia񑚚[ʎo;ʎ};g[g~Gx6d_3Xȟ~_뒻qڳYRѲ8}Y?/͜3l \w7vVD;92qbY6NdG(7=MALՑl}뇮i񚊢F տ/tn*l,LJ%GAx>/Te0Ggz-Rkx!<+8;iYݥkv4߶qVաscp%Lt{e@]+kUŋ[*%TGu#P5,WaPf|58y+\a#~T!V!Ř[ MhG~;/ܽI"S(XK k/ٓZ3*xO+\b*W39$ -'^$ kLQ2|f<R:A|v%\x-}Y|dg2̳DrqR-S* s2mv=0G^_N6D#' (K,vUb]K|i$P: q q8>-Nwc*ƂgCpq3G)% pdMP53v]oޘ7s;[q+J^ps,﭅(s!WQvEwr5ݖo]b^6H( - |C1Ǚpnu@փ%pF%\ْ86SП -/=.[~{F̲U-5Eg|WjZ4HL=N]v@~?3)'m\tFv3)nVg|ּ|Is֣?2zS".JlC列>uU.j5ʚ=쵕fm8yם/M:96pADGAAQjV6 +w5D|n{3)'rh#߻#3OE݆\k~%?D ^]8r2Zko=]`y7Vp*-W;ZygeSdњq~"閘{+JLEwb/|T:8@s Jpv 67Uyۺ+,sd2!=W270̉p$rw g exy%5/'X<&d.'ۉ 7d~Wkim^`qIY,6u&3'psLgRK(~m#?B/yg -~@N -j_{J>Yw7_P2ˢۋʙ?dxkƐg>fԅy4h|n~)'԰eΧg;`vV!d 3rUy1o<`a_LJ>4:ZJfP/gaƻ2&(ʬwkVk5d3.kE VUۚ;WpZY49r'mdDSGu_q;#4+{(JeN8mVL݊[DC*ux'Nl>^!{=DZӥǸ)p -T92e)|B6eZ^_h:]#53~8|Lz^A -sjJZ甋tY3Wszeaƴ/u_zw\1!F)N4\Sk.9m\.o)<2A}γv8}dnjLIG*IF? Lm7ܔy>?_LTnK#p),͵muHa:rp5a{iIm3/F\'G^:(jYNpe⹥5u^#߰Zig1*mAZ-~eR;w"k9R(948Ե#_;ܥFM_ׂ_2\i-܃*^U8`:;9\k:63,K}ɈLHm@MϘܜpoF; W*L *{+AJi£[&QƿwDwEjH+k^upYUNwcHUaemE*zLcP/B5++o×Γj(w U2lzGn`ـo e>AZ5 qk+j2&k_%[PlQ@l/" 7onS KB>'ğC+f ,&{uzcݜ_26] -45e/V7̄j -FP3NГaXÄ3WbAyA:8!JBK-Ε65ʞܯLJsXh3L&?huR4$%̊Y"%<_G1Gg+KAn?FW.&g-Y>t zF]iu]gY*s6Rf>C dFbZ:e/8#؝197fV}'HXO/]v:৫YgF)П=s$Ǽ M .~жn1xhK6cF"Fo.:yKI9ce`ծ e]%M5%doI)"*x?4@4[_3xmyʭm t|ӈظ>C7\ɦbα}Kσ='-^|Y؜xf5̥7pO5^>{tΊB}sP+@#UJ BضLVU6kW -6n]ilt [&\ftUn)⼵5. nev17zȆBjv.HSȌ_ -d^vXybnwP=9'qwn~bZ=wMΧN_=mtUʯٖ_pd̃>W[iƹ3cFC=yqFa\9K~\)\d˃`X/i -rog~p~f5΂BR.Mu:f:OBgNw8x鐮P/ojvyܣ\V\@RhˌdE;j.Fecڈ\w -y ^BВcnJl -D$ 0hGA R> -J:?4s -8lz y@]q&_0 y_…BM>B|! .(kp=+x G! `ۍF巕:#`+MzlnL -/ w AɳN pL:S^m uҐ_T;Vlaھ\oSg:_Wh{PQ͖̈[ -y4Dd^џh{ו֖\R -75Õ3+Ip2?Y~&^P9VT.^4]b@&@W+R%D"7]fɖ5Ljtn:aBt"!Eѹ;ɗ\4842,  -MՔ7x|o.AdcAէL{<>^8=JWP™!ye0daiZU$.cP56 c_*׫ah!{֛੃G-<xli-Ja(9FW%ffsΫ)^wt-u<=dΟEZ.q_ <-,*Z3OLZWޡ=q[n-7ctOUR<믇MTmQ_C%Ygx-~3bec^cβj6g$IddZT&HCҴtL 'OrW~DERIqD+9gsU SOfw{!ռsʤr[?WCգPT](p\l[Z}@FܧyLsP"g&ڂN1C dE);{5hcX:+,*EX -",|Ue(Q#y@k>jd+DXQ&plX5 2*JAt̍]h<Ƈ7Jc  NqѲh|w~w9810?15?546 -fig^501`=~lx LyN(QmE̢kp3+6jj:ECe\,0FD .ztդ/y / П#,E@XSځIPY9{@\$IqiK)yzZпFhm -yj2<< ajCt vjo -F>9 -5$i#| RvwAWk-YAh6mCᑃvDnr&"75Ƒ?2o:vm̵m+VP27_a^?U%hrϞ=sJ,FWxphwz"7QKFt0?BME5y{t@c66M}vL}p[ƶf+u)@UDVF!`bp2JL?[o;݀(A;BOE* I"? 8ЎX册o> -endobj -% 'F2+0': class PDFTrueTypeFont -39 0 obj -% Font FreeSerifbold subset 0 -<< /BaseFont /AAAAAA+FreeSerifBold - /FirstChar 0 - /FontDescriptor 38 0 R - /LastChar 127 - /Name /F2+0 - /Subtype /TrueType - /ToUnicode 36 0 R - /Type /Font - /Widths [ 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 250 - 333 - 555 - 500 - 500 - 1000 - 833 - 278 - 333 - 333 - 507 - 676 - 250 - 333 - 250 - 278 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 333 - 333 - 676 - 676 - 676 - 500 - 930 - 722 - 667 - 722 - 724 - 667 - 611 - 778 - 774 - 386 - 500 - 764 - 664 - 943 - 722 - 778 - 611 - 778 - 712 - 556 - 667 - 722 - 722 - 1000 - 722 - 722 - 667 - 333 - 278 - 333 - 581 - 500 - 333 - 500 - 556 - 444 - 556 - 444 - 333 - 500 - 556 - 278 - 333 - 556 - 278 - 833 - 556 - 500 - 556 - 556 - 444 - 389 - 333 - 556 - 500 - 722 - 500 - 500 - 444 - 394 - 220 - 394 - 520 - 364 ] >> -endobj -% 'toUnicodeCMap:AAAAAA+FreeMono': class PDFStream -40 0 obj -<< /Filter [ /FlateDecode ] - /Length 704 >> -stream -xmjZQWq-? -MoPr4}].ITPvhMo~s;t~6{ia"-t7dz?Nfnx?ݧv~L6=vۦ b2w˶:bui Zg.~۸^dvq1f0aϙ%L_݋k~la Zي6`:ى.v/ٗ+}aߠoٷ;}~`L~_~_~_~_~_~_~_~_W~_W~_W~_W~_W~_W~_W~_W~7~7~7~7~7~7~7~7~w~w~w~w~w~w~w~w~?????????O?O?O?O?O?O?O?O////////B[Xmt`rCXv[xFvendstream -endobj -% 'fontFile:/home/pp/local/lib/python2.6/site-packages/mwlib/fonts/freefont/FreeMono.ttf(AAAAAA+FreeMono)': class PDFStream -41 0 obj -<< /Filter [ /FlateDecode ] - /Length 8657 - /Length1 16156 >> -stream -x{t[ו{>H|$A`/b)V$6Ml*%*Kb˔.QlM3cŔ=X.9κē3:ɬ쉳k?Hxfώ,!n}FiAĢY}?gw18?co6fB(cӚ;4fYYEnYgL2Zv|8ue.3U.[21/5wږ$m{;~]ݶ,M\^4C۝,8W^nyD:U6ȈY`,_Әaysr2EX@t%R2}N.S|]tyަOv6WWmL'xݵvVfOHf^OmYe8ŭQhQجיql5V+>ejRʂqqiݍ L/ؔ -![.KH$pezWW+ӻ",!.gOz -nbCwɘv#/r7.DQ -n u)9EBDe3m9ңIRɸd 6}^F<'^sa|,%yЖ!\c3Ztb{d2 f' ,6c+?jr 1Qt&^k0Lz+ZbFm{8F".K)Nj "gabbuDRe1; M-6Myr̈́h`qMfR2i񘧦宭us\WCqQHd(|B"uW'ZOfnwB_jVQ)4`c9 ~dxωms :6ZqOwL{b*՚YQQI]6A6ޕ1mL8uspαT_vٶ2OΗSmTijnCNIقjisz05Fʏ']V%sX=ϣ`3-c2:aEqeB'CF(Z*yD<tOc0^O Ḻ"BHRE텨`>a##R6^O)id<"Wզ#-r""EP+Z -6w{:VDf2Z;3U+e4Nfn-H_p_[h:qMG?ḟqkFnYm8#sq&JgիYF:l*nǟ8a>ѯ!-y\rD\JJ'9yI}Rb4]'`&R\Cn̞(\f.M6\تLI(MNA c4QtecK9|'v8m]G!|CQ]!aC/X,V3kEFFjr6 u%7yB6)kڶ:1T&p AqIR֨Qוe͒?Uf~p -b+ʫە[1fP;eN>m*[[Z: -;bbstTU(GlGL!? -g4ɉC0(Ų|&B5CLjz*5 9S|=]3SO 5{)?Xq{{qQGw##!b`72&_k"h}82 0S7)a{Mpե\KsxW! ̗Gõ#Pܕg:nx p)I$X~&FǛЄ$!!9`d()F6G3dς@hB~TP/^SsL£| b"$q#w`π@yq¬ ELhT) -|:ML4X(r[nF6qa*:QRhb8}ˎg(hltWny͐PnJNNodoUw$ek%Ym:U0/d:'}Ln,9yXt36B{,Enu'vs8;jf"'Y"1`2|AgpRďӁNЉ/ Po6Xu%j{18ks0qۗZ|&!޺TBmsI3sh늜;M$rJW?a2ƒS=YH^ke\IC.Ww~d4E1Hś;=)Je U_]QzUp1]5GҲ# JG:*@Ȭ (q!vE5է[ROn#E%xGvʶ4c 3u_3)XZ2PuZYrRįt %[w2LhYÿE6#΋@.tBq9a\GY472Žh: KSMToMVd1ƲhB=D3o/֍ݗfum/ȗ IDJy[83UradrxD.R q"u"נ47y/졠5K(AH\j@kOCS(ñ>ݐݑk2)ۑsnl-ud Փ6,z[Vc2-EE9/:j;.H/Oe4ݻLmCPW:%j փs\_}D>M0ߙ=WaU۫j烊:T;=OU5[q1~#Ǐv~́=W='G&bԦnCNːɡߟ4O.:ZBLn? <~򘄲I u7G:pUl% -}71¥hcVSG+VPcn[6EVF&n`fBb1LD$'d0k2Wg[9.c{ٺvH|iȆ*zW?_|k@W"Wii5u1ZPBK!M03PY4d.um*4pY1'9[op -*O9%]PD7҈kcg ޫF_rj _ -b6KZ?pYёz*6Q\B#㕽[+XY3a nC؈ŪWLix}:-&BBPX0TA4p8F ---y3%}kdI̜8 -]-sx5^m(}Ay=渒G.Sǥ?pi`_=%_{M{@MΤWInwqG&qS0˧@Fa:1O6T[pT_g!FVl;sÁzB^o wj(A@J}gylNɳ9ha*NRQ]$dYbtgi -h2}5iS͸@xW$exC/CZg5.KHwrܼfX=#w @k j}?!uۃ4d$M5H|mtHzjRUPBhu tT;`Lzg۲581t4I, ^>Txר}&=E;$9T!><R ,V]o\ט%N -aKMwUQE58F7s+T'3{_-I)wH:VpQ\&@bGbS=0 DLԚɈ* PV[JTU Hsza(v뀮P_V>m#''&ㇶtC4>6qG|OЪ nإ4r 85{g*8|btnd9tX]#5@O8^6y/tQ*v߿uz~dnl7BE̟۳w ߑJ<6]L2F!&7?%hjpqgZT1\UIu=B]~S]Θs#Re__e]fIm~^]I˨5WL.عչ2rʜ3'hcB^~} -j .Z!1 ( -W䆵 z-m#-e5m5ց!v~p2":"kL]Ң4@IkcBUb_$FxCXB,Mc<p:n~4 -tR%q$BvJ|W(Wː>rhpwU(llpEcjWZ~' JZ?p -8q ߓSΣfB]sN!!}͡/+˚r׆gt7qORUTN=":ИB rnkb9p&;>|,q|H؇P//2j19DŽNn*zStx)5kƤo7VXgxJe,8c*ʝ(^H}.dWqᲔ|ed)ωENhȦE0di#_^AWI(`^c|stZNݚ0GEG՛2 -W*9;+&.F-׷fgѿiGj[jG}Ψ?tj4 ayyu3__ZyyZO Ov:'n}'؁EOg}\wvxF((*o:{z|{a} -4ՍFp zlµֵRUJ.gtbEpTn4^x3>.a)X&wW%HQ2 }D"K*U~,DyWDŐEJmW#ty'"^RITnլ.գUvQA<ͬ懚5_iM7_D:#"ODtCw2}O?T_7бNmaDcEA2( WE",EːLP:3/T:EXE؀2$%@KX=)ZT{E h^Oa)鶊0Y3Ma}W*d@azUa^a:顰0QE؀K T?X.`]",EXtsV a`,"Aw00.up+]aX#=$[S -\߉0ѮPXMռ'D'az)%kT0Q=+T)L~wUD&)l5Q5" k"{D4 -~NÚ(l"C,d>N 5b]" k/P8]a^м_(,&k)Gu'DyEy(Hhɾa :*0)&z&xnp&aD`kك" 3da"&)L]$N -4f4h\(>.`oTfK̀`ۅy6yCT1=g"0<ϻ]W/k>_=𛧇w酩)@@1NmA`hlaQ>rL8A\&C RdD9 I櫧gG˙&fC0$U0? k_"Cs!;s!>58F>ǙSi5x#4 -zD|EN:AS^,X; 87`fX$5,= de/OM:G\03 :m@(k;+Rkxyq<錰_sGi -R{;0n' 6;YAh?=ϏG#Ss D~~'$_ -O c\XAje^Y0;#'} J]֔8(zT̄st~rb];=htvQ": q*3TӰD/zVD}\N}&g,(OMj@itIVOMomSz f&7 OۺKt;C4.pOc h-P30@s45%!!Jix6NOA<3s?HKfiPAu3Oy*/ As$} " 4b֐}c Te%r]G%IFR 9 -7[o$W')Dn!aQR&JZ  -%$E% OIJY_G'N뉻V),rs X34 -ކQ >)ۂ͒ԃ+עQ#=\W -^1&ӺD\! -I)#4N>Ʈ v8u5h x2ཏM={?{}}OO]O^%G싈gsg؋ KY:u_} -% -sFgٗ)kyjCiFڒYR_GvÛ_D"FZb@xX,ƁD׉_Nr8KB\O$Y=\?Th> -endobj -% 'F4+0': class PDFTrueTypeFont -43 0 obj -% Font FreeMono subset 0 -<< /BaseFont /AAAAAA+FreeMono - /FirstChar 0 - /FontDescriptor 42 0 R - /LastChar 127 - /Name /F4+0 - /Subtype /TrueType - /ToUnicode 40 0 R - /Type /Font - /Widths [ 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 600 - 364 ] >> -endobj -% 'toUnicodeCMap:AAAAAA+FreeSans': class PDFStream -44 0 obj -<< /Filter [ /FlateDecode ] - /Length 709 >> -stream -xmjZQOq-w7 BA/Ծm*ԣ o_+*(vo>=S71Wv6~=eX=ohޮNoOnyϗS=h6?χ}< -h}Xa?lr8i֟h>ms÷uz=N/BjnrՆeFdͦgWY^oߝ_s [V lG;Nt =eOW+5}þA߲ow;=~8/ / / / / / / / ү+ -ү+ -ү+ -ү+ -ү+ -ү+ -ү+ -ү+ -oooooooo;;;;;;;;ҟ' ҟ' ҟ' ҟ' ҟ' ҟ' ҟ' ҟ' ________~mX5Z y.x!϶oyp Vendstream -endobj -% 'fontFile:/home/pp/local/lib/python2.6/site-packages/mwlib/fonts/freefont/FreeSans.ttf(AAAAAA+FreeSans)': class PDFStream -45 0 obj -<< /Filter [ /FlateDecode ] - /Length 7440 - /Length1 10912 >> -stream -xzy|[ŵ̽Z۲l)7ɲ$/rlǻ}%ǒȖlɋxOIXBkBȏm(>Җ._ B|-7zg^;~???[z~LJJ?tHe#2?5x"LF<J',MH*u˫vBQ\؁&3i@;h0~߅̓&1bC>Gµh% N@A *TT0 -,l؊3>G#L1Hc(O?1 "W(E( +Ģ8 %"9JBHhZ6P:@*FHeLȌ,YQ)ڈP9@P%ikP-CȆ5&ԌZP+jCuͨ 9u->ԏ u"3 ;M \Fe$oYt-7/jݲ$ϵMvU`]26T.K]*UWTڝv/3.MV/:ruK\ #"!֨wH;\+)S4eqkپn7#6/K 2edSYz+(Sm,AAW_`_٤2Zn>K -ٗꮝ&;A?/fİH.j2yBp8.]]+G~5q1spה VZR)'HŜ <BhDž?`ҙ'2)YCJDIj0/g gP|3۳Zvivv1O<_g : Xi$R`o¦tR,Ŕ5X.Zpr[:=# }S Hc7d) }c(222K+Yؘ4%jY4=SR" t[̗8.J/=qDeq/#Z\ QZt ^|ܨHNd%LIrd,&tD͡6xܜrkk#>[wI3'|pExI^[^W32''% -@=%$UjX3 eG'ZuMmLe;oX/\%m%MQSS}%6MmVjB4?5gj -)yO~g˵@)/#K+L͋Fkn8sn\70 -pԀ"t$p/PTIfCd8BWjUJRTo['Ih3u,wz5?c5`p```}9;&s|D Og>Tjz -:3'1Nť[~KP?4` -c/T%28'W?A`HndMF55%3K/.W_Y67qֶO<_.qu7]*b$XM2 fTU]+/0xaxdu%%ԬF[֔J<- -o8}6KW6g~Oڽa9Y@;S"tDg X֍K|7;R]zk .qc衎:fa+:}Kۚ[PSZCt -UZCZd&27pƵ5͓iqK\GaZʳ&5w9~Z8։[V.F!,c9󛼛Gd&]}iZOz8]T(!k o"y*XWteAf\qtuUnluGL =;w}=u Wu2IP|Uma"H޹ǜm>;(:C. sg1ct׹dJq%O-NՕZ7ҵ΁=;n,eV;n27Ulo>V`uy ǂ Va rtajA-ςV1hd O|S)m.ЇG# -ß ~ODg{~LU(?9'j&||[v? t(8OV[P߆9bK>0)Wzm0\l[65Do -D٢ZZ{YSiwh3^F[\QUhmҘg+-W@Y&aj3*VbޫGK4®)Й{1I>c&uzfڟָVw}N5}%UeS&>q׮޻s܉ǧW]{nSpIμYl|ˠbXV-`8n-aM//h8r$lRC͠91c:CΜMr# Q2+7?g_2gYӅ);\~gNh'"NV#xZM:-5lo(o(agS[e[ܧ- 25w?jo۾.[nrM+$J#ӓ0pgr$Eo~dF#vv DFUf6U6z_sE v1f9 (XaB_[S`LBL~TY#_Du%NDyn[oSP=8  :r'~ -[Mqx5QWvD3bzpbמ)o- :q|qd;RUYQz̎7NZ]tڀUmyuf}2 - n6S |F$ JX-Y v<Ǩƙ{T^MU]5fl=FTuA3üN#>+&d1kʔQeLL=WW.0X=:|!o\,7)鼂qF=|ڿ&pe[bPSPYiQ׵׶(޵Vŷ% rpphjbpx$2M4gp}.жxZ.I_oՆBߡ(r/d$+01/tu^ &Y(`wԥ;Lʡ)Y-QT j5|2vj37Os?=r -\UekzXm-fAhnp -L|4vZE0Z;7B>+FdhЧ"A E%F/ )@#Сŀa}H9\/ vo`~ -Q>yΠ1ʛ8)g7d)fJ=43S Te0|8oȡ5D PA= ^#K{F-Y^[LU\`TO4vM/!?`v~(,/)A@T39 =RN lYag zcRLh727[8 -쌂 5$6:~]02 -AKYUh7:&=;1ޒ>@z"U9BRA`,=t|;~/eeQ ` vj}03jL -? h bu<5jU3}0BӜSOBOwI[X>}7,_sa=Axg'@WR|T[|%~6/Jk(_DYmia%>䒕FY* -۩%U$DF|e9u -#SvOn .Ӗ%y.,RٖټCLmHQ&4$А& kЎ$Ӷ (2', hx,`E'2yX4c^,mGzL'ؓDך2p?5f'endstream -endobj -% 'fontDescriptor:AAAAAA+FreeSans': class PDFDictionary -46 0 obj -<< /Ascent 800 - /CapHeight 800 - /Descent -200 - /Flags 4 - /FontBBox [ -958 - -462 - 1632 - 1050 ] - /FontFile2 45 0 R - /FontName /AAAAAA+FreeSans - /ItalicAngle 0 - /StemV 87 - /Type /FontDescriptor >> -endobj -% 'F5+0': class PDFTrueTypeFont -47 0 obj -% Font FreeSans subset 0 -<< /BaseFont /AAAAAA+FreeSans - /FirstChar 0 - /FontDescriptor 46 0 R - /LastChar 128 - /Name /F5+0 - /Subtype /TrueType - /ToUnicode 44 0 R - /Type /Font - /Widths [ 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 278 - 278 - 355 - 556 - 556 - 889 - 667 - 191 - 333 - 333 - 389 - 584 - 278 - 333 - 278 - 278 - 556 - 556 - 556 - 556 - 556 - 556 - 556 - 556 - 556 - 556 - 278 - 278 - 584 - 584 - 584 - 556 - 1015 - 667 - 667 - 722 - 722 - 667 - 611 - 778 - 722 - 278 - 500 - 667 - 556 - 833 - 722 - 778 - 667 - 778 - 722 - 667 - 611 - 722 - 667 - 944 - 667 - 667 - 611 - 278 - 278 - 277 - 469 - 556 - 333 - 556 - 556 - 500 - 556 - 556 - 278 - 556 - 556 - 222 - 222 - 500 - 222 - 833 - 556 - 556 - 556 - 556 - 333 - 500 - 278 - 556 - 500 - 722 - 500 - 500 - 500 - 334 - 260 - 334 - 584 - 500 - 1000 ] >> -endobj -% 'toUnicodeCMap:AAAAAA+FreeSerifItalic': class PDFStream -48 0 obj -<< /Filter [ /FlateDecode ] - /Length 712 >> -stream -x}jPṟBÖ}Or z 8qje#;}L T t4ǻa}mj=,Ƕ߾}zvu8N~MOC<d6ߏ/p}>==qz<,^iw<.ދ5?lEvtDЗK -};F߰oз[}ϾG?8~_~_~_~_~_~_~_~_W~_W~_W~_W~_W~_W~_W~_W~_7 ~7 ~7 ~7 ~7 ~7 ~7 ~7 ~w~w~w~w~w~w~w~w~????????O?O?O?O?O?O?O?O?/ / / / / / / / wNendstream -endobj -% 'fontFile:/home/pp/local/lib/python2.6/site-packages/mwlib/fonts/freefont/FreeSerifItalic.ttf(AAAAAA+FreeSerifItalic)': class PDFStream -49 0 obj -<< /Filter [ /FlateDecode ] - /Length 10268 - /Length1 15000 >> -stream -x{ |ŕwUws3=3CsjnݷuXɷ! K8ll8İd.߆#k/͆66._Xg-﷟5zޫ1!-:h44>6uZ^il* !b[\9sS'>8, DCF(~wCkcP.ԫv_8ͣo@mٱ%w÷4ZGF ]ڌhڎvH",Q6 -ЛH0vxPGPb bCKGPž$7m_Y¦=<:=0?#%*ѷnxUpğ\v~uhؿ -wa#.7|Wп$/u-7FF`YBusrIx}UK -\ p -fLX[ml$#[z,#-؋mlaXȇ1 zk nuڭB,AZq2b;T{ -Qijl[czSGN|*V3h{ -^6˃܀B,?8ڬ7|ؚ-r8oj ꑺCٺZFcD̮쪓i7-_Ku!0{d14-v]ug}ݸ90W g.R*v<[6'Cl"+HZm#E'%dhKep6 AGÙ4oLFl!RdlRD]}Ѥ,'Gvtƺ^_=skx\e GlPFif׮ ͏߯o8sP 8{fJXwD`' ;b*ER|0t2 $ -9u#Ň]!+?.AoPp,HO[5M|ԼnsZ8Qf7Zm5SlVNޣ10ZgĚKov͊UR 1XL δjkO[PDÐmل`"WٴqUkȊ39DTaJة}M*--䞫:%/ -[g?Yyj U0Y|uzn/W>spyȌ,9&6S2wW;<|w}Z>-ly/Guۑ8y=4_=nI=Wh%l`w ؒiLX:?*6vq:Յv(upt@gլ~4- Q$Sp%%/đء:7 ?Q![3=MEy`WOfs2g=awmzDm,/'68Uơ-;\±U߾\_rAλj4nz  ʡ?% oSf`;K-=с^Q~0C,R(, `4^mڍHSk3u69/_6YgzeۡG|N)|D) -p6Ie;aH),0wN߿=A95;scew5sm]sU W_<}5!|m~/VCԙM' ߀Nm0{5DBԔ&Pp-E$#!ȆƇ֌n]\] Y쏘kjҥ}uX?\oO -{+48k ښ|Il߂#x#ryZ60F bf(d7ܱcUG7l!wSJN Ls u+kh[54wYȟd)-xyX~;Mc):HvPvrGKr+ -VlHҏ/hC@VdBȢP[Y՛o;' z\)joon{' -I 6 -8NxB;h+ǰKRSbmecm}U5hZ2XoJxȱu*">Y,0uKN7&IxVR[BFɾ&: o=v62/߮}~]< 0j`)AZ4ً߻,g m^s^e8},ܱZ˕ |7ԊDUĆ8T⣮-!\\"w}jb)kRvN3K)#̃__V|Sc騝@ -nneޒ,N3ݱ7|dCDVߟBJP[|)gY_;רo9dxsk5~Diڒ : )ZKd6Wjby6 7b d5$X2Fba^UegmkF[hj`"ǪLH@0ߦ׮OXڵ^l)9vŞik!uS䤈L!؂JQ$IQKs֔oc!R'vũ[}y#oX99'Yd2@p6bdܥDŽEnV0+a\e0誈ݢǐVzI I/\̷9&L3oi.ߢNCLuh-Ƭ&/q]`#-Y݊[ h,t7fe*|SHO8viUe@(0((z^ȥkM^Vo #GS2F3 -IxD-cщLkTv|r˫WW< /ײyL8+ ]ș0=-́UU?]>ihZT߉{'Kx`'S@yf.KcIg FRy)`!^1Ҏ># -lŴ}%Nw҆DY2øhYI˛}6 Fv=v+k!V7:ֹxR ve8tmZ=8_.%KuWvvoyu^Z;7<brm9a(=&訛o4`O;`9Z[Š:Vtg_ma1Զ˺HPdh{I69 X&n{Jn?)kNlxсiZ o7OoK?foUf~پ:qߺT7Gu8Oz>}Yn=s_[7V9k#+0HR yڼϡئyM[ƚzFmvO-|Z _t$yyXAGqSôڡA ![BsA{/"I+BTZdtEBZEtfUwcraSxZVfjCsiu%1NPq/҃KPƁ*Nٽyw4~91YKkT/QGp~NcNeٔeb lQ|rb.)+P\rƘ5pƨbpbӂ/ǔԧ-^]~׎k̠֝hC dɔڪXm=u>[4;d-?Voҽ2,d&t<.dn!iszl.rb7: -[ٸ_k6Ry.oZW=Y_kӑ}kMH5*Wק6-7lkr08 ZB/`U)o=SaT,ujUݮGt1TI ,/ Ske0Zo5u|q3'sh4*>Edih_Ig'ɸ2/kB{0Sr,ډOP kQJZ.K+Nl-MN3|pO6T)TFm -5ūNvhte#24]Mq3Vؼ!C7> T LSk# a дqo@0϶sulˍLZO{:Y{ǫ VkP^<3Mm\3/UA~>qΜqCdMBS(v|*4* r+ Wd!Tuy+ :R?Ьm3ٴ\v˩W[:65tdygrkìik*>0-9%6|~O= -G? K|_;P[ L86EqGIMbлP̜[_-;Yدխis{61QkuwZuXY+0r,r鄟 c񥘵v+ͭV)m 2Ye[&;) o;e|.ICnn5*͔ff/?w*ndO@C$v{q{E&O хKY*ɫY'ӔUٰ1ر}͖j?ZlWh[a6:j3<~hx W͹鶵@Ml2Vy͙Hxy#^S,F:s{jU0*SCs,ɆOu]I8iZ%Fɖn.ss[ M9׬> wړմel&C2~]CjxBLJWeD{ʀ=)[ ²KY7`ZES*Uc1[U\gqNcʏT)d*jjz6 O-a<7#mE/[< zwñ@kjg pN'~tNS+/*_r~_MsA܂I$\9ȒIc!t^H{9o}0Vw=pgpwUC9-)oi#:.-FJd(oD˗=7TTq'8ONidd710w({ - -#i67(kcӇs&`SPud&!%!vXr 5UQm=QXWqos]S"]t #>ʚ?+ Q`}\ ._ 8\Bg/m39,2k~ZUscˈg$I;=\~{򀹓ө83TCP{ܢ4tfNSjKm=g {B_+[RUA.w3DP]x1KLGe^ÇƠ٭Y|oharVND*ShjJi |U3켅RlI-]ull Mj A#i|#U:*;n/,s({3S%حb+~s16-4ӂuAt(f6Ag&N{L`)8W؀Q g W]~Uk*9IanߡnrpMT_sx4iLd,mSɴ衟0#zV&ÞSjS Ȭ2kV>\ҕ8ǸVTfpg ni|0W=ə0|p($H݇f*[g=v;汹:MXa8*Ũ=fZom&N+= -p;rVM5IzʕZ,pjTdHL,bQWz4Um>Zl/Z=V6&O΀Rϴ/|p9L}ܣ=UNw\:?Je1^[&'A k#voz9·'!K{^SMF%^yuU*C39oJX uggd -gɑ/1X0v&HS\ɔzUmծ֦JO 55GZ{U+{I!gn7R$# p@obJ{l2$X/κe,6X L 7;z5U/lG5.ta~p3% -vZ=|MHT* -"WF+kpCL5`Xo蜎XV2ճ -FI3P5_iJME}۞[^< >!G} -,zᶋyMhƕ>C~g>64HctŠp~ -ڄ>\zsakP2P`PtB铮6x& <6> -'"5V>Խz[(Ox=g+S7C[r&ӷ7Q"kvCJ2m0>& ~V@1a+gvQOdAq:g -CPA_ _@y RgP4>SN`.bـE x;t(;uu',2o4G7ӻ/O1]̭wdͲ!_ɽ>P)݊R(w+RXU-:ޮ>~O\Yiw5/k Wt:ݐnIwA?cyCaƇjM3'Lof9%.C?K~݃BP'+I_J#ԂI4^H4mQ# -%r$ZhQ(N%ZEhߐhJ0`̰09- -0I cAD:YD3J^ABts [SM]k:~vr k 0Xs=w@X 41$@zM c)+_6( -@]3 ]&l`$86哙$ ? x@K!__-P_n#2 N`H#6MU& UgRRbC7@n43-B(Mg`S{`1xrZ&'tz~tqtfftwjj` -T;0gbla>= &AyCx묠h%Z/7*L=v2",|R!! r ?;/잞 FSFg&,OKā}]@LMO.+VT!MCRT >8=u` 0y~vqh7z?>;hIz\g3 L #@PS|Ia>@XzN ¿. :^t•!{'_sW -)FZR > :!K(| =Džq!i!Կ~Gɝy -/-G#u35L/U@09bS (d>2dc73y s41 5L OAfzF ɡ -/>@-L1 &O܈yw 6<#8b{$NF+N^+L] Ğ{mBuP -[A` -U~w U>O}W>CÏc|]?-q#}Ku@,[ͯZKr~]T\Ƞ"o* TdHtk* -~ӈn* -REeZK Ta#VND3 ^endstream -endobj -% 'fontDescriptor:AAAAAA+FreeSerifItalic': class PDFDictionary -50 0 obj -<< /Ascent 800 - /CapHeight 800 - /Descent -200 - /Flags 68 - /FontBBox [ -879 - -434 - 1673 - 900 ] - /FontFile2 49 0 R - /FontName /AAAAAA+FreeSerifItalic - /ItalicAngle -15.5 - /StemV 87 - /Type /FontDescriptor >> -endobj -% 'F6+0': class PDFTrueTypeFont -51 0 obj -% Font FreeSerifitalic subset 0 -<< /BaseFont /AAAAAA+FreeSerifItalic - /FirstChar 0 - /FontDescriptor 50 0 R - /LastChar 127 - /Name /F6+0 - /Subtype /TrueType - /ToUnicode 48 0 R - /Type /Font - /Widths [ 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 364 - 250 - 333 - 420 - 500 - 500 - 833 - 778 - 214 - 333 - 333 - 500 - 675 - 250 - 333 - 250 - 278 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 500 - 333 - 333 - 675 - 675 - 675 - 500 - 920 - 611 - 611 - 667 - 722 - 604 - 611 - 722 - 722 - 339 - 444 - 652 - 556 - 828 - 657 - 722 - 603 - 722 - 616 - 500 - 556 - 722 - 611 - 833 - 611 - 556 - 556 - 389 - 278 - 389 - 422 - 500 - 333 - 500 - 500 - 444 - 500 - 444 - 278 - 500 - 500 - 278 - 278 - 444 - 278 - 722 - 500 - 500 - 500 - 500 - 389 - 389 - 278 - 500 - 444 - 667 - 444 - 444 - 389 - 400 - 275 - 400 - 541 - 364 ] >> -endobj -% 'R52': class PDFCatalog -52 0 obj -% Document Root -<< /Outlines 54 0 R - /PageMode /UseNone - /Pages 63 0 R - /Type /Catalog >> -endobj -% 'R53': class PDFInfo -53 0 obj -<< /Author (\(anonymous\)) - /CreationDate (D:20130511092954+00'00') - /Creator (\(unspecified\)) - /Keywords (mwlib version: 0.15.7, mwlib.rl version: 0.14.2, mwlib.ext version: 0.13.1) - /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (\(unspecified\)) - /Title (\(anonymous\)) >> -endobj -% 'R54': class PDFOutlines -54 0 obj -<< /Count 3 - /First 55 0 R - /Last 62 0 R - /Type /Outlines >> -endobj -% 'Outline.0': class OutlineEntryObject -55 0 obj -<< /Count -6 - /Dest [ 23 0 R - /XYZ - 368.7569 - 787.6635 - 0 ] - /First 56 0 R - /Last 61 0 R - /Next 62 0 R - /Parent 54 0 R - /Title (LDAP Data Interchange Format) >> -endobj -% 'Outline.3.0': class OutlineEntryObject -56 0 obj -<< /Dest [ 23 0 R - /XYZ - 206.4029 - 458.957 - 0 ] - /Next 57 0 R - /Parent 55 0 R - /Title (Content Record Format ) >> -endobj -% 'Outline.3.1': class OutlineEntryObject -57 0 obj -<< /Dest [ 23 0 R - /XYZ - 206.9209 - 345.957 - 0 ] - /Next 58 0 R - /Parent 55 0 R - /Prev 56 0 R - /Title (Tools that employ LDIF ) >> -endobj -% 'Outline.3.2': class OutlineEntryObject -58 0 obj -<< /Dest [ 24 0 R - /XYZ - 131.4749 - 784.1302 - 0 ] - /Next 59 0 R - /Parent 55 0 R - /Prev 57 0 R - /Title (LDIF fields ) >> -endobj -% 'Outline.3.3': class OutlineEntryObject -59 0 obj -<< /Dest [ 24 0 R - /XYZ - 173.0829 - 527.1302 - 0 ] - /Next 60 0 R - /Parent 55 0 R - /Prev 58 0 R - /Title (Examples of LDIF ) >> -endobj -% 'Outline.3.4': class OutlineEntryObject -60 0 obj -<< /Dest [ 30 0 R - /XYZ - 96.76891 - 480.1302 - 0 ] - /Next 61 0 R - /Parent 55 0 R - /Prev 59 0 R - /Title (RFCs ) >> -endobj -% 'Outline.3.5': class OutlineEntryObject -61 0 obj -<< /Dest [ 30 0 R - /XYZ - 147.0989 - 397.1302 - 0 ] - /Parent 55 0 R - /Prev 60 0 R - /Title (External links ) >> -endobj -% 'Outline.1': class OutlineEntryObject -62 0 obj -<< /Dest [ 31 0 R - /XYZ - 133.5109 - 709.6635 - 0 ] - /Parent 54 0 R - /Prev 55 0 R - /Title (License) >> -endobj -% 'R63': class PDFPages -63 0 obj -% page tree -<< /Count 4 - /Kids [ 23 0 R - 24 0 R - 30 0 R - 31 0 R ] - /Type /Pages >> -endobj -% 'R64': class PDFStream -64 0 obj -% page stream -<< /Filter [ /ASCII85Decode - /FlateDecode ] - /Length 2875 >> -stream -Gatm<>Bei3&UsI7rX[I?Cm7uZnh)YFEdcWK2sG3iFaJ0O+;1uIO9@q4*?:-D',/^!;"J&Ri+4oj0,4AiuH@jCtP8M(#Z])i'^uVZRE,lRI*6L6/YqQ+Qtu3i;WZ@bP@Q9:?h-QXhYM+='Pgu;Nf^&7.%AL>LeLt%H%P5Z*h*"kGcbX*fiK,VDXr.6:Qkb^2#4k.'?;UJ+)EbiNOM%VL.Pqj-UnU*IkrbamRY0pr8!Gltn,Affr=CeTiT1&A6I\QEoL?8B09C2%ND4Zi.AEqhU]KDTi*JQ)[QBgPc@5:JCS(/Q6bQj:_]BhYDP5H&g0EQO,"/KWZ^ZcNQWAI!;&n`a4-V%7p?]MBX$onLpC>br0rCJes-,*'3un4P'B&W7(&-/H18T^\Z[KF(A0E&c#=dVr>^$V3Wgn\hnW[qC3pakDZI\an%A4%uX!CSDm*,cX7-5nr,0..'!Pf-$BOn4\(od"A'q[L[:-\A\P*.1]2baM?ai9>$YX)C\/'1.L*dND_fn.0]'8P.?n7:C9dJq9&M8MCLMNH1Vr%!Ar!3b"A2CqGJ)W.j%Dk]spAZ0@ih$C)\_^*."WLJd;l;m?ZWVG%LVg$%99/X#`T9cEZi:6q'uiaW]F"-co]O\IY%Qm*,V3EXd#WsBB%?]G-pH'?cmRILk+2oNPY=4&G=!MVgf%RKll-XmCk;a[TB!/6%XaJn`,gW1[smVKuu0]XY_h]f"Dt"mHY6>:L$B=FF"_jeLGrhRs-%WXVI?Fp0a:WHqF[6C/'R<./L+a)0.5aWqCF,>W0m,ucVo3/1*CV-C/6Zq?=S>`I-J]UdmmpcU+,[mLk_+:4dpKu4\:Wm.l%K=Zk]FZ9Ng5S3J1U2Y:'n$s[47a!#dFH(2mrP56pDZ3^aj27dHL5BEV\sM##&d\`=d*f8@03UCXKN=;'Wii1LsJ4.;iK.O7F>]KnB\b50e<&JBX!<;p$?cLo"6E5AW[5A*n?Af]rq-_p^\-_"rHJL>"L8bhkYDlhR""5r.D,*p`6g!Bnku3;,@+iM%*pS%#W*n893A13j(OP"&65V;fV*k2f%cIKPI;R!$sa'X&dH[)L/PCW]$V@2'$lqj9?NKE]d-\?7&o(hjJI]c)<5e;OoCoW*I*<7R&Lh]SGg]V7LKn(a"U?r^b'FZK<]P]t6YYl#4Cl<$bOR+e3:QF^mmUctJ$XFf.4cS=6Y\OcIh+o@8%[r^m>A^.Lr$C;7+M)tlg3,P;1\YGeCd4Ms&=2(nRGS$j(d'=1Zf'66E7];`VDAO?%oUVVi=?X4a"M6p@-4!(oYI^g;DJMB18S=Y/]S>oi.Cr*`uA!O2X1T@g9Cl39W::c)q0^/t,U8_T3T@afU]C8Z2[)jB"7l`Onq_)/u2:2~>endstream -endobj -% 'R65': class PDFStream -65 0 obj -% page stream -<< /Filter [ /ASCII85Decode - /FlateDecode ] - /Length 1379 >> -stream -Gau`S9lK&M&A9%PJ!aH2Xi&\u/2)$7o)U+-\(e'4bCu'lRt4*k,Sel.oc6Z0@OGJL8R!GpCmlQ'1[i#FTmcG"hf%@m!Q0Hnol)#s$:sMr8HrmpOYHHU&.lk_8`P&2Y(Z8]_8C6M5?Z[nQ&mta,IH,Tn>+eUuNpr"s$)0Y08/rg.qThj`5`aZ)ms(FNNS!\\kJ5gUJ^Cg22;$+Lpj"l.B$0]6n+DumFcD(SB^P%6l@6^i\(>P@OfNJL8u]7**E&HA8q)r*-%^r6jB0l/F,W3.a]c<4;;-Dk'^pA0;7Du2f*Yd*ome$14X3-;>PNQG^o9d&pk1RN[G=?fJqoTIin:8-UcEk/-Y=gA)S($mfSHisC:^`QL%i$VH^^DJ@7m%5W#rpKq-_&Wif.=C'Y=Us.P:ZYdS,o;(&S`U?HCl^m;A+WHl$1tkkTFi"a!=AB$l*As&(DKAQd>)MR^^?rDA&;o_#C';K\9gZO+Wm7utsA:2nAn5MBC\KH#8-*.B;9Wg\Of$S(u0e8cjLklf\'XZ1Y0>9o$;.#@b_jf$km(>Oq3-_ggN>[X/5AX-[B(0X_=gS6[%\lgl#U=sT]i+fuE*e_sXQVB:[!B&U5$.;&dl@.,"CnTfK2tTl_e5;r^iB!;5B%ddG.#d#T$?T(i2_OZb-Xb_KX.GAUBqCU>R$Ye`%ome01i`o2CU>0#@Fg@i2TL2s\&<*'Ycb^;\Ktn+9G,kYDV0Q,mLHI`cgGp`eGc8JlP5ntTQd&g0UYP%ZRNe?Ct.rkjjYFePJ]"oMY]JeJkgRq!?\TVYWk..Lf/*['aA9!e#EU0`gV+DY\mtC%1aS8^.+$?=JAc~>endstream -endobj -% 'R66': class PDFStream -66 0 obj -% page stream -<< /Filter [ /ASCII85Decode - /FlateDecode ] - /Length 1472 >> -stream -Gb"/&?#SFf'R`L25@!k1BnKoV4Z5dhJSg"'.]K_meNPg<)!l6]CX3Q=.*;Jb]jni4#nY!Dg8J2ZN'27FI[kKA!t.g#>3.okT\VA3hJNX=LdkgPAY(W!%)EG[hSXWcDZ*^E24)h_(+FE$@M%"6*e9IUm(/Oq[=YH7>/=4neq3;>K._D2`8h>%cP+B]3[Ui;Pad@!Uqm087#AV-7?0<4Nff9G&FVo0Wk?J""i<7d_B3;/W.1hKN=d&BtJ3d@0&EjAT0XV`0@99C`*P]6_t=5iKB_:tqj60Yriq0uW%BA^clrN:krefu4L99:$s2#chI.Gflot.6*,d2F\7C>RX=6Q&&Y3'g1qB9UrVJCXm:!nKW@Eq9.'VRX?YlAiFa`sKloe8gKAMQm;LT1`Ul9,3V^o?UHdb]Te36O$*8h$.)8K)&Nr[ZD%CLic*LJfOd#gFMC?ZMPm,gu4b_hk`OWtCQ0[tVq24P+@D&$-+J9s3h5?:sc6$N&"Uoj]DV7h1ksJn)BbY"$IK)G6e;QPGGb):=O+-"JlcUG'NG72`^'E4`_FGY(RDXqpcbY'<<-Z](iXeU1bKl"%WoAe0!K1Q\d"6g<`T8=pga&?F(cCE819>h_^*7B3e&g@7I7L9QU<@r0YB$%gBhb[q@7/gDDqhg?5.@L9-lrnQCn\iDiT2!0S;$A7<$5C%DajXOOtOFk^hZ+TjL";5i[7`&TQdS[L9k8X6RO9!=K;j@k[Q2KXLg"9MFhkMl$VQ/9S[,&+Q-So_bQFt`)]$qKOLW;O?!nW9@!K"PnASS`eE%W[5NCDcDA\;:aer(=$[h,sk!tS_6Metbe,^5HU-1)ABVS1IT$;p,jY8m4$qqBBZF($!6Z2A+12=De=87*\`7,K^P>"]!)+BGA78oTK7#37e=3k,JTf7Z6Bol?^e8Gb[hr-[I6@C[I9S-(S+^6n";KTk:D,8+,m@8RVm?,Zendstream -endobj -% 'R67': class PDFStream -67 0 obj -% page stream -<< /Filter [ /ASCII85Decode - /FlateDecode ] - /Length 902 >> -stream -Gat=i;/ao;&:iXgofq6lJDe@`S2)GMinG)/I#jnt2h$56`G2[.ii>H@U;A82J+$_I3PS$Y%;K1q9[Gki270&l+,snCDjKnqAc=$0Tm)_RH=HCA)hdG8AT.-ohua+lC'%"Y@;n("S>F/PtZL>5:kmDpE-"=4/a@.\*gb7l=Xeb^3>/>h"uA0UB$_N(>`Z7a7`]'5-\F]o5rOafS(?Z'@PS>&/8?:2siua)jQi0oh6UE+u]q%XjCRXb9g]n?2O,^jCVIB27=fn3L=2/q?ST(V)e`P>Yf`eSP:nV3XP[r0u7V0^rqQ2'Tt+XAWglV6)8`[.qZW.Jn=O-7OGS8@Q'a,pZ(qbkBjjh-I-eKqf$@92ftEp2@qr*B\q9*AGp=b>K2GDZAlsdsmfh$#u,ji@l51U2;c;n]]J&F:roS!-o5nf4//L.D36X=LVjU9a/SOX*/(!o*H20KO_-M&dBV504opG/W7Y\/`H'r\\^&XP3!]dH\6I-Ot-C7H!Z==RDQQeq"OFd2'T$$~>endstream -endobj -xref -0 68 -0000000000 65535 f -0000000113 00000 n -0000000284 00000 n -0000000461 00000 n -0000000740 00000 n -0000001023 00000 n -0000001294 00000 n -0000001592 00000 n -0000001862 00000 n -0000002145 00000 n -0000002428 00000 n -0000002720 00000 n -0000003002 00000 n -0000003270 00000 n -0000003539 00000 n -0000003794 00000 n -0000004064 00000 n -0000004348 00000 n -0000004632 00000 n -0000004920 00000 n -0000005195 00000 n -0000005477 00000 n -0000005756 00000 n -0000006012 00000 n -0000006477 00000 n -0000006772 00000 n -0000007046 00000 n -0000007320 00000 n -0000007575 00000 n -0000007849 00000 n -0000008108 00000 n -0000008445 00000 n -0000008752 00000 n -0000009676 00000 n -0000019443 00000 n -0000019702 00000 n -0000020757 00000 n -0000021686 00000 n -0000031156 00000 n -0000031425 00000 n -0000032473 00000 n -0000033386 00000 n -0000042202 00000 n -0000042459 00000 n -0000043495 00000 n -0000044413 00000 n -0000052012 00000 n -0000052271 00000 n -0000053322 00000 n -0000054257 00000 n -0000064692 00000 n -0000064962 00000 n -0000065987 00000 n -0000066125 00000 n -0000066473 00000 n -0000066598 00000 n -0000066832 00000 n -0000067016 00000 n -0000067216 00000 n -0000067406 00000 n -0000067601 00000 n -0000067784 00000 n -0000067960 00000 n -0000068112 00000 n -0000068247 00000 n -0000071265 00000 n -0000072787 00000 n -0000074402 00000 n -trailer -<< /ID - % ReportLab generated PDF document -- digest (http://www.reportlab.com) - [(\265\206\354%\2116a\367\267\267\320\325\\o\216\037) (\265\206\354%\2116a\367\267\267\320\325\\o\216\037)] - - /Info 53 0 R - /Root 52 0 R - /Size 68 >> -startxref -75419 -%%EOF -- cgit