<?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>128934</bug_id>
          
          <creation_ts>2014-02-17 14:41:48 -0800</creation_ts>
          <short_desc>Make TreeScope::rootNode return a reference</short_desc>
          <delta_ts>2014-02-17 15:24:36 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981648</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-02-17 14:41:48 -0800</bug_when>
    <thetext>It is never null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981655</commentid>
    <comment_count>1</comment_count>
      <attachid>224428</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-02-17 14:56:21 -0800</bug_when>
    <thetext>Created attachment 224428
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981657</commentid>
    <comment_count>2</comment_count>
      <attachid>224428</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-17 15:02:49 -0800</bug_when>
    <thetext>Comment on attachment 224428
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=224428&amp;action=review

r=me assuming it builds.

&gt; Source/WebCore/dom/Document.cpp:716
&gt; +    ContainerNode&amp; rootNode = scope-&gt;rootNode();
&gt; +    for (auto&amp; element : descendantsOfType&lt;Element&gt;(rootNode)) {

I don&apos;t think you need the &apos;rootNode&apos; local.

&gt; Source/WebCore/dom/ShadowRoot.h:98
&gt; +inline bool isShadowRoot(const Node&amp; node) { return node.isElementNode() &amp;&amp; toElement(node).isShadowRoot(); }

Why do you need the isElementNode() check? Node has isShadowRoot().

&gt; Source/WebCore/dom/ShadowRoot.h:100
&gt; +NODE_TYPE_CASTS(ShadowRoot);

You don&apos;t need the semicolon here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981664</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-02-17 15:24:36 -0800</bug_when>
    <thetext>https://trac.webkit.org/r164251</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224428</attachid>
            <date>2014-02-17 14:56:21 -0800</date>
            <delta_ts>2014-02-17 15:02:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>rootnode-reference.patch</filename>
            <type>text/plain</type>
            <size>18387</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDI1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE0LTAyLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFRyZWVTY29wZTo6cm9v
dE5vZGUgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjg5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJdCBpcyBuZXZlciBudWxsLgorCisgICAgICAgICogY3NzL0VsZW1l
bnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVj
dG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzVHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5
TWFwKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50T3JkZXJlZE1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1h
cDo6Z2V0QWxsRWxlbWVudHNCeUlkKToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcjo6bW92ZVRvUGFy
ZW50T3JTaGFkb3dIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50VGFyZ2V0UmVzcGVjdGlu
Z1RhcmdldFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dC
b3VuZGFyeSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Y29udGFpbmluZ1NoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3Zl
ZEZyb20pOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjpp
c1NoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6cm9vdE5vZGUpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6RE9NU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFzRmlsZUlu
cHV0KToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb2N1c05hdmlnYXRpb25TY29wZTo6cm9vdE5vZGUpOgorCiAyMDE0LTAyLTE3ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEludmFsaWQg
Y2FzdCBpbiBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlIChDUkJ1ZyAy
ODAzNTIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAJKHJldmlzaW9uIDE2NDIyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEVsZW1l
bnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hS
ZXF1ZXN0LCBydWxlUmFuZ2UpOwogI2VuZGlmCiAgICAgLy8gT25seSBtYXRjaCBVQSBydWxlcyBp
biBzaGFkb3cgdHJlZS4KLSAgICBpZiAoIU1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5n
VUFSdWxlcygpICYmIG1fZWxlbWVudC50cmVlU2NvcGUoKS5yb290Tm9kZSgpLT5pc1NoYWRvd1Jv
b3QoKSkKKyAgICBpZiAoIU1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5nVUFSdWxlcygp
ICYmIG1fZWxlbWVudC50cmVlU2NvcGUoKS5yb290Tm9kZSgpLmlzU2hhZG93Um9vdCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBp
ZCwgY2xhc3MsIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFuZApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAxNjQyNDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyAr
MjM2LDcgQEAgaW5saW5lIGJvb2wgTm9kZTo6bmVlZHNOb2RlUmVuZGVyaW5nVHJhdgogCiBpbmxp
bmUgYm9vbCBOb2RlOjppc1RyZWVTY29wZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRyZWVTY29w
ZSgpLnJvb3ROb2RlKCkgPT0gdGhpczsKKyAgICByZXR1cm4gJnRyZWVTY29wZSgpLnJvb3ROb2Rl
KCkgPT0gdGhpczsKIH0KIAogLy8gVGhpcyBjb25zdGFudCBjb250cm9scyBob3cgbXVjaCBidWZm
ZXIgaXMgaW5pdGlhbGx5IGFsbG9jYXRlZApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAxNjQyNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MTIsOCArNzEyLDggQEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1l
bnRCeUFjY2Vzc0tleQogdm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlNYXAoVHJlZVNjb3Bl
KiBzY29wZSkKIHsKICAgICBBU1NFUlQoc2NvcGUpOwotICAgIENvbnRhaW5lck5vZGUqIHJvb3RO
b2RlID0gc2NvcGUtPnJvb3ROb2RlKCk7Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oKnJvb3ROb2RlKSkgeworICAgIENvbnRhaW5lck5vZGUmIHJv
b3ROb2RlID0gc2NvcGUtPnJvb3ROb2RlKCk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVz
Y2VuZGFudHNPZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpKSB7CiAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgYWNjZXNzS2V5ID0gZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKGFjY2Vzc2tleUF0
dHIpOwogICAgICAgICBpZiAoIWFjY2Vzc0tleS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2Vs
ZW1lbnRzQnlBY2Nlc3NLZXkuc2V0KGFjY2Vzc0tleS5pbXBsKCksICZlbGVtZW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCShyZXZpc2lvbiAxNjQy
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6YWRkKGNv
bnN0IEF0b21pCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRyZWVTY29wZSk7CiAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZWxlbWVudC5pc0luVHJlZVNjb3BlKCkpOwotICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHRyZWVTY29wZS5yb290Tm9kZSgpLT5jb250
YWluc0luY2x1ZGluZ1NoYWRvd0RPTSgmZWxlbWVudCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKHRyZWVTY29wZS5yb290Tm9kZSgpLmNvbnRhaW5zSW5jbHVkaW5nU2hh
ZG93RE9NKCZlbGVtZW50KSk7CiAgICAgaWYgKCFlbGVtZW50LmlzSW5UcmVlU2NvcGUoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIE1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFkZCgm
a2V5LCBNYXBFbnRyeSgmZWxlbWVudCkpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIGlubGluZSBFbGVt
ZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldCgKICAgICB9CiAKICAgICAvLyBXZSBrbm93IHRo
ZXJlJ3MgYXQgbGVhc3Qgb25lIG5vZGUgdGhhdCBtYXRjaGVzOyBpdGVyYXRlIHRvIGZpbmQgdGhl
IGZpcnN0IG9uZS4KLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxF
bGVtZW50Pigqc2NvcGUucm9vdE5vZGUoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihzY29wZS5yb290Tm9kZSgpKSkgewogICAgICAgICBp
ZiAoIWtleU1hdGNoZXMoa2V5LCBlbGVtZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBlbnRyeS5lbGVtZW50ID0gJmVsZW1lbnQ7CkBAIC0yMTEsNyArMjExLDcgQEAgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiogRG9jdW1lbnRPcmRlcmVkTQogCiAgICAgaWYgKGVudHJ5Lm9yZGVy
ZWRMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBlbnRyeS5vcmRlcmVkTGlzdC5yZXNlcnZlQ2Fw
YWNpdHkoZW50cnkuY291bnQpOwotICAgICAgICBhdXRvIGVsZW1lbnREZXNjYW5kZW50cyA9IGRl
c2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KCpzY29wZS5yb290Tm9kZSgpKTsKKyAgICAgICAgYXV0
byBlbGVtZW50RGVzY2FuZGVudHMgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihzY29wZS5y
b290Tm9kZSgpKTsKICAgICAgICAgYXV0byBpdCA9IGVudHJ5LmVsZW1lbnQgPyBlbGVtZW50RGVz
Y2FuZGVudHMuYmVnaW5BdCgqZW50cnkuZWxlbWVudCkgOiBlbGVtZW50RGVzY2FuZGVudHMuYmVn
aW4oKTsKICAgICAgICAgYXV0byBlbmQgPSBlbGVtZW50RGVzY2FuZGVudHMuZW5kKCk7CiAgICAg
ICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxNjQyMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDggKzE0Myw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX3JlbGF0ZWROb2RlSW5DdXJyZW50VHJlZVNjb3Bl
OwogCiAgICAgICAgIGlmIChtX2N1cnJlbnRUcmVlU2NvcGUpIHsKLSAgICAgICAgICAgIEFTU0VS
VChtX2N1cnJlbnRUcmVlU2NvcGUtPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpKTsKLSAgICAg
ICAgICAgIEFTU0VSVCgmbmV3VGFyZ2V0ID09IHRvU2hhZG93Um9vdChtX2N1cnJlbnRUcmVlU2Nv
cGUtPnJvb3ROb2RlKCkpLT5ob3N0RWxlbWVudCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2N1
cnJlbnRUcmVlU2NvcGUtPnJvb3ROb2RlKCkuaXNTaGFkb3dSb290KCkpOworICAgICAgICAgICAg
QVNTRVJUKCZuZXdUYXJnZXQgPT0gdG9TaGFkb3dSb290KG1fY3VycmVudFRyZWVTY29wZS0+cm9v
dE5vZGUoKSkuaG9zdEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50VHJl
ZVNjb3BlLT5wYXJlbnRUcmVlU2NvcGUoKSA9PSAmbmV3VHJlZVNjb3BlKTsKICAgICAgICAgfQog
CkBAIC0xODQsOCArMTg0LDggQEAgaW5saW5lIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldFJlc3Bl
Y3RpbgogCiAgICAgLy8gU3BlYzogVGhlIGV2ZW50IGhhbmRsaW5nIGZvciB0aGUgbm9uLWV4cG9z
ZWQgdHJlZSB3b3JrcyBhcyBpZiB0aGUgcmVmZXJlbmNlZCBlbGVtZW50IGhhZCBiZWVuIHRleHR1
YWxseSBpbmNsdWRlZAogICAgIC8vIGFzIGEgZGVlcGx5IGNsb25lZCBjaGlsZCBvZiB0aGUgJ3Vz
ZScgZWxlbWVudCwgZXhjZXB0IHRoYXQgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHRvIHRoZSBTVkdF
bGVtZW50SW5zdGFuY2Ugb2JqZWN0cwotICAgIE5vZGUqIHJvb3ROb2RlID0gcmVmZXJlbmNlTm9k
ZS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIEVsZW1lbnQqIHNoYWRvd0hvc3RFbGVtZW50
ID0gcm9vdE5vZGUtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHJvb3ROb2RlKS0+aG9z
dEVsZW1lbnQoKSA6IDA7CisgICAgYXV0byYgcm9vdE5vZGUgPSByZWZlcmVuY2VOb2RlLnRyZWVT
Y29wZSgpLnJvb3ROb2RlKCk7CisgICAgRWxlbWVudCogc2hhZG93SG9zdEVsZW1lbnQgPSByb290
Tm9kZS5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChyb290Tm9kZSkuaG9zdEVsZW1lbnQo
KSA6IG51bGxwdHI7CiAgICAgLy8gQXQgdGhpcyB0aW1lLCBTVkcgbm9kZXMgYXJlIG5vdCBzdXBw
b3J0ZWQgaW4gbm9uLTx1c2U+IHNoYWRvdyB0cmVlcy4KICAgICBpZiAoIXNoYWRvd0hvc3RFbGVt
ZW50IHx8ICFzaGFkb3dIb3N0RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSkK
ICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7CkBAIC0zNjYsNyArMzY2LDcgQEAgc3RhdGlj
IGlubGluZSBib29sIHNob3VsZEV2ZW50Q3Jvc3NTaGFkbwogICAgIC8vIENoYW5naW5nIHRoaXMg
YnJlYWtzIGV4aXN0aW5nIHNpdGVzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTIxOTUgZm9yIGRldGFpbHMuCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUgPSBldmVudC50eXBlKCk7Ci0gICAgYm9vbCB0YXJnZXRJc0luU2hhZG93
Um9vdCA9IHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZS0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSA9
PSAmc2hhZG93Um9vdDsKKyAgICBib29sIHRhcmdldElzSW5TaGFkb3dSb290ID0gdGFyZ2V0Tm9k
ZSAmJiAmdGFyZ2V0Tm9kZS0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSA9PSAmc2hhZG93Um9vdDsK
ICAgICByZXR1cm4gIXRhcmdldElzSW5TaGFkb3dSb290CiAgICAgICAgIHx8ICEoZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50CiAgICAgICAgICAgICB8fCBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAx
NjQyNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1MSw4ICs5NTEsOCBAQCBOb2RlKiBOb2RlOjpkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2Rl
CiAKIFNoYWRvd1Jvb3QqIE5vZGU6OmNvbnRhaW5pbmdTaGFkb3dSb290KCkgY29uc3QKIHsKLSAg
ICBDb250YWluZXJOb2RlKiByb290ID0gdHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAgICByZXR1
cm4gcm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChyb290KSA6IDA7
CisgICAgQ29udGFpbmVyTm9kZSYgcm9vdCA9IHRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CisgICAg
cmV0dXJuIHJvb3QuaXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QoJnJvb3QpIDogbnVsbHB0
cjsKIH0KIAogTm9kZSogTm9kZTo6bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKQpAQCAt
MTAxMSw3ICsxMDExLDcgQEAgdm9pZCBOb2RlOjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBp
bgogICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJO
b2RlKCkpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCiAgICAgICAgIGNs
ZWFyRmxhZyhJbkRvY3VtZW50RmxhZyk7Ci0gICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgIXRy
ZWVTY29wZSgpLnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpKQorICAgIGlmIChpc0luU2hhZG93
VHJlZSgpICYmICF0cmVlU2NvcGUoKS5yb290Tm9kZSgpLmlzU2hhZG93Um9vdCgpKQogICAgICAg
ICBjbGVhckZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oCShyZXZpc2lvbiAxNjQyMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxNiArOTUsOSBAQCBpbmxpbmUgRWxlbWVudCog
U2hhZG93Um9vdDo6YWN0aXZlRWxlbWVuCiAgICAgcmV0dXJuIHRyZWVTY29wZSgpLmZvY3VzZWRF
bGVtZW50KCk7CiB9CiAKLWlubGluZSBjb25zdCBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoY29u
c3QgTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigh
bm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFNoYWRvd1Jvb3QqPihub2RlKTsKLX0KK2lubGluZSBib29sIGlzU2hhZG93Um9vdChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSkuaXNTaGFkb3dSb290KCk7IH0KIAotaW5saW5lIFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9v
dChOb2RlKiBub2RlKQotewotICAgIHJldHVybiBjb25zdF9jYXN0PFNoYWRvd1Jvb3QqPih0b1No
YWRvd1Jvb3Qoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZSo+KG5vZGUpKSk7Ci19CitOT0RFX1RZUEVf
Q0FTVFMoU2hhZG93Um9vdCk7CiAKIGlubGluZSBTaGFkb3dSb290KiBOb2RlOjpzaGFkb3dSb290
KCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCShyZXZpc2lvbiAxNjQy
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQog
dm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNj
b3BlKQogewogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5ub3QgYmUgcmUtcGFyZW50ZWQuCi0g
ICAgQVNTRVJUKCFyb290Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQoIW1f
cm9vdE5vZGUuaXNEb2N1bWVudE5vZGUoKSk7CiAgICAgLy8gRXZlcnkgc2NvcGUgb3RoZXIgdGhh
biBkb2N1bWVudCBuZWVkcyBhIHBhcmVudCBzY29wZS4KICAgICBBU1NFUlQobmV3UGFyZW50U2Nv
cGUpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgSFRNTE1hcEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0
SW1hZ2VNYXAoYwogICAgIFN0cmluZyBuYW1lID0gKGhhc2hQb3MgPT0gbm90Rm91bmQgPyB1cmwg
OiB1cmwuc3Vic3RyaW5nKGhhc2hQb3MgKyAxKSkuaW1wbCgpOwogICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKHJvb3ROb2RlKCktPmRvY3Vt
ZW50KCkuaXNIVE1MRG9jdW1lbnQoKSkgeworICAgIGlmIChtX3Jvb3ROb2RlLmRvY3VtZW50KCku
aXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICBBdG9taWNTdHJpbmcgbG93ZXJjYXNlZE5hbWUg
PSBuYW1lLmxvd2VyKCk7CiAgICAgICAgIHJldHVybiBtX2ltYWdlTWFwc0J5TmFtZS0+Z2V0RWxl
bWVudEJ5TG93ZXJjYXNlZE1hcE5hbWUoKmxvd2VyY2FzZWROYW1lLmltcGwoKSwgKnRoaXMpOwog
ICAgIH0KQEAgLTIzOSw3ICsyMzksNyBAQCBOb2RlKiBub2RlRnJvbVBvaW50KERvY3VtZW50KiBk
b2N1bWVudCwgCiAKIEVsZW1lbnQqIFRyZWVTY29wZTo6ZWxlbWVudEZyb21Qb2ludChpbnQgeCwg
aW50IHkpIGNvbnN0CiB7Ci0gICAgTm9kZSogbm9kZSA9IG5vZGVGcm9tUG9pbnQoJnJvb3ROb2Rl
KCktPmRvY3VtZW50KCksIHgsIHkpOworICAgIE5vZGUqIG5vZGUgPSBub2RlRnJvbVBvaW50KCZt
X3Jvb3ROb2RlLmRvY3VtZW50KCksIHgsIHkpOwogICAgIHdoaWxlIChub2RlICYmICFub2RlLT5p
c0VsZW1lbnROb2RlKCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAg
aWYgKG5vZGUpCkBAIC0yNjgsNyArMjY4LDcgQEAgSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3Bl
OjpsYWJlbEVsZW1lbgogICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vz
cy4KICAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RG9j
dW1lbnRPcmRlcmVkTWFwPigpOwogCi0gICAgICAgIGZvciAoYXV0byYgbGFiZWwgOiBkZXNjZW5k
YW50c09mVHlwZTxIVE1MTGFiZWxFbGVtZW50Pigqcm9vdE5vZGUoKSkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBsYWJlbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KG1fcm9v
dE5vZGUpKSB7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvclZhbHVlID0gbGFi
ZWwuZmFzdEdldEF0dHJpYnV0ZShmb3JBdHRyKTsKICAgICAgICAgICAgIGlmICghZm9yVmFsdWUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFkZExhYmVsKCpmb3JWYWx1ZS5pbXBsKCksIGxh
YmVsKTsKQEAgLTI4MCwxNiArMjgwLDE2IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZTo6
bGFiZWxFbGVtZW4KIAogRE9NU2VsZWN0aW9uKiBUcmVlU2NvcGU6OmdldFNlbGVjdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKCFyb290Tm9kZSgpLT5kb2N1bWVudCgpLmZyYW1lKCkpCisgICAgaWYg
KCFtX3Jvb3ROb2RlLmRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpZiAobV9zZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBtX3NlbGVjdGlvbi5nZXQo
KTsKIAotICAgIGlmICh0aGlzICE9ICZyb290Tm9kZSgpLT5kb2N1bWVudCgpKQotICAgICAgICBy
ZXR1cm4gcm9vdE5vZGUoKS0+ZG9jdW1lbnQoKS5nZXRTZWxlY3Rpb24oKTsKKyAgICBpZiAodGhp
cyAhPSAmbV9yb290Tm9kZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gbV9yb290Tm9kZS5k
b2N1bWVudCgpLmdldFNlbGVjdGlvbigpOwogCi0gICAgbV9zZWxlY3Rpb24gPSBET01TZWxlY3Rp
b246OmNyZWF0ZSgmcm9vdE5vZGUoKS0+ZG9jdW1lbnQoKSk7CisgICAgbV9zZWxlY3Rpb24gPSBE
T01TZWxlY3Rpb246OmNyZWF0ZSgmbV9yb290Tm9kZS5kb2N1bWVudCgpKTsKICAgICByZXR1cm4g
bV9zZWxlY3Rpb24uZ2V0KCk7CiB9CiAKQEAgLTI5OSw4ICsyOTksOCBAQCBFbGVtZW50KiBUcmVl
U2NvcGU6OmZpbmRBbmNob3IoY29uc3QgU3RyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGlmIChFbGVtZW50KiBlbGVtZW50ID0gZ2V0RWxlbWVudEJ5SWQobmFtZSkpCiAgICAgICAgIHJl
dHVybiBlbGVtZW50OwotICAgIGZvciAoYXV0byYgYW5jaG9yIDogZGVzY2VuZGFudHNPZlR5cGU8
SFRNTEFuY2hvckVsZW1lbnQ+KCpyb290Tm9kZSgpKSkgewotICAgICAgICBpZiAocm9vdE5vZGUo
KS0+ZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkgeworICAgIGZvciAoYXV0byYgYW5jaG9yIDog
ZGVzY2VuZGFudHNPZlR5cGU8SFRNTEFuY2hvckVsZW1lbnQ+KG1fcm9vdE5vZGUpKSB7CisgICAg
ICAgIGlmIChtX3Jvb3ROb2RlLmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkpIHsKICAgICAgICAg
ICAgIC8vIFF1aXJrcyBtb2RlLCBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2YgbmFtZXMu
CiAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYW5jaG9yLm5hbWUoKSwgbmFtZSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuICZhbmNob3I7CkBAIC0zMzUsNyArMzM1LDcgQEAgc3Rh
dGljIEVsZW1lbnQqIGZvY3VzZWRGcmFtZU93bmVyRWxlbWVudAogCiBFbGVtZW50KiBUcmVlU2Nv
cGU6OmZvY3VzZWRFbGVtZW50KCkKIHsKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSByb290Tm9k
ZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fcm9vdE5vZGUuZG9j
dW1lbnQoKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQo
KTsKIAogICAgIGlmICghZWxlbWVudCAmJiBkb2N1bWVudC5wYWdlKCkpCkBAIC0zNDQsNyArMzQ0
LDcgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpmb2N1c2VkRWxlbWVudCgpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlID0gJmVsZW1lbnQtPnRyZWVTY29w
ZSgpOwogICAgIHdoaWxlICh0cmVlU2NvcGUgIT0gdGhpcyAmJiB0cmVlU2NvcGUgIT0gJmRvY3Vt
ZW50KSB7Ci0gICAgICAgIGVsZW1lbnQgPSB0b1NoYWRvd1Jvb3QodHJlZVNjb3BlLT5yb290Tm9k
ZSgpKS0+aG9zdEVsZW1lbnQoKTsKKyAgICAgICAgZWxlbWVudCA9IHRvU2hhZG93Um9vdCh0cmVl
U2NvcGUtPnJvb3ROb2RlKCkpLmhvc3RFbGVtZW50KCk7CiAgICAgICAgIHRyZWVTY29wZSA9ICZl
bGVtZW50LT50cmVlU2NvcGUoKTsKICAgICB9CiAgICAgaWYgKHRoaXMgIT0gdHJlZVNjb3BlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAkocmV2aXNpb24gMTY0MjI0KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1
YmxpYzoKICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNpYyBET00gbXV0YXRpb24gbWV0aG9kcyAoZS5n
LiwgYXBwZW5kQ2hpbGQoKSkuCiAgICAgdm9pZCBhZG9wdElmTmVlZGVkKE5vZGUqKTsKIAotICAg
IENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gJm1fcm9vdE5vZGU7IH0K
KyAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7
IH0KIAogICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgaWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5KCkgY29uc3QgeyByZXR1cm4gKm1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAko
cmV2aXNpb24gMTY0MjI0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0YXRpYyBQb3NpdGlv
biBhZGp1c3RQb3NpdGlvbkZvckVuZChjb24KICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3Jl
Tm9kZShhbmNlc3Rvcik7CiAgICAgfQogCi0gICAgaWYgKE5vZGUqIGxhc3RDaGlsZCA9IHRyZWVT
Y29wZS5yb290Tm9kZSgpLT5sYXN0Q2hpbGQoKSkKKyAgICBpZiAoTm9kZSogbGFzdENoaWxkID0g
dHJlZVNjb3BlLnJvb3ROb2RlKCkubGFzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiBwb3NpdGlv
bkFmdGVyTm9kZShsYXN0Q2hpbGQpOwogCiAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CkBAIC01MDMs
NyArNTAzLDcgQEAgc3RhdGljIFBvc2l0aW9uIGFkanVzdFBvc2l0aW9uRm9yU3RhcnQoYwogICAg
ICAgICByZXR1cm4gcG9zaXRpb25BZnRlck5vZGUoYW5jZXN0b3IpOwogICAgIH0KIAotICAgIGlm
IChOb2RlKiBmaXJzdENoaWxkID0gdHJlZVNjb3BlLnJvb3ROb2RlKCktPmZpcnN0Q2hpbGQoKSkK
KyAgICBpZiAoTm9kZSogZmlyc3RDaGlsZCA9IHRyZWVTY29wZS5yb290Tm9kZSgpLmZpcnN0Q2hp
bGQoKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZShmaXJzdENoaWxkKTsKIAog
ICAgIHJldHVybiBQb3NpdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxl
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9u
LmNwcAkocmV2aXNpb24gMTY0MjI0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBOb2RlKiBzZWxl
Y3Rpb25TaGFkb3dBbmNlc3RvcihGcmEKIH0KIAogRE9NU2VsZWN0aW9uOjpET01TZWxlY3Rpb24o
Y29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eSh0cmVl
U2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICA6IERPTVdpbmRvd1By
b3BlcnR5KHRyZWVTY29wZS0+cm9vdE5vZGUoKS5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgLCBt
X3RyZWVTY29wZSh0cmVlU2NvcGUpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTY0MjI0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw4ICsyNzIsOCBAQCBzdGF0
aWMgSFRNTElucHV0RWxlbWVudCogYXNGaWxlSW5wdXQoTm9kCiAgICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsKIAogICAgIC8vIElmIHRo
aXMgaXMgYSBidXR0b24gaW5zaWRlIG9mIHRoZSBhIGZpbGUgaW5wdXQsIG1vdmUgdXAgdG8gdGhl
IGZpbGUgaW5wdXQuCi0gICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzVGV4
dEJ1dHRvbigpICYmIGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKS0+aXNTaGFk
b3dSb290KCkpCi0gICAgICAgIGlucHV0RWxlbWVudCA9IHRvU2hhZG93Um9vdChpbnB1dEVsZW1l
bnQtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLT5ob3N0RWxlbWVudCgpLT50b0lucHV0RWxlbWVu
dCgpOworICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5pc1RleHRCdXR0b24o
KSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkuaXNTaGFkb3dSb290KCkp
CisgICAgICAgIGlucHV0RWxlbWVudCA9IHRvU2hhZG93Um9vdChpbnB1dEVsZW1lbnQtPnRyZWVT
Y29wZSgpLnJvb3ROb2RlKCkpLmhvc3RFbGVtZW50KCktPnRvSW5wdXRFbGVtZW50KCk7CiAKICAg
ICByZXR1cm4gaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNGaWxlVXBsb2FkKCkgPyBp
bnB1dEVsZW1lbnQgOiAwOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMTY0MjI0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIEZvY3VzTmF2aWdh
dGlvblNjb3BlOjpGb2N1c05hdmlnYXRpb25TY28KIAogQ29udGFpbmVyTm9kZSogRm9jdXNOYXZp
Z2F0aW9uU2NvcGU6OnJvb3ROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yb290VHJlZVNj
b3BlLT5yb290Tm9kZSgpOworICAgIHJldHVybiAmbV9yb290VHJlZVNjb3BlLT5yb290Tm9kZSgp
OwogfQogCiBFbGVtZW50KiBGb2N1c05hdmlnYXRpb25TY29wZTo6b3duZXIoKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTY0MjI0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDcsNyArOTQ3
LDcgQEAgU3RyaW5nIFNWR0VsZW1lbnQ6OnRpdGxlKCkgY29uc3QKIAogICAgIC8vIFdhbGsgdXAg
dGhlIHRyZWUsIHRvIGZpbmQgb3V0IHdoZXRoZXIgd2UncmUgaW5zaWRlIGEgPHVzZT4gc2hhZG93
IHRyZWUsIHRvIGZpbmQgdGhlIHJpZ2h0IHRpdGxlLgogICAgIGlmIChpc0luU2hhZG93VHJlZSgp
KSB7Ci0gICAgICAgIEVsZW1lbnQqIHNoYWRvd0hvc3RFbGVtZW50ID0gdG9TaGFkb3dSb290KHRy
ZWVTY29wZSgpLnJvb3ROb2RlKCkpLT5ob3N0RWxlbWVudCgpOworICAgICAgICBFbGVtZW50KiBz
aGFkb3dIb3N0RWxlbWVudCA9IHRvU2hhZG93Um9vdCh0cmVlU2NvcGUoKS5yb290Tm9kZSgpKS5o
b3N0RWxlbWVudCgpOwogICAgICAgICAvLyBBdCB0aGlzIHRpbWUsIFNWRyBub2RlcyBhcmUgbm90
IGFsbG93ZWQgaW4gbm9uLTx1c2U+IHNoYWRvdyB0cmVlcywgc28gYW55IHNoYWRvdyByb290IHdl
IGRvCiAgICAgICAgIC8vIGhhdmUgc2hvdWxkIGJlIGEgdXNlLiBUaGUgYXNzZXJ0IGFuZCBmb2xs
b3dpbmcgdGVzdCBpcyBoZXJlIHRvIGNhdGNoIGZ1dHVyZSBzaGFkb3cgRE9NIGNoYW5nZXMKICAg
ICAgICAgLy8gdGhhdCBkbyBlbmFibGUgU1ZHIGluIGEgc2hhZG93IHRyZWUuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxNjQyMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NSwyMCAr
MzY1LDIwIEBAIE5vZGUqIEludGVybmFsczo6dHJlZVNjb3BlUm9vdE5vZGUoTm9kZSoKIHsKICAg
ICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4g
bm9kZS0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICByZXR1cm4gJm5vZGUtPnRyZWVTY29w
ZSgpLnJvb3ROb2RlKCk7CiB9CiAKIE5vZGUqIEludGVybmFsczo6cGFyZW50VHJlZVNjb3BlKE5v
ZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbm9kZSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICBjb25zdCBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29w
ZSA9IG5vZGUtPnRyZWVTY29wZSgpLnBhcmVudFRyZWVTY29wZSgpOwotICAgIHJldHVybiBwYXJl
bnRUcmVlU2NvcGUgPyBwYXJlbnRUcmVlU2NvcGUtPnJvb3ROb2RlKCkgOiAwOworICAgIHJldHVy
biBwYXJlbnRUcmVlU2NvcGUgPyAmcGFyZW50VHJlZVNjb3BlLT5yb290Tm9kZSgpIDogbnVsbHB0
cjsKIH0KIAogdW5zaWduZWQgSW50ZXJuYWxzOjpsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRh
dGVDb3VudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
</data>
<flag name="review"
          id="248514"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>