<?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>8029</bug_id>
          
          <creation_ts>2006-03-28 04:12:55 -0800</creation_ts>
          <short_desc>Rename Node::isAncestor and RenderObject::hasAncestor to isDescendantOf</short_desc>
          <delta_ts>2006-09-26 11:34:57 -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>HTML Editing</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="Justin Garcia">justin.garcia</reporter>
          <assigned_to name="Justin Garcia">justin.garcia</assigned_to>
          <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37766</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-28 04:12:55 -0800</bug_when>
    <thetext>isDescendantOf is what AppKit uses for subviews and superviews, and it&apos;s much more readable than isAncestor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56261</commentid>
    <comment_count>1</comment_count>
      <attachid>10716</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-09-22 14:07:25 -0700</bug_when>
    <thetext>Created attachment 10716
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56266</commentid>
    <comment_count>2</comment_count>
      <attachid>10716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-09-22 16:33:57 -0700</bug_when>
    <thetext>Comment on attachment 10716
patch

I thought we were going to use the name &quot;hasAncestor&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56269</commentid>
    <comment_count>3</comment_count>
      <attachid>10716</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-09-22 17:14:39 -0700</bug_when>
    <thetext>Comment on attachment 10716
patch

darin&amp;i fought over this and i won</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10716</attachid>
            <date>2006-09-22 14:07:25 -0700</date>
            <delta_ts>2006-09-22 17:14:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>8029.txt</filename>
            <type>text/plain</type>
            <size>28833</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IGRvbS9Ob2RlSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9Ob2RlSXRlcmF0
b3IuY3BwCShyZXZpc2lvbiAxNjUwOSkKKysrIGRvbS9Ob2RlSXRlcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsMTAgKzExNiwxMCBAQAogewogICAgIC8vIEl0ZXJhdG9yIGlzIG5vdCBh
ZmZlY3RlZCBpZiB0aGUgcmVtb3ZlZCBub2RlIGlzIHRoZSByZWZlcmVuY2Ugbm9kZSBhbmQgaXMg
dGhlIHJvb3QuCiAgICAgLy8gb3IgaWYgcmVtb3ZlZCBub2RlIGlzIG5vdCB0aGUgcmVmZXJlbmNl
IG5vZGUsIG9yIHRoZSBhbmNlc3RvciBvZiB0aGUgcmVmZXJlbmNlIG5vZGUuCi0gICAgaWYgKCFy
ZW1vdmVkTm9kZSB8fCByZW1vdmVkTm9kZSA9PSByb290KCkgfHwgIXJlbW92ZWROb2RlLT5pc0Fu
Y2VzdG9yKHJvb3QoKSkpCisgICAgaWYgKCFyZW1vdmVkTm9kZSB8fCByZW1vdmVkTm9kZSA9PSBy
b290KCkgfHwgIXJlbW92ZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihyb290KCkpKQogICAgICAgICBy
ZXR1cm47CiAgICAgYm9vbCB3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZSA9IHJlbW92ZWROb2RlID09
IHJlZmVyZW5jZU5vZGUoKTsKLSAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0
b3IgPSByZWZlcmVuY2VOb2RlKCkgJiYgcmVmZXJlbmNlTm9kZSgpLT5pc0FuY2VzdG9yKHJlbW92
ZWROb2RlKTsKKyAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IgPSByZWZl
cmVuY2VOb2RlKCkgJiYgcmVmZXJlbmNlTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihyZW1vdmVkTm9k
ZSk7CiAgICAgaWYgKCF3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZSAmJiAhd2lsbFJlbW92ZVJlZmVy
ZW5jZU5vZGVBbmNlc3RvcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjksNyArMTI5LDcgQEAK
ICAgICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20gdW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3Zl
ZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUgaXMKICAgICAgICAgICAgIC8vIGEgZGVzY2VuZGFudCBv
ZiB0aGUgbm9kZSBiZWluZyByZW1vdmVkLgogICAgICAgICAgICAgaWYgKHdpbGxSZW1vdmVSZWZl
cmVuY2VOb2RlQW5jZXN0b3IpIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAobm9kZSAmJiBub2Rl
LT5pc0FuY2VzdG9yKHJlbW92ZWROb2RlKSkKKyAgICAgICAgICAgICAgICB3aGlsZSAobm9kZSAm
JiBub2RlLT5pc0Rlc2NlbmRhbnRPZihyZW1vdmVkTm9kZSkpCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUgPSBmaW5kTmV4dE5vZGUobm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAobm9kZSkKQEAgLTE0MCw3ICsxNDAsNyBAQAogICAgICAgICAgICAgICAgIC8vIE1vdmUgb3V0
IGZyb20gdW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUg
aXMKICAgICAgICAgICAgICAgICAvLyBhIGRlc2NlbmRhbnQgb2YgdGhlIG5vZGUgYmVpbmcgcmVt
b3ZlZC4KICAgICAgICAgICAgICAgICBpZiAod2lsbFJlbW92ZVJlZmVyZW5jZU5vZGVBbmNlc3Rv
cikgewotICAgICAgICAgICAgICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5pc0FuY2VzdG9y
KHJlbW92ZWROb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+
aXNEZXNjZW5kYW50T2YocmVtb3ZlZE5vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZSA9IGZpbmRQcmV2aW91c05vZGUobm9kZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGlmIChub2RlKSB7CkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAgICAgICAgIC8vIE1v
dmUgb3V0IGZyb20gdW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNl
IG5vZGUgaXMKICAgICAgICAgICAgIC8vIGEgZGVzY2VuZGFudCBvZiB0aGUgbm9kZSBiZWluZyBy
ZW1vdmVkLgogICAgICAgICAgICAgaWYgKHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3Ip
IHsKLSAgICAgICAgICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5pc0FuY2VzdG9yKHJlbW92
ZWROb2RlKSkKKyAgICAgICAgICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5pc0Rlc2NlbmRh
bnRPZihyZW1vdmVkTm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBmaW5kUHJldmlv
dXNOb2RlKG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG5vZGUpCkBAIC0x
NjgsNyArMTY4LDcgQEAKICAgICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20gdW5kZXIgdGhlIG5v
ZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUgaXMKICAgICAgICAgICAgIC8v
IGEgZGVzY2VuZGFudCBvZiB0aGUgbm9kZSBiZWluZyByZW1vdmVkLgogICAgICAgICAgICAgaWYg
KHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IpIHsKLSAgICAgICAgICAgICAgICB3aGls
ZSAobm9kZSAmJiBub2RlLT5pc0FuY2VzdG9yKHJlbW92ZWROb2RlKSkKKyAgICAgICAgICAgICAg
ICB3aGlsZSAobm9kZSAmJiBub2RlLT5pc0Rlc2NlbmRhbnRPZihyZW1vdmVkTm9kZSkpCiAgICAg
ICAgICAgICAgICAgICAgIG5vZGUgPSBmaW5kUHJldmlvdXNOb2RlKG5vZGUpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKG5vZGUpCkluZGV4OiBkb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGRvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE2NTA5KQorKysgZG9tL0RvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3NCw3ICsyMTc0LDcgQEAKICAgICAvLyBDbGVh
ciB0aGUgc2VsZWN0aW9uIHdoZW4gY2hhbmdpbmcgdGhlIGZvY3VzIG5vZGUgdG8gbnVsbCBvciB0
byBhIG5vZGUgdGhhdCBpcyBub3QgCiAgICAgLy8gY29udGFpbmVkIGJ5IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KICAgICBOb2RlICpzdGFydENvbnRhaW5lciA9IGZyYW1lKCktPnNlbGVjdGlvbkNv
bnRyb2xsZXIoKS0+c3RhcnQoKS5ub2RlKCk7Ci0gICAgaWYgKCFuZXdGb2N1c05vZGUgfHwgKHN0
YXJ0Q29udGFpbmVyICYmIHN0YXJ0Q29udGFpbmVyICE9IG5ld0ZvY3VzTm9kZSAmJiAhKHN0YXJ0
Q29udGFpbmVyLT5pc0FuY2VzdG9yKG5ld0ZvY3VzTm9kZSkpICYmIHN0YXJ0Q29udGFpbmVyLT5z
aGFkb3dBbmNlc3Rvck5vZGUoKSAhPSBuZXdGb2N1c05vZGUpKQorICAgIGlmICghbmV3Rm9jdXNO
b2RlIHx8IChzdGFydENvbnRhaW5lciAmJiBzdGFydENvbnRhaW5lciAhPSBuZXdGb2N1c05vZGUg
JiYgIShzdGFydENvbnRhaW5lci0+aXNEZXNjZW5kYW50T2YobmV3Rm9jdXNOb2RlKSkgJiYgc3Rh
cnRDb250YWluZXItPnNoYWRvd0FuY2VzdG9yTm9kZSgpICE9IG5ld0ZvY3VzTm9kZSkpCiAgICAg
ICAgIGZyYW1lKCktPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+Y2xlYXIoKTsKIH0KIApJbmRleDog
ZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTY1MDkp
CisrKyBkb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSwyMCArNDQxLDIwIEBACiBO
b2RlICpOb2RlOjp0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUgKnN0YXlXaXRoaW4pIGNvbnN0
CiB7CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSkgewotICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4g
fHwgZmlyc3RDaGlsZCgpLT5pc0FuY2VzdG9yKHN0YXlXaXRoaW4pKTsKKyAgICAgICAgYXNzZXJ0
KCFzdGF5V2l0aGluIHx8IGZpcnN0Q2hpbGQoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikp
OwogICAgICAgICByZXR1cm4gZmlyc3RDaGlsZCgpOwogICAgIH0KICAgICBpZiAodGhpcyA9PSBz
dGF5V2l0aGluKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAobmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgbmV4dFNpYmxpbmcoKS0+aXNBbmNlc3Rvcihz
dGF5V2l0aGluKSk7CisgICAgICAgIGFzc2VydCghc3RheVdpdGhpbiB8fCBuZXh0U2libGluZygp
LT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CiAgICAgICAgIHJldHVybiBuZXh0U2libGlu
ZygpOwogICAgIH0KICAgICBjb25zdCBOb2RlICpuID0gdGhpczsKICAgICB3aGlsZSAobiAmJiAh
bi0+bmV4dFNpYmxpbmcoKSAmJiAoIXN0YXlXaXRoaW4gfHwgbi0+cGFyZW50Tm9kZSgpICE9IHN0
YXlXaXRoaW4pKQogICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChuKSB7Ci0g
ICAgICAgIGFzc2VydCghc3RheVdpdGhpbiB8fCAhbi0+bmV4dFNpYmxpbmcoKSB8fCBuLT5uZXh0
U2libGluZygpLT5pc0FuY2VzdG9yKHN0YXlXaXRoaW4pKTsKKyAgICAgICAgYXNzZXJ0KCFzdGF5
V2l0aGluIHx8ICFuLT5uZXh0U2libGluZygpIHx8IG4tPm5leHRTaWJsaW5nKCktPmlzRGVzY2Vu
ZGFudE9mKHN0YXlXaXRoaW4pKTsKICAgICAgICAgcmV0dXJuIG4tPm5leHRTaWJsaW5nKCk7CiAg
ICAgfQogICAgIHJldHVybiAwOwpAQCAtNDY1LDE0ICs0NjUsMTQgQEAKICAgICBpZiAodGhpcyA9
PSBzdGF5V2l0aGluKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAobmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgbmV4dFNpYmxpbmcoKS0+aXNBbmNlc3Rv
cihzdGF5V2l0aGluKSk7CisgICAgICAgIGFzc2VydCghc3RheVdpdGhpbiB8fCBuZXh0U2libGlu
ZygpLT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CiAgICAgICAgIHJldHVybiBuZXh0U2li
bGluZygpOwogICAgIH0KICAgICBjb25zdCBOb2RlICpuID0gdGhpczsKICAgICB3aGlsZSAobiAm
JiAhbi0+bmV4dFNpYmxpbmcoKSAmJiAoIXN0YXlXaXRoaW4gfHwgbi0+cGFyZW50Tm9kZSgpICE9
IHN0YXlXaXRoaW4pKQogICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChuKSB7
Ci0gICAgICAgIGFzc2VydCghc3RheVdpdGhpbiB8fCAhbi0+bmV4dFNpYmxpbmcoKSB8fCBuLT5u
ZXh0U2libGluZygpLT5pc0FuY2VzdG9yKHN0YXlXaXRoaW4pKTsKKyAgICAgICAgYXNzZXJ0KCFz
dGF5V2l0aGluIHx8ICFuLT5uZXh0U2libGluZygpIHx8IG4tPm5leHRTaWJsaW5nKCktPmlzRGVz
Y2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKICAgICAgICAgcmV0dXJuIG4tPm5leHRTaWJsaW5nKCk7
CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtNDk0LDIwICs0OTQsMjAgQEAKIE5vZGUgKk5vZGU6
OnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKGNvbnN0IE5vZGUgKnN0YXlXaXRoaW4pIGNv
bnN0CiB7CiAgICAgaWYgKGxhc3RDaGlsZCgpKSB7Ci0gICAgICAgIGFzc2VydCghc3RheVdpdGhp
biB8fCBsYXN0Q2hpbGQoKS0+aXNBbmNlc3RvcihzdGF5V2l0aGluKSk7CisgICAgICAgIGFzc2Vy
dCghc3RheVdpdGhpbiB8fCBsYXN0Q2hpbGQoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikp
OwogICAgICAgICByZXR1cm4gbGFzdENoaWxkKCk7CiAgICAgfQogICAgIGlmICh0aGlzID09IHN0
YXlXaXRoaW4pCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChwcmV2aW91c1NpYmxpbmcoKSkg
ewotICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgcHJldmlvdXNTaWJsaW5nKCktPmlzQW5j
ZXN0b3Ioc3RheVdpdGhpbikpOworICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgcHJldmlv
dXNTaWJsaW5nKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKICAgICAgICAgcmV0dXJu
IHByZXZpb3VzU2libGluZygpOwogICAgIH0KICAgICBjb25zdCBOb2RlICpuID0gdGhpczsKICAg
ICB3aGlsZSAobiAmJiAhbi0+cHJldmlvdXNTaWJsaW5nKCkgJiYgKCFzdGF5V2l0aGluIHx8IG4t
PnBhcmVudE5vZGUoKSAhPSBzdGF5V2l0aGluKSkKICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUo
KTsKICAgICBpZiAobikgewotICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgIW4tPnByZXZp
b3VzU2libGluZygpIHx8IG4tPnByZXZpb3VzU2libGluZygpLT5pc0FuY2VzdG9yKHN0YXlXaXRo
aW4pKTsKKyAgICAgICAgYXNzZXJ0KCFzdGF5V2l0aGluIHx8ICFuLT5wcmV2aW91c1NpYmxpbmco
KSB8fCBuLT5wcmV2aW91c1NpYmxpbmcoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOwog
ICAgICAgICByZXR1cm4gbi0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgfQogICAgIHJldHVybiAw
OwpAQCAtNTgzLDcgKzU4Myw3IEBACiAgICAgLy8gbmV3Q2hpbGQgbm9kZSwgb3IgaWYgdGhlIG5v
ZGUgdG8gYXBwZW5kIGlzIG9uZSBvZiB0aGlzIG5vZGUncyBhbmNlc3RvcnMuCiAKICAgICAvLyBj
aGVjayBmb3IgYW5jZXN0b3Ivc2FtZSBub2RlCi0gICAgaWYgKG5ld0NoaWxkID09IHRoaXMgfHwg
aXNBbmNlc3RvcihuZXdDaGlsZCkpIHsKKyAgICBpZiAobmV3Q2hpbGQgPT0gdGhpcyB8fCBpc0Rl
c2NlbmRhbnRPZihuZXdDaGlsZCkpIHsKICAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MTIsNyArNjEyLDcgQEAKICAgICB9CiB9
CiAKLWJvb2wgTm9kZTo6aXNBbmNlc3Rvcihjb25zdCBOb2RlICpvdGhlcikgY29uc3QKK2Jvb2wg
Tm9kZTo6aXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSAqb3RoZXIpIGNvbnN0CiB7CiAgICAgLy8g
UmV0dXJuIHRydWUgaWYgb3RoZXIgaXMgYW4gYW5jZXN0b3Igb2YgdGhpcywgb3RoZXJ3aXNlIGZh
bHNlCiAgICAgaWYgKCFvdGhlcikKSW5kZXg6IGRvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBkb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTA5KQorKysgZG9tL0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OTIsNyArNDkyLDcgQEAKIHsKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdGhpcyA9PSBub2RlIHx8IG5vZGUtPmlzQW5j
ZXN0b3IodGhpcyk7CisgICAgcmV0dXJuIHRoaXMgPT0gbm9kZSB8fCBub2RlLT5pc0Rlc2NlbmRh
bnRPZih0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpjcmVhdGVBdHRyaWJ1dGVNYXAoKSBjb25z
dApJbmRleDogZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vTm9kZS5oCShyZXZpc2lvbiAx
NjUwOSkKKysrIGRvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw3ICszMjMsNyBAQAog
ICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVy
ID0gcmVuZGVyZXI7IH0KICAgICAKICAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgYm9vbCBpc0FuY2VzdG9yKGNv
bnN0IE5vZGUqKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IE5vZGUqKSBj
b25zdDsKIAogICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUu
ICBUaGUgZm9ybWVyIGlzIHVzZWQgdG8gZG8gc3RyaWN0IGVycm9yLWNoZWNraW5nCiAgICAgLy8g
d2hlbiBhZGRpbmcgY2hpbGRyZW4gdmlhIHRoZSBwdWJsaWMgRE9NIEFQSSAoZS5nLiwgYXBwZW5k
Q2hpbGQoKSkuICBUaGUgbGF0dGVyIGlzIGNhbGxlZCBvbmx5IHdoZW4gcGFyc2luZywgCkluZGV4
OiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBlZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTY1MDkpCisrKyBlZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBA
CiAKIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMoRWxl
bWVudCogZmlyc3QsIEVsZW1lbnQqIHNlY29uZCkKIHsKLSAgICBBU1NFUlQoIWZpcnN0LT5pc0Fu
Y2VzdG9yKHNlY29uZCkgJiYgc2Vjb25kICE9IGZpcnN0KTsKKyAgICBBU1NFUlQoIWZpcnN0LT5p
c0Rlc2NlbmRhbnRPZihzZWNvbmQpICYmIHNlY29uZCAhPSBmaXJzdCk7CiAgICAgaWYgKGZpcnN0
LT5uZXh0U2libGluZygpICE9IHNlY29uZCkgewogICAgICAgICByZW1vdmVOb2RlKHNlY29uZCk7
CiAgICAgICAgIGluc2VydE5vZGVBZnRlcihzZWNvbmQsIGZpcnN0KTsKQEAgLTUxOCw3ICs1MTgs
NyBAQAogICAgIC8vIFBlcmZvcm0gc29tZSBjaGVja3MgdG8gc2VlIGlmIHdlIG5lZWQgdG8gcGVy
Zm9ybSB3b3JrIGluIHRoaXMgZnVuY3Rpb24uCiAgICAgaWYgKGlzQmxvY2socGFyYWdyYXBoU3Rh
cnQubm9kZSgpKSkgewogICAgICAgICBpZiAoaXNCbG9jayhlbmQubm9kZSgpKSkgewotICAgICAg
ICAgICAgaWYgKCFlbmQubm9kZSgpLT5pc0FuY2VzdG9yKHBhcmFncmFwaFN0YXJ0Lm5vZGUoKSkp
IHsKKyAgICAgICAgICAgIGlmICghZW5kLm5vZGUoKS0+aXNEZXNjZW5kYW50T2YocGFyYWdyYXBo
U3RhcnQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJhZ3JhcGggZW5k
IGlzIGEgZGVzY2VuZGFudCBvZiBwYXJhZ3JhcGggc3RhcnQsIHRoZW4gd2UgbmVlZCB0byBydW4K
ICAgICAgICAgICAgICAgICAvLyB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uLiBJZiBub3QsIHdl
IGNhbiBiYWlsIGhlcmUuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTI3LDcgKzUyNyw3
IEBACiAgICAgICAgIGVsc2UgaWYgKGVuY2xvc2luZ0Jsb2NrKGVuZC5ub2RlKCkpICE9IHBhcmFn
cmFwaFN0YXJ0Lm5vZGUoKSkgewogICAgICAgICAgICAgLy8gVGhlIHZpc2libGVFbmQuICBJdCBt
dXN0IGJlIGFuIGFuY2VzdG9yIG9mIHRoZSBwYXJhZ3JhcGggc3RhcnQuCiAgICAgICAgICAgICAv
LyBXZSBjYW4gYmFpbCBhcyB3ZSBoYXZlIGEgZnVsbCBibG9jayB0byB3b3JrIHdpdGguCi0gICAg
ICAgICAgICBBU1NFUlQocGFyYWdyYXBoU3RhcnQubm9kZSgpLT5pc0FuY2VzdG9yKGVuY2xvc2lu
Z0Jsb2NrKGVuZC5ub2RlKCkpKSk7CisgICAgICAgICAgICBBU1NFUlQocGFyYWdyYXBoU3RhcnQu
bm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihlbmNsb3NpbmdCbG9jayhlbmQubm9kZSgpKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGlzRW5kT2ZEb2N1
bWVudCh2aXNpYmxlRW5kKSkgewpJbmRleDogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHJldmlz
aW9uIDE2NTA5KQorKysgZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgTm9kZSogcm9v
dCA9IChub2RlLT5pbkRvY3VtZW50KCkpID8gbm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIDog
aGlnaGVzdEFuY2VzdG9yKG5vZGUpOwogICAgIEFTU0VSVChyb290KTsKLSAgICBmb3IgKE5vZGUq
IG4gPSBub2RlLT5wYXJlbnROb2RlKCk7IG4gJiYgKG4gPT0gcm9vdCB8fCBuLT5pc0FuY2VzdG9y
KHJvb3QpKTsgbiA9IG4tPnBhcmVudE5vZGUoKSkKKyAgICBmb3IgKE5vZGUqIG4gPSBub2RlLT5w
YXJlbnROb2RlKCk7IG4gJiYgKG4gPT0gcm9vdCB8fCBuLT5pc0Rlc2NlbmRhbnRPZihyb290KSk7
IG4gPSBuLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKHVsVGFnKSB8
fCBuLT5oYXNUYWdOYW1lKG9sVGFnKSB8fCBuLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKQog
ICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgICAgICAKSW5kZXg6IGVkaXRpbmcvRm9ybWF0
QmxvY2tDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFu
ZC5jcHAJKHJldmlzaW9uIDE2NTA5KQorKysgZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NywxMiArOTcsMTIgQEAKICAgICBSZWZQdHI8Tm9kZT4gcGxh
Y2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgCiAgICAgTm9k
ZSogcm9vdCA9IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkubm9kZSgpLT5yb290RWRpdGFibGVF
bGVtZW50KCk7Ci0gICAgaWYgKHJlZk5vZGUgPT0gcm9vdCB8fCByb290LT5pc0FuY2VzdG9yKHJl
Zk5vZGUpKQorICAgIGlmIChyZWZOb2RlID09IHJvb3QgfHwgcm9vdC0+aXNEZXNjZW5kYW50T2Yo
cmVmTm9kZSkpCiAgICAgICAgIHJlZk5vZGUgPSBwYXJhZ3JhcGhTdGFydC5kZWVwRXF1aXZhbGVu
dCgpLm5vZGUoKTsKICAgICAKICAgICBQb3NpdGlvbiB1cHN0cmVhbVN0YXJ0ID0gcGFyYWdyYXBo
U3RhcnQuZGVlcEVxdWl2YWxlbnQoKS51cHN0cmVhbSgpOwogICAgIGlmICgodmFsaWRCbG9ja1Rh
ZyhyZWZOb2RlLT5ub2RlTmFtZSgpLmxvd2VyKCkpICYmIHBhcmFncmFwaFN0YXJ0ID09IGJsb2Nr
U3RhcnQgJiYgcGFyYWdyYXBoRW5kID09IGJsb2NrRW5kKSB8fAotICAgICAgICAhdXBzdHJlYW1T
dGFydC5ub2RlKCktPmlzQW5jZXN0b3Iocm9vdCkpCisgICAgICAgICF1cHN0cmVhbVN0YXJ0Lm5v
ZGUoKS0+aXNEZXNjZW5kYW50T2Yocm9vdCkpCiAgICAgICAgIC8vIEFscmVhZHkgaW4gYSB2YWxp
ZCBibG9jayB0YWcgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJyZW50IHBhcmFncmFwaCwgc28g
d2UgY2FuIHN3YXAgd2l0aCB0aGUgbmV3IHRhZwogICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGJs
b2NrTm9kZS5nZXQoKSwgcmVmTm9kZSk7CiAgICAgZWxzZSB7CkluZGV4OiBlZGl0aW5nL1NlbGVj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy9TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAx
NjUwOSkKKysrIGVkaXRpbmcvU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDcg
KzI3OCw3IEBACiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2VuZCA9IHN0
YXJ0T2ZOZXh0UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICAgICAgLy8g
U3RheSB3aXRoaW4gZW5jbG9zaW5nIG5vZGUsIGUuZy4gZG8gbm90IHNwYW4gZW5kIG9mIHRhYmxl
LgotICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlUGFyYWdyYXBoRW5kLmRlZXBFcXVpdmFsZW50
KCkubm9kZSgpLT5pc0FuY2VzdG9yKG1fZW5kLm5vZGUoKSkpCisgICAgICAgICAgICAgICAgaWYg
KHZpc2libGVQYXJhZ3JhcGhFbmQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmlzRGVzY2VuZGFu
dE9mKG1fZW5kLm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIG1fZW5kID0gdmlzaWJsZVBh
cmFncmFwaEVuZC5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBlZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy9t
YXJrdXAuY3BwCShyZXZpc2lvbiAxNjUwOSkKKysrIGVkaXRpbmcvbWFya3VwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzc3LDcgKzM3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIC8vIENsb3Nl
IHVwIHRoZSBhbmNlc3RvcnMuCiAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vZGUgKmFuY2VzdG9yID0gYW5jZXN0b3JzVG9DbG9zZS5sYXN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG5leHQtPmlzQW5j
ZXN0b3IoYW5jZXN0b3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFz
dEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3QgYXQgdGhl
IGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFuY2VzdG9ycyB1cCB0byBzaWJsaW5nIG9mIG5leHQg
bm9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cHMuYXBwZW5kKGVuZE1hcmt1cChh
bmNlc3RvcikpOwpAQCAtMzg5LDEzICszODksMTMgQEAKICAgICAgICAgICAgICAgICAvLyBTdXJy
b3VuZCB0aGUgY3VycmVudGx5IGFjY3VtdWxhdGVkIG1hcmt1cCB3aXRoIG1hcmt1cCBmb3IgYW5j
ZXN0b3JzIHdlIG5ldmVyIG9wZW5lZCBhcyB3ZSBsZWF2ZSB0aGUgc3VidHJlZShzKSByb290ZWQg
YXQgdGhvc2UgYW5jZXN0b3JzLgogICAgICAgICAgICAgICAgIE5vZGUqIG5leHRQYXJlbnQgPSBu
ZXh0ID8gbmV4dC0+cGFyZW50Tm9kZSgpIDogMDsKICAgICAgICAgICAgICAgICBpZiAobmV4dCAh
PSBwYXN0RW5kICYmIG4gIT0gbmV4dFBhcmVudCkgewotICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBsYXN0QW5jZXN0b3JDbG9zZWRPclNlbGYgPSBuLT5pc0FuY2VzdG9yKGxhc3RDbG9zZWQpID8g
bGFzdENsb3NlZCA6IG47CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGxhc3RBbmNlc3RvckNs
b3NlZE9yU2VsZiA9IG4tPmlzRGVzY2VuZGFudE9mKGxhc3RDbG9zZWQpID8gbGFzdENsb3NlZCA6
IG47CiAgICAgICAgICAgICAgICAgICAgIGZvciAoTm9kZSAqcGFyZW50ID0gbGFzdEFuY2VzdG9y
Q2xvc2VkT3JTZWxmLT5wYXJlbnQoKTsgcGFyZW50ICE9IDAgJiYgcGFyZW50ICE9IG5leHRQYXJl
bnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBBbGwgYW5jZXN0b3JzIHRoYXQgYXJlbid0IGluIHRoZSBhbmNlc3RvcnNUb0Nsb3Nl
IGxpc3Qgc2hvdWxkIGVpdGhlciBiZSBhKSB1bnJlbmRlcmVkOgogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwYXJlbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBiKSBhbmNlc3RvcnMg
dGhhdCB3ZSBuZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0
YXJ0aW5nIGF0IHN0YXJ0Tm9kZToKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdGFy
dE5vZGUtPmlzQW5jZXN0b3IocGFyZW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoc3RhcnROb2RlLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnQpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hcmt1cHMucHJlcGVuZChzdGFydE1hcmt1cChwYXJlbnQsIHJhbmdlLCBhbm5vdGF0
ZSwgZGVmYXVsdFN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXBz
LmFwcGVuZChlbmRNYXJrdXAocGFyZW50KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZXMpCkluZGV4OiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE2NTA5
KQorKysgZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEyLDcgKzIxMiw3IEBACiAgICAgICAgIHJldHVybjsKICAgICBpZiAobm9kZS0+cGFyZW50
KCkgPT0gcG9zaXRpb24ubm9kZSgpICYmIG5vZGUtPm5vZGVJbmRleCgpIDwgKHVuc2lnbmVkKXBv
c2l0aW9uLm9mZnNldCgpKQogICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKHBvc2l0aW9uLm5v
ZGUoKSwgcG9zaXRpb24ub2Zmc2V0KCkgLSAxKTsKLSAgICBpZiAocG9zaXRpb24ubm9kZSgpID09
IG5vZGUgfHwgcG9zaXRpb24ubm9kZSgpLT5pc0FuY2VzdG9yKG5vZGUpKQorICAgIGlmIChwb3Np
dGlvbi5ub2RlKCkgPT0gbm9kZSB8fCBwb3NpdGlvbi5ub2RlKCktPmlzRGVzY2VuZGFudE9mKG5v
ZGUpKQogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKTsKIH0KIApA
QCAtMzMzLDcgKzMzMyw3IEBACiAgICAgICAgICAgICBpZiAoUmFuZ2U6OmNvbXBhcmVCb3VuZGFy
eVBvaW50cyhQb3NpdGlvbihub2RlLCAwKSwgbV9kb3duc3RyZWFtRW5kKSA+PSAwKSB7CiAgICAg
ICAgICAgICAgICAgLy8gdHJhdmVyc2VOZXh0U2libGluZyBqdXN0IGJsZXcgcGFzdCB0aGUgZW5k
IHBvc2l0aW9uLCBzbyBzdG9wIGRlbGV0aW5nCiAgICAgICAgICAgICAgICAgbm9kZSA9IDA7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKCFtX2Rvd25zdHJlYW1FbmQubm9kZSgpLT5pc0FuY2VzdG9y
KG5vZGUpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFtX2Rvd25zdHJlYW1FbmQubm9kZSgp
LT5pc0Rlc2NlbmRhbnRPZihub2RlKSkgewogICAgICAgICAgICAgICAgIE5vZGUgKm5leHROb2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZygpOwogICAgICAgICAgICAgICAgIC8vIGlmIHdl
IGp1c3QgcmVtb3ZlZCBhIG5vZGUgZnJvbSB0aGUgZW5kIGNvbnRhaW5lciwgdXBkYXRlIGVuZCBw
b3NpdGlvbiBzbyB0aGUKICAgICAgICAgICAgICAgICAvLyBjaGVjayBhYm92ZSB3aWxsIHdvcmsK
QEAgLTM1MywxNCArMzUzLDE0IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGlmIChtX2Rvd25zdHJlYW1FbmQubm9kZSgpICE9IHN0YXJ0Tm9kZSAmJiAhbV91
cHN0cmVhbVN0YXJ0Lm5vZGUoKS0+aXNBbmNlc3RvcihtX2Rvd25zdHJlYW1FbmQubm9kZSgpKSAm
JiBtX2Rvd25zdHJlYW1FbmQubm9kZSgpLT5pbkRvY3VtZW50KCkgJiYgbV9kb3duc3RyZWFtRW5k
Lm9mZnNldCgpID49IG1fZG93bnN0cmVhbUVuZC5ub2RlKCktPmNhcmV0TWluT2Zmc2V0KCkpIHsK
KyAgICAgICAgaWYgKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkgIT0gc3RhcnROb2RlICYmICFtX3Vw
c3RyZWFtU3RhcnQubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQubm9kZSgp
KSAmJiBtX2Rvd25zdHJlYW1FbmQubm9kZSgpLT5pbkRvY3VtZW50KCkgJiYgbV9kb3duc3RyZWFt
RW5kLm9mZnNldCgpID49IG1fZG93bnN0cmVhbUVuZC5ub2RlKCktPmNhcmV0TWluT2Zmc2V0KCkp
IHsKICAgICAgICAgICAgIGlmIChtX2Rvd25zdHJlYW1FbmQub2Zmc2V0KCkgPj0gbWF4RGVlcE9m
ZnNldChtX2Rvd25zdHJlYW1FbmQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIC8vIG5lZWQg
dG8gZGVsZXRlIHdob2xlIG5vZGUKICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gZ2V0IGhlcmUg
aWYgdGhpcyBpcyB0aGUgbGFzdCBub2RlIGluIHRoZSBibG9jawogICAgICAgICAgICAgICAgIC8v
IHJlbW92ZSBhbiBhbmNlc3RvciBvZiBtX2Rvd25zdHJlYW1FbmQubm9kZSgpLCBhbmQgdGh1cyBt
X2Rvd25zdHJlYW1FbmQubm9kZSgpIGl0c2VsZgogICAgICAgICAgICAgICAgIGlmICghbV91cHN0
cmVhbVN0YXJ0Lm5vZGUoKS0+aW5Eb2N1bWVudCgpIHx8CiAgICAgICAgICAgICAgICAgICAgIG1f
dXBzdHJlYW1TdGFydC5ub2RlKCkgPT0gbV9kb3duc3RyZWFtRW5kLm5vZGUoKSB8fAotICAgICAg
ICAgICAgICAgICAgICBtX3Vwc3RyZWFtU3RhcnQubm9kZSgpLT5pc0FuY2VzdG9yKG1fZG93bnN0
cmVhbUVuZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fdXBzdHJlYW1TdGFydC5u
b2RlKCktPmlzRGVzY2VuZGFudE9mKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fdXBzdHJlYW1TdGFydCA9IFBvc2l0aW9uKG1fZG93bnN0cmVhbUVuZC5u
b2RlKCktPnBhcmVudE5vZGUoKSwgbV9kb3duc3RyZWFtRW5kLm5vZGUoKS0+bm9kZUluZGV4KCkp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTM3NSw3ICszNzUsNyBA
QAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
X3Vwc3RyZWFtU3RhcnQubm9kZSgpLT5pc0FuY2VzdG9yKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3Vwc3RyZWFtU3RhcnQubm9kZSgpLT5pc0Rl
c2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSAqbiA9IG1fdXBzdHJlYW1TdGFydC5ub2RlKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAobiAmJiBuLT5wYXJlbnROb2RlKCkgIT0gbV9kb3duc3RyZWFtRW5kLm5v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwpA
QCAtNDMwLDcgKzQzMCw3IEBACiAgICAgVmlzaWJsZVBvc2l0aW9uIG1lcmdlRGVzdGluYXRpb24o
bV91cHN0cmVhbVN0YXJ0KTsKICAgICAKICAgICAvLyBXZSBuZWVkIHRvIG1lcmdlIGludG8gbV91
cHN0cmVhbVN0YXJ0J3MgYmxvY2ssIGJ1dCBpdCdzIGJlZW4gZW1wdGllZCBvdXQgYW5kIGNvbGxh
cHNlZCBieSBkZWxldGlvbi4KLSAgICBpZiAoIW1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5ub2RlKCktPmlzQW5jZXN0b3IobV91cHN0cmVhbVN0YXJ0Lm5vZGUoKS0+ZW5jbG9zaW5n
QmxvY2tGbG93RWxlbWVudCgpKSkgeworICAgIGlmICghbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1
aXZhbGVudCgpLm5vZGUoKS0+aXNEZXNjZW5kYW50T2YobV91cHN0cmVhbVN0YXJ0Lm5vZGUoKS0+
ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpKSkgewogICAgICAgICBpbnNlcnROb2RlQXQoY3Jl
YXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLmdldCgpLCBtX3Vwc3RyZWFtU3RhcnQubm9kZSgp
LCBtX3Vwc3RyZWFtU3RhcnQub2Zmc2V0KCkpOwogICAgICAgICBtZXJnZURlc3RpbmF0aW9uID0g
VmlzaWJsZVBvc2l0aW9uKG1fdXBzdHJlYW1TdGFydCk7CiAgICAgfQpJbmRleDogZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJl
dmlzaW9uIDE2NTEwKQorKysgZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0Niw3ICsyNDYsNyBAQAogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0
aW9uKGhpZ2hlc3RSb290LCAwKSk7CiAKICAgICBQb3NpdGlvbiBwID0gbmV4dFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUocG9zaXRpb24pOwotICAgIHdoaWxlIChwLmlzTm90TnVsbCgpICYmICFp
c0VkaXRhYmxlUG9zaXRpb24ocCkgJiYgcC5ub2RlKCktPmlzQW5jZXN0b3IoaGlnaGVzdFJvb3Qp
KQorICAgIHdoaWxlIChwLmlzTm90TnVsbCgpICYmICFpc0VkaXRhYmxlUG9zaXRpb24ocCkgJiYg
cC5ub2RlKCktPmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKICAgICAgICAgcCA9IGlzQXRv
bWljTm9kZShwLm5vZGUoKSkgPyBwb3NpdGlvbkFmdGVyTm9kZShwLm5vZGUoKSkgOiBuZXh0Vmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShwKTsKIAogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
cCk7CkBAIC0yNTgsNyArMjU4LDcgQEAKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQ
b3NpdGlvbihoaWdoZXN0Um9vdCwgbWF4RGVlcE9mZnNldChoaWdoZXN0Um9vdCkpKTsKICAgICAK
ICAgICBQb3NpdGlvbiBwID0gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKHBvc2l0
aW9uKTsKLSAgICB3aGlsZSAocC5pc05vdE51bGwoKSAmJiAhaXNFZGl0YWJsZVBvc2l0aW9uKHAp
ICYmIHAubm9kZSgpLT5pc0FuY2VzdG9yKGhpZ2hlc3RSb290KSkKKyAgICB3aGlsZSAocC5pc05v
dE51bGwoKSAmJiAhaXNFZGl0YWJsZVBvc2l0aW9uKHApICYmIHAubm9kZSgpLT5pc0Rlc2NlbmRh
bnRPZihoaWdoZXN0Um9vdCkpCiAgICAgICAgIHAgPSBpc0F0b21pY05vZGUocC5ub2RlKCkpID8g
cG9zaXRpb25CZWZvcmVOb2RlKHAubm9kZSgpKSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENh
bmRpZGF0ZShwKTsKIAogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocCk7CkBAIC01NDIsNyAr
NTQyLDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgTm9kZSogcm9vdCA9IChub2RlLT5pbkRv
Y3VtZW50KCkpID8gbm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIDogaGlnaGVzdEFuY2VzdG9y
KG5vZGUpOwogICAgIEFTU0VSVChyb290KTsKLSAgICBmb3IgKE5vZGUqIG4gPSBub2RlLT5wYXJl
bnROb2RlKCk7IG4gJiYgKG4gPT0gcm9vdCB8fCBuLT5pc0FuY2VzdG9yKHJvb3QpKTsgbiA9IG4t
PnBhcmVudE5vZGUoKSkKKyAgICBmb3IgKE5vZGUqIG4gPSBub2RlLT5wYXJlbnROb2RlKCk7IG4g
JiYgKG4gPT0gcm9vdCB8fCBuLT5pc0Rlc2NlbmRhbnRPZihyb290KSk7IG4gPSBuLT5wYXJlbnRO
b2RlKCkpCiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKHRhZ05hbWUpKQogICAgICAgICAgICAg
cmV0dXJuIG47CiAgICAgICAgICAgICAKQEAgLTU2Nyw3ICs1NjcsNyBAQAogICAgICAgICByZXR1
cm4gMDsKICAgICBOb2RlKiByb290ID0gKG5vZGUtPmluRG9jdW1lbnQoKSkgPyBub2RlLT5yb290
RWRpdGFibGVFbGVtZW50KCkgOiBoaWdoZXN0QW5jZXN0b3Iobm9kZSk7CiAgICAgQVNTRVJUKHJv
b3QpOwotICAgIGZvciAoTm9kZSogbiA9IG5vZGUtPnBhcmVudE5vZGUoKTsgbiAmJiAobiA9PSBy
b290IHx8IG4tPmlzQW5jZXN0b3Iocm9vdCkpOyBuID0gbi0+cGFyZW50Tm9kZSgpKQorICAgIGZv
ciAoTm9kZSogbiA9IG5vZGUtPnBhcmVudE5vZGUoKTsgbiAmJiAobiA9PSByb290IHx8IG4tPmlz
RGVzY2VuZGFudE9mKHJvb3QpKTsgbiA9IG4tPnBhcmVudE5vZGUoKSkKICAgICAgICAgaWYgKG4t
Pmhhc1RhZ05hbWUodWxUYWcpIHx8IG4tPmhhc1RhZ05hbWUob2xUYWcpKQogICAgICAgICAgICAg
cmV0dXJuIG47CiAgICAgICAgICAgICAKQEAgLTU4Miw3ICs1ODIsNyBAQAogICAgIC8vIHdpbGwg
YXBwZWFyIHZpc3VhbGx5IGFzIGEgbGlzdCBpdGVtIChidXQgd2l0aG91dCBhIGxpc3QgbWFya2Vy
KQogICAgIE5vZGUqIHJvb3QgPSAobm9kZS0+aW5Eb2N1bWVudCgpKSA/IG5vZGUtPnJvb3RFZGl0
YWJsZUVsZW1lbnQoKSA6IGhpZ2hlc3RBbmNlc3Rvcihub2RlKTsKICAgICBBU1NFUlQocm9vdCk7
Ci0gICAgZm9yIChOb2RlICpuID0gbm9kZTsgbiAmJiBuLT5wYXJlbnROb2RlKCkgJiYgKG4gPT0g
cm9vdCB8fCBuLT5pc0FuY2VzdG9yKHJvb3QpKTsgbiA9IG4tPnBhcmVudE5vZGUoKSkgeworICAg
IGZvciAoTm9kZSAqbiA9IG5vZGU7IG4gJiYgbi0+cGFyZW50Tm9kZSgpICYmIChuID09IHJvb3Qg
fHwgbi0+aXNEZXNjZW5kYW50T2Yocm9vdCkpOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7CiAgICAg
ICAgIGlmIChuLT5oYXNUYWdOYW1lKGxpVGFnKSB8fCBpc0xpc3RFbGVtZW50KG4tPnBhcmVudE5v
ZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gbjsKICAgICB9CkluZGV4OiBlZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
CShyZXZpc2lvbiAxNjUwOSkKKysrIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogICAgIAogICAgIE5vZGUqIGhpZ2hlc3RSb290ID0g
aGlnaGVzdEVkaXRhYmxlUm9vdChkZWVwRXF1aXZhbGVudCgpKTsKICAgICAKLSAgICBpZiAoIW5l
eHQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmlzQW5jZXN0b3IoaGlnaGVzdFJvb3QpKQorICAg
IGlmICghbmV4dC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaGlnaGVz
dFJvb3QpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKICAgICBpZiAoaGln
aGVzdEVkaXRhYmxlUm9vdChuZXh0LmRlZXBFcXVpdmFsZW50KCkpID09IGhpZ2hlc3RSb290KQpA
QCAtMTA1LDcgKzEwNSw3IEBACiAgICAgCiAgICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0
RWRpdGFibGVSb290KGRlZXBFcXVpdmFsZW50KCkpOwogICAgIAotICAgIGlmICghcHJldi5kZWVw
RXF1aXZhbGVudCgpLm5vZGUoKS0+aXNBbmNlc3RvcihoaWdoZXN0Um9vdCkpCisgICAgaWYgKCFw
cmV2LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihoaWdoZXN0Um9vdCkp
CiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAgICAgCiAgICAgaWYgKGhp
Z2hlc3RFZGl0YWJsZVJvb3QocHJldi5kZWVwRXF1aXZhbGVudCgpKSA9PSBoaWdoZXN0Um9vdCkK
QEAgLTE2Niw4ICsxNjYsOCBAQAogCiAgICAgLy8gVGhlIG5ldyBwb3NpdGlvbiBzaG91bGQgYmUg
aW4gdGhlIHNhbWUgYmxvY2sgZmxvdyBlbGVtZW50LiBGYXZvciB0aGF0LgogICAgIE5vZGUgKm9y
aWdpbmFsQmxvY2sgPSBub2RlLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7Ci0gICAgYm9v
bCBuZXh0SXNPdXRzaWRlT3JpZ2luYWxCbG9jayA9ICFuZXh0Tm9kZS0+aXNBbmNlc3Rvcihvcmln
aW5hbEJsb2NrKSAmJiBuZXh0Tm9kZSAhPSBvcmlnaW5hbEJsb2NrOwotICAgIGJvb2wgcHJldklz
T3V0c2lkZU9yaWdpbmFsQmxvY2sgPSAhcHJldk5vZGUtPmlzQW5jZXN0b3Iob3JpZ2luYWxCbG9j
aykgJiYgcHJldk5vZGUgIT0gb3JpZ2luYWxCbG9jazsKKyAgICBib29sIG5leHRJc091dHNpZGVP
cmlnaW5hbEJsb2NrID0gIW5leHROb2RlLT5pc0Rlc2NlbmRhbnRPZihvcmlnaW5hbEJsb2NrKSAm
JiBuZXh0Tm9kZSAhPSBvcmlnaW5hbEJsb2NrOworICAgIGJvb2wgcHJldklzT3V0c2lkZU9yaWdp
bmFsQmxvY2sgPSAhcHJldk5vZGUtPmlzRGVzY2VuZGFudE9mKG9yaWdpbmFsQmxvY2spICYmIHBy
ZXZOb2RlICE9IG9yaWdpbmFsQmxvY2s7CiAgICAgaWYgKG5leHRJc091dHNpZGVPcmlnaW5hbEJs
b2NrICYmICFwcmV2SXNPdXRzaWRlT3JpZ2luYWxCbG9jaykKICAgICAgICAgcmV0dXJuIHByZXY7
CiAgICAgICAgIApAQCAtMjcxLDExICsyNzEsMTEgQEAKICAgICBpZiAodmlzaWJsZVBvc2l0aW9u
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCF2aXNpYmxl
UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmlzQW5jZXN0b3Iobm9kZSkpCisgICAg
aWYgKCF2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmlzRGVzY2VuZGFu
dE9mKG5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIFZpc2libGVQ
b3NpdGlvbiBwcmV2aW91cyA9IHZpc2libGVQb3NpdGlvbi5wcmV2aW91cygpOwotICAgIHJldHVy
biBwcmV2aW91cy5pc051bGwoKSB8fCAhcHJldmlvdXMuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkt
PmlzQW5jZXN0b3Iobm9kZSk7CisgICAgcmV0dXJuIHByZXZpb3VzLmlzTnVsbCgpIHx8ICFwcmV2
aW91cy5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+aXNEZXNjZW5kYW50T2Yobm9kZSk7CiB9CiAK
IGJvb2wgaXNMYXN0VmlzaWJsZVBvc2l0aW9uSW5Ob2RlKGNvbnN0IFZpc2libGVQb3NpdGlvbiAm
dmlzaWJsZVBvc2l0aW9uLCBjb25zdCBOb2RlICpub2RlKQpAQCAtMjgzLDExICsyODMsMTEgQEAK
ICAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkt
PmlzQW5jZXN0b3Iobm9kZSkpCisgICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5ub2RlKCktPmlzRGVzY2VuZGFudE9mKG5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQgPSB2aXNpYmxlUG9z
aXRpb24ubmV4dCgpOwotICAgIHJldHVybiBuZXh0LmlzTnVsbCgpIHx8ICFuZXh0LmRlZXBFcXVp
dmFsZW50KCkubm9kZSgpLT5pc0FuY2VzdG9yKG5vZGUpOworICAgIHJldHVybiBuZXh0LmlzTnVs
bCgpIHx8ICFuZXh0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihub2Rl
KTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IGVkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVy
LmNwcAkocmV2aXNpb24gMTY1MDkpCisrKyBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMTAgKzE0MCwxMCBAQAogICAgIE5vZGUqIHN0YXJ0ID0g
bV9zZWwuc3RhcnQoKS5ub2RlKCk7CiAgICAgTm9kZSogZW5kID0gbV9zZWwuZW5kKCkubm9kZSgp
OwogICAgIAotICAgIGJvb2wgYmFzZVJlbW92ZWQgPSBub2RlID09IGJhc2UgfHwgKGJhc2UgJiYg
YmFzZS0+aXNBbmNlc3Rvcihub2RlKSk7Ci0gICAgYm9vbCBleHRlbnRSZW1vdmVkID0gbm9kZSA9
PSBleHRlbnQgfHwgKGV4dGVudCAmJiBleHRlbnQtPmlzQW5jZXN0b3Iobm9kZSkpOwotICAgIGJv
b2wgc3RhcnRSZW1vdmVkID0gbm9kZSA9PSBzdGFydCB8fCAoc3RhcnQgJiYgc3RhcnQtPmlzQW5j
ZXN0b3Iobm9kZSkpOwotICAgIGJvb2wgZW5kUmVtb3ZlZCA9IG5vZGUgPT0gZW5kIHx8IChlbmQg
JiYgZW5kLT5pc0FuY2VzdG9yKG5vZGUpKTsKKyAgICBib29sIGJhc2VSZW1vdmVkID0gbm9kZSA9
PSBiYXNlIHx8IChiYXNlICYmIGJhc2UtPmlzRGVzY2VuZGFudE9mKG5vZGUpKTsKKyAgICBib29s
IGV4dGVudFJlbW92ZWQgPSBub2RlID09IGV4dGVudCB8fCAoZXh0ZW50ICYmIGV4dGVudC0+aXNE
ZXNjZW5kYW50T2Yobm9kZSkpOworICAgIGJvb2wgc3RhcnRSZW1vdmVkID0gbm9kZSA9PSBzdGFy
dCB8fCAoc3RhcnQgJiYgc3RhcnQtPmlzRGVzY2VuZGFudE9mKG5vZGUpKTsKKyAgICBib29sIGVu
ZFJlbW92ZWQgPSBub2RlID09IGVuZCB8fCAoZW5kICYmIGVuZC0+aXNEZXNjZW5kYW50T2Yobm9k
ZSkpOwogICAgIAogICAgIGJvb2wgY2xlYXJSZW5kZXJUcmVlU2VsZWN0aW9uID0gZmFsc2U7CiAg
ICAgYm9vbCBjbGVhckRPTVRyZWVTZWxlY3Rpb24gPSBmYWxzZTsKSW5kZXg6IGVkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJl
dmlzaW9uIDE2NTA5KQorKysgZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NTYsNyArNjU2LDcgQEAKICAgICAgICAgICAgIE5vZGUgKmJsb2NrID0gbV9ub2RlLT5l
bmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CiAgICAgICAgICAgICBpZiAoYmxvY2spIHsKICAg
ICAgICAgICAgICAgICBOb2RlICpuZXh0QmxvY2sgPSBuZXh0LT5lbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRCbG9jayAmJiBuZXh0QmxvY2stPmlz
QW5jZXN0b3IoYmxvY2spKQorICAgICAgICAgICAgICAgIGlmIChuZXh0QmxvY2sgJiYgbmV4dEJs
b2NrLT5pc0Rlc2NlbmRhbnRPZihibG9jaykpCiAgICAgICAgICAgICAgICAgICAgIGVtaXROZXds
aW5lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IGVkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CShyZXZpc2lvbiAxNjUwOSkKKysrIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzksNyArMzc5LDcgQEAKICAgICAvLyBJZiB0aGUgZW5kIG5vZGUgaXMg
YmVmb3JlIHRoZSBzdGFydCBub2RlIChjYW4gb25seSBoYXBwZW4gaWYgdGhlIGVuZCBub2RlIGlz
CiAgICAgLy8gYW4gYW5jZXN0b3Igb2YgdGhlIHN0YXJ0IG5vZGUpLCB3ZSBnYXRoZXIgbm9kZXMg
dXAgdG8gdGhlIG5leHQgc2libGluZyBvZiB0aGUgZW5kIG5vZGUKICAgICBOb2RlICpiZXlvbmRF
bmQ7Ci0gICAgaWYgKHN0YXJ0Lm5vZGUoKS0+aXNBbmNlc3RvcihlbmQubm9kZSgpKSkKKyAgICBp
ZiAoc3RhcnQubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihlbmQubm9kZSgpKSkKICAgICAgICAgYmV5
b25kRW5kID0gZW5kLm5vZGUoKS0+dHJhdmVyc2VOZXh0U2libGluZygpOwogICAgIGVsc2UKICAg
ICAgICAgYmV5b25kRW5kID0gZW5kLm5vZGUoKS0+dHJhdmVyc2VOZXh0Tm9kZSgpOwpAQCAtNDc5
LDcgKzQ3OSw3IEBACiAgICAgLy8gSWYgdGhlIGVuZCBub2RlIGlzIGJlZm9yZSB0aGUgc3RhcnQg
bm9kZSAoY2FuIG9ubHkgaGFwcGVuIGlmIHRoZSBlbmQgbm9kZSBpcwogICAgIC8vIGFuIGFuY2Vz
dG9yIG9mIHRoZSBzdGFydCBub2RlKSwgd2UgZ2F0aGVyIG5vZGVzIHVwIHRvIHRoZSBuZXh0IHNp
Ymxpbmcgb2YgdGhlIGVuZCBub2RlCiAgICAgTm9kZSAqYmV5b25kRW5kOwotICAgIGlmIChzdGFy
dC5ub2RlKCktPmlzQW5jZXN0b3IoZW5kLm5vZGUoKSkpCisgICAgaWYgKHN0YXJ0Lm5vZGUoKS0+
aXNEZXNjZW5kYW50T2YoZW5kLm5vZGUoKSkpCiAgICAgICAgIGJleW9uZEVuZCA9IGVuZC5ub2Rl
KCktPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKICAgICBlbHNlCiAgICAgICAgIGJleW9uZEVuZCA9
IGVuZC5ub2RlKCktPnRyYXZlcnNlTmV4dE5vZGUoKTsKQEAgLTYyMSw3ICs2MjEsNyBAQAogICAg
ICAgICBlbmROb2RlID0gZW5kLm5vZGUoKS0+bGFzdERlc2NlbmRhbnQoKTsKICAgICAvLyBJZiB0
aGUgZW5kIG5vZGUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHN0YXJ0IG5vZGUgdGhlbiBhIHByZS1v
cmRlcgogICAgIC8vIHRyYXZlcnNhbCB3aWxsIG5ldmVyIHJlYWNoIGl0LiAgQWRqdXN0IGl0IHNv
IHRoYXQgdGhpcyB3b24ndCBoYXBwZW4uCi0gICAgaWYgKG5vZGUtPmlzQW5jZXN0b3IoZW5kTm9k
ZSkpCisgICAgaWYgKG5vZGUtPmlzRGVzY2VuZGFudE9mKGVuZE5vZGUpKQogICAgICAgICBlbmRO
b2RlID0gZW5kTm9kZS0+bGFzdERlc2NlbmRhbnQoKTsKICAgICAKICAgICBpZiAobm9kZSA9PSBl
bmROb2RlKSB7CkBAIC04NjcsNyArODY3LDcgQEAKIAogICAgICAgICAgICAgICAgIGlmIChub2Rl
ID09IGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgIG5leHRDdXJyZW50ID0gY2hpbGQ7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5pc0FuY2VzdG9yKGNoaWxkKSkgeworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aXNEZXNjZW5kYW50T2YoY2hpbGQpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGFwcGx5VGV4dERlY29yYXRpb25TdHlsZShjaGlsZCwgZGVjb3Jh
dGlvbi5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIG5leHRDdXJyZW50ID0gY2hpbGQ7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBD
aGFuZ2VMb2cJKHJldmlzaW9uIDE2NTMwKQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMDYtMDktMjIgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04MDI5
PgorICAgICAgICBSZW5hbWUgTm9kZTo6aXNBbmNlc3RvciBhbmQgUmVuZGVyT2JqZWN0OjpoYXNB
bmNlc3RvciB0byBpc0Rlc2NlbmRhbnRPZgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjbGVhclNlbGVjdGlvbklmTmVlZGVkKToKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb250
YWlucyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
dHJhdmVyc2VOZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp0cmF2ZXJzZU5leHRT
aWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyYXZlcnNlUHJldmlvdXNOb2RlUG9z
dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNoZWNrQWRkQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T2YpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6
CisgICAgICAgICogZG9tL05vZGVJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
SXRlcmF0b3I6Om5vdGlmeUJlZm9yZU5vZGVSZW1vdmFsKToKKyAgICAgICAgKiBlZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
OmFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OnB1c2hEb3duVGV4dERlY29yYXRpb25TdHlsZUFyb3VuZE5vZGUpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhDb250ZW50c1Rv
TmV3QmxvY2tJZk5lY2Vzc2FyeSk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92
YWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2Vu
ZXJhbERlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpt
ZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1hdEJsb2NrQ29tbWFuZDo6ZG9BcHBseSk6CisgICAg
ICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjplbmNsb3NpbmdMaXN0T3JCbG9ja3F1b3RlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb246OnZhbGlkYXRlKToKKyAgICAgICAg
KiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uQ29udHJvbGxlcjo6bm9kZVdpbGxCZVJlbW92ZWQpOgorICAgICAgICAqIGVkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNU
ZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bmV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnByZXZpb3VzKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
aXNGaXJzdFZpc2libGVQb3NpdGlvbkluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0xhc3RW
aXNpYmxlUG9zaXRpb25Jbk5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbklu
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpsYXN0RWRpdGFibGVQb3NpdGlvbkJlZm9yZVBvc2l0
aW9uSW5Sb290KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ05vZGVXaXRoVGFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9z
aW5nTGlzdENoaWxkKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVNYXJrdXApOgorCiAyMDA2LTA5LTIyICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeS4K
</data>
<flag name="review"
          id="3520"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>