Re: [PHP-PEAR] HTML_Table.php
[email protected] (Bertrand Mansion) Fri, 09 Mar 2001 18:57:02 +0100
| Newsgroups | php.pear |
|---|---|
| Message-ID | <B6CED7FE.1B73%[email protected]> |
--MS_Mac_OE_3067009022_1805474_MIME_Part Content-type: text/plain; charset="ISO-8859-1" Content-transfer-encoding: quoted-printable le 9/03/01 18:04, Jon Parise =E0 [email protected] a =E9crit=A0: > On Fri, Mar 09, 2001 at 01:37:46PM +0100, Bertrand Mansion wrote: >=20 >> Now I am wondering what I should do with it. I guess it should go in >> /PEAR/HTML with HTML_Form.php but I would like people to review the code= and >> tell me if it could work better. >=20 > That sounds like the correct place for it. >=20 >> Could someone give me instructions on what I am supposed to do now ? >=20 > Post your code to the list. People will (hopefully) review and > comment. Then, someone will (probably) commit it to the PEAR > repository. If you're interested in maintaining the code yourself, > apply for a PEAR cvs account. The code of HTML_Table class is attached. Thank for reviewing it. I am testing it with my own apps at the moment. Please send me your comments, feedback and critics. I would not mind maintaining it if someone think this code can fit in there= . Please let me know, then I will apply for an account. Bertrand Mansion http://www.tapage.fr --MS_Mac_OE_3067009022_1805474_MIME_Part Content-type: text/plain; name="Table.php"; x-mac-creator="522A6368"; x-mac-type="54455854" Content-disposition: attachment Content-transfer-encoding: base64 PD9waHAKLy8KLy8gJElkOiBIVE1MX1RhYmxlLnBocCx2IDEuMiAyMDAxLzAzLzA5IDE0OjAx OjI1IG1hbnNpb24gRXhwICQKLy8KLyoqCiogSFRNTCB0YWJsZSB1dGlsaXR5IGZ1bmN0aW9u cy4KKiAKKiBUaGlzIGNsYXNzIGhlbHBzIHlvdSBjcmVhdGUgaHRtbCB0YWJsZXMgb24gdGhl IGZseS4KKiBJdCBpcyBlYXN5IHRvIHVzZSBhbmQgeWV0IHBvd2VyZnVsIGVub3VnaCB0byBj cmVhdGUgYWxtb3N0IGFueSBraW5kCiogb2YgdGFibGVzIHlvdSB3b3VsZCBsaWtlLiBZb3Ug Y2FuIGFsc28gY3JlYXRlIGEgdGFibGUgaW50byBhbm90aGVyCiogdGFibGUgY2VsbC4gSXQg bWFrZXMgcGhwIGNvZGUgZWFzaWVyIHRvIHJlYWQgYW5kIG1haW50YWluLCB3aXRoCiogbGVz cyBodG1sIHRhZ3MgaW4gaXQuCioKKiBUYWJsZXMgY2FuIGJlIHNpemVkIGR5bmFtaWNhbGx5 IGFuZCB5b3UgY2FuIGFkZCByb3dzIG9yIGNvbHVtbnMgYXMKKiB5b3Ugd2FudCB1c2luZyBh ZGRSb3cgb3IgYWRkQ29sIG1ldGhvZHMuCiogCiogaHRtbCBhdHRyaWJ1dGVzIGFyZSBnaXZl biB0byBtZXRob2RzIHdpdGggYXJyYXlzIHdoaWNoIGFsbG93IHlvdSAKKiB0byBkZWZpbmUg YW5kIHJldXNlIHlvdXIgb3duIHN0eWxlcy4gQWxsIHZhbGlkIEhUTUwgMy4wIGF0dHJpYnV0 ZXMKKiBzaG91bGQgYmUgc3VwcG9ydGVkLgoqIAoqIEV4YW1wbGUgOgoqCiogJHRhYmxlID0g bmV3IEhUTUxfVGFibGUoYXJyYXkoCgkJCQkJInJvd3MiID0+IDMsCgkJCQkJImNvbHMiID0+ IDMsCgkJCQkJImJnY29sb3IiID0+ICIjQ0NDQ0VFIiwKCQkJCQkiYm9yZGVyIiA9PiAzLAoJ CQkJCSJ3aWR0aCIgPT4gNDAwLAoJCQkJCSJjZWxscGFkZGluZyIgPT4gNiwKCQkJCQkiY2Vs bHNwYWNpbmciID0+IDMpKTsKCiR0YWJsZS0+c2V0Q2VsbEF0dHJpYnV0ZXMoMiwyLGFycmF5 KCJiZ2NvbG9yIiA9PiAiZ3JlZW4iKSk7CgokdGFibGUtPnNldENlbGxDb250ZW50KDIsMiwi aGVsbG8iKTsKCiRjb250ZW50Mj0id29ybGQiOwokdGFibGUtPnNldENlbGxDb250ZW50KDMs MywkY29udGVudDIpOwokdGFibGUtPnNldFJvd0F0dHJpYnV0ZXMoMSwgYXJyYXkoCgkJCQkJ ImJnY29sb3IiID0+ICJibHVlIikpOwoKJHRhYmxlLT5zZXRSb3dBdHRyaWJ1dGVzKDQsIGFy cmF5KAoJCQkJCSJiZ2NvbG9yIiA9PiAieWVsbG93IiwKCQkJCQkiaGVpZ2h0IiA9PiA4MCkp OwoKJGNvbnRlbnRbMV09ImhlbGxvMSI7CiRjb250ZW50WzJdPSJoZWxsbzIiOwokY29udGVu dFs2XT0iaGVsbG82IjsKJHRhYmxlLT5hZGRDb2woJGNvbnRlbnQpOwoKJHRhYmxlLT5zZXRD ZWxsQXR0cmlidXRlcygyLDIsYXJyYXkoImNvbHNwYW4iID0+IDMsICJyb3dzcGFuIiA9PiAz KSk7CgokdGFibGUtPnNob3dIVE1MX1RhYmxlKCk7CiovCgpjbGFzcyBIVE1MX1RhYmxlIHsK CgkvLyB7e3sgcHJvcGVydGllcwoKCS8qKiBjb25zdHJ1Y3Rpb24gcGFyYW1ldGVycyBvZiA8 VEFCTEU+IHRhZ3MgKi8KCXZhciAkYXR0cmlidXRlcyA9IGFycmF5KCk7CgoJLyoqIGF1dG9t YXRpY2x5IGdyb3dzIHRoZSB0YWJsZSBpZiByb3dzIG9yIGNvbHVtbnMgYXJlIGFkZGVkKi8K CXZhciAkYXV0b2dyb3cgPSAxOwoJCgkvKiogYXV0b21hdGljbHkgZmlsbHMgY2VsbHMgd2l0 aCBub2JhY2tzcGFjZXMgJm5ic3A7ICovCgl2YXIgJGF1dG9maWxsID0gIiZuYnNwOyI7CgoJ LyoqIGlmIHRydWUsIHJlcGxhY2UgZXhpc3RpbmcgYXR0cmlidXRlcyB3aXRoIGVtcHR5IHZh bHVlcyAqLwoJdmFyICRvdmVyd3JpdGUgPSAwOwoKCS8vIH19fQoJLy8ge3t7IGNvbnN0cnVj dG9yCgkKCS8qKgoJICogSFRNTF9UYWJsZSBjb25zdHJ1Y3Rvci4KCSAqCgkgKiBAcGFyYW0g JGF0dHJpYnV0ZXMgYXJyYXkgb2YgYXR0cmlidXRlcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdGFi bGUKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCQoJZnVuY3Rpb24gSFRNTF9UYWJsZSgkYXR0 cmlidXRlcyA9ICIiKSB7CQoJCQoJCSR0aGlzLT5yb3dzID0gJGF0dHJpYnV0ZXNbInJvd3Mi XTsKCQkkdGhpcy0+Y29scyA9ICRhdHRyaWJ1dGVzWyJjb2xzIl07CgkJJHRoaXMtPmJvcmRl ciA9ICRhdHRyaWJ1dGVzWyJib3JkZXIiXTsKCQkkdGhpcy0+Ymdjb2xvciA9ICRhdHRyaWJ1 dGVzWyJiZ2NvbG9yIl07CgkJJHRoaXMtPmJhY2tncm91bmQgPSAkYXR0cmlidXRlc1siYmFj a2dyb3VuZCJdOwoJCSR0aGlzLT53aWR0aCA9ICRhdHRyaWJ1dGVzWyJ3aWR0aCJdOwoJCSR0 aGlzLT5jZWxsc3BhY2luZyA9ICRhdHRyaWJ1dGVzWyJjZWxsc3BhY2luZyJdOwoJCSR0aGlz LT5jZWxscGFkZGluZyA9ICRhdHRyaWJ1dGVzWyJjZWxscGFkZGluZyJdOwoJCQoJfQoKCS8v IH19fQoJLy8ge3t7IG1ha2VIVE1MX1RhYmxlKCkKCQoJZnVuY3Rpb24gbWFrZUhUTUxfVGFi bGUgKCkgewkKCQoJCSRodG1sID0gIiI7CgkJCgkJaWYgKCR0aGlzLT5yb3dzID09IDAgfHwg JHRoaXMtPmNvbHMgPT0gMCkgewoJCQlyZXR1cm4gMDsKCQl9CgkJCgkJJGh0bWwgLj0gIjxU QUJMRSI7CgkJJGh0bWwgLj0gKCR0aGlzLT5ib3JkZXIgCQk/ICIgQk9SREVSPSciLiR0aGlz LT5ib3JkZXIuIiciIDogIiIpOwoJCSRodG1sIC49ICgkdGhpcy0+Ymdjb2xvciAJPyAiIEJH Q09MT1I9JyIuJHRoaXMtPmJnY29sb3IuIiciIDogIiIpOwoJCSRodG1sIC49ICgkdGhpcy0+ YmFja2dyb3VuZCAJPyAiIEJBQ0tHUk9VTkQ9JyIuJHRoaXMtPmJhY2tncm91bmQuIiciIDog IiIpOwoJCSRodG1sIC49ICgkdGhpcy0+d2lkdGggCQk/ICIgV0lEVEg9JyIuJHRoaXMtPndp ZHRoLiInIiA6ICIiKTsKCQkkaHRtbCAuPSAoJHRoaXMtPmNlbGxzcGFjaW5nIAk/ICIgQ0VM TFNQQUNJTkc9JyIuJHRoaXMtPmNlbGxzcGFjaW5nLiInIiA6ICIiKTsKCQkkaHRtbCAuPSAo JHRoaXMtPmNlbGxwYWRkaW5nIAk/ICIgQ0VMTFBBRERJTkc9JyIuJHRoaXMtPmNlbGxwYWRk aW5nLiInIiA6ICIiKTsKCQkkaHRtbCAuPSAiPlxuIjsKCQkKCQlpZiAoJHRoaXMtPmNhcHRp b24pIHsKCQkJJGh0bWwgLj0gIjxDQVBUSU9OIjsKCQkJJGh0bWwgLj0gKCR0aGlzLT5jYXB0 aW9uX2FsaWduID8gIiBBTElHTj0nIi4kdGhpcy0+Y2FwdGlvbl9hbGlnbi4iJyIgOiAiIik7 CgkJCSRodG1sIC49ICI+Ii4kdGhpcy0+Y2FwdGlvbi4iPC9DQVBUSU9OPlxuIjsKCQl9CgkJ CgkJZm9yICgkaSA9IDEgOyAkaSA8PSAkdGhpcy0+cm93cyA7ICRpKyspIHsKCQkKCQkJJGh0 bWwgLj0gIjxUUj4iOwoJCQlmb3IgKCRqID0gMSA7ICRqIDw9ICR0aGlzLT5jb2xzIDsgJGor KykgewoJCQkKCQkJCWlmICgkdGhpcy0+Y2VsbHNwYW5bIiRpOiRqIl0gJiYgJHRoaXMtPmNl bGxzcGFuWyIkaTokaiJdID09ICJTUEFOTkVEIikgewoJCQkJCSRodG1sIC49ICI8IS0tIHNw YW4gLS0+IjsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCQoJCQkJaWYgKCR0aGlzLT5jZWxs aGVhZFsiJGk6JGoiXSkgewoJCQkJCSRodG1sIC49ICI8VEgiOwoJCQkJfSBlbHNlIHsKCQkJ CQkkaHRtbCAuPSAiPFREIjsKCQkJCX0KCQkKCQkJCWlmICgkdGhpcy0+Y2VsbGFsaWduWyIk aTokaiJdKSAkaHRtbCAuPSAiIEFMSUdOPSciLiR0aGlzLT5jZWxsYWxpZ25bIiRpOiRqIl0u IiciOyAKCQkJCWlmICgkdGhpcy0+Y2VsbHZhbGlnblsiJGk6JGoiXSkgJGh0bWwgLj0iIFZB TElHTj0nIi4kdGhpcy0+Y2VsbHZhbGlnblsiJGk6JGoiXS4iJyI7CgkJCgkJCQlpZiAoJHRo aXMtPmNlbGx3aWR0aFsiJGk6JGoiXSkgJGh0bWwgLj0gIiBXSURUSD0nIi4kdGhpcy0+Y2Vs bHdpZHRoWyIkaTokaiJdLiInIjsKCQkJCWlmICgkdGhpcy0+Y2VsbGhlaWdodFsiJGk6JGoi XSkgJGh0bWwgLj0gIiBIRUlHSFQ9JyIuJHRoaXMtPmNlbGxoZWlnaHRbIiRpOiRqIl0uIici OwoJCQkJCgkJCQlpZiAoJHRoaXMtPmNlbGxiZ2NvbG9yWyIkaTokaiJdKSAkaHRtbCAuPSAi IEJHQ09MT1I9JyIuJHRoaXMtPmNlbGxiZ2NvbG9yWyIkaTokaiJdLiInIjsKCQkJCWlmICgk dGhpcy0+Y2VsbG5vd3JhcFsiJGk6JGoiXSkgJGh0bWwgLj0gIiBOT1dSQVA9JyIuJHRoaXMt PmNlbGxub3dyYXBbIiRpOiRqIl0uIiciOwoJCQkJCQkKCQkJCWlmICgkdGhpcy0+Y2VsbGNv bHNwYW5bIiRpOiRqIl0pICRodG1sIC49ICIgQ09MU1BBTj0nIi4kdGhpcy0+Y2VsbGNvbHNw YW5bIiRpOiRqIl0uIiciOwoJCQkJaWYgKCR0aGlzLT5jZWxscm93c3BhblsiJGk6JGoiXSkg JGh0bWwgLj0gIiBST1dTUEFOPSciLiR0aGlzLT5jZWxscm93c3BhblsiJGk6JGoiXS4iJyI7 CgkJCQkJCQoJCQkJJGh0bWwgLj0gIj4iOwoJCQkJCgkJCQkkaHRtbCAuPSAkdGhpcy0+Y2Vs bHN0YXJ0c3RyaW5nWyIkaTokaiJdOwoJCQkJCgkJCQlpZiAoJHRoaXMtPmNlbGxjb250ZW50 WyIkaTokaiJdKSB7CgkJCQkJJGh0bWwgLj0gJHRoaXMtPmNlbGxjb250ZW50WyIkaTokaiJd OwoJCQkJfSBlbHNlIHsKCQkJCQkkaHRtbCAuPSAkdGhpcy0+YXV0b2ZpbGw7CgkJCQl9CgkJ CQkKCQkJCSRodG1sIC49ICR0aGlzLT5jZWxsZW5kc3RyaW5nWyIkaTokaiJdOwoJCQkJCQkJ CQkKCQkJCWlmICgkdGhpcy0+Y2VsbGhlYWRbIiRpOiRqIl0pIHsKCQkJCQkkaHRtbCAuPSAi PC9USD4iOwoJCQkJfSBlbHNlIHsKCQkJCQkkaHRtbCAuPSAiPC9URD4iOwoJCQkJfQoJCQl9 CgkJCSRodG1sIC49ICI8L1RSPlxuIjsKCQl9CgkJJGh0bWwgLj0gIjwvVEFCTEU+XG4iOwoJ CQoJCXJldHVybiAkaHRtbDsKCX0KCgkvLyB9fX0KCS8vIHt7eyBzaG93SFRNTF9UYWJsZSgp CgkKCWZ1bmN0aW9uIHNob3dIVE1MX1RhYmxlICgpIHsKCQoJCXByaW50ICR0aGlzLT5tYWtl SFRNTF9UYWJsZSgpOwoJfQoJCgkvLyB9fX0KCS8vIHt7eyBhdXRvR3JvdygpCgkKCWZ1bmN0 aW9uIGF1dG9Hcm93ICgkYXV0b2dyb3cgPSAxKSB7CgkJJHRoaXMtPmF1dG9ncm93ID0gJGF1 dG9ncm93OwoJfQoJCgkvLyB9fX0KCS8vIHt7eyBhdXRvRmlsbCgpCgkKCWZ1bmN0aW9uIGF1 dG9GaWxsICgkYXV0b2ZpbGwgPSAiJm5ic3A7IikgewoJCSR0aGlzLT5hdXRvZmlsbCA9ICRh dXRvZmlsbDsKCX0KCQoJLy8gfX19CgkvLyB7e3sgb3ZlcldyaXRlKCkKCQoJZnVuY3Rpb24g b3ZlcldyaXRlICgkb3ZlcndyaXRlID0gMCkgewoJCSR0aGlzLT5vdmVyd3JpdGUgPSAkb3Zl cndyaXRlOwoJfQoJCgkvLyB9fX0KCS8vIHt7eyBzZXRUYWJsZUF0dHJpYnV0ZXMoKQoJCglm dW5jdGlvbiBzZXRUYWJsZUF0dHJpYnV0ZXMgKCRhdHRyaWJ1dGVzKSB7CgkKCQlpZiAoJHRo aXMtPm92ZXJ3cml0ZSkgewoKCQkJJHRoaXMtPmJnY29sb3IgPSAkYXR0cmlidXRlc1siYmdj b2xvciJdOwoJCQkkdGhpcy0+Ym9yZGVyID0gJGF0dHJpYnV0ZXNbImJvcmRlciJdOwoJCQkk dGhpcy0+d2lkdGggPSAkYXR0cmlidXRlc1sid2lkdGgiXTsKCQkJJHRoaXMtPmNlbGxzcGFj aW5nID0gJGF0dHJpYnV0ZXNbImNlbGxzcGFjaW5nIl07CgkJCSR0aGlzLT5jZWxscGFkZGlu ZyA9ICRhdHRyaWJ1dGVzWyJjZWxscGFkZGluZyJdOwoJCQkkdGhpcy0+YmFja2dyb3VuZCA9 ICRhdHRyaWJ1dGVzWyJiYWNrZ3JvdW5kIl07CgkJCgkJfSBlbHNlIHsKCgkJCWlmICgkYXR0 cmlidXRlc1siYmdjb2xvciJdKSAkdGhpcy0+Ymdjb2xvciA9ICRhdHRyaWJ1dGVzWyJiZ2Nv bG9yIl07CgkJCWlmICgkYXR0cmlidXRlc1siYm9yZGVyIl0pICR0aGlzLT5ib3JkZXIgPSAk YXR0cmlidXRlc1siYm9yZGVyIl07CgkJCWlmICgkYXR0cmlidXRlc1sid2lkdGgiXSkgJHRo aXMtPndpZHRoID0gJGF0dHJpYnV0ZXNbIndpZHRoIl07CgkJCWlmICgkYXR0cmlidXRlc1si Y2VsbHNwYWNpbmciXSkgJHRoaXMtPmNlbGxzcGFjaW5nID0gJGF0dHJpYnV0ZXNbImNlbGxz cGFjaW5nIl07CgkJCWlmICgkYXR0cmlidXRlc1siY2VsbHBhZGRpbmciXSkgJHRoaXMtPmNl bGxwYWRkaW5nID0gJGF0dHJpYnV0ZXNbImNlbGxwYWRkaW5nIl07CgkJCWlmICgkYXR0cmli dXRlc1siYmFja2dyb3VuZCJdKSAkdGhpcy0+YmFja2dyb3VuZCA9ICRhdHRyaWJ1dGVzWyJi YWNrZ3JvdW5kIl07CgkJfQoJfQkKCgkvLyB9fX0KCS8vIHt7eyBzZXRDYXB0aW9uKCkKCQoJ ZnVuY3Rpb24gc2V0Q2FwdGlvbiAoJGNhcHRpb24sICRjYXB0aW9uX2FsaWduPSIiKSB7CQoJ CSR0aGlzLT5jYXB0aW9uID0gJGNhcHRpb247CgkJaWYgKCRjYXB0aW9uX2FsaWduID09ICJU T1AiIHx8ICRjYXB0aW9uX2FsaWduID09ICJCT1RUT00iKSB7CgkJCSR0aGlzLT5jYXB0aW9u X2FsaWduID0gJGNhcHRpb25fYWxpZ247CgkJfSBlbHNlIHsKCQkJJGVycm9yW10gPSAic2V0 Q2FwdGlvbiA6IEludmFsaWQgQWxpZ25tZW50XG4iOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJ fQkKCQoJLy8gfX19CgkvLyB7e3sgc2V0Q2VsbENvbnRlbnQoKQoJCglmdW5jdGlvbiBzZXRD ZWxsQ29udGVudCAoJHJvdywgJGNvbCwgJGNvbnRlbnQ9IiIpIHsJCgkJCQkKCQlpZiAoJHJv dyA+ICR0aGlzLT5yb3cpIHsKCQkJaWYgKCR0aGlzLT5hdXRvZ3JvdykgewoJCQkJJHRoaXMt PnJvdyA9ICRyb3c7CgkJCX0gZWxzZSB7CgkJCQkkZXJyb3JbXSA9ICJzZXRDZWxsQ29udGVu dCA6IEludmFsaWQgdGFibGUgcm93IHJlZmVyZW5jZSI7CgkJCX0KCQl9CgoJCWlmICgkY29s ID4gJHRoaXMtPmNvbCkgewoJCQlpZiAoJHRoaXMtPmF1dG9ncm93KSB7CgkJCQkkdGhpcy0+ Y29sID0gJGNvbDsKCQkJfSBlbHNlIHsKCQkJCSRlcnJvcltdID0gInNldENlbGxDb250ZW50 IDogSW52YWxpZCB0YWJsZSBjb2x1bW4gcmVmZXJlbmNlIjsKCQkJfQoJCX0KCQkKCQkkdGhp cy0+Y2VsbGNvbnRlbnRbIiRyb3c6JGNvbCJdID0gJGNvbnRlbnQ7CgoJfQkKCgkvLyB9fX0K CS8vIHt7eyBnZXRDZWxsKCkKCQoJZnVuY3Rpb24gZ2V0Q2VsbCAoJHJvdywgJGNvbCkgewkJ CgkJcmV0dXJuICR0aGlzLT5jZWxsY29udGVudFsiJHJvdzokY29sIl07Cgl9CgoJLy8gfX19 CgkvLyB7e3sgc2V0Q2VsbEF0dHJpYnV0ZXMoKQoJCglmdW5jdGlvbiBzZXRDZWxsQXR0cmli dXRlcyAoJHJvdywgJGNvbCwgJGF0dHJpYnV0ZXMpIHsKCQkKCQlpZiAoJHRoaXMtPm92ZXJ3 cml0ZSkgewoKCQkJJHRoaXMtPmNlbGxhbGlnblsiJHJvdzokY29sIl0gPSAkYXR0cmlidXRl c1siYWxpZ24iXTsKCQkJJHRoaXMtPmNlbGx2YWxpZ25bIiRyb3c6JGNvbCJdID0gJGF0dHJp YnV0ZXNbInZhbGlnbiJdOwoJCQkkdGhpcy0+Y2VsbGhlYWRbIiRyb3c6JGNvbCJdID0gJGF0 dHJpYnV0ZXNbImhlYWQiXTsKCQkJJHRoaXMtPmNlbGxub3dyYXBbIiRyb3c6JGNvbCJdID0g JGF0dHJpYnV0ZXNbIm5vd3JhcCJdOwoJCQkkdGhpcy0+Y2VsbHdpZHRoWyIkcm93OiRjb2wi XSA9ICRhdHRyaWJ1dGVzWyJ3aWR0aCJdOwoJCQkkdGhpcy0+Y2VsbGhlaWdodFsiJHJvdzok Y29sIl0gPSAkYXR0cmlidXRlc1siaGVpZ2h0Il07CgkJCSR0aGlzLT5jZWxsYmdjb2xvclsi JHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1siYmdjb2xvciJdOwoJCQkkdGhpcy0+Y2VsbHN0 YXJ0c3RyaW5nWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJzdGFydHN0cmluZyJdOwoJ CQkkdGhpcy0+Y2VsbGVuZHN0cmluZ1siJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1siZW5k c3RyaW5nIl07CgkJCgkJfSBlbHNlIHsKCgkJCWlmICgkYXR0cmlidXRlc1siYWxpZ24iXSkg JHRoaXMtPmNlbGxhbGlnblsiJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1siYWxpZ24iXTsK CQkJaWYgKCRhdHRyaWJ1dGVzWyJ2YWxpZ24iXSkgJHRoaXMtPmNlbGx2YWxpZ25bIiRyb3c6 JGNvbCJdID0gJGF0dHJpYnV0ZXNbInZhbGlnbiJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbImhl YWQiXSkgJHRoaXMtPmNlbGxoZWFkWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJoZWFk Il07CgkJCWlmICgkYXR0cmlidXRlc1sibm93cmFwIl0pICR0aGlzLT5jZWxsbm93cmFwWyIk cm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJub3dyYXAiXTsKCQkJaWYgKCRhdHRyaWJ1dGVz WyJ3aWR0aCJdKSAkdGhpcy0+Y2VsbHdpZHRoWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVz WyJ3aWR0aCJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbImhlaWdodCJdKSAkdGhpcy0+Y2VsbGhl aWdodFsiJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1siaGVpZ2h0Il07CgkJCWlmICgkYXR0 cmlidXRlc1siYmdjb2xvciJdKSAkdGhpcy0+Y2VsbGJnY29sb3JbIiRyb3c6JGNvbCJdID0g JGF0dHJpYnV0ZXNbImJnY29sb3IiXTsKCQkJaWYgKCRhdHRyaWJ1dGVzWyJzdGFydHN0cmlu ZyJdKSAkdGhpcy0+Y2VsbHN0YXJ0c3RyaW5nWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVz WyJzdGFydHN0cmluZyJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbImVuZHN0cmluZyJdKSAkdGhp cy0+Y2VsbGVuZHN0cmluZ1siJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1siZW5kc3RyaW5n Il07CgkJfQoJCQoJCWlmICgkYXR0cmlidXRlc1sicm93c3BhbiJdKSB7CgkJCSR0aGlzLT5j ZWxscm93c3BhblsiJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1sicm93c3BhbiJdOwoJCQkk dGhpcy0+dXBkYXRlU3BhbkdyaWQgKCRyb3csICRjb2wpOwoJCX0KCgkJaWYgKCRhdHRyaWJ1 dGVzWyJjb2xzcGFuIl0pIHsKCQkJJHRoaXMtPmNlbGxjb2xzcGFuWyIkcm93OiRjb2wiXSA9 ICRhdHRyaWJ1dGVzWyJjb2xzcGFuIl07CgkJCSR0aGlzLT51cGRhdGVTcGFuR3JpZCAoJHJv dywgJGNvbCk7CgkJfQoJfQkKCQkKCS8vIH19fQoJLy8ge3t7IGFkZFJvdygpCgkKCWZ1bmN0 aW9uIGFkZFJvdyAoJGNvbnRlbnQpIHsJCQoKCQllbmQgKCRjb250ZW50KTsKCQkkY29sID0g a2V5ICgkY29udGVudCk7CgkJCgkJaWYgKCRjb2wgPiAkdGhpcy0+Y29scykgewoJCQkkdGhp cy0+Y29scyA9ICRjb2w7CgkJfQoJCSR0aGlzLT5yb3dzKys7CgoJCWZvciAoJGk9MDskaSA8 PSAkY29sOyRpKyspIHsKCQkJJHRoaXMtPmNlbGxjb250ZW50WyIkdGhpcy0+cm93czokaSJd ID0gJGNvbnRlbnRbJGldOwoJCX0KCX0KCQkKCQkKCS8vIH19fQoJLy8ge3t7IHNldFJvd0F0 dHJpYnV0ZXMoKQoJCglmdW5jdGlvbiBzZXRSb3dBdHRyaWJ1dGVzICgkcm93LCAkYXR0cmli dXRlcykgewoKCQlmb3IgKCRpID0gMTsgJGkgPD0gJHRoaXMtPmNvbHM7ICRpKyspIHsKCQkJ JHRoaXMtPnNldENlbGxBdHRyaWJ1dGVzKCRyb3csJGksJGF0dHJpYnV0ZXMpOwoJCX0KCX0J CQoKCS8vIH19fQoJLy8ge3t7IGFkZENvbCgpCgkKCWZ1bmN0aW9uIGFkZENvbCAoJGNvbnRl bnQpIHsJCQoKCQllbmQgKCRjb250ZW50KTsKCQkkcm93ID0ga2V5ICgkY29udGVudCk7CgkJ CgkJaWYgKCRyb3cgPiAkdGhpcy0+cm93cykgewoJCQkkdGhpcy0+cm93cyA9ICRyb3c7CgkJ fQoJCSR0aGlzLT5jb2xzKys7CgoJCWZvciAoJGk9MDskaSA8PSAkcm93OyRpKyspIHsKCQkJ JHRoaXMtPmNlbGxjb250ZW50WyIkaTokdGhpcy0+Y29scyJdID0gJGNvbnRlbnRbJGldOwoJ CX0KCX0KCQkKCQkKCS8vIH19fQoJLy8ge3t7IHNldENvbEFsaWduKCkKCQoJZnVuY3Rpb24g c2V0Q29sQXR0cmlidXRlcyAoJGNvbCwgJGF0dHJpYnV0ZXMpIHsJCQoKCQlmb3IgKCRpID0g MTsgJGkgPD0gJHRoaXMtPnJvd3M7ICRpKyspIHsKCQkJJHRoaXMtPnNldENlbGxBdHRyaWJ1 dGVzKCRpLCRjb2wsJGF0dHJpYnV0ZXMpOwoJCX0KCX0KCQkKCS8vIH19fQoJLy8ge3t7IHVw ZGF0ZVNwYW5HcmlkKCkKCglmdW5jdGlvbiB1cGRhdGVTcGFuR3JpZCAoJHJvdywgJGNvbCkg ewoKCQkkY29sc3BhbiA9ICR0aGlzLT5jZWxsY29sc3BhblsiJHJvdzokY29sIl07CgkJJHJv d3NwYW4gPSAkdGhpcy0+Y2VsbHJvd3NwYW5bIiRyb3c6JGNvbCJdOwoJCQoJCWlmICgkY29s c3BhbikgewoJCQlmb3IgKCRqID0gJGNvbCsxOyAoKCRqIDw9ICR0aGlzLT5jb2xzKSAmJiAo JGogPD0gKCRjb2wgKyAkY29sc3BhbiAtIDEpKSk7ICRqKyspIHsKCQkJCSR0aGlzLT5jZWxs c3BhblsiJHJvdzokaiJdID0gIlNQQU5ORUQiOwoJCQl9CgkJfQoKCQlpZiAoJHJvd3NwYW4p IHsKCQkJZm9yICgkaSA9ICRyb3crMTsgKCgkaSA8PSAkdGhpcy0+cm93cykgJiYgKCRpIDw9 ICgkcm93ICsgJHJvd3NwYW4gLSAxKSkpOyAkaSsrKSB7CgkJCQkkdGhpcy0+Y2VsbHNwYW5b IiRpOiRjb2wiXSA9ICJTUEFOTkVEIjsKCQkJfQoJCX0KCQkKCQlpZiAoJGNvbHNwYW4gJiYg JHJvd3NwYW4pIHsKCQkJZm9yICgkaSA9ICRyb3crMTsgKCgkaSA8PSAkdGhpcy0+cm93cykg JiYgKCRpIDw9ICgkcm93ICsgJHJvd3NwYW4gLSAxKSkpOyAkaSsrKSB7CgkJCQlmb3IgKCRq ID0gJGNvbCsxOyAoKCRqIDw9ICR0aGlzLT5jb2xzKSAmJiAoJGogPD0gKCRjb2wgKyAkY29s c3BhbiAtIDEpKSk7ICRqKyspIHsKCQkJCQkkdGhpcy0+Y2VsbHNwYW5bIiRpOiRqIl0gPSAi U1BBTk5FRCI7CgkJCQl9CgkJCX0KCQl9Cgl9Cgp9Cj8+ --MS_Mac_OE_3067009022_1805474_MIME_Part--