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--