HTML_Table revised
[email protected] (Bertrand Mansion) Mon, 12 Mar 2001 16:37:45 +0100
| Newsgroups | php.pear |
|---|---|
| Message-ID | <B6D2ABD9.1BD1%[email protected]> |
--MS_Mac_OE_3067259865_1320580_MIME_Part Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit Attached is a revised version of Table.php. Should I continue to post that here? If not, please open an account for me to manage this class. I reckon it should go under Experimental/HTML for a start so one could review it. With your comments and reviews, it shouldn't stay there too long. (thanks Clayton) For a reminder, the goal of this class is to generate HTML code to create and manage table layout. Thanks, Bertrand Mansion http://www.tapage.fr --MS_Mac_OE_3067259865_1320580_MIME_Part Content-type: text/plain; name="Table.php"; x-mac-creator="522A6368"; x-mac-type="54455854" Content-disposition: attachment Content-transfer-encoding: base64 PD9waHAKLy8KLy8gIEhUTUxfVGFibGUucGhwCi8vICBCZXJ0cmFuZCBNYW5zaW9uIDIwMDEw MzEyCi8vCi8qKgoqIEhUTUwgdGFibGUgdXRpbGl0eSBmdW5jdGlvbnMuCiogCiogVGhpcyBj bGFzcyBoZWxwcyB5b3UgY3JlYXRlIGh0bWwgdGFibGVzIG9uIHRoZSBmbHkuCiogSXQgaXMg ZWFzeSB0byB1c2UgYW5kIHlldCBwb3dlcmZ1bCBlbm91Z2ggdG8gY3JlYXRlIGFsbW9zdCBh bnkga2luZAoqIG9mIHRhYmxlcyB5b3Ugd291bGQgbGlrZS4gWW91IGNhbiBhbHNvIGNyZWF0 ZSBhIHRhYmxlIGludG8gYW5vdGhlcgoqIHRhYmxlIGNlbGwuIEl0IG1ha2VzIHBocCBjb2Rl IGVhc2llciB0byByZWFkIGFuZCBtYWludGFpbiwgd2l0aAoqIGxlc3MgaHRtbCB0YWdzIGlu IGl0LgoqCiogVGFibGVzIGNhbiBiZSBzaXplZCBkeW5hbWljYWxseSBhbmQgeW91IGNhbiBh ZGQgcm93cyBvciBjb2x1bW5zIGFzCiogeW91IHdhbnQgdXNpbmcgYWRkUm93IG9yIGFkZENv bCBtZXRob2RzLgoqIAoqIGh0bWwgYXR0cmlidXRlcyBhcmUgZ2l2ZW4gdG8gbWV0aG9kcyB3 aXRoIGFycmF5cyB3aGljaCBhbGxvdyB5b3UgCiogdG8gZGVmaW5lIGFuZCByZXVzZSB5b3Vy IG93biBzdHlsZXMuIEFsbCB2YWxpZCBIVE1MIDMuMCBhdHRyaWJ1dGVzCiogc2hvdWxkIGJl IHN1cHBvcnRlZC4KKiAKKiBFeGFtcGxlIDoKKgoqICR0YWJsZSA9IG5ldyBIVE1MX1RhYmxl KGFycmF5KAoJCQkJCSJyb3dzIiA9PiAzLAoJCQkJCSJjb2xzIiA9PiAzLAoJCQkJCSJiZ2Nv bG9yIiA9PiAiI0NDQ0NFRSIsCgkJCQkJImJvcmRlciIgPT4gMywKCQkJCQkid2lkdGgiID0+ IDQwMCwKCQkJCQkiY2VsbHBhZGRpbmciID0+IDYsCgkJCQkJImNlbGxzcGFjaW5nIiA9PiAz KSk7CgokdGFibGUtPnNldENlbGxBdHRyaWJ1dGVzKDIsMixhcnJheSgiYmdjb2xvciIgPT4g ImdyZWVuIikpOwoKJHRhYmxlLT5zZXRDZWxsQ29udGVudCgyLDIsImhlbGxvIik7CgokY29u dGVudDI9IndvcmxkIjsKJHRhYmxlLT5zZXRDZWxsQ29udGVudCgzLDMsJGNvbnRlbnQyKTsK JHRhYmxlLT5zZXRSb3dBdHRyaWJ1dGVzKDEsIGFycmF5KAoJCQkJCSJiZ2NvbG9yIiA9PiAi Ymx1ZSIpKTsKCiR0YWJsZS0+c2V0Um93QXR0cmlidXRlcyg0LCBhcnJheSgKCQkJCQkiYmdj b2xvciIgPT4gInllbGxvdyIsCgkJCQkJImhlaWdodCIgPT4gODApKTsKCiRjb250ZW50WzFd PSJoZWxsbzEiOwokY29udGVudFsyXT0iaGVsbG8yIjsKJGNvbnRlbnRbNl09ImhlbGxvNiI7 CiR0YWJsZS0+YWRkQ29sKCRjb250ZW50KTsKCiR0YWJsZS0+c2V0Q2VsbEF0dHJpYnV0ZXMo MiwyLGFycmF5KCJjb2xzcGFuIiA9PiAzLCAicm93c3BhbiIgPT4gMykpOwoKJHRhYmxlLT5z aG93SFRNTF9UYWJsZSgpOwoqLwoKY2xhc3MgSFRNTF9UYWJsZSB7CgoJLy8ge3t7IHByb3Bl cnRpZXMKCgkvKiogY29uc3RydWN0aW9uIHBhcmFtZXRlcnMgb2YgPFRBQkxFPiB0YWdzICov Cgl2YXIgJGF0dHJpYnV0ZXMgPSBhcnJheSgpOwoKCS8qKiBhdXRvbWF0aWNseSBncm93cyB0 aGUgdGFibGUgaWYgcm93cyBvciBjb2x1bW5zIGFyZSBhZGRlZCovCgl2YXIgJGF1dG9ncm93 ID0gMTsKCQoJLyoqIGF1dG9tYXRpY2x5IGZpbGxzIGNlbGxzIHdpdGggbm9iYWNrc3BhY2Vz ICZuYnNwOyAqLwoJdmFyICRhdXRvZmlsbCA9ICImbmJzcDsiOwoKCS8qKiBpZiB0cnVlLCBy ZXBsYWNlIGV4aXN0aW5nIGF0dHJpYnV0ZXMgd2l0aCBlbXB0eSB2YWx1ZXMgKi8KCXZhciAk b3ZlcndyaXRlID0gMDsKCgkvLyB9fX0KCS8vIHt7eyBjb25zdHJ1Y3RvcgoJCgkvKioKCSAq IEhUTUxfVGFibGUgY29uc3RydWN0b3IuCgkgKgoJICogQHBhcmFtICRhdHRyaWJ1dGVzIGFy cmF5IG9mIGF0dHJpYnV0ZXMgdXNlZCB0byBjcmVhdGUgdGhlIHRhYmxlCgkgKiBAYWNjZXNz IHB1YmxpYwoJICovCgkKCWZ1bmN0aW9uIEhUTUxfVGFibGUoJGF0dHJpYnV0ZXMgPSAiIikg ewkKCQkKCQkkdGhpcy0+cm93cyA9ICRhdHRyaWJ1dGVzWyJyb3dzIl07CgkJJHRoaXMtPmNv bHMgPSAkYXR0cmlidXRlc1siY29scyJdOwoJCSR0aGlzLT5ib3JkZXIgPSAkYXR0cmlidXRl c1siYm9yZGVyIl07CgkJJHRoaXMtPmJnY29sb3IgPSAkYXR0cmlidXRlc1siYmdjb2xvciJd OwoJCSR0aGlzLT5iYWNrZ3JvdW5kID0gJGF0dHJpYnV0ZXNbImJhY2tncm91bmQiXTsKCQkk dGhpcy0+d2lkdGggPSAkYXR0cmlidXRlc1sid2lkdGgiXTsKCQkkdGhpcy0+Y2VsbHNwYWNp bmcgPSAkYXR0cmlidXRlc1siY2VsbHNwYWNpbmciXTsKCQkkdGhpcy0+Y2VsbHBhZGRpbmcg PSAkYXR0cmlidXRlc1siY2VsbHBhZGRpbmciXTsKCQkKCX0KCgkvLyB9fX0KCS8vIHt7eyBt YWtlSFRNTF9UYWJsZSgpCgkKCWZ1bmN0aW9uIG1ha2VIVE1MX1RhYmxlICgpIHsJCgkKCQkk aHRtbCA9ICIiOwoJCQoJCWlmICgkdGhpcy0+cm93cyA9PSAwIHx8ICR0aGlzLT5jb2xzID09 IDApIHsKCQkJcmV0dXJuIDA7CgkJfQoJCQoJCSRodG1sIC49ICI8VEFCTEUiOwoJCSRodG1s IC49IChpc3NldCgkdGhpcy0+Ym9yZGVyKQkJPyAiIEJPUkRFUj0nIi4kdGhpcy0+Ym9yZGVy LiInIiA6ICIiKTsKCQkkaHRtbCAuPSAoaXNzZXQoJHRoaXMtPmJnY29sb3IpCQk/ICIgQkdD T0xPUj0nIi4kdGhpcy0+Ymdjb2xvci4iJyIgOiAiIik7CgkJJGh0bWwgLj0gKGlzc2V0KCR0 aGlzLT5iYWNrZ3JvdW5kKQkJPyAiIEJBQ0tHUk9VTkQ9JyIuJHRoaXMtPmJhY2tncm91bmQu IiciIDogIiIpOwoJCSRodG1sIC49IChpc3NldCgkdGhpcy0+d2lkdGgpCQkJPyAiIFdJRFRI PSciLiR0aGlzLT53aWR0aC4iJyIgOiAiIik7CgkJJGh0bWwgLj0gKGlzc2V0KCR0aGlzLT5j ZWxsc3BhY2luZykJPyAiIENFTExTUEFDSU5HPSciLiR0aGlzLT5jZWxsc3BhY2luZy4iJyIg OiAiIik7CgkJJGh0bWwgLj0gKGlzc2V0KCR0aGlzLT5jZWxscGFkZGluZykgCT8gIiBDRUxM UEFERElORz0nIi4kdGhpcy0+Y2VsbHBhZGRpbmcuIiciIDogIiIpOwoJCSRodG1sIC49ICI+ XG4iOwoJCQoJCWlmICgkdGhpcy0+Y2FwdGlvbikgewoJCQkkaHRtbCAuPSAiPENBUFRJT04i OwoJCQkkaHRtbCAuPSAoJHRoaXMtPmNhcHRpb25fYWxpZ24gPyAiIEFMSUdOPSciLiR0aGlz LT5jYXB0aW9uX2FsaWduLiInIiA6ICIiKTsKCQkJJGh0bWwgLj0gIj4iLiR0aGlzLT5jYXB0 aW9uLiI8L0NBUFRJT04+XG4iOwoJCX0KCQkKCQlmb3IgKCRpID0gMSA7ICRpIDw9ICR0aGlz LT5yb3dzIDsgJGkrKykgewoJCQoJCQkkaHRtbCAuPSAiPFRSPiI7CgkJCWZvciAoJGogPSAx IDsgJGogPD0gJHRoaXMtPmNvbHMgOyAkaisrKSB7CgkJCQoJCQkJaWYgKCR0aGlzLT5jZWxs c3BhblsiJGk6JGoiXSAmJiAkdGhpcy0+Y2VsbHNwYW5bIiRpOiRqIl0gPT0gIlNQQU5ORUQi KSB7CgkJCQkJJGh0bWwgLj0gIjwhLS0gc3BhbiAtLT4iOwoJCQkJCWNvbnRpbnVlOwoJCQkJ fQoJCQkJCgkJCQlpZiAoJHRoaXMtPmNlbGxoZWFkWyIkaTokaiJdKSB7CgkJCQkJJGh0bWwg Lj0gIjxUSCI7CgkJCQl9IGVsc2UgewoJCQkJCSRodG1sIC49ICI8VEQiOwoJCQkJfQoJCQoJ CQkJaWYgKCR0aGlzLT5jZWxsYWxpZ25bIiRpOiRqIl0pICRodG1sIC49ICIgQUxJR049JyIu JHRoaXMtPmNlbGxhbGlnblsiJGk6JGoiXS4iJyI7IAoJCQkJaWYgKCR0aGlzLT5jZWxsdmFs aWduWyIkaTokaiJdKSAkaHRtbCAuPSIgVkFMSUdOPSciLiR0aGlzLT5jZWxsdmFsaWduWyIk aTokaiJdLiInIjsKCQkKCQkJCWlmICgkdGhpcy0+Y2VsbHdpZHRoWyIkaTokaiJdKSAkaHRt bCAuPSAiIFdJRFRIPSciLiR0aGlzLT5jZWxsd2lkdGhbIiRpOiRqIl0uIiciOwoJCQkJaWYg KCR0aGlzLT5jZWxsaGVpZ2h0WyIkaTokaiJdKSAkaHRtbCAuPSAiIEhFSUdIVD0nIi4kdGhp cy0+Y2VsbGhlaWdodFsiJGk6JGoiXS4iJyI7CgkJCQkKCQkJCWlmICgkdGhpcy0+Y2VsbGJn Y29sb3JbIiRpOiRqIl0pICRodG1sIC49ICIgQkdDT0xPUj0nIi4kdGhpcy0+Y2VsbGJnY29s b3JbIiRpOiRqIl0uIiciOwoJCQkJaWYgKCR0aGlzLT5jZWxsbm93cmFwWyIkaTokaiJdKSAk aHRtbCAuPSAiIE5PV1JBUCciLiR0aGlzLT5jZWxsbm93cmFwWyIkaTokaiJdLiInIjsKCQkJ CQkJCgkJCQlpZiAoJHRoaXMtPmNlbGxjb2xzcGFuWyIkaTokaiJdKSAkaHRtbCAuPSAiIENP TFNQQU49JyIuJHRoaXMtPmNlbGxjb2xzcGFuWyIkaTokaiJdLiInIjsKCQkJCWlmICgkdGhp cy0+Y2VsbHJvd3NwYW5bIiRpOiRqIl0pICRodG1sIC49ICIgUk9XU1BBTj0nIi4kdGhpcy0+ Y2VsbHJvd3NwYW5bIiRpOiRqIl0uIiciOwoJCQkJCQkKCQkJCSRodG1sIC49ICI+IjsKCQkJ CQoJCQkJJGh0bWwgLj0gJHRoaXMtPmNlbGxzdGFydHN0cmluZ1siJGk6JGoiXTsKCQkJCQoJ CQkJaWYgKCR0aGlzLT5jZWxsY29udGVudFsiJGk6JGoiXSkgewoJCQkJCSRodG1sIC49ICR0 aGlzLT5jZWxsY29udGVudFsiJGk6JGoiXTsKCQkJCX0gZWxzZSB7CgkJCQkJJGh0bWwgLj0g JHRoaXMtPmF1dG9maWxsOwoJCQkJfQoJCQkJCgkJCQkkaHRtbCAuPSAkdGhpcy0+Y2VsbGVu ZHN0cmluZ1siJGk6JGoiXTsKCQkJCQkJCQkJCgkJCQlpZiAoJHRoaXMtPmNlbGxoZWFkWyIk aTokaiJdKSB7CgkJCQkJJGh0bWwgLj0gIjwvVEg+IjsKCQkJCX0gZWxzZSB7CgkJCQkJJGh0 bWwgLj0gIjwvVEQ+IjsKCQkJCX0KCQkJfQoJCQkkaHRtbCAuPSAiPC9UUj5cbiI7CgkJfQoJ CSRodG1sIC49ICI8L1RBQkxFPlxuIjsKCQkKCQlyZXR1cm4gJGh0bWw7Cgl9CgoJLy8gfX19 CgkvLyB7e3sgc2hvd0hUTUxfVGFibGUoKQoJCglmdW5jdGlvbiBzaG93SFRNTF9UYWJsZSAo KSB7CgkKCQlwcmludCAkdGhpcy0+bWFrZUhUTUxfVGFibGUoKTsKCX0KCQoJLy8gfX19Cgkv LyB7e3sgYXV0b0dyb3coKQoJCglmdW5jdGlvbiBhdXRvR3JvdyAoJGF1dG9ncm93ID0gMSkg ewoJCSR0aGlzLT5hdXRvZ3JvdyA9ICRhdXRvZ3JvdzsKCX0KCQoJLy8gfX19CgkvLyB7e3sg YXV0b0ZpbGwoKQoJCglmdW5jdGlvbiBhdXRvRmlsbCAoJGF1dG9maWxsID0gIiZuYnNwOyIp IHsKCQkkdGhpcy0+YXV0b2ZpbGwgPSAkYXV0b2ZpbGw7Cgl9CgkKCS8vIH19fQoJLy8ge3t7 IG92ZXJXcml0ZSgpCgkKCWZ1bmN0aW9uIG92ZXJXcml0ZSAoJG92ZXJ3cml0ZSA9IDApIHsK CQkkdGhpcy0+b3ZlcndyaXRlID0gJG92ZXJ3cml0ZTsKCX0KCQoJLy8gfX19CgkvLyB7e3sg c2V0VGFibGVBdHRyaWJ1dGVzKCkKCQoJZnVuY3Rpb24gc2V0VGFibGVBdHRyaWJ1dGVzICgk YXR0cmlidXRlcykgewoJCgkJaWYgKCR0aGlzLT5vdmVyd3JpdGUpIHsKCgkJCSR0aGlzLT5i Z2NvbG9yID0gJGF0dHJpYnV0ZXNbImJnY29sb3IiXTsKCQkJJHRoaXMtPmJvcmRlciA9ICRh dHRyaWJ1dGVzWyJib3JkZXIiXTsKCQkJJHRoaXMtPndpZHRoID0gJGF0dHJpYnV0ZXNbIndp ZHRoIl07CgkJCSR0aGlzLT5jZWxsc3BhY2luZyA9ICRhdHRyaWJ1dGVzWyJjZWxsc3BhY2lu ZyJdOwoJCQkkdGhpcy0+Y2VsbHBhZGRpbmcgPSAkYXR0cmlidXRlc1siY2VsbHBhZGRpbmci XTsKCQkJJHRoaXMtPmJhY2tncm91bmQgPSAkYXR0cmlidXRlc1siYmFja2dyb3VuZCJdOwoJ CQoJCX0gZWxzZSB7CgoJCQlpZiAoJGF0dHJpYnV0ZXNbImJnY29sb3IiXSkgJHRoaXMtPmJn Y29sb3IgPSAkYXR0cmlidXRlc1siYmdjb2xvciJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbImJv cmRlciJdKSAkdGhpcy0+Ym9yZGVyID0gJGF0dHJpYnV0ZXNbImJvcmRlciJdOwoJCQlpZiAo JGF0dHJpYnV0ZXNbIndpZHRoIl0pICR0aGlzLT53aWR0aCA9ICRhdHRyaWJ1dGVzWyJ3aWR0 aCJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbImNlbGxzcGFjaW5nIl0pICR0aGlzLT5jZWxsc3Bh Y2luZyA9ICRhdHRyaWJ1dGVzWyJjZWxsc3BhY2luZyJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNb ImNlbGxwYWRkaW5nIl0pICR0aGlzLT5jZWxscGFkZGluZyA9ICRhdHRyaWJ1dGVzWyJjZWxs cGFkZGluZyJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbImJhY2tncm91bmQiXSkgJHRoaXMtPmJh Y2tncm91bmQgPSAkYXR0cmlidXRlc1siYmFja2dyb3VuZCJdOwoJCX0KCX0JCgoJLy8gfX19 CgkvLyB7e3sgc2V0Q2FwdGlvbigpCgkKCWZ1bmN0aW9uIHNldENhcHRpb24gKCRjYXB0aW9u LCAkY2FwdGlvbl9hbGlnbj0iIikgewkKCQkkdGhpcy0+Y2FwdGlvbiA9ICRjYXB0aW9uOwoJ CWlmICgkY2FwdGlvbl9hbGlnbiA9PSAiVE9QIiB8fCAkY2FwdGlvbl9hbGlnbiA9PSAiQk9U VE9NIikgewoJCQkkdGhpcy0+Y2FwdGlvbl9hbGlnbiA9ICRjYXB0aW9uX2FsaWduOwoJCX0g ZWxzZSB7CgkJCSRlcnJvcltdID0gInNldENhcHRpb24gOiBJbnZhbGlkIEFsaWdubWVudFxu IjsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0JCgkKCS8vIH19fQoJLy8ge3t7IHNldENlbGxD b250ZW50KCkKCQoJZnVuY3Rpb24gc2V0Q2VsbENvbnRlbnQgKCRyb3csICRjb2wsICRjb250 ZW50PSIiKSB7CQoJCQkJCgkJaWYgKCRyb3cgPiAkdGhpcy0+cm93KSB7CgkJCWlmICgkdGhp cy0+YXV0b2dyb3cpIHsKCQkJCSR0aGlzLT5yb3cgPSAkcm93OwoJCQl9IGVsc2UgewoJCQkJ JGVycm9yW10gPSAic2V0Q2VsbENvbnRlbnQgOiBJbnZhbGlkIHRhYmxlIHJvdyByZWZlcmVu Y2UiOwoJCQl9CgkJfQoKCQlpZiAoJGNvbCA+ICR0aGlzLT5jb2wpIHsKCQkJaWYgKCR0aGlz LT5hdXRvZ3JvdykgewoJCQkJJHRoaXMtPmNvbCA9ICRjb2w7CgkJCX0gZWxzZSB7CgkJCQkk ZXJyb3JbXSA9ICJzZXRDZWxsQ29udGVudCA6IEludmFsaWQgdGFibGUgY29sdW1uIHJlZmVy ZW5jZSI7CgkJCX0KCQl9CgkJCgkJJHRoaXMtPmNlbGxjb250ZW50WyIkcm93OiRjb2wiXSA9 ICRjb250ZW50OwoKCX0JCgoJLy8gfX19CgkvLyB7e3sgZ2V0Q2VsbCgpCgkKCWZ1bmN0aW9u IGdldENlbGwgKCRyb3csICRjb2wpIHsJCQoJCXJldHVybiAkdGhpcy0+Y2VsbGNvbnRlbnRb IiRyb3c6JGNvbCJdOwoJfQoKCS8vIH19fQoJLy8ge3t7IHNldENlbGxBdHRyaWJ1dGVzKCkK CQoJZnVuY3Rpb24gc2V0Q2VsbEF0dHJpYnV0ZXMgKCRyb3csICRjb2wsICRhdHRyaWJ1dGVz KSB7CgkJCgkJaWYgKCR0aGlzLT5vdmVyd3JpdGUpIHsKCgkJCSR0aGlzLT5jZWxsYWxpZ25b IiRyb3c6JGNvbCJdID0gJGF0dHJpYnV0ZXNbImFsaWduIl07CgkJCSR0aGlzLT5jZWxsdmFs aWduWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJ2YWxpZ24iXTsKCQkJJHRoaXMtPmNl bGxoZWFkWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJoZWFkIl07CgkJCSR0aGlzLT5j ZWxsbm93cmFwWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJub3dyYXAiXTsKCQkJJHRo aXMtPmNlbGx3aWR0aFsiJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1sid2lkdGgiXTsKCQkJ JHRoaXMtPmNlbGxoZWlnaHRbIiRyb3c6JGNvbCJdID0gJGF0dHJpYnV0ZXNbImhlaWdodCJd OwoJCQkkdGhpcy0+Y2VsbGJnY29sb3JbIiRyb3c6JGNvbCJdID0gJGF0dHJpYnV0ZXNbImJn Y29sb3IiXTsKCQkJJHRoaXMtPmNlbGxzdGFydHN0cmluZ1siJHJvdzokY29sIl0gPSAkYXR0 cmlidXRlc1sic3RhcnRzdHJpbmciXTsKCQkJJHRoaXMtPmNlbGxlbmRzdHJpbmdbIiRyb3c6 JGNvbCJdID0gJGF0dHJpYnV0ZXNbImVuZHN0cmluZyJdOwoJCQoJCX0gZWxzZSB7CgoJCQlp ZiAoJGF0dHJpYnV0ZXNbImFsaWduIl0pICR0aGlzLT5jZWxsYWxpZ25bIiRyb3c6JGNvbCJd ID0gJGF0dHJpYnV0ZXNbImFsaWduIl07CgkJCWlmICgkYXR0cmlidXRlc1sidmFsaWduIl0p ICR0aGlzLT5jZWxsdmFsaWduWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJ2YWxpZ24i XTsKCQkJaWYgKCRhdHRyaWJ1dGVzWyJoZWFkIl0pICR0aGlzLT5jZWxsaGVhZFsiJHJvdzok Y29sIl0gPSAkYXR0cmlidXRlc1siaGVhZCJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbIm5vd3Jh cCJdKSAkdGhpcy0+Y2VsbG5vd3JhcFsiJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1sibm93 cmFwIl07CgkJCWlmICgkYXR0cmlidXRlc1sid2lkdGgiXSkgJHRoaXMtPmNlbGx3aWR0aFsi JHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1sid2lkdGgiXTsKCQkJaWYgKCRhdHRyaWJ1dGVz WyJoZWlnaHQiXSkgJHRoaXMtPmNlbGxoZWlnaHRbIiRyb3c6JGNvbCJdID0gJGF0dHJpYnV0 ZXNbImhlaWdodCJdOwoJCQlpZiAoJGF0dHJpYnV0ZXNbImJnY29sb3IiXSkgJHRoaXMtPmNl bGxiZ2NvbG9yWyIkcm93OiRjb2wiXSA9ICRhdHRyaWJ1dGVzWyJiZ2NvbG9yIl07CgkJCWlm ICgkYXR0cmlidXRlc1sic3RhcnRzdHJpbmciXSkgJHRoaXMtPmNlbGxzdGFydHN0cmluZ1si JHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1sic3RhcnRzdHJpbmciXTsKCQkJaWYgKCRhdHRy aWJ1dGVzWyJlbmRzdHJpbmciXSkgJHRoaXMtPmNlbGxlbmRzdHJpbmdbIiRyb3c6JGNvbCJd ID0gJGF0dHJpYnV0ZXNbImVuZHN0cmluZyJdOwoJCX0KCQkKCQlpZiAoJGF0dHJpYnV0ZXNb InJvd3NwYW4iXSkgewoJCQkkdGhpcy0+Y2VsbHJvd3NwYW5bIiRyb3c6JGNvbCJdID0gJGF0 dHJpYnV0ZXNbInJvd3NwYW4iXTsKCQkJJHRoaXMtPnVwZGF0ZVNwYW5HcmlkICgkcm93LCAk Y29sKTsKCQl9CgoJCWlmICgkYXR0cmlidXRlc1siY29sc3BhbiJdKSB7CgkJCSR0aGlzLT5j ZWxsY29sc3BhblsiJHJvdzokY29sIl0gPSAkYXR0cmlidXRlc1siY29sc3BhbiJdOwoJCQkk dGhpcy0+dXBkYXRlU3BhbkdyaWQgKCRyb3csICRjb2wpOwoJCX0KCX0JCgkJCgkvLyB9fX0K CS8vIHt7eyBhZGRSb3coKQoJCglmdW5jdGlvbiBhZGRSb3cgKCRjb250ZW50KSB7CQkKCgkJ ZW5kICgkY29udGVudCk7CgkJJGNvbCA9IGtleSAoJGNvbnRlbnQpOwoJCSRjb2wrKzsKCQkK CQlpZiAoJGNvbCA+ICR0aGlzLT5jb2xzKSB7CgkJCSR0aGlzLT5jb2xzID0gJGNvbDsKCQl9 CgkJJHRoaXMtPnJvd3MrKzsKCgkJZm9yICgkaT0xOyRpIDw9ICRjb2wrMTskaSsrKSB7CgkJ CSR0aGlzLT5jZWxsY29udGVudFsiJHRoaXMtPnJvd3M6JGkiXSA9ICRjb250ZW50WyRpLTFd OwoJCX0KCX0KCQkKCQkKCS8vIH19fQoJLy8ge3t7IHNldFJvd0F0dHJpYnV0ZXMoKQoJCglm dW5jdGlvbiBzZXRSb3dBdHRyaWJ1dGVzICgkcm93LCAkYXR0cmlidXRlcykgewoKCQlmb3Ig KCRpID0gMTsgJGkgPD0gJHRoaXMtPmNvbHM7ICRpKyspIHsKCQkJJHRoaXMtPnNldENlbGxB dHRyaWJ1dGVzKCRyb3csJGksJGF0dHJpYnV0ZXMpOwoJCX0KCX0KCQkKCS8vIH19fQoJLy8g e3t7IGFsdFJvd0F0dHJpYnV0ZXMoKQoJCglmdW5jdGlvbiBhbHRSb3dBdHRyaWJ1dGVzICgk c3RhcnRpbmdfcm93LCAkYXR0cmlidXRlMSwgJGF0dHJpYnV0ZTIpIHsKCgkJZm9yICgkcm93 ID0gJHN0YXJ0aW5nX3JvdyA7ICRyb3cgPD0gJHRoaXMtPnJvd3MgOyAkcm93KyspIHsKCQkK CQkJJGF0dHJpYnV0ZXMgPSAoJHJvdyUyPT0wKSA/ICRhdHRyaWJ1dGUxIDogJGF0dHJpYnV0 ZTI7CgkJCSR0aGlzLT5zZXRSb3dBdHRyaWJ1dGVzKCRyb3csJGF0dHJpYnV0ZXMpOwoJCX0K CX0KCgkvLyB9fX0KCS8vIHt7eyBjb3VudFJvd3MoKQoJCglmdW5jdGlvbiBjb3VudFJvd3Mg KCkgewoJCgkJcmV0dXJuICR0aGlzLT5yb3dzOwoJfQoKCS8vIH19fQoJLy8ge3t7IGFkZENv bCgpCgkKCWZ1bmN0aW9uIGFkZENvbCAoJGNvbnRlbnQpIHsJCQoKCQllbmQgKCRjb250ZW50 KTsKCQkkcm93ID0ga2V5ICgkY29udGVudCk7CgkJJHJvdysrOwoJCQoJCWlmICgkcm93ID4g JHRoaXMtPnJvd3MpIHsKCQkJJHRoaXMtPnJvd3MgPSAkcm93OwoJCX0KCQkkdGhpcy0+Y29s cysrOwoKCQlmb3IgKCRpPTE7JGkgPD0gJHJvdzskaSsrKSB7CgkJCSR0aGlzLT5jZWxsY29u dGVudFsiJGk6JHRoaXMtPmNvbHMiXSA9ICRjb250ZW50WyRpLTFdOwoJCX0KCX0KCQkKCQkK CS8vIH19fQoJLy8ge3t7IHNldENvbEF0dHJpYnV0ZXMoKQoJCglmdW5jdGlvbiBzZXRDb2xB dHRyaWJ1dGVzICgkY29sLCAkYXR0cmlidXRlcykgewkJCgoJCWZvciAoJGkgPSAxOyAkaSA8 PSAkdGhpcy0+cm93czsgJGkrKykgewoJCQkkdGhpcy0+c2V0Q2VsbEF0dHJpYnV0ZXMoJGks JGNvbCwkYXR0cmlidXRlcyk7CgkJfQoJfQoKCS8vIH19fQoJLy8ge3t7IGNvdW50Q29scygp CgkKCWZ1bmN0aW9uIGNvdW50Q29scyAoKSB7CgkKCQlyZXR1cm4gJHRoaXMtPmNvbHM7Cgl9 CgoJLy8gfX19CgkvLyB7e3sgX3VwZGF0ZVNwYW5HcmlkKCkKCglmdW5jdGlvbiBfdXBkYXRl U3BhbkdyaWQgKCRyb3csICRjb2wpIHsKCgkJJGNvbHNwYW4gPSAkdGhpcy0+Y2VsbGNvbHNw YW5bIiRyb3c6JGNvbCJdOwoJCSRyb3dzcGFuID0gJHRoaXMtPmNlbGxyb3dzcGFuWyIkcm93 OiRjb2wiXTsKCQkKCQlpZiAoJGNvbHNwYW4pIHsKCQkJZm9yICgkaiA9ICRjb2wrMTsgKCgk aiA8PSAkdGhpcy0+Y29scykgJiYgKCRqIDw9ICgkY29sICsgJGNvbHNwYW4gLSAxKSkpOyAk aisrKSB7CgkJCQkkdGhpcy0+Y2VsbHNwYW5bIiRyb3c6JGoiXSA9ICJTUEFOTkVEIjsKCQkJ fQoJCX0KCgkJaWYgKCRyb3dzcGFuKSB7CgkJCWZvciAoJGkgPSAkcm93KzE7ICgoJGkgPD0g JHRoaXMtPnJvd3MpICYmICgkaSA8PSAoJHJvdyArICRyb3dzcGFuIC0gMSkpKTsgJGkrKykg ewoJCQkJJHRoaXMtPmNlbGxzcGFuWyIkaTokY29sIl0gPSAiU1BBTk5FRCI7CgkJCX0KCQl9 CgkJCgkJaWYgKCRjb2xzcGFuICYmICRyb3dzcGFuKSB7CgkJCWZvciAoJGkgPSAkcm93KzE7 ICgoJGkgPD0gJHRoaXMtPnJvd3MpICYmICgkaSA8PSAoJHJvdyArICRyb3dzcGFuIC0gMSkp KTsgJGkrKykgewoJCQkJZm9yICgkaiA9ICRjb2wrMTsgKCgkaiA8PSAkdGhpcy0+Y29scykg JiYgKCRqIDw9ICgkY29sICsgJGNvbHNwYW4gLSAxKSkpOyAkaisrKSB7CgkJCQkJJHRoaXMt PmNlbGxzcGFuWyIkaTokaiJdID0gIlNQQU5ORUQiOwoJCQkJfQoJCQl9CgkJfQoJfQoKfQo/ Pg== --MS_Mac_OE_3067259865_1320580_MIME_Part--