<?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>59425</bug_id>
          
          <creation_ts>2011-04-25 23:31:45 -0700</creation_ts>
          <short_desc>Nixed special finalizer handling for WebCore strings</short_desc>
          <delta_ts>2011-04-26 11:31:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>mjs</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>392299</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-25 23:31:45 -0700</bug_when>
    <thetext>Nixed special finalizer handling for WebCore strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392305</commentid>
    <comment_count>1</comment_count>
      <attachid>91071</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-25 23:44:42 -0700</bug_when>
    <thetext>Created attachment 91071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392467</commentid>
    <comment_count>2</comment_count>
      <attachid>91071</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-26 08:11:49 -0700</bug_when>
    <thetext>Comment on attachment 91071
Patch

I believe that it should be possible to do this with a WeakGCMap directly rather than switching to the less efficient hashmap&lt;weak&gt; model</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392492</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-26 08:40:18 -0700</bug_when>
    <thetext>No I was wrong, although I&apos;m not sure why I don&apos;t have it supported (i have most of what&apos;s need, just not an actual finalizer call).  It would be trivial to add a custom finalizer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392583</commentid>
    <comment_count>4</comment_count>
      <attachid>91071</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-26 11:22:55 -0700</bug_when>
    <thetext>Comment on attachment 91071
Patch

There&apos;s less thrashing in HashMap&lt;Weak&gt; than i thought,  so this is fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392591</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-26 11:31:08 -0700</bug_when>
    <thetext>Committed r84934: &lt;http://trac.webkit.org/changeset/84934&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91071</attachid>
            <date>2011-04-25 23:44:42 -0700</date>
            <delta_ts>2011-04-26 11:22:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59425-20110425234441.patch</filename>
            <type>text/plain</type>
            <size>18062</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODQ4ODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTEtMDQtMjUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOaXhlZCBzcGVjaWFsIGZp
bmFsaXplciBoYW5kbGluZyBmb3IgV2ViQ29yZSBzdHJpbmdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQyNQorICAgICAgICAKKyAgICAgICAgU3Vu
U3BpZGVyIHJlcG9ydHMgbm8gY2hhbmdlLgorICAgICAgICAKKyAgICAgICAgTm90IG5lZWRlZCBh
bnltb3JlLCBzaW5jZSB3ZWFrIGhhbmRsZXMgaGF2ZSBmaW5hbGl6ZXJzLgorCisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpyZXNvbHZlUm9w
ZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6SlNTdHJpbmc6Om91dE9mTWVtb3J5KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6
OnN1YnN0cmluZ0Zyb21Sb3BlKToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnJlcGxhY2VDaGFy
YWN0ZXIpOiBVcGRhdGVkIGZvciByZW1vdmFsIG9mIHVuaW9uLgorCisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6SlNTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6fkpTU3RyaW5nKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1
aWxkZXI6OmFwcGVuZFN0cmluZ0luQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxk
ZXI6OmFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgpOiBObyBuZWVkIGZv
cgorICAgICAgICB1bmlvbiBvciBzcGVjaWFsIGNvbnN0cnVjdG9yIGFueW1vcmUuCisKIDIwMTEt
MDQtMjUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDg0ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMTAgQEAg
dm9pZCBKU1N0cmluZzo6cmVzb2x2ZVJvcGUoRXhlY1N0YXRlKiBleAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUm9wZUltcGw6OkZpYmVyIGN1cnJlbnRGaWJlciA9IG1fb3RoZXIubV9m
aWJlcnNbMF07CisgICAgUm9wZUltcGw6OkZpYmVyIGN1cnJlbnRGaWJlciA9IG1fZmliZXJzWzBd
OwogCiAgICAgaWYgKChtX2ZpYmVyQ291bnQgPiAyKSB8fCAoUm9wZUltcGw6OmlzUm9wZShjdXJy
ZW50RmliZXIpKSAKLSAgICAgICAgfHwgKChtX2ZpYmVyQ291bnQgPT0gMikgJiYgKFJvcGVJbXBs
Ojppc1JvcGUobV9vdGhlci5tX2ZpYmVyc1sxXSkpKSkgeworICAgICAgICB8fCAoKG1fZmliZXJD
b3VudCA9PSAyKSAmJiAoUm9wZUltcGw6OmlzUm9wZShtX2ZpYmVyc1sxXSkpKSkgewogICAgICAg
ICByZXNvbHZlUm9wZVNsb3dDYXNlKGV4ZWMsIGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgSlNTdHJpbmc6OnJlc29sdmVSb3BlKEV4ZWNTdGF0
ZSogZXgKIAogICAgIGlmIChtX2ZpYmVyQ291bnQgPiAxKSB7CiAgICAgICAgIHBvc2l0aW9uICs9
IGxlbmd0aDsKLSAgICAgICAgY3VycmVudEZpYmVyID0gbV9vdGhlci5tX2ZpYmVyc1sxXTsKKyAg
ICAgICAgY3VycmVudEZpYmVyID0gbV9maWJlcnNbMV07CiAgICAgICAgIHN0cmluZyA9IHN0YXRp
Y19jYXN0PFN0cmluZ0ltcGwqPihjdXJyZW50RmliZXIpOwogICAgICAgICBsZW5ndGggPSBzdHJp
bmctPmxlbmd0aCgpOwogICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIHN0
cmluZy0+Y2hhcmFjdGVycygpLCBsZW5ndGgpOwpAQCAtNzIsOCArNzIsOCBAQCB2b2lkIEpTU3Ry
aW5nOjpyZXNvbHZlUm9wZShFeGVjU3RhdGUqIGV4CiAKICAgICBBU1NFUlQoKGJ1ZmZlciArIG1f
bGVuZ3RoKSA9PSBwb3NpdGlvbik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmli
ZXJDb3VudDsgKytpKSB7Ci0gICAgICAgIFJvcGVJbXBsOjpkZXJlZihtX290aGVyLm1fZmliZXJz
W2ldKTsKLSAgICAgICAgbV9vdGhlci5tX2ZpYmVyc1tpXSA9IDA7CisgICAgICAgIFJvcGVJbXBs
OjpkZXJlZihtX2ZpYmVyc1tpXSk7CisgICAgICAgIG1fZmliZXJzW2ldID0gMDsKICAgICB9CiAg
ICAgbV9maWJlckNvdW50ID0gMDsKIApAQCAtMTAwLDggKzEwMCw4IEBAIHZvaWQgSlNTdHJpbmc6
OnJlc29sdmVSb3BlU2xvd0Nhc2UoRXhlY1MKICAgICBWZWN0b3I8Um9wZUltcGw6OkZpYmVyLCAz
Mj4gd29ya1F1ZXVlOwogICAgIFJvcGVJbXBsOjpGaWJlciBjdXJyZW50RmliZXI7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IChtX2ZpYmVyQ291bnQgLSAxKTsgKytpKQotICAgICAgICB3
b3JrUXVldWUuYXBwZW5kKG1fb3RoZXIubV9maWJlcnNbaV0pOwotICAgIGN1cnJlbnRGaWJlciA9
IG1fb3RoZXIubV9maWJlcnNbbV9maWJlckNvdW50IC0gMV07CisgICAgICAgIHdvcmtRdWV1ZS5h
cHBlbmQobV9maWJlcnNbaV0pOworICAgIGN1cnJlbnRGaWJlciA9IG1fZmliZXJzW21fZmliZXJD
b3VudCAtIDFdOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlmIChSb3BlSW1wbDo6aXNS
b3BlKGN1cnJlbnRGaWJlcikpIHsKICAgICAgICAgICAgIFJvcGVJbXBsKiByb3BlID0gc3RhdGlj
X2Nhc3Q8Um9wZUltcGwqPihjdXJyZW50RmliZXIpOwpAQCAtMTIyLDggKzEyMiw4IEBAIHZvaWQg
SlNTdHJpbmc6OnJlc29sdmVSb3BlU2xvd0Nhc2UoRXhlY1MKICAgICAgICAgICAgICAgICAvLyBD
cmVhdGUgYSBzdHJpbmcgZnJvbSB0aGUgVUNoYXIgYnVmZmVyLCBjbGVhciB0aGUgcm9wZSBSZWZQ
dHIuCiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ1ZmZlciA9PSBwb3NpdGlvbik7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmliZXJDb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFJvcGVJbXBsOjpkZXJlZihtX290aGVyLm1fZmliZXJzW2ldKTsK
LSAgICAgICAgICAgICAgICAgICAgbV9vdGhlci5tX2ZpYmVyc1tpXSA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIFJvcGVJbXBsOjpkZXJlZihtX2ZpYmVyc1tpXSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fZmliZXJzW2ldID0gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
bV9maWJlckNvdW50ID0gMDsKICAgICAgICAgICAgICAgICAKQEAgLTE0MSw4ICsxNDEsOCBAQCB2
b2lkIEpTU3RyaW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlKEV4ZWNTCiB2b2lkIEpTU3RyaW5nOjpv
dXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fZmliZXJDb3VudDsgKytpKSB7Ci0gICAgICAgIFJvcGVJbXBsOjpkZXJlZiht
X290aGVyLm1fZmliZXJzW2ldKTsKLSAgICAgICAgbV9vdGhlci5tX2ZpYmVyc1tpXSA9IDA7Cisg
ICAgICAgIFJvcGVJbXBsOjpkZXJlZihtX2ZpYmVyc1tpXSk7CisgICAgICAgIG1fZmliZXJzW2ld
ID0gMDsKICAgICB9CiAgICAgbV9maWJlckNvdW50ID0gMDsKICAgICBBU1NFUlQoIWlzUm9wZSgp
KTsKQEAgLTE2OSw3ICsxNjksNyBAQCBKU1N0cmluZyogSlNTdHJpbmc6OnN1YnN0cmluZ0Zyb21S
b3BlKEV4CiAgICAgdW5zaWduZWQgZmliZXJFbmQgPSAwOwogCiAgICAgUm9wZUl0ZXJhdG9yIGVu
ZDsKLSAgICBmb3IgKFJvcGVJdGVyYXRvciBpdChtX290aGVyLm1fZmliZXJzLmRhdGEoKSwgbV9m
aWJlckNvdW50KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChSb3BlSXRlcmF0b3IgaXQo
bV9maWJlcnMuZGF0YSgpLCBtX2ZpYmVyQ291bnQpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgKytmaWJlckNvdW50OwogICAgICAgICBTdHJpbmdJbXBsKiBmaWJlclN0cmluZyA9ICppdDsK
ICAgICAgICAgdW5zaWduZWQgZmliZXJTdGFydCA9IGZpYmVyRW5kOwpAQCAtMjIwLDcgKzIyMCw3
IEBAIEpTVmFsdWUgSlNTdHJpbmc6OnJlcGxhY2VDaGFyYWN0ZXIoRXhlY1MKICAgICBzaXplX3Qg
ZmliZXJDb3VudCA9IDA7CiAgICAgU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcgPSAwOwogICAgIHNp
emVfdCBtYXRjaFBvc2l0aW9uID0gbm90Rm91bmQ7Ci0gICAgZm9yIChSb3BlSXRlcmF0b3IgaXQo
bV9vdGhlci5tX2ZpYmVycy5kYXRhKCksIG1fZmliZXJDb3VudCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgIGZvciAoUm9wZUl0ZXJhdG9yIGl0KG1fZmliZXJzLmRhdGEoKSwgbV9maWJlckNvdW50
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICsrZmliZXJDb3VudDsKICAgICAgICAgaWYg
KG1hdGNoU3RyaW5nKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzksNyArMjM5LDcgQEAg
SlNWYWx1ZSBKU1N0cmluZzo6cmVwbGFjZUNoYXJhY3RlcihFeGVjUwogICAgIGlmIChVTkxJS0VM
WShidWlsZGVyLmlzT3V0T2ZNZW1vcnkoKSkpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYyk7CiAKLSAgICBmb3IgKFJvcGVJdGVyYXRvciBpdChtX290aGVyLm1fZmli
ZXJzLmRhdGEoKSwgbV9maWJlckNvdW50KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChS
b3BlSXRlcmF0b3IgaXQobV9maWJlcnMuZGF0YSgpLCBtX2ZpYmVyQ291bnQpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgU3RyaW5nSW1wbCogc3RyaW5nID0gKml0OwogICAgICAgICBpZiAo
c3RyaW5nICE9IG1hdGNoU3RyaW5nKSB7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChVU3Ry
aW5nKHN0cmluZykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCShyZXZpc2lvbiA4NDg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDkgKzU5LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmlu
ZyYpOyAKICAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7IAogCi0gICAgdHlwZWRlZiB2b2lkICgqSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayko
SlNTdHJpbmcqLCB2b2lkKiBjb250ZXh0KTsKLSAgICBKU1N0cmluZyoganNTdHJpbmdXaXRoRmlu
YWxpemVyKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCBKU1N0cmluZ0ZpbmFsaXplckNhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KTsKLQogICAgIGNsYXNzIEpTX0VYUE9SVENMQVNT
IEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwpAQCAtOTMsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBpZiAoanNTdHJpbmctPmlzUm9wZSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBqc1N0cmluZy0+bV9maWJlckNvdW50
OyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoanNTdHJpbmctPm1fb3RoZXIu
bV9maWJlcnNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGpzU3RyaW5nLT5t
X2ZpYmVyc1tpXSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZChqc1N0cmluZy0+c3RyaW5nKCkpOwogICAgICAgICAgICAgfQpAQCAtMjE2LDcgKzIx
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChyb3BlLT5sZW5n
dGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KDEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1fb3RoZXIubV9maWJlcnNbMF0gPSByb3BlLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIG1f
ZmliZXJzWzBdID0gcm9wZS5sZWFrUmVmKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gVGhpcyBj
b25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5nIHMxICYg
czIuCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggZmliZXJDb3Vu
dCA8PSAzLgpAQCAtMjk4LDMxICsyOTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBBU1NFUlQoaW5kZXggPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOwogICAgICAgICB9CiAK
LSAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiB2YWx1ZSwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBmaW5hbGl6ZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKQotICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkK
LSAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKLSAgICAgICAgICAgICwgbV9maWJlckNvdW50
KDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZS5pc051bGwoKSk7Ci0g
ICAgICAgICAgICAvLyBuYXN0eSBoYWNrIGJlY2F1c2Ugd2UgY2FuJ3QgdW5pb24gbm9uLVBPRCB0
eXBlcwotICAgICAgICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNhbGxiYWNrID0gZmluYWxpemVy
OwotICAgICAgICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNvbnRleHQgPSBjb250ZXh0OwotICAg
ICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHZhbHVlLmlt
cGwoKS0+Y29zdCgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIH5KU1N0cmluZygpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRhOjpqc1N0cmluZ1ZQ
dHIpOwotICAgICAgICAgICAgaWYgKCFtX2ZpYmVyQ291bnQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV9vdGhlci5tX2ZpbmFsaXplckNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBtX290
aGVyLm1fZmluYWxpemVyQ2FsbGJhY2sodGhpcywgbV9vdGhlci5tX2ZpbmFsaXplckNvbnRleHQp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpID0gMDsK
LSAgICAgICAgICAgICAgICBkbwotICAgICAgICAgICAgICAgICAgICBSb3BlSW1wbDo6ZGVyZWYo
bV9vdGhlci5tX2ZpYmVyc1tpXSk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCsraSA8IG1fZmli
ZXJDb3VudCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9maWJlckNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgUm9wZUltcGw6OmRlcmVm
KG1fZmliZXJzW2ldKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVl
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKQEAgLTM3MSwxNiArMzQ4LDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB7CiAgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLmlt
cGwoKTsKICAgICAgICAgICAgIGltcGwtPnJlZigpOwotICAgICAgICAgICAgbV9vdGhlci5tX2Zp
YmVyc1tpbmRleCsrXSA9IGltcGw7CisgICAgICAgICAgICBtX2ZpYmVyc1tpbmRleCsrXSA9IGlt
cGw7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KHVu
c2lnbmVkJiBpbmRleCwgSlNTdHJpbmcqIGpzU3RyaW5nKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoanNTdHJpbmctPmlzUm9wZSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGpzU3RyaW5nLT5tX2ZpYmVyQ291bnQ7ICsraSkgewotICAgICAgICAgICAg
ICAgICAgICBSb3BlSW1wbDo6RmliZXIgZmliZXIgPSBqc1N0cmluZy0+bV9vdGhlci5tX2ZpYmVy
c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgUm9wZUltcGw6OkZpYmVyIGZpYmVyID0ganNTdHJp
bmctPm1fZmliZXJzW2ldOwogICAgICAgICAgICAgICAgICAgICBmaWJlci0+cmVmKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fb3RoZXIubV9maWJlcnNbaW5kZXgrK10gPSBmaWJlcjsKKyAgICAg
ICAgICAgICAgICAgICAgbV9maWJlcnNbaW5kZXgrK10gPSBmaWJlcjsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNv
bnN0cnVjdChpbmRleCwganNTdHJpbmctPnN0cmluZygpKTsKQEAgLTM5OCw3ICszNzUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBVU3RyaW5nIHUodi50b1N0cmluZyhleGVj
KSk7CiAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHUuaW1wbCgpOwogICAgICAg
ICAgICAgICAgIGltcGwtPnJlZigpOwotICAgICAgICAgICAgICAgIG1fb3RoZXIubV9maWJlcnNb
aW5kZXgrK10gPSBpbXBsOworICAgICAgICAgICAgICAgIG1fZmliZXJzW2luZGV4KytdID0gaW1w
bDsKICAgICAgICAgICAgICAgICBtX2xlbmd0aCArPSB1Lmxlbmd0aCgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC00MjMsMTcgKzQwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB1bnNpZ25lZCBtX2xlbmd0aDsKICAgICAgICAgbXV0YWJsZSBVU3RyaW5nIG1fdmFsdWU7CiAg
ICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9maWJlckNvdW50OwotICAgICAgICAvLyBUaGlzIHN0
cnVjdHVyZSBleGlzdHMgdG8gc3VwcG9ydCBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciBhIEdD
IGlzc3VlLgotICAgICAgICBzdHJ1Y3QgSlNTdHJpbmdGaW5hbGl6ZXJTdHJ1Y3QgewotICAgICAg
ICAgICAgSlNTdHJpbmdGaW5hbGl6ZXJTdHJ1Y3QoKSA6IG1fZmluYWxpemVyQ2FsbGJhY2soMCkg
e30KLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgICAgICBtdXRhYmxlIEZpeGVkQXJy
YXk8Um9wZUltcGw6OkZpYmVyLCBzX21heEludGVybmFsUm9wZUxlbmd0aD4gbV9maWJlcnM7Ci0g
ICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgSlNTdHJpbmdGaW5h
bGl6ZXJDYWxsYmFjayBtX2ZpbmFsaXplckNhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICB2
b2lkKiBtX2ZpbmFsaXplckNvbnRleHQ7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IH07Ci0gICAgICAgIH0gbV9vdGhlcjsKKyAgICAgICAgbXV0YWJsZSBGaXhlZEFycmF5PFJvcGVJ
bXBsOjpGaWJlciwgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGg+IG1fZmliZXJzOwogCiAgICAgICAg
IGJvb2wgaXNSb3BlKCkgY29uc3QgeyByZXR1cm4gbV9maWJlckNvdW50OyB9CiAgICAgICAgIFVT
dHJpbmcmIHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9CkBA
IC00NDQsNyArNDExLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBKU1ZhbHVl
IGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMxLCBjb25zdCBVU3RyaW5nJiB1
Mik7CiAgICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVn
aXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNvdW50KTsKICAgICAgICAgZnJpZW5kIEpTVmFsdWUg
anNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSk7Ci0gICAgICAgIGZy
aWVuZCBKU1N0cmluZyoganNTdHJpbmdXaXRoRmluYWxpemVyKEV4ZWNTdGF0ZSosIGNvbnN0IFVT
dHJpbmcmLCBKU1N0cmluZ0ZpbmFsaXplckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0
KTsKICAgICAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgfTsK
IApAQCAtNTI0LDEzICs0OTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZp
eHVwVlB0cihnbG9iYWxEYXRhLCBuZXcgKGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERhdGEs
IHMpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZpbmFsaXpl
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMsIEpTU3RyaW5nRmluYWxpemVyQ2Fs
bGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQocy5s
ZW5ndGgoKSAmJiAocy5sZW5ndGgoKSA+IDEgfHwgcy5jaGFyYWN0ZXJzKClbMF0gPiBtYXhTaW5n
bGVDaGFyYWN0ZXJTdHJpbmcpKTsKLSAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
JmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRh
LCBuZXcgKGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHMsIGNhbGxiYWNrLCBjb250
ZXh0KSk7Ci0gICAgfQotICAgIAogICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgewogICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzLT5sZW5ndGgoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODQ4ODUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAx
MS0wNC0yNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5peGVkIHNwZWNpYWwgZmluYWxp
emVyIGhhbmRsaW5nIGZvciBXZWJDb3JlIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NDI1CisKKyAgICAgICAgTm90IG5lZWRlZCBhbnlt
b3JlLCBzaW5jZSB3ZWFrIGhhbmRsZXMgaGF2ZSBmaW5hbGl6ZXJzLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46IEV4cG9ydHMhCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHJpbmdPd25lcjo6ZmluYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpET01XcmFwcGVyV29ybGQpOiBVc2Ug
YSB3ZWFrIGhhbmRsZSBmaW5hbGl6ZXIsCisgICAgICAgIHNvIHdlIGRvbid0IG5lZWQgc3BlY2lh
bCB0cmVhdG1lbnQgYW55bW9yZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJX
b3JsZC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHJpbmdPd25lcjo6SlNTdHJpbmdPd25lcik6
CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OnN0cmluZ1dyYXBwZXJPd25lcik6
IFVzZSBhIEhhc2hNYXAgb2YgV2VhazxUPgorICAgICAgICBpbnN0ZWFkIG9mIGEgV2Vha0dDTWFw
LCBzbyB3ZSBjYW4gc3BlY2lmeSBhIGN1c3RvbSBmaW5hbGl6ZXIuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNTdHJpbmdTbG93
Q2FzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjpqc1N0cmluZyk6IFVwZGF0ZWQgZm9yIHN0cmluZyBtYXAgY2hhbmdlLgorCiAyMDEx
LTA0LTI1ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gODQ4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgX19OUE5fU2V0UHJvcGVydHkKIF9fTlBOX1VURjhGcm9t
SWRlbnRpZmllcgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjB3aW5kb3dTY3JpcHRO
UE9iamVjdEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyOWNsZWFudXBTY3JpcHRP
YmplY3RzRm9yUGx1Z2luRVB2Ci1fX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlND
OUV4ZWNTdGF0ZUVSTlMwXzlXZWFrR0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRU5TMF84SlNTdHJp
bmdFTlMwXzMzRGVmYXVsdFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrSVM2X1M3X0VFTlM0XzEw
U3RyaW5nSGFzaEVOUzRfMTBIYXNoVHJhaXRzSVM2X0VFRUVTNl8KK19fWk43V2ViQ29yZTE2anNT
dHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjdIYXNoTWFwSVBOUzNfMTBTdHJp
bmdJbXBsRU5TMF80V2Vha0lOUzBfOEpTU3RyaW5nRUVFTlMzXzEwU3RyaW5nSGFzaEVOUzNfMTBI
YXNoVHJhaXRzSVM2X0VFTlNCX0lTOV9FRUVFUzZfCiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5F
bGVtZW50MTFnZXROUE9iamVjdEV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjljYW5B
Y2Nlc3NFUEtTMF8KIF9fWk5LN1dlYkNvcmU0S1VSTDEwcHJvdG9jb2xJc0VQS2MKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNp
b24gODQ4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTkgQEAgdm9pZCBKU0RPTVdyYXBwZXJP
d25lcjo6ZmluYWxpemUoSlNDOjpIYQogICAgIHVuY2FjaGVXcmFwcGVyKG1fd29ybGQsIGRvbU9i
amVjdCwgd3JhcHBlcik7CiB9CiAKK3ZvaWQgSlNTdHJpbmdPd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgSlNTdHJp
bmcqIGpzU3RyaW5nID0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOworICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBs
Kj4oY29udGV4dCk7CisgICAgQVNTRVJUX1VOVVNFRChqc1N0cmluZywgbV93b3JsZC0+bV9zdHJp
bmdDYWNoZS5maW5kKHN0cmluZ0ltcGwpLT5zZWNvbmQuZ2V0KCkgPT0ganNTdHJpbmcpOworICAg
IG1fd29ybGQtPm1fc3RyaW5nQ2FjaGUucmVtb3ZlKHN0cmluZ0ltcGwpOworfQorCiBET01XcmFw
cGVyV29ybGQ6OkRPTVdyYXBwZXJXb3JsZChKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Ym9vbCBpc05vcm1hbCkKICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9p
c05vcm1hbChpc05vcm1hbCkKICAgICAsIG1fZGVmYXVsdFdyYXBwZXJPd25lcih0aGlzKQorICAg
ICwgbV9zdHJpbmdXcmFwcGVyT3duZXIodGhpcykKIHsKICAgICBKU0dsb2JhbERhdGE6OkNsaWVu
dERhdGEqIGNsaWVudERhdGEgPSBtX2dsb2JhbERhdGEtPmNsaWVudERhdGE7CiAgICAgQVNTRVJU
KGNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3Jh
cHBlcldvcmxkLmgJKHJldmlzaW9uIDg0ODgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NV3JhcHBlcldvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgSlNET01XcmFwcGVyOwogY2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIAogdHlwZWRlZiBIYXNo
TWFwPHZvaWQqLCBKU0M6OldlYWs8SlNET01XcmFwcGVyPiA+IERPTU9iamVjdFdyYXBwZXJNYXA7
Ci10eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBKU0M6OkpTU3RyaW5nPiBKU1N0
cmluZ0NhY2hlOwordHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBKU0M6OldlYWs8SlNDOjpK
U1N0cmluZz4gPiBKU1N0cmluZ0NhY2hlOwogCiBjbGFzcyBKU0RPTVdyYXBwZXJPd25lciA6IHB1
YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6CkBAIC00OSw2ICs0OSwyMCBAQCBp
bmxpbmUgSlNET01XcmFwcGVyT3duZXI6OkpTRE9NV3JhcHBlck93CiB7CiB9CiAKK2NsYXNzIEpT
U3RyaW5nT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAg
IEpTU3RyaW5nT3duZXIoRE9NV3JhcHBlcldvcmxkKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworCitwcml2YXRl
OgorICAgIERPTVdyYXBwZXJXb3JsZCogbV93b3JsZDsKK307CisKK2lubGluZSBKU1N0cmluZ093
bmVyOjpKU1N0cmluZ093bmVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCisgICAgOiBtX3dvcmxk
KHdvcmxkKQoreworfQorCiBjbGFzcyBET01XcmFwcGVyV29ybGQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxET01XcmFwcGVyV29ybGQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01X
cmFwcGVyV29ybGQ+IGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBp
c05vcm1hbCA9IGZhbHNlKQpAQCAtNzEsNiArODUsNyBAQCBwdWJsaWM6CiAKICAgICBKU0M6OkpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQog
ICAgIEpTRE9NV3JhcHBlck93bmVyKiBkZWZhdWx0V3JhcHBlck93bmVyKCkgeyByZXR1cm4gJm1f
ZGVmYXVsdFdyYXBwZXJPd25lcjsgfQorICAgIEpTU3RyaW5nT3duZXIqIHN0cmluZ1dyYXBwZXJP
d25lcigpIHsgcmV0dXJuICZtX3N0cmluZ1dyYXBwZXJPd25lcjsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgRE9NV3JhcHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRhKiwgYm9vbCBpc05vcm1hbCk7CkBA
IC04MCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTY3JpcHRDb250cm9sbGVyKj4g
bV9zY3JpcHRDb250cm9sbGVyc1dpdGhXaW5kb3dTaGVsbHM7CiAgICAgYm9vbCBtX2lzTm9ybWFs
OwogICAgIEpTRE9NV3JhcHBlck93bmVyIG1fZGVmYXVsdFdyYXBwZXJPd25lcjsKKyAgICBKU1N0
cmluZ093bmVyIG1fc3RyaW5nV3JhcHBlck93bmVyOwogfTsKIAogRE9NV3JhcHBlcldvcmxkKiBu
b3JtYWxXb3JsZChKU0M6OkpTR2xvYmFsRGF0YSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA4NDg4MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDE5ICs1OSwxMCBAQCBjb25zdCBKU0M6Okhhc2hUYWJsZSogZ2V0SGFzaFRhYmxlRm9yR2xvCiAg
ICAgcmV0dXJuIERPTU9iamVjdEhhc2hUYWJsZU1hcDo6bWFwRm9yKGdsb2JhbERhdGEpLmdldChz
dGF0aWNUYWJsZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0cmluZ1dyYXBwZXJEZXN0cm95ZWQoSlNT
dHJpbmcqLCB2b2lkKiBjb250ZXh0KQotewotICAgIFN0cmluZ0ltcGwqIGNhY2hlS2V5ID0gc3Rh
dGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGNvbnRleHQpOwotICAgIGNhY2hlS2V5LT5kZXJlZigpOwot
fQotCiBKU1ZhbHVlIGpzU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZ0Nh
Y2hlJiBzdHJpbmdDYWNoZSwgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKIHsKLSAgICBKU1N0cmlu
Zyogd3JhcHBlciA9IGpzU3RyaW5nV2l0aEZpbmFsaXplcihleGVjLCBVU3RyaW5nKHN0cmluZ0lt
cGwpLCBzdHJpbmdXcmFwcGVyRGVzdHJveWVkLCBzdHJpbmdJbXBsKTsKLSAgICBzdHJpbmdDYWNo
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJpbmdJbXBsLCB3cmFwcGVyKTsKLSAgICAvLyBy
ZWYgZXhwbGljaXRseSBpbnN0ZWFkIG9mIHVzaW5nIGEgUmVmUHRyLWtleWVkIGhhc2h0YWJsZSBi
ZWNhdXNlIHRoZSB3cmFwcGVyIGNhbgotICAgIC8vIG91dGxpdmUgdGhlIGNhY2hlLCBzbyB0aGUg
c3RyaW5nSW1wbCBoYXMgdG8gbWF0Y2ggdGhlIHdyYXBwZXIncyBsaWZldGltZS4KLSAgICBzdHJp
bmdJbXBsLT5yZWYoKTsKKyAgICBKU1N0cmluZyogd3JhcHBlciA9IGpzU3RyaW5nKGV4ZWMsIFVT
dHJpbmcoc3RyaW5nSW1wbCkpOworICAgIHN0cmluZ0NhY2hlLmFkZChzdHJpbmdJbXBsLCBXZWFr
PEpTU3RyaW5nPihleGVjLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGN1cnJlbnRXb3JsZChleGVj
KS0+c3RyaW5nV3JhcHBlck93bmVyKCksIHN0cmluZ0ltcGwpKTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJ
KHJldmlzaW9uIDg0ODgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw4ICszMDgsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKHMp
KTsKIAogICAgICAgICBKU1N0cmluZ0NhY2hlJiBzdHJpbmdDYWNoZSA9IGN1cnJlbnRXb3JsZChl
eGVjKS0+bV9zdHJpbmdDYWNoZTsKLSAgICAgICAgaWYgKEpTQzo6SlNTdHJpbmcqIHdyYXBwZXIg
PSBzdHJpbmdDYWNoZS5nZXQoc3RyaW5nSW1wbCkpCi0gICAgICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICAgICAgSlNTdHJpbmdDYWNoZTo6aXRlcmF0b3IgaXQgPSBzdHJpbmdDYWNoZS5maW5k
KHN0cmluZ0ltcGwpOworICAgICAgICBpZiAoaXQgIT0gc3RyaW5nQ2FjaGUuZW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gaXQtPnNlY29uZC5nZXQoKTsKIAogICAgICAgICByZXR1cm4ganNTdHJp
bmdTbG93Q2FzZShleGVjLCBzdHJpbmdDYWNoZSwgc3RyaW5nSW1wbCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="83837"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>