<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>6929</bug_id>
          
          <creation_ts>2006-01-29 23:44:54 -0800</creation_ts>
          <short_desc>Remove QSortedList and QPtrList sorting support</short_desc>
          <delta_ts>2006-01-30 00:27:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>30597</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-29 23:44:54 -0800</bug_when>
    <thetext>Remove QSortedList and QPtrList sorting support. Should be replaced with Vector and std::sort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30598</commentid>
    <comment_count>1</comment_count>
      <attachid>6101</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-29 23:50:36 -0800</bug_when>
    <thetext>Created attachment 6101
kill QSortedList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30599</commentid>
    <comment_count>2</comment_count>
      <attachid>6101</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-29 23:58:24 -0800</bug_when>
    <thetext>Comment on attachment 6101
kill QSortedList

I see one bad problem here, free used where delete should be used. Fix that, and then r=me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6101</attachid>
            <date>2006-01-29 23:50:36 -0800</date>
            <delta_ts>2006-01-29 23:58:24 -0800</delta_ts>
            <desc>kill QSortedList</desc>
            <filename>remove-qsortedlist.patch.txt</filename>
            <type>text/plain</type>
            <size>27573</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VkaXRpbmcvdmlzaWJsZV90ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRt
bC9lZGl0aW5nL3Zpc2libGVfdGV4dC5jcHAJKHJldmlzaW9uIDEyNDY0KQorKysga2h0bWwvZWRp
dGluZy92aXNpYmxlX3RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNiArMjA4LDExIEBA
IHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBjb21wYXJlQm94U3RhcnQoY29uc3QgSW5saW5lVGV4dEJveCAqZmlyc3QsIGNvbnN0IElu
bGluZVRleHRCb3ggKnNlY29uZCkKK3sKKyAgICByZXR1cm4gZmlyc3QtPnN0YXJ0KCkgPCBzZWNv
bmQtPnN0YXJ0KCk7Cit9CisKIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiB7
CiAgICAgbV9sYXN0VGV4dE5vZGUgPSBtX25vZGU7CkBAIC0yNTIsMTAgKzI1NywxMSBAQCBib29s
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICBmb3IgKElubGluZVRleHRC
b3ggKiB0ZXh0Qm94ID0gcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOyB0ZXh0Qm94OyB0ZXh0Qm94
ID0gdGV4dEJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94
ZXMuYXBwZW5kKHRleHRCb3gpOwogICAgICAgICB9Ci0gICAgICAgIG1fc29ydGVkVGV4dEJveGVz
LnNvcnQoKTsgCisgICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZFRleHRCb3hlcy5iZWdpbigpLCBt
X3NvcnRlZFRleHRCb3hlcy5lbmQoKSwgY29tcGFyZUJveFN0YXJ0KTsgCisgICAgICAgIG1fc29y
dGVkVGV4dEJveGVzUG9zaXRpb24gPSAwOwogICAgIH0KICAgICAKLSAgICBtX3RleHRCb3ggPSBy
ZW5kZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVzLmZpcnN0
KCkgOiByZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCk7CisgICAgbV90ZXh0Qm94ID0gcmVuZGVyZXIt
PmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyBtX3NvcnRlZFRleHRCb3hlc1swXSA6IHJlbmRlcmVy
LT5maXJzdFRleHRCb3goKTsKICAgICBoYW5kbGVUZXh0Qm94KCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yNzEsNyArMjc3LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgICAgICBpbnQgcnVuU3RhcnQgPSBrTWF4KHRleHRCb3hTdGFydCwgc3RhcnQpOwogCiAg
ICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoaXMg
cnVuLgotICAgICAgICBJbmxpbmVUZXh0Qm94ICpmaXJzdFRleHRCb3ggPSByZW5kZXJlci0+Y29u
dGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVzLmdldEZpcnN0KCkgOiByZW5k
ZXJlci0+Zmlyc3RUZXh0Qm94KCk7CisgICAgICAgIElubGluZVRleHRCb3ggKmZpcnN0VGV4dEJv
eCA9IHJlbmRlcmVyLT5jb250YWluc1JldmVyc2VkVGV4dCgpID8gbV9zb3J0ZWRUZXh0Qm94ZXNb
MF0gOiByZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCk7CiAgICAgICAgIGJvb2wgbmVlZFNwYWNlID0g
bV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZQogICAgICAgICAgICAgfHwgKG1f
dGV4dEJveCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0YXJ0ID09IHJ1blN0YXJ0ICYmIHJ1
blN0YXJ0ID4gMCk7CiAgICAgICAgIGlmIChuZWVkU3BhY2UgJiYgIWlzQ29sbGFwc2libGVXaGl0
ZXNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgIW1fbGFzdENoYXJhY3Rlci5pc051bGwoKSkgewpA
QCAtMjgyLDcgKzI4OCwxMiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAg
ICAgICAgIGludCBydW5FbmQgPSBrTWluKHRleHRCb3hFbmQsIGVuZCk7CiAgICAgICAgIAogICAg
ICAgICAvLyBEZXRlcm1pbmUgd2hhdCB0aGUgbmV4dCB0ZXh0IGJveCB3aWxsIGJlLCBidXQgZG9u
J3QgYWR2YW5jZSB5ZXQKLSAgICAgICAgSW5saW5lVGV4dEJveCAqbmV4dFRleHRCb3ggPSByZW5k
ZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVzLmdldE5leHQo
KSA6IG1fdGV4dEJveC0+bmV4dFRleHRCb3goKTsKKyAgICAgICAgSW5saW5lVGV4dEJveCAqbmV4
dFRleHRCb3ggPSAwOworICAgICAgICBpZiAocmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0
KCkpIHsKKyAgICAgICAgICAgIGlmIChtX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uICsgMSA8IG1f
c29ydGVkVGV4dEJveGVzLnNpemUoKSkKKyAgICAgICAgICAgICAgICBuZXh0VGV4dEJveCA9IG1f
c29ydGVkVGV4dEJveGVzW21fc29ydGVkVGV4dEJveGVzUG9zaXRpb24gKyAxXTsKKyAgICAgICAg
fSBlbHNlIAorICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX3RleHRCb3gtPm5leHRUZXh0Qm94
KCk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0IDwgcnVuRW5kKSB7CiAgICAgICAgICAgICAvLyBI
YW5kbGUgZWl0aGVyIGEgc2luZ2xlIG5ld2xpbmUgY2hhcmFjdGVyICh3aGljaCBiZWNvbWVzIGEg
c3BhY2UpLApAQCAtMzIzLDEzICszMzQsMTMgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRCb3goKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90ZXh0Qm94ID0gbmV4dFRleHRC
b3g7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCi0g
ICAgICAgICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXMubmV4dCgpOworICAgICAgICAgICAgICAg
ICsrbV9zb3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAvLyBBZHZhbmNlIGFuZCBjb250aW51ZQogICAgICAgICBtX3RleHRCb3gg
PSBuZXh0VGV4dEJveDsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5jb250YWluc1JldmVyc2VkVGV4
dCgpKQotICAgICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXMubmV4dCgpOworICAgICAgICAgICAg
KyttX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uOwogICAgIH0KIH0KIApJbmRleDoga2h0bWwvZWRp
dGluZy92aXNpYmxlX3RleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lZGl0aW5nL3Zpc2libGVf
dGV4dC5oCShyZXZpc2lvbiAxMjQ2NCkKKysrIGtodG1sL2VkaXRpbmcvdmlzaWJsZV90ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgInhtbC9kb20yX3Jh
bmdlaW1wbC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKLSNpbmNsdWRlICJxc29ydGVk
bGlzdC5oIgorI2luY2x1ZGUgPGt4bWxjb3JlL1ZlY3Rvci5oPgogCiAjaW5jbHVkZSA8cXN0cmlu
Zy5oPgogCkBAIC0xMTYsNyArMTE2LDggQEAgcHJpdmF0ZToKICAgICBRQ2hhciBtX3NpbmdsZUNo
YXJhY3RlckJ1ZmZlcjsKICAgICAKICAgICAvLyBVc2VkIHdoZW4gdGV4dCBib3hlcyBhcmUgb3V0
IG9mIG9yZGVyIChIZWJyZXcvQXJhYmljIHcvIGVtYmVkZWQgTFRSIHRleHQpCi0gICAgUVNvcnRl
ZExpc3Q8SW5saW5lVGV4dEJveD4gbV9zb3J0ZWRUZXh0Qm94ZXM7CisgICAgVmVjdG9yPElubGlu
ZVRleHRCb3gqPiBtX3NvcnRlZFRleHRCb3hlczsKKyAgICBzaXplX3QgbV9zb3J0ZWRUZXh0Qm94
ZXNQb3NpdGlvbjsKIH07CiAKIC8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIERPTSByYW5nZSwgcmV0
dXJuaW5nIGFsbCB0aGUgdGV4dCwgYW5kIDAtbGVuZ3RoIGJvdW5kYXJpZXMKSW5kZXg6IHJlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaAkocmV2aXNpb24gMTI0NjQpCisrKyByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OSwxMCArOTksNiBAQCBwdWJsaWM6CiAgICAgLy8gT3ZlcnJpZGRlbiB0
byBwcmV2ZW50IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgogICAgIHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHB0ciwgc2l6ZV90IHN6KTsKICAgICAKLSAgICAvLyBDdXJy
ZW50IHVzZWQgb25seSBmb3Igc29ydGluZywgPT0gY291bGQgYmUgbWFkZSBtb3JlIHJvYnVzdCBp
ZiBuZWVkZWQKLSAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IElubGluZVRleHRCb3ggJmIpIHsg
cmV0dXJuIG1fc3RhcnQgPT0gYi5tX3N0YXJ0OyB9Ci0gICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0
IElubGluZVRleHRCb3ggJmIpIHsgcmV0dXJuIG1fc3RhcnQgPCBiLm1fc3RhcnQ7IH0KLSAgICAg
ICAgCiBwcml2YXRlOgogICAgIC8vIFRoZSBub3JtYWwgb3BlcmF0b3IgbmV3IGlzIGRpc2FsbG93
ZWQuCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeikgdGhyb3coKTsKSW5kZXg6IFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNDY0KQorKysgV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDYgQEAK
IAkJOTNGMTk5OEUwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVNjcm9sbFZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NkI1MDJERTNCODYwMUVB
NDEyMiAvKiBLV1FTY3JvbGxWaWV3LmggKi87IH07CiAJCTkzRjE5OThGMDgyNDVFNTkwMDFFOUFC
QyAvKiBLV1FTaWduYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1MTE3QkM5MDJGOUZGRUYwMTg2MzVDRSAvKiBLV1FTaWduYWwuaCAqLzsgfTsKIAkJ
OTNGMTk5OTEwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MTE3QkNCMDJGOUZGRUYwMTg2MzVDRSAvKiBL
V1FTbG90LmggKi87IH07Ci0JCTkzRjE5OTkyMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTb3J0ZWRM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3
ODZCNzAyREUzQjg2MDFFQTQxMjIgLyogS1dRU29ydGVkTGlzdC5oICovOyB9OwogCQk5M0YxOTk5
MzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODZCOTAyREUzQjg2MDFFQTQxMjIgLyogS1dRU3Ry
aW5nLmggKi87IH07CiAJCTkzRjE5OTk0MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTdHJpbmdMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODZC
QTAyREUzQjg2MDFFQTQxMjIgLyogS1dRU3RyaW5nTGlzdC5oICovOyB9OwogCQk5M0YxOTk5NTA4
MjQ1RTU5MDAxRTlBQkMgLyogS1dRU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NkJCMDJERTNCODYwMUVBNDEyMiAvKiBLV1FTdHlsZS5o
ICovOyB9OwpAQCAtMjIyMyw3ICsyMjIyLDYgQEAKIAkJRjU4Nzg2QjMwMkRFM0I4NjAxRUE0MTIy
IC8qIEtXUVJlZ0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBLV1FSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NkI0MDJERTNCODYwMUVBNDEyMiAvKiBLV1FS
ZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gS1dRUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlGNTg3ODZCNTAyREUzQjg2MDFFQTQxMjIgLyogS1dRU2Nyb2xsVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
V1FTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwotCQlGNTg3ODZCNzAyREUzQjg2MDFFQTQxMjIgLyogS1dRU29ydGVkTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
V1FTb3J0ZWRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlGNTg3ODZCOTAyREUzQjg2MDFFQTQxMjIgLyogS1dRU3RyaW5nLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtXUVN0
cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJRjU4Nzg2QkEwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVN0cmluZ0xpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dRU3RyaW5n
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJRjU4Nzg2QkIwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVN0eWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtXUVN0eWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAt
MzgwMyw3ICszODAxLDYgQEAKIAkJCQlGNTg3ODUyQzAyREUzNzU5MDFFQTQxMjIgLyogS1dRUmVn
aW9uLmNwcCAqLywKIAkJCQlGNTg3ODZCNTAyREUzQjg2MDFFQTQxMjIgLyogS1dRU2Nyb2xsVmll
dy5oICovLAogCQkJCUY1ODc4NTJFMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FTY3JvbGxWaWV3Lm1t
ICovLAotCQkJCUY1ODc4NkI3MDJERTNCODYwMUVBNDEyMiAvKiBLV1FTb3J0ZWRMaXN0LmggKi8s
CiAJCQkJQkM4NkZCOEQwNjFGNUMyMzAwNkJCODIyIC8qIEtXUVNsaWRlci5oICovLAogCQkJCUJD
ODZGQjhFMDYxRjVDMjMwMDZCQjgyMiAvKiBLV1FTbGlkZXIubW0gKi8sCiAJCQkJRjU4Nzg2Qjkw
MkRFM0I4NjAxRUE0MTIyIC8qIEtXUVN0cmluZy5oICovLApAQCAtMzkzNCw3ICszOTMxLDYgQEAK
IAkJCQk5M0YxOTk4RTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRU2Nyb2xsVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNGMTk5OEYwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVNpZ25hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNGMTk5OTEwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVNsb3QuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTkzRjE5OTkyMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTb3J0ZWRMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk5MzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk5NDA4MjQ1RTU5MDAxRTlBQkMgLyogS1dR
U3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5OTUwODI0NUU1OTAwMUU5QUJD
IC8qIEtXUVN0eWxlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2Uv
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaAkocmV2aXNpb24gMTI0NjQpCisrKyBrY2Fu
dmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAjaWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIkNvbG9yLmgi
Ci0jaW5jbHVkZSA8cTNwdHJsaXN0Lmg+CisjaW5jbHVkZSA8a3htbGNvcmUvVmVjdG9yLmg+CiAK
ICNpbmNsdWRlIDxrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaD4KICNpbmNs
dWRlIDxrY2FudmFzL0tDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmg+CkBAIC0zOSwyNyArMzksOCBA
QCB0eXBlZGVmIGVudW0KIAogUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRz
LCBLQ0dyYWRpZW50U3ByZWFkTWV0aG9kIG0pOwogCi1zdHJ1Y3QgS0NHcmFkaWVudE9mZnNldFBh
aXIKLXsKLSAgICBmbG9hdCBvZmZzZXQ7Ci0gICAgQ29sb3IgY29sb3I7Ci19OwotCi1jbGFzcyBL
Q1NvcnRlZEdyYWRpZW50U3RvcExpc3QgOiBwdWJsaWMgUTNQdHJMaXN0PEtDR3JhZGllbnRPZmZz
ZXRQYWlyPgotewotcHVibGljOgotICAgIEtDU29ydGVkR3JhZGllbnRTdG9wTGlzdCgpOwotICAg
IHZvaWQgYWRkU3RvcChmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yICZjb2xvcik7Ci0KLSAgICB0
eXBlZGVmIFEzUHRyTGlzdEl0ZXJhdG9yPEtDR3JhZGllbnRPZmZzZXRQYWlyPiBJdGVyYXRvcjsK
LQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgaW50IGNvbXBhcmVJdGVtcyhRM1B0ckNvbGxlY3Rp
b246Okl0ZW0gaXRlbTEsIFEzUHRyQ29sbGVjdGlvbjo6SXRlbSBpdGVtMik7Ci1wcml2YXRlOgot
ICAgIGZyaWVuZCBRVGV4dFN0cmVhbSAmb3BlcmF0b3I8PChRVGV4dFN0cmVhbSAmLCBjb25zdCBL
Q1NvcnRlZEdyYWRpZW50U3RvcExpc3QgJik7Ci19OwotCi1RVGV4dFN0cmVhbSAmb3BlcmF0b3I8
PChRVGV4dFN0cmVhbSAmLCBjb25zdCBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3QgJik7Cit0eXBl
ZGVmIHN0ZDo6cGFpcjxmbG9hdCwgQ29sb3I+IEtDR3JhZGllbnRTdG9wOworaW5saW5lIEtDR3Jh
ZGllbnRTdG9wIG1ha2VHcmFkaWVudFN0b3AoZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29s
b3IpIHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG9mZnNldCwgY29sb3IpOyB9CiAKIGNsYXNzIEtD
YW52YXNNYXRyaXg7CiBjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCA6IHB1Ymxp
YyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIKQEAgLTY5LDggKzUwLDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KCk7CiAKICAgICAvLyAnR3JhZGll
bnQnIGludGVyZmFjZQotICAgIEtDU29ydGVkR3JhZGllbnRTdG9wTGlzdCAmZ3JhZGllbnRTdG9w
cygpIGNvbnN0OwotICAgIHZvaWQgc2V0R3JhZGllbnRTdG9wcyhjb25zdCBLQ1NvcnRlZEdyYWRp
ZW50U3RvcExpc3QgJnN0b3BzKTsKKyAgICBjb25zdCBWZWN0b3I8S0NHcmFkaWVudFN0b3A+JiBn
cmFkaWVudFN0b3BzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRHcmFkaWVudFN0b3BzKGNvbnN0IFZl
Y3RvcjxLQ0dyYWRpZW50U3RvcD4mKTsKKyAgICB2b2lkIHNldEdyYWRpZW50U3RvcHMoS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQqKTsKIAogICAgIEtDR3JhZGllbnRTcHJlYWRNZXRob2Qg
c3ByZWFkTWV0aG9kKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRHcmFkaWVudFNwcmVhZE1ldGhvZChj
b25zdCBLQ0dyYWRpZW50U3ByZWFkTWV0aG9kICZtZXRob2QpOwpJbmRleDoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaAkocmV2aXNp
b24gMTI0NjQpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVy
UXVhcnR6LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDggKzc2LDggQEAgcHVibGljOgogICAgIEtS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KCk7CiAgICAgfktSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50UXVhcnR6KCk7CiAgICAgCi0gICAgdm9pZCB1cGRhdGVRdWFydHpHcmFk
aWVudFN0b3BzQ2FjaGUoY29uc3QgS0NTb3J0ZWRHcmFkaWVudFN0b3BMaXN0ICZzdG9wcyk7Ci0g
ICAgdm9pZCB1cGRhdGVRdWFydHpHcmFkaWVudENhY2hlKGNvbnN0IEtSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50ICpzZXJ2ZXIpOworICAgIHZvaWQgdXBkYXRlUXVhcnR6R3JhZGllbnRTdG9w
c0NhY2hlKGNvbnN0IFZlY3RvcjxLQ0dyYWRpZW50U3RvcD4mIHN0b3BzKTsKKyAgICB2b2lkIHVw
ZGF0ZVF1YXJ0ekdyYWRpZW50Q2FjaGUoY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGll
bnQqIHNlcnZlcik7CiAKIHB1YmxpYzoKICAgICAvLyBkdWUgdG8gYyBmdW5jdGlvbnMKSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0
ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50
U2VydmVyR3JhZGllbnRRdWFydHoubW0JKHJldmlzaW9uIDEyNDY0KQorKysga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjksOCArMjY5LDcgQEAgbV9zdG9wc0NhY2hlKDApLCBtX3N0b3BzQ291bnQo
MCksIG1fc2hhZAogCiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6fktSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KCkKIHsKLSAgICBpZiAobV9zdG9wc0NhY2hl
KQotICAgICAgICBmcmVlKG1fc3RvcHNDYWNoZSk7CisgICAgZGVsZXRlIG1fc3RvcHNDYWNoZTsK
ICAgICBDR1NoYWRpbmdSZWxlYXNlKG1fc2hhZGluZ0NhY2hlKTsKICAgICBkZWxldGUgbV9tYXNr
SW1hZ2U7CiB9CkBAIC0zMDMsMjcgKzMwMiwyMSBAQCB2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50UXVhcnR6CiAgICAgfQogfQogCi12b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50UXVhcnR6Ojp1cGRhdGVRdWFydHpHcmFkaWVudFN0b3BzQ2FjaGUoY29uc3QgS0NTb3J0
ZWRHcmFkaWVudFN0b3BMaXN0ICZzdG9wcykKK3ZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnRRdWFydHo6OnVwZGF0ZVF1YXJ0ekdyYWRpZW50U3RvcHNDYWNoZShjb25zdCBWZWN0b3I8
S0NHcmFkaWVudFN0b3A+JiBzdG9wcykKIHsKLSAgICBpZiAobV9zdG9wc0NhY2hlKSB7CisgICAg
aWYgKG1fc3RvcHNDYWNoZSkKICAgICAgICAgZnJlZShtX3N0b3BzQ2FjaGUpOwotICAgIH0KLSAg
ICBtX3N0b3BzQ291bnQgPSBzdG9wcy5jb3VudCgpOwotICAgIG1fc3RvcHNDYWNoZSA9IChRdWFy
dHpHcmFkaWVudFN0b3AgKiltYWxsb2MobV9zdG9wc0NvdW50ICogc2l6ZW9mKFF1YXJ0ekdyYWRp
ZW50U3RvcCkpOwotICAgIAotICAgIEtDU29ydGVkR3JhZGllbnRTdG9wTGlzdDo6SXRlcmF0b3Ig
aXQgPSBzdG9wcy5iZWdpbigpOwotICAgIEtDU29ydGVkR3JhZGllbnRTdG9wTGlzdDo6SXRlcmF0
b3IgZW5kID0gc3RvcHMuZW5kKCk7CisKKyAgICBtX3N0b3BzQ291bnQgPSBzdG9wcy5zaXplKCk7
CisgICAgbV9zdG9wc0NhY2hlID0gbmV3IFF1YXJ0ekdyYWRpZW50U3RvcFttX3N0b3BzQ291bnRd
OwogICAgIAotICAgIGludCBpbmRleCA9IDA7CiAgICAgZmxvYXQgcHJldmlvdXNPZmZzZXQgPSAw
LjBmOwotICAgIGZvcig7IGl0LmN1cnJlbnQoKTsgKytpdCkgewotICAgICAgICBLQ0dyYWRpZW50
T2Zmc2V0UGFpciAqc3RvcCA9ICgqaXQpOwotICAgICAgICBtX3N0b3BzQ2FjaGVbaW5kZXhdLm9m
ZnNldCA9IHN0b3AtPm9mZnNldDsKLSAgICAgICAgbV9zdG9wc0NhY2hlW2luZGV4XS5wcmV2aW91
c0RlbHRhSW52ZXJzZSA9IDEuMGYvKHN0b3AtPm9mZnNldCAtIHByZXZpb3VzT2Zmc2V0KTsKLSAg
ICAgICAgcHJldmlvdXNPZmZzZXQgPSBzdG9wLT5vZmZzZXQ7Ci0gICAgICAgIGZsb2F0ICpjYSA9
IG1fc3RvcHNDYWNoZVtpbmRleF0uY29sb3JBcnJheTsKLSAgICAgICAgc3RvcC0+Y29sb3IuZ2V0
UmdiYUYoY2EsIGNhKzEsIGNhKzIsIGNhKzMpOwotICAgICAgICBpbmRleCsrOworICAgIGZvcih1
bnNpZ25lZCBpID0gMDsgaSA8IHN0b3BzLnNpemUoKTsgKytpKSB7CisgICAgICAgIG1fc3RvcHND
YWNoZVtpXS5vZmZzZXQgPSBzdG9wc1tpXS5maXJzdDsKKyAgICAgICAgbV9zdG9wc0NhY2hlW2ld
LnByZXZpb3VzRGVsdGFJbnZlcnNlID0gMS4wZiAvIChzdG9wc1tpXS5maXJzdCAtIHByZXZpb3Vz
T2Zmc2V0KTsKKyAgICAgICAgcHJldmlvdXNPZmZzZXQgPSBzdG9wc1tpXS5maXJzdDsKKyAgICAg
ICAgZmxvYXQgKmNhID0gbV9zdG9wc0NhY2hlW2ldLmNvbG9yQXJyYXk7CisgICAgICAgIHN0b3Bz
W2ldLnNlY29uZC5nZXRSZ2JhRihjYSwgY2ErMSwgY2ErMiwgY2ErMyk7CiAgICAgfQogfQogCklu
ZGV4OiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQu
Y3BwCShyZXZpc2lvbiAxMjQ2NCkKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNDQgKzQ1LDEyIEBAIFFUZXh0
U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICZ0cywKICAgICByZXR1cm4gdHM7CiB9CiAK
LS8vS0NTb3J0ZWRHcmFkaWVudFN0b3BMaXN0Ci1LQ1NvcnRlZEdyYWRpZW50U3RvcExpc3Q6OktD
U29ydGVkR3JhZGllbnRTdG9wTGlzdCgpCi17Ci0gICAgc2V0QXV0b0RlbGV0ZSh0cnVlKTsKLX0K
LQotdm9pZCBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3Q6OmFkZFN0b3AoZmxvYXQgb2Zmc2V0LCBj
b25zdCBDb2xvciAmY29sb3IpCi17Ci0gICAgS0NHcmFkaWVudE9mZnNldFBhaXIgKnBhaXIgPSBu
ZXcgS0NHcmFkaWVudE9mZnNldFBhaXI7Ci0gICAgcGFpci0+b2Zmc2V0ID0gb2Zmc2V0OwotICAg
IHBhaXItPmNvbG9yID0gY29sb3I7Ci0KLSAgICBhcHBlbmQocGFpcik7Ci0gICAgc29ydCgpOwot
fQotCi1pbnQgS0NTb3J0ZWRHcmFkaWVudFN0b3BMaXN0Ojpjb21wYXJlSXRlbXMoUTNQdHJDb2xs
ZWN0aW9uOjpJdGVtIGl0ZW0xLCBRM1B0ckNvbGxlY3Rpb246Okl0ZW0gaXRlbTIpCi17Ci0gICAg
S0NHcmFkaWVudE9mZnNldFBhaXIgKnBhaXIxID0gc3RhdGljX2Nhc3Q8S0NHcmFkaWVudE9mZnNl
dFBhaXIgKj4oaXRlbTEpOwotICAgIEtDR3JhZGllbnRPZmZzZXRQYWlyICpwYWlyMiA9IHN0YXRp
Y19jYXN0PEtDR3JhZGllbnRPZmZzZXRQYWlyICo+KGl0ZW0yKTsKLQotICAgIGlmKHBhaXIxLT5v
ZmZzZXQgPT0gcGFpcjItPm9mZnNldCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZWxzZSBpZihw
YWlyMS0+b2Zmc2V0IDwgcGFpcjItPm9mZnNldCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAg
cmV0dXJuIDE7Ci19Ci0KLVFUZXh0U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICZ0cywg
Y29uc3QgS0NTb3J0ZWRHcmFkaWVudFN0b3BMaXN0ICZsKQorUVRleHRTdHJlYW0gJm9wZXJhdG9y
PDwoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBWZWN0b3I8S0NHcmFkaWVudFN0b3A+JiBsKQogewog
ICAgIHRzIDw8ICJbIjsKLSAgICBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3Q6Okl0ZXJhdG9yIGl0
KGwpOyAKLSAgICB3aGlsZSgqaXQpCi0gICAgewotICAgICAgICB0cyA8PCAiKCIgPDwgKCppdCkt
Pm9mZnNldCA8PCAiLCIgPDwgKCppdCktPmNvbG9yIDw8ICIpIjsKLSAgICAgICAgKytpdDsKLSAg
ICAgICAgaWYgKCppdCkKKyAgICBmb3IgKFZlY3RvcjxLQ0dyYWRpZW50U3RvcD46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbC5iZWdpbigpOyBpdCAhPSBsLmVuZCgpOyArK2l0KSB7IAorICAgICAgICB0
cyA8PCAiKCIgPDwgaXQtPmZpcnN0IDw8ICIsIiA8PCBpdC0+c2Vjb25kIDw8ICIpIjsKKyAgICAg
ICAgaWYgKGl0ICsgMSAhPSBsLmVuZCgpKQogICAgICAgICAgICAgdHMgPDwgIiwgIjsKICAgICB9
CiAgICAgdHMgPDwgIl0iOwpAQCAtOTYsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgUHJpdmF0ZSgp
IHsgYm91bmRpbmdCb3hNb2RlID0gdHJ1ZTsgc3ByZWFkTWV0aG9kID0gU1BSRUFETUVUSE9EX1BB
RDsgbGlzdGVuZXIgPSAwOyB9CiAgICAgflByaXZhdGUoKSB7IH0KIAotICAgIEtDU29ydGVkR3Jh
ZGllbnRTdG9wTGlzdCBzdG9wczsKKyAgICBWZWN0b3I8S0NHcmFkaWVudFN0b3A+IHN0b3BzOwog
ICAgIEtDR3JhZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kOwogICAgIGJvb2wgYm91bmRp
bmdCb3hNb2RlOwogICAgIEtDYW52YXNNYXRyaXggZ3JhZGllbnRUcmFuc2Zvcm07CkBAIC0xMTIs
MTQgKzgwLDI1IEBAIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50Ojp+S1JlbmRlcmkKICAg
ICBkZWxldGUgZDsKIH0KIAotS0NTb3J0ZWRHcmFkaWVudFN0b3BMaXN0ICZLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJHcmFkaWVudDo6Z3JhZGllbnRTdG9wcygpIGNvbnN0ewotCitjb25zdCBWZWN0b3I8
S0NHcmFkaWVudFN0b3A+JiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6Z3JhZGllbnRT
dG9wcygpIGNvbnN0Cit7CiAgICAgcmV0dXJuIGQtPnN0b3BzOwogfQogCi12b2lkIEtSZW5kZXJp
bmdQYWludFNlcnZlckdyYWRpZW50OjpzZXRHcmFkaWVudFN0b3BzKGNvbnN0IEtDU29ydGVkR3Jh
ZGllbnRTdG9wTGlzdCAmc3RvcHMpCitzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZVN0b3BPZmZz
ZXQoY29uc3QgS0NHcmFkaWVudFN0b3AmIGZpcnN0LCBjb25zdCBLQ0dyYWRpZW50U3RvcCYgc2Vj
b25kKQoreworICAgIHJldHVybiBmaXJzdC5maXJzdCA8IHNlY29uZC5maXJzdDsKK30KKwordm9p
ZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0R3JhZGllbnRTdG9wcyhjb25zdCBW
ZWN0b3I8S0NHcmFkaWVudFN0b3A+JiBzdG9wcykKIHsKICAgICBkLT5zdG9wcyA9IHN0b3BzOwor
ICAgIHN0ZDo6c29ydChkLT5zdG9wcy5iZWdpbigpLCBkLT5zdG9wcy5lbmQoKSwgY29tcGFyZVN0
b3BPZmZzZXQpOworfSAKKwordm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0
R3JhZGllbnRTdG9wcyhLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCogc2VydmVyKQorewor
ICAgIGQtPnN0b3BzID0gc2VydmVyLT5ncmFkaWVudFN0b3BzKCk7CiB9CiAKIEtDR3JhZGllbnRT
cHJlYWRNZXRob2QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6OnNwcmVhZE1ldGhvZCgp
IGNvbnN0CkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lv
biAxMjQ3MykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisy
MDA2LTAxLTI5ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBSZW1vdmUgUVNvcnRlZExp
c3QgYW5kIFFQdHJMaXN0IHNvcnRpbmcgc3VwcG9ydAorICAgICAgICBodHRwOi8vYnVnemlsbGEu
b3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTY5MjkKKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9LUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHA6CisgICAgICAgIChvcGVyYXRvcjw8KTogSW1w
bGVtZW50IGZvciBWZWN0b3I8S0NHcmFkaWVudFN0b3A+CisgICAgICAgIChLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJHcmFkaWVudDo6Z3JhZGllbnRTdG9wcyk6IFVzZSBhIFZlY3Rvciwgbm90IGEgc3Vi
Y2xhc3Mgb2YKKyAgICAgICAgUVB0ckxpc3QgdGhhdCBzb3J0cyBvbiBldmVyeSBpbnNlcnQKKyAg
ICAgICAgKGNvbXBhcmVTdG9wT2Zmc2V0KTogQ29tcGFyaXNvbiBmdW5jdGlvbiBmb3Igc29ydGlu
Zy4KKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50OjpzZXRHcmFkaWVudFN0
b3BzKTogQWRkIGEgdmVyc2lvbiB0aGF0IHRha2VzIGEgVmVjdG9yIHdoaWNoIHNvcnRzLAorICAg
ICAgICBhbmQgYW5vdGhlciB3aGljaCBrbm93cyBob3cgdG8gY29weSBmcm9tIGFub3RoZXIgZ3Jh
ZGllbnQgcGFpbnQgc2VydmVyLgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50Lmg6CisgICAgICAgIChtYWtlR3JhZGllbnRTdG9wKTogTWFrZSBh
IGdyYWRpZW50IHN0b3AgcGFpci4KKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW06CisgICAgICAgIChLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6fktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
UXVhcnR6KTogdXNlIGRlbGV0ZQorICAgICAgICBvbiBzdG9wcyBjYWNoZQorICAgICAgICAoS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnVwZGF0ZVF1YXJ0ekdyYWRpZW50U3Rv
cHNDYWNoZSk6IGFkYXB0IHRvIFZlY3RvcgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaDoKKyAgICAgICAgKiBraHRtbC9lZGl0aW5n
L3Zpc2libGVfdGV4dC5jcHA6CisgICAgICAgIChraHRtbDo6Y29tcGFyZUJveFN0YXJ0KTogQ29t
cGFyaXNvbiBmdW5jdGlvbiBmb3Igc29ydGluZy4KKyAgICAgICAgKGtodG1sOjpUZXh0SXRlcmF0
b3I6OmhhbmRsZVRleHROb2RlKTogVXNlIFZlY3RvciBhbmQgc3RkOjpzb3J0IGluc3RlYWQgb2Yg
UVNvcnRlZExpc3QKKyAgICAgICAgZm9yIHNvcnRpbmcuIEtlZXAgY3VycmVudCBwb3NpdGlvbiBh
cyBhbiBpbmRleC4KKyAgICAgICAgKGtodG1sOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3gp
OiBBZGFwdCBmb3IgVmVjdG9yIHVzZS4KKyAgICAgICAgKiBraHRtbC9lZGl0aW5nL3Zpc2libGVf
dGV4dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnRJbXBsLmNwcDoK
KyAgICAgICAgKFNWR0dyYWRpZW50RWxlbWVudEltcGw6OnJlYnVpbGRTdG9wcyk6IFVzZSBhIFZl
Y3Rvci4gSW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIGV4aXN0aW5nIG9uZSwKKyAgICAgICAgbWFr
ZSBhIGZyZXNoIG9uZSBhbmQgYXNzaWduIGl0LgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudEltcGw6OmJ1aWxkR3JhZGllbnQpOiBkb24ndCBjb3B5IGl0ZW0gYnkgaXRlbSwganVzdCBh
c3NpZ24gZGlyZWN0bHkuCisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50SW1wbDo6YnVp
bGRHcmFkaWVudCk6IGRpdHRvCisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50SW1w
bC5oOgorICAgICAgICAqIGt3cS9LV1FMaXN0SW1wbC5jcHA6CisgICAgICAgICoga3dxL0tXUVB0
ckxpc3QuaDoKKyAgICAgICAgKFFQdHJMaXN0Ojpzb3J0KTogUmVtb3ZlZC4KKyAgICAgICAgKiBr
d3EvS1dRU29ydGVkTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94Lmg6IFJlbW92ZSBub3cgdW5uZWVkZWQgb3BlcmF0b3I8IGFuZCBvcGVyYXRvcj0KKwog
MjAwNi0wMS0yOSAgRXJpYyBTZWlkZWwgPGVzZWlkZWxAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IGRhcmluLgpJbmRleDoga3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnRJbXBsLmNwcAkocmV2aXNpb24gMTI0NjQpCisrKyBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMiArMTYxLDggQEAgdm9p
ZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnRJbXBsOjpidWlsZAogICAgICAgICAgICAgbWF0ID0g
Z3JhZGllbnQtPmdyYWRpZW50VHJhbnNmb3JtKCk7CiAKICAgICAgICAgLy8gSW5oZXJpdCBjb2xv
ciBzdG9wcyBpZiBlbXB0eQotICAgICAgICBpZihncmFkLT5ncmFkaWVudFN0b3BzKCkuY291bnQo
KSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3Q6
Okl0ZXJhdG9yIGl0KGdyYWRpZW50LT5ncmFkaWVudFN0b3BzKCkpOwotICAgICAgICAgICAgZm9y
KDtpdC5jdXJyZW50KCk7KytpdCkKLSAgICAgICAgICAgICAgICBncmFkLT5ncmFkaWVudFN0b3Bz
KCkuYWRkU3RvcChpdC5jdXJyZW50KCktPm9mZnNldCwgaXQuY3VycmVudCgpLT5jb2xvcik7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGdyYWQtPmdyYWRpZW50U3RvcHMoKS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFN0b3BzKGdyYWRpZW50KTsKIAogICAgICAgICBp
ZighaGFzQXR0cmlidXRlKFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyKSkKICAgICAgICAgICAg
IGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKGdyYWRpZW50LT5zcHJlYWRNZXRob2QoKSk7
CkluZGV4OiBrc3ZnMi9zdmcvU1ZHU3RvcEVsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2
ZzIvc3ZnL1NWR1N0b3BFbGVtZW50SW1wbC5oCShyZXZpc2lvbiAxMjQ2NCkKKysrIGtzdmcyL3N2
Zy9TVkdTdG9wRWxlbWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBu
YW1lc3BhY2UgS1NWRwogICAgICAgICBTVkdBbmltYXRlZE51bWJlckltcGwgKm9mZnNldCgpIGNv
bnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShLRE9NOjpN
YXBwZWRBdHRyaWJ1dGVJbXBsICphdHRyKTsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFi
bGUgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVySW1wbD4gbV9vZmZzZXQ7CiAgICAgfTsKSW5kZXg6
IGtzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50SW1wbC5jcHAJKHJldmlzaW9uIDEy
NDY0KQorKysga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudEltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEsMTggKzE4MSwxNCBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudEltcGw6OmJ1aWxkCiAgICAgICAgICAgICBfciAqPSAxMDAuMDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikp
CisgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0
dHIpKQogICAgICAgICAgICAgbWF0ID0gZ3JhZGllbnQtPmdyYWRpZW50VHJhbnNmb3JtKCk7CiAK
ICAgICAgICAgLy8gSW5oZXJpdCBjb2xvciBzdG9wcyBpZiBlbXB0eQotICAgICAgICBpZihncmFk
LT5ncmFkaWVudFN0b3BzKCkuY291bnQoKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBL
Q1NvcnRlZEdyYWRpZW50U3RvcExpc3Q6Okl0ZXJhdG9yIGl0KGdyYWRpZW50LT5ncmFkaWVudFN0
b3BzKCkpOwotICAgICAgICAgICAgZm9yKDsgaXQuY3VycmVudCgpOyArK2l0KQotICAgICAgICAg
ICAgICAgIGdyYWQtPmdyYWRpZW50U3RvcHMoKS5hZGRTdG9wKGl0LmN1cnJlbnQoKS0+b2Zmc2V0
LCBpdC5jdXJyZW50KCktPmNvbG9yKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZ3JhZC0+Z3Jh
ZGllbnRTdG9wcygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3Rv
cHMoZ3JhZGllbnQpOwogCi0gICAgICAgIGlmKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnNwcmVh
ZE1ldGhvZEF0dHIpKQorICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6c3ByZWFk
TWV0aG9kQXR0cikpCiAgICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFNwcmVhZE1ldGhvZChn
cmFkaWVudC0+c3ByZWFkTWV0aG9kKCkpOwogICAgIH0KICAgICBlbHNlCkluZGV4OiBrc3ZnMi9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjQ2NCkKKysrIGtzdmcyL3N2Zy9T
VkdHcmFkaWVudEVsZW1lbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDggKzE0Myw3
IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50SW1wbDo6cmVzb3VyY2VOb3QKIHZvaWQgU1ZHR3Jh
ZGllbnRFbGVtZW50SW1wbDo6cmVidWlsZFN0b3BzKCkgY29uc3QKIHsKICAgICBpZiAobV9yZXNv
dXJjZSAmJiAhb3duZXJEb2N1bWVudCgpLT5wYXJzaW5nKCkpIHsKLSAgICAgICAgS0NTb3J0ZWRH
cmFkaWVudFN0b3BMaXN0ICZzdG9wcyA9IG1fcmVzb3VyY2UtPmdyYWRpZW50U3RvcHMoKTsKLSAg
ICAgICAgc3RvcHMuY2xlYXIoKTsKKyAgICAgICAgVmVjdG9yPEtDR3JhZGllbnRTdG9wPiBzdG9w
czsKICAgICAgICAgIC8vIEZJWE1FOiBNYW51YWwgc3R5bGUgcmVzb2x1dGlvbiBpcyBhIGhhY2sK
ICAgICAgICAga2h0bWw6OlJlbmRlclN0eWxlICpncmFkaWVudFN0eWxlID0gY29uc3RfY2FzdDxT
VkdHcmFkaWVudEVsZW1lbnRJbXBsICo+KHRoaXMpLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudCgp
LT5yZW5kZXJlcigpKTsKICAgICAgICAgZm9yIChLRE9NOjpOb2RlSW1wbCAqbiA9IGZpcnN0Q2hp
bGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKQEAgLTE1NywxMSArMTU2LDEyIEBAIHZv
aWQgU1ZHR3JhZGllbnRFbGVtZW50SW1wbDo6cmVidWlsZFN0b3AKICAgICAgICAgICAgICAgICBD
b2xvciBjID0gc3RvcFN0eWxlLT5zdmdTdHlsZSgpLT5zdG9wQ29sb3IoKTsKICAgICAgICAgICAg
ICAgICBmbG9hdCBvcGFjaXR5ID0gc3RvcFN0eWxlLT5zdmdTdHlsZSgpLT5zdG9wT3BhY2l0eSgp
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0b3BzLmFkZFN0b3Aoc3RvcE9m
ZnNldCwgbWFrZVJHQkEoYy5yZWQoKSwgYy5ncmVlbigpLCBjLmJsdWUoKSwgaW50KG9wYWNpdHkg
KiAyNTUuKSkpOworICAgICAgICAgICAgICAgIHN0b3BzLmFwcGVuZChtYWtlR3JhZGllbnRTdG9w
KHN0b3BPZmZzZXQsIG1ha2VSR0JBKGMucmVkKCksIGMuZ3JlZW4oKSwgYy5ibHVlKCksIGludChv
cGFjaXR5ICogMjU1LikpKSk7CiAgICAgICAgICAgICAgICAgc3RvcFN0eWxlLT5kZXJlZihjYW52
YXMoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
Z3JhZGllbnRTdHlsZS0+ZGVyZWYoY2FudmFzKCktPnJlbmRlckFyZW5hKCkpOworICAgICAgICBt
X3Jlc291cmNlLT5zZXRHcmFkaWVudFN0b3BzKHN0b3BzKTsKICAgICB9CiB9CiAKSW5kZXg6IGt3
cS9LV1FTb3J0ZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3dxL0tXUVNvcnRlZExpc3QuaAkocmV2
aXNpb24gMTI0NjQpCisrKyBrd3EvS1dRU29ydGVkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUVNPUlRFRExJU1RfSF8K
LSNkZWZpbmUgUVNPUlRFRExJU1RfSF8KLQotI2luY2x1ZGUgIktXUVB0ckxpc3QuaCIKLQotdGVt
cGxhdGU8Y2xhc3MgVD4gY2xhc3MgUVNvcnRlZExpc3QgOiBwdWJsaWMgUVB0ckxpc3Q8VD4gewot
cHVibGljOgotICAgIHZpcnR1YWwgaW50IGNvbXBhcmVJdGVtcyh2b2lkICphLCB2b2lkICpiKSAK
LSAgICB7IAotICAgICAgICBUICp0YSA9IChUICopYTsgCi0gICAgICAgIFQgKnRiID0gKFQgKili
OyAKLSAgICAgICAgaWYgKCp0YSA9PSAqdGIpIHsgCi0gICAgICAgICAgICByZXR1cm4gMDsgCi0g
ICAgICAgIH0gZWxzZSBpZiAoKnRhIDwgKnRiKSB7IAotICAgICAgICAgICAgcmV0dXJuIC0xOyAK
LSAgICAgICAgfSBlbHNlIHsgCi0gICAgICAgICAgICByZXR1cm4gMTsgCi0gICAgICAgIH0KLSAg
ICB9Ci19OwotCi0jZW5kaWYKSW5kZXg6IGt3cS9LV1FQdHJMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3dxL0tXUVB0ckxpc3QuaAkocmV2aXNpb24gMTI0NjQpCisrKyBrd3EvS1dRUHRyTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBpbXBsLmlzRW1wdHkoKTsgfQogICAgIHVpbnQgY291bnQoKSBjb25z
dCB7IHJldHVybiBpbXBsLmNvdW50KCk7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBpbXBsLmNsZWFy
KGRlbF9pdGVtKTsgfQotICAgIHZvaWQgc29ydCgpIHsgaW1wbC5zb3J0KGNvbXBhcmVGdW5jLCB0
aGlzKTsgfQogCiAgICAgVCAqYXQodWludCBuKSB7IHJldHVybiAoVCAqKWltcGwuYXQobik7IH0K
IApJbmRleDoga3dxL0tXUUxpc3RJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvS1dRTGlzdElt
cGwuY3BwCShyZXZpc2lvbiAxMjQ2NCkKKysrIGt3cS9LV1FMaXN0SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExOSw5MiArMTE5LDYgQEAgdm9pZCBLV1FMaXN0SW1wbDo6Y2xlYXIoYm9vbCBk
ZWxldGVJdGVtcwogCWl0LT5ub2RlID0gMDsKIH0KIAotc3RhdGljIGludCAoKmNvbXBhcmVGdW5j
R2xvYmFsKSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKLXN0YXRpYyB2b2lkKiBjb21wYXJlRnVuY0Rh
dGFHbG9iYWw7Ci0KLXN0YXRpYyBpbnQgY29tcGFyZUZ1bmNXcmFwcGVyKGNvbnN0IHZvaWQqIGEs
IGNvbnN0IHZvaWQqIGIpCi17Ci0gICAgcmV0dXJuIGNvbXBhcmVGdW5jR2xvYmFsKGNvbnN0X2Nh
c3Q8dm9pZCo+KGEpLCBjb25zdF9jYXN0PHZvaWQqPihiKSwgY29tcGFyZUZ1bmNEYXRhR2xvYmFs
KTsKLX0KLQotdm9pZCBLV1FMaXN0SW1wbDo6c29ydChpbnQgKCpjb21wYXJlRnVuYykodm9pZCAq
YSwgdm9pZCAqYiwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpCi17Ci0gICAgLy8gbm8gc29ydGlu
ZyBmb3IgMCBvciAxLWVsZW1lbnQgbGlzdHMKLSAgICBpZiAobm9kZUNvdW50IDw9IDEpIHsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgMi1lbGVtZW50
IGxpc3RzCi0gICAgaWYgKG5vZGVDb3VudCA9PSAyKSB7Ci0gICAgICAgIHZvaWQgKmEgPSBoZWFk
LT5kYXRhOwotICAgICAgICB2b2lkICpiID0gaGVhZC0+bmV4dC0+ZGF0YTsKLSAgICAgICAgaWYg
KGNvbXBhcmVGdW5jKGEsIGIsIGRhdGEpIDw9IDApIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBoZWFkLT5uZXh0LT5kYXRhID0gYTsKLSAgICAgICAgaGVhZC0+ZGF0
YSA9IGI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBpbnNlcnRpb24gc29ydCBm
b3IgbW9zdCBjb21tb24gc2l6ZXMKLSAgICBjb25zdCB1aW50IGN1dG9mZiA9IDMyOwotICAgIGlm
IChub2RlQ291bnQgPD0gY3V0b2ZmKSB7Ci0gICAgICAgIC8vIFN0cmFpZ2h0IG91dCBvZiBTZWRn
ZXdpY2sncyBBbGdvcml0aG1zIGluIEMrKy4KLQotICAgICAgICAvLyBwdXQgYWxsIHRoZSBlbGVt
ZW50cyBpbnRvIGFuIGFycmF5Ci0gICAgICAgIHZvaWQgKmFbY3V0b2ZmXTsKLSAgICAgICAgdWlu
dCBpID0gMDsKLSAgICAgICAgZm9yIChLV1FMaXN0Tm9kZSAqbm9kZSA9IGhlYWQ7IG5vZGU7IG5v
ZGUgPSBub2RlLT5uZXh0KSB7Ci0gICAgICAgICAgICBhW2krK10gPSBub2RlLT5kYXRhOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCB0byB0aGUgc3Rh
cnQgdG8gc2VydmUgYXMgYSBzZW50aW5lbAotICAgICAgICBmb3IgKGkgPSBub2RlQ291bnQgLSAx
OyBpID4gMDsgaS0tKSB7Ci0gICAgICAgICAgICBpZiAoY29tcGFyZUZ1bmMoYVtpLTFdLCBhW2ld
LCBkYXRhKSA+IDApIHsKLSAgICAgICAgICAgICAgICB2b2lkICp0ID0gYVtpLTFdOwotICAgICAg
ICAgICAgICAgIGFbaS0xXSA9IGFbaV07Ci0gICAgICAgICAgICAgICAgYVtpXSA9IHQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBtb3ZlIG90aGVyIGl0ZW1zIHRvIHRo
ZSByaWdodCBhbmQgcHV0IGFbaV0gaW50byBwb3NpdGlvbgotICAgICAgICBmb3IgKGkgPSAyOyBp
IDwgbm9kZUNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIHZvaWQgKnYgPSBhW2ldOwotICAgICAg
ICAgICAgdWludCBqID0gaTsKLSAgICAgICAgICAgIHdoaWxlIChjb21wYXJlRnVuYyh2LCBhW2ot
MV0sIGRhdGEpIDwgMCkgewotICAgICAgICAgICAgICAgIGFbal0gPSBhW2otMV07Ci0gICAgICAg
ICAgICAgICAgai0tOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYVtqXSA9IHY7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBmaW5hbGx5LCBwdXQgZXZlcnl0aGluZyBiYWNrIGludG8gdGhl
IGxpc3QKLSAgICAgICAgaSA9IDA7Ci0gICAgICAgIGZvciAoS1dRTGlzdE5vZGUgKm5vZGUgPSBo
ZWFkOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCkKLSAgICAgICAgICAgIG5vZGUtPmRhdGEgPSBh
W2krK107Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBxc29ydCBmb3IgbGFyZ2Vy
IGxpc3RzCi0gICAgCi0gICAgdm9pZCoqIGEgPSBzdGF0aWNfY2FzdDx2b2lkKio+KGZhc3RNYWxs
b2Mobm9kZUNvdW50ICogc2l6ZW9mKHZvaWQqKSkpOwotCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0g
ICAgZm9yIChLV1FMaXN0Tm9kZSAqbm9kZSA9IGhlYWQ7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0
KQotICAgICAgICBhW2krK10gPSBub2RlLT5kYXRhOwotCi0gICAgLy8gV29uJ3Qgd29yayBtdWx0
aS10aHJlYWRlZC4KLSAgICBjb21wYXJlRnVuY0dsb2JhbCA9IGNvbXBhcmVGdW5jOwotICAgIGNv
bXBhcmVGdW5jRGF0YUdsb2JhbCA9IGRhdGE7Ci0gICAgcXNvcnQoYSwgbm9kZUNvdW50LCBzaXpl
b2Yodm9pZCopLCBjb21wYXJlRnVuY1dyYXBwZXIpOwotCi0gICAgaSA9IDA7Ci0gICAgZm9yIChL
V1FMaXN0Tm9kZSAqbm9kZSA9IGhlYWQ7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0KQotCW5vZGUt
PmRhdGEgPSBhW2krK107Ci0KLSAgICBmYXN0RnJlZShhKTsKLX0KLQogdm9pZCAqS1dRTGlzdElt
cGw6OmF0KHVpbnQgbikKIHsKICAgICBLV1FMaXN0Tm9kZSAqbm9kZTsK
</data>
<flag name="review"
          id="1467"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>