<?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>123703</bug_id>
          
          <creation_ts>2013-11-03 02:21:02 -0800</creation_ts>
          <short_desc>Add helpers for partial descendant traversal to element iterators</short_desc>
          <delta_ts>2013-11-03 03:12:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>946417</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-03 02:21:02 -0800</bug_when>
    <thetext>More convenience</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946418</commentid>
    <comment_count>1</comment_count>
      <attachid>215858</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-03 02:25:08 -0800</bug_when>
    <thetext>Created attachment 215858
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946420</commentid>
    <comment_count>2</comment_count>
      <attachid>215858</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-11-03 02:39:02 -0800</bug_when>
    <thetext>Comment on attachment 215858
patch

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

&gt; Source/WebCore/editing/FrameSelection.cpp:1964
&gt; +        if (element.hasTagName(frameTag) || element.hasTagName(iframeTag)) {

We should use isHTMLFrameElement() and isHTMLIFrameElement() here.

&gt; Source/WebCore/html/HTMLFormElement.cpp:485
&gt; +        if (!element.isFormControlElement() &amp;&amp; !element.hasTagName(objectTag))

isHTMLObjectElement()

&gt; Source/WebCore/html/HTMLFormElement.cpp:740
&gt; +    if (!startElement.parentElement())
&gt; +        return nullptr;
&gt; +    return lineageOfType&lt;HTMLFormElement&gt;(*startElement.parentElement()).first();

This would be even simpler with ancestorsOfType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946423</commentid>
    <comment_count>3</comment_count>
      <attachid>215861</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-03 02:59:09 -0800</bug_when>
    <thetext>Created attachment 215861
better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946424</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-03 03:00:41 -0800</bug_when>
    <thetext>Attachment 215861 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/dom/ElementAncestorIterator.h&apos;, u&apos;Source/WebCore/dom/ElementDescendantIterator.h&apos;, u&apos;Source/WebCore/editing/FrameSelection.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;]&quot; exit_code: 1
Source/WebCore/dom/ElementDescendantIterator.h:206:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946425</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-03 03:12:30 -0800</bug_when>
    <thetext>https://trac.webkit.org/r158530</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215858</attachid>
            <date>2013-11-03 02:25:08 -0800</date>
            <delta_ts>2013-11-03 02:59:09 -0800</delta_ts>
            <desc>patch</desc>
            <filename>element-iterator-from.patch</filename>
            <type>text/plain</type>
            <size>12288</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODUyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTExLTAzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaGVscGVycyBmb3IgcGFy
dGlhbCBkZXNjZW5kYW50IHRyYXZlcnNhbCB0byBlbGVtZW50IGl0ZXJhdG9ycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNzAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhZ2VPZlR5cGUpOgorICAgICAg
ICAKKyAgICAgICAgICAgIGxpbmVhZ2VPZlR5cGUgZGVmaW5pdGlvbiBkaWRuJ3QgbWF0Y2ggdGhl
IGRlY2xhcmF0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6ZnJvbSk6
CisgICAgICAgIAorICAgICAgICAgICAgQWRkIGdldCBhbmQgZnJvbSBmb3IgZ2V0dGluZyBiZWdp
biBpdGVyYXRvciBmb3IgcGFydGlhbCB0cmF2ZXJzYWxzLgorCisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FuRm9yRm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y3VycmVudEZvcm0pOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6Zm9ybUVsZW1lbnRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6
OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKToKKyAgICAgICAgCisgICAgICAgICAgICBVc2UgdGhl
bSBpbiBhIGZldyBwbGFjZXMuCisKIDIwMTMtMTEtMDMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIElubGluZSBSZW5kZXJTdHlsZSBmdW5jdGlvbnMgZm9yIGdl
dHRpbmcvc2V0dGluZyBwc2V1ZG8gc3R5bGUgYml0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCShyZXZpc2lvbiAxNTg0OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMTgyLDE1ICsxODIsMTkgQEAgaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JB
ZGFwdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxlbWVu
dEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKEVsZW1l
bnRUeXBlJiBmaXJzdCkKK2lubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpCiB7Ci0gICAgcmV0dXJuIEVs
ZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oJmZpcnN0KTsKKyAgICBp
ZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCkpCisgICAgICAgIHJl
dHVybiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHN0YXRpY19j
YXN0PEVsZW1lbnRUeXBlKj4oJmZpcnN0KSk7CisgICAgcmV0dXJuIGFuY2VzdG9yc09mVHlwZTxF
bGVtZW50VHlwZT4oZmlyc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
Ci1pbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVudFR5cGUmIGZpcnN0KQoraW5saW5lIEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdlT2ZUeXBlKGNv
bnN0IEVsZW1lbnQmIGZpcnN0KQogewotICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oJmZpcnN0KTsKKyAgICBpZiAoaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCkpCisgICAgICAgIHJldHVybiBFbGVtZW50QW5j
ZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3Qg
RWxlbWVudFR5cGUqPigmZmlyc3QpKTsKKyAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1l
bnRUeXBlPihmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAko
cmV2aXNpb24gMTU4NDk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9kZSYgcm9vdCk7CiAg
ICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKTsKICAgICBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKTsKKyAgICBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBnZXQoRWxlbWVudFR5cGUmKTsKKyAgICBF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBmcm9tKEVsZW1lbnQmKTsKKwog
ICAgIEVsZW1lbnRUeXBlKiBmaXJzdCgpOwogICAgIEVsZW1lbnRUeXBlKiBsYXN0KCk7CiAKQEAg
LTY1LDYgKzY4LDkgQEAgcHVibGljOgogICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCk7CiAgICAgRWxlbWVudERlc2NlbmRh
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OwogICAgIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gZW5kKCkgY29uc3Q7CisgICAgRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBnZXQoY29uc3QgRWxlbWVu
dFR5cGUmKSBjb25zdDsKKyAgICBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IGZyb20oY29uc3QgRWxlbWVudCYpIGNvbnN0OworCiAgICAgY29uc3QgRWxlbWVudFR5
cGUqIGZpcnN0KCkgY29uc3Q7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsK
IApAQCAtMTM3LDYgKzE0MywyMyBAQCBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxF
bGVtZW50CiB7CiAgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fcm9vdCk7CiB9CisgICAgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Citp
bmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpnZXQoRWxlbWVudFR5cGUmIGRlc2Nl
bmRhbnQpCit7CisgICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YoJm1fcm9vdCkp
OworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jv
b3QsICZkZXNjZW5kYW50KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgor
aW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbShFbGVtZW50JiBkZXNjZW5k
YW50KQoreworICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsK
KyAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkK
KyAgICAgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1f
cm9vdCwgc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPigmZGVzY2VuZGFudCkpOworICAgIEVsZW1l
bnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgmbV9yb290LCAmZGVz
Y2VuZGFudCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+KG1fcm9vdCwgbmV4dCk7Cit9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
IGlubGluZSBFbGVtZW50VHlwZSogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpmaXJzdCgpCkBAIC0xNzEsNiArMTk0LDIzIEBAIGlubGluZSBFbGVtZW50RGVz
Y2VuZGFudENvbnN0SXRlcmF0b3I8RWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4g
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmdldChj
b25zdCBFbGVtZW50VHlwZSYgZGVzY2VuZGFudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGVzY2Vu
ZGFudC5pc0Rlc2NlbmRhbnRPZigmbV9yb290KSk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCAmZGVzY2VuZGFudCk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YoJm1fcm9vdCkpOwor
ICAgIGlmIChpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQor
ICAgICAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PihtX3Jvb3QsIHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnRUeXBlKj4oJmRlc2NlbmRhbnQpKTsK
KyAgICBjb25zdCBFbGVtZW50VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5l
eHQoJm1fcm9vdCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBjb25zdCBFbGVtZW50VHlwZSogRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpcnN0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW4oJm1fcm9v
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2
aXNpb24gMTU4NDk1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIK
ICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiRWxlbWVudFRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJGbG9hdFF1YWQuaCIKQEAgLTE5NDksMzkgKzE5NDksNDAgQEAgdm9pZCBGcmFtZVNlbGVj
dGlvbjo6Z2V0Q2xpcHBlZFZpc2libGVUZQogfQogCiAvLyBTY2FucyBsb2dpY2FsbHkgZm9yd2Fy
ZCBmcm9tICJzdGFydCIsIGluY2x1ZGluZyBhbnkgY2hpbGQgZnJhbWVzLgotc3RhdGljIEhUTUxG
b3JtRWxlbWVudCogc2NhbkZvckZvcm0oTm9kZSogc3RhcnQpCitzdGF0aWMgSFRNTEZvcm1FbGVt
ZW50KiBzY2FuRm9yRm9ybShFbGVtZW50KiBzdGFydCkKIHsKICAgICBpZiAoIXN0YXJ0KQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXJ0LT5pc0hUTUxF
bGVtZW50KCkgPyB0b0hUTUxFbGVtZW50KHN0YXJ0KSA6IFRyYXZlcnNhbDxIVE1MRWxlbWVudD46
Om5leHQoc3RhcnQpOwotICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gVHJhdmVyc2FsPEhU
TUxFbGVtZW50Pjo6bmV4dChlbGVtZW50KSkgewotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1l
bnQoZWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gdG9IVE1MRm9ybUVsZW1lbnQoZWxlbWVu
dCk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihlbGVtZW50
KS0+Zm9ybSgpOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwg
ZWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKQotICAgICAgICAgICAgaWYgKEhUTUxGb3Jt
RWxlbWVudCogZnJhbWVSZXN1bHQgPSBzY2FuRm9yRm9ybSh0b0hUTUxGcmFtZUVsZW1lbnRCYXNl
KGVsZW1lbnQpLT5jb250ZW50RG9jdW1lbnQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byBkZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxFbGVtZW50Pihz
dGFydC0+ZG9jdW1lbnQoKSk7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuZnJvbSgq
c3RhcnQpLCBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gKml0OworICAgICAgICBpZiAoaXNIVE1MRm9ybUVs
ZW1lbnQoJmVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEZvcm1FbGVtZW50KCZl
bGVtZW50KTsKKyAgICAgICAgaWYgKGVsZW1lbnQuaXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Jj4oZWxl
bWVudCkuZm9ybSgpOworICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8
fCBlbGVtZW50Lmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgeworICAgICAgICAgICAgaWYgKEhUTUxG
b3JtRWxlbWVudCogZnJhbWVSZXN1bHQgPSBzY2FuRm9yRm9ybSh0b0hUTUxGcmFtZUVsZW1lbnRC
YXNlKGVsZW1lbnQpLmNvbnRlbnREb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lUmVzdWx0OworICAgICAgICB9CiAgICAgfQotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBXZSBsb29rIGZvciBlaXRoZXIg
dGhlIGZvcm0gY29udGFpbmluZyB0aGUgY3VycmVudCBmb2N1cywgb3IgZm9yIG9uZSBpbW1lZGlh
dGVseSBhZnRlciBpdAogSFRNTEZvcm1FbGVtZW50KiBGcmFtZVNlbGVjdGlvbjo6Y3VycmVudEZv
cm0oKSBjb25zdAogewogICAgIC8vIFN0YXJ0IGxvb2tpbmcgZWl0aGVyIGF0IHRoZSBhY3RpdmUg
KGZpcnN0IHJlc3BvbmRlcikgbm9kZSwgb3Igd2hlcmUgdGhlIHNlbGVjdGlvbiBpcy4KLSAgICBO
b2RlKiBzdGFydCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCk7CisgICAg
RWxlbWVudCogc3RhcnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwog
ICAgIGlmICghc3RhcnQpCi0gICAgICAgIHN0YXJ0ID0gdGhpcy0+c3RhcnQoKS5kZXByZWNhdGVk
Tm9kZSgpOworICAgICAgICBzdGFydCA9IHRoaXMtPnN0YXJ0KCkuZWxlbWVudCgpOworICAgIGlm
ICghc3RhcnQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gVHJ5IHdhbGtpbmcg
dXAgdGhlIG5vZGUgdHJlZSB0byBmaW5kIGEgZm9ybSBlbGVtZW50LgotICAgIE5vZGUqIG5vZGU7
Ci0gICAgZm9yIChub2RlID0gc3RhcnQ7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkp
IHsKLSAgICAgICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KG5vZGUpKQotICAgICAgICAgICAgcmV0
dXJuIHRvSFRNTEZvcm1FbGVtZW50KG5vZGUpOwotICAgICAgICBpZiAobm9kZS0+aXNIVE1MRWxl
bWVudCgpICYmIHRvSFRNTEVsZW1lbnQobm9kZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG5v
ZGUpLT5mb3JtKCk7Ci0gICAgfQorICAgIGlmIChhdXRvIGZvcm0gPSBsaW5lYWdlT2ZUeXBlPEhU
TUxGb3JtRWxlbWVudD4oKnN0YXJ0KS5maXJzdCgpKQorICAgICAgICByZXR1cm4gZm9ybTsKKyAg
ICBpZiAoYXV0byBmb3JtQ29udHJvbCA9IGxpbmVhZ2VPZlR5cGU8SFRNTEZvcm1Db250cm9sRWxl
bWVudD4oKnN0YXJ0KS5maXJzdCgpKQorICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2wtPmZvcm0o
KTsKIAogICAgIC8vIFRyeSB3YWxraW5nIGZvcndhcmQgaW4gdGhlIG5vZGUgdHJlZSB0byBmaW5k
IGEgZm9ybSBlbGVtZW50LgogICAgIHJldHVybiBzY2FuRm9yRm9ybShzdGFydCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTg0OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkVsZW1l
bnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCkBAIC00NjIsMjUgKzQ2MiwzMyBAQCB1bnNp
Z25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kCiAgICAgICAgICAgICByZXR1cm4g
SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoJmFzc29j
aWF0ZWRIVE1MRWxlbWVudCwgbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4LCBtX2Fzc29j
aWF0ZWRFbGVtZW50cy5zaXplKCkpOwogICAgIH0KIAorICAgIHVuc2lnbmVkIGN1cnJlbnRBc3Nv
Y2lhdGVkRWxlbWVudHNBZnRlckluZGV4ID0gbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4
OworICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OworCiAgICAgLy8gQ2hlY2sg
Zm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhpcyBlbGVtZW50IGlzIHRoZSB2ZXJ5IGxhc3Qg
dGhpbmcgaW4KICAgICAvLyB0aGUgZm9ybSdzIHRyZWUgb2YgY2hpbGRyZW47IHdlIGRvbid0IHdh
bnQgdG8gd2FsayB0aGUgZW50aXJlIHRyZWUgaW4gdGhhdAogICAgIC8vIGNvbW1vbiBjYXNlIHRo
YXQgb2NjdXJzIGR1cmluZyBwYXJzaW5nOyBpbnN0ZWFkIHdlJ2xsIGp1c3QgcmV0dXJuIGEgdmFs
dWUKICAgICAvLyB0aGF0IHNheXMgImFkZCB0aGlzIGZvcm0gZWxlbWVudCB0byB0aGUgZW5kIG9m
IHRoZSBhcnJheSIuCi0gICAgaWYgKEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoJmFzc29jaWF0ZWRI
VE1MRWxlbWVudCwgdGhpcykpIHsKLSAgICAgICAgdW5zaWduZWQgaSA9IG1fYXNzb2NpYXRlZEVs
ZW1lbnRzQmVmb3JlSW5kZXg7Ci0gICAgICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IHRoaXM7
IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQsIHRoaXMp
KSB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudCA9PSAmYXNzb2NpYXRlZEhUTUxFbGVtZW50KSB7
Ci0gICAgICAgICAgICAgICAgKyttX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWVs
ZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgIWVsZW1lbnQtPmhhc1RhZ05hbWUob2Jq
ZWN0VGFnKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghZWxl
bWVudC0+aXNIVE1MRWxlbWVudCgpIHx8IHRvSFRNTEVsZW1lbnQoZWxlbWVudCktPmZvcm0oKSAh
PSB0aGlzKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgKytpOwotICAg
ICAgICB9CisgICAgaWYgKCFhc3NvY2lhdGVkSFRNTEVsZW1lbnQuaXNEZXNjZW5kYW50T2YodGhp
cykpCisgICAgICAgIHJldHVybiBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsK
KyAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0
aGlzKTsKKyAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHMuZ2V0KGFzc29jaWF0ZWRIVE1MRWxlbWVu
dCk7CisgICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKKyAgICBpZiAoKytpdCA9PSBl
bmQpCisgICAgICAgIHJldHVybiBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsK
KworICAgIHVuc2lnbmVkIGkgPSBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OworICAg
IGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9ICppdDsKKyAgICAgICAgaWYgKCZlbGVtZW50
ID09ICZhc3NvY2lhdGVkSFRNTEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAg
ICAgaWYgKCFlbGVtZW50LmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgIWVsZW1lbnQuaGFzVGFn
TmFtZShvYmplY3RUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbGVt
ZW50LmZvcm0oKSAhPSB0aGlzKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICsraTsK
ICAgICB9Ci0gICAgcmV0dXJuIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCsrOworICAg
IHJldHVybiBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKIH0KIAogdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KiBlKQpAQCAtNzI3LDExICs3MzUsOSBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6Y29weU5vbkF0
dHJpYnV0ZVByCiAKIEhUTUxGb3JtRWxlbWVudCogSFRNTEZvcm1FbGVtZW50OjpmaW5kQ2xvc2Vz
dEZvcm1BbmNlc3Rvcihjb25zdCBFbGVtZW50JiBzdGFydEVsZW1lbnQpCiB7Ci0gICAgZm9yIChF
bGVtZW50KiBlbGVtZW50ID0gc3RhcnRFbGVtZW50LnBhcmVudEVsZW1lbnQoKTsgZWxlbWVudDsg
ZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoaXNIVE1M
Rm9ybUVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gdG9IVE1MRm9ybUVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiAwOworICAgIGlmICghc3RhcnRFbGVtZW50
LnBhcmVudEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGxp
bmVhZ2VPZlR5cGU8SFRNTEZvcm1FbGVtZW50Pigqc3RhcnRFbGVtZW50LnBhcmVudEVsZW1lbnQo
KSkuZmlyc3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215861</attachid>
            <date>2013-11-03 02:59:09 -0800</date>
            <delta_ts>2013-11-03 03:04:56 -0800</delta_ts>
            <desc>better patch</desc>
            <filename>element-iterator-from-2.patch</filename>
            <type>text/plain</type>
            <size>12398</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODUyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTExLTAzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaGVscGVycyBmb3IgcGFy
dGlhbCBkZXNjZW5kYW50IHRyYXZlcnNhbCB0byBlbGVtZW50IGl0ZXJhdG9ycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNzAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEFuY2Vz
dG9ySXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhZ2VPZlR5cGUpOgorICAgICAg
ICAKKyAgICAgICAgICAgIGxpbmVhZ2VPZlR5cGUgZGVmaW5pdGlvbiBkaWRuJ3QgbWF0Y2ggdGhl
IGRlY2xhcmF0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjo6OmZyb20p
OgorICAgICAgICAKKyAgICAgICAgICAgIEFkZCBmaW5kIGFuZCBmcm9tIGZvciBnZXR0aW5nIGJl
Z2luIGl0ZXJhdG9yIGZvciBwYXJ0aWFsIHRyYXZlcnNhbHMuCisKKyAgICAgICAgKiBlZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYW5Gb3JGb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjdXJyZW50Rm9ybSk6CisgICAgICAgICog
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50Ojpmb3JtRWxlbWVudEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IpOgorICAgICAgICAKKyAgICAgICAgICAgIFVzZSB0
aGVtIGluIGEgZmV3IHBsYWNlcy4KKwogMjAxMy0xMS0wMyAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgSW5saW5lIFJlbmRlclN0eWxlIGZ1bmN0aW9ucyBmb3Ig
Z2V0dGluZy9zZXR0aW5nIHBzZXVkbyBzdHlsZSBiaXRzLgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgJKHJldmlzaW9uIDE1ODQ5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODIsMTUgKzE4MiwxOSBAQCBpbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRv
ckFkYXB0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxl
bWVudFR5cGUmIGZpcnN0KQoraW5saW5lIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVtZW50JiBmaXJzdCkKIHsKLSAgICByZXR1cm4g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPigmZmlyc3QpOworICAg
IGlmIChpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGZpcnN0KSkKKyAgICAgICAg
cmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4oc3RhdGlj
X2Nhc3Q8RWxlbWVudFR5cGUqPigmZmlyc3QpKTsKKyAgICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBl
PEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KLWlubGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlw
ZT4gbGluZWFnZU9mVHlwZShjb25zdCBFbGVtZW50VHlwZSYgZmlyc3QpCitpbmxpbmUgRWxlbWVu
dEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUo
Y29uc3QgRWxlbWVudCYgZmlyc3QpCiB7Ci0gICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPigmZmlyc3QpOworICAgIGlmIChpc0VsZW1lbnRP
ZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGZpcnN0KSkKKyAgICAgICAgcmV0dXJuIEVsZW1lbnRB
bmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxjb25z
dCBFbGVtZW50VHlwZSo+KCZmaXJzdCkpOworICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8RWxl
bWVudFR5cGU+KGZpcnN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
CShyZXZpc2lvbiAxNTg0OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAg
ICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcihDb250YWluZXJOb2RlJiByb290KTsK
ICAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpOwogICAg
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpOworICAgIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZpbmQoRWxlbWVudCYpOworICAgIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZyb20oRWxlbWVudCYpOworCiAg
ICAgRWxlbWVudFR5cGUqIGZpcnN0KCk7CiAgICAgRWxlbWVudFR5cGUqIGxhc3QoKTsKIApAQCAt
NjUsNiArNjgsOSBAQCBwdWJsaWM6CiAgICAgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
QWRhcHRlcihjb25zdCBDb250YWluZXJOb2RlJiByb290KTsKICAgICBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGJlZ2luKCkgY29uc3Q7CiAgICAgRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKKyAgICBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGZpbmQoY29uc3QgRWxlbWVu
dCYpIGNvbnN0OworICAgIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gZnJvbShjb25zdCBFbGVtZW50JikgY29uc3Q7CisKICAgICBjb25zdCBFbGVtZW50VHlwZSog
Zmlyc3QoKSBjb25zdDsKICAgICBjb25zdCBFbGVtZW50VHlwZSogbGFzdCgpIGNvbnN0OwogCkBA
IC0xMzcsNiArMTQzLDI2IEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnQKIHsKICAgICByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4o
bV9yb290KTsKIH0KKyAgICAKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGlu
ZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZpbmQoRWxlbWVudCYgZGVzY2VuZGFudCkK
K3sKKyAgICBpZiAoIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFu
dCkpCisgICAgICAgIHJldHVybiBlbmQoKTsKKyAgICBpZiAoIWRlc2NlbmRhbnQuaXNEZXNjZW5k
YW50T2YoJm1fcm9vdCkpCisgICAgICAgIHJldHVybiBlbmQoKTsKKyAgICByZXR1cm4gRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBzdGF0aWNfY2FzdDxFbGVt
ZW50VHlwZSo+KCZkZXNjZW5kYW50KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYg
ZGVzY2VuZGFudCkKK3sKKyAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZigmbV9y
b290KSk7CisgICAgaWYgKGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2Vu
ZGFudCkpCisgICAgICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPihtX3Jvb3QsIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oJmRlc2NlbmRhbnQpKTsKKyAg
ICBFbGVtZW50VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoJm1fcm9v
dCwgJmRlc2NlbmRhbnQpOworICAgIHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOworfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPjo6Zmlyc3QoKQpAQCAtMTcxLDYgKzE5NywyNiBAQCBpbmxpbmUgRWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
OjpmaW5kKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNvbnN0Cit7CisgICAgaWYgKCFpc0Vs
ZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQorICAgICAgICByZXR1
cm4gZW5kKCk7CisgICAgaWYgKCFkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKCZtX3Jvb3QpKQor
ICAgICAgICByZXR1cm4gZW5kKCk7CisgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50VHlw
ZSo+KCZkZXNjZW5kYW50KSk7OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbShjb25z
dCBFbGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAoreworICAgIEFTU0VSVChkZXNjZW5kYW50Lmlz
RGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsKKyAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKKyAgICAgICAgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBzdGF0aWNfY2FzdDxjb25zdCBFbGVt
ZW50VHlwZSo+KCZkZXNjZW5kYW50KSk7CisgICAgY29uc3QgRWxlbWVudFR5cGUqIG5leHQgPSBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCZtX3Jvb3QsICZkZXNjZW5kYW50KTsKKyAgICBy
ZXR1cm4gRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3Qs
IG5leHQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgY29u
c3QgRWxlbWVudFR5cGUqIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxl
bWVudFR5cGU+OjpmaXJzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT46OmZpcnN0V2l0aGluKCZtX3Jvb3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDE1ODQ5NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRl
ICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCkBAIC0xOTQ5LDM5ICsx
OTQ5LDQwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmdldENsaXBwZWRWaXNpYmxlVGUKIH0KIAog
Ly8gU2NhbnMgbG9naWNhbGx5IGZvcndhcmQgZnJvbSAic3RhcnQiLCBpbmNsdWRpbmcgYW55IGNo
aWxkIGZyYW1lcy4KLXN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHNjYW5Gb3JGb3JtKE5vZGUqIHN0
YXJ0KQorc3RhdGljIEhUTUxGb3JtRWxlbWVudCogc2NhbkZvckZvcm0oRWxlbWVudCogc3RhcnQp
CiB7CiAgICAgaWYgKCFzdGFydCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSBzdGFydC0+aXNIVE1MRWxlbWVudCgpID8gdG9IVE1MRWxlbWVudChzdGFydCkg
OiBUcmF2ZXJzYWw8SFRNTEVsZW1lbnQ+OjpuZXh0KHN0YXJ0KTsKLSAgICBmb3IgKDsgZWxlbWVu
dDsgZWxlbWVudCA9IFRyYXZlcnNhbDxIVE1MRWxlbWVudD46Om5leHQoZWxlbWVudCkpIHsKLSAg
ICAgICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJu
IHRvSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpOwotICAgICAgICBpZiAoZWxlbWVudC0+aXNGb3Jt
Q29udHJvbEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCktPmZvcm0oKTsKLSAgICAgICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkK
LSAgICAgICAgICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZyYW1lUmVzdWx0ID0gc2NhbkZvckZv
cm0odG9IVE1MRnJhbWVFbGVtZW50QmFzZShlbGVtZW50KS0+Y29udGVudERvY3VtZW50KCkpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGVzY2VuZGFudHMgPSBkZXNjZW5k
YW50c09mVHlwZTxIVE1MRWxlbWVudD4oc3RhcnQtPmRvY3VtZW50KCkpOworICAgIGZvciAoYXV0
byBpdCA9IGRlc2NlbmRhbnRzLmZyb20oKnN0YXJ0KSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9ICppdDsK
KyAgICAgICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KCZlbGVtZW50KSkKKyAgICAgICAgICAgIHJl
dHVybiB0b0hUTUxGb3JtRWxlbWVudCgmZWxlbWVudCk7CisgICAgICAgIGlmIChlbGVtZW50Lmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TEZvcm1Db250cm9sRWxlbWVudCY+KGVsZW1lbnQpLmZvcm0oKTsKKyAgICAgICAgaWYgKGVsZW1l
bnQuaGFzVGFnTmFtZShmcmFtZVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGlmcmFtZVRhZykp
IHsKKyAgICAgICAgICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZyYW1lUmVzdWx0ID0gc2NhbkZv
ckZvcm0odG9IVE1MRnJhbWVFbGVtZW50QmFzZShlbGVtZW50KS5jb250ZW50RG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZVJlc3VsdDsK
KyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogLy8gV2UgbG9vayBmb3IgZWl0aGVyIHRoZSBmb3JtIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQg
Zm9jdXMsIG9yIGZvciBvbmUgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQKIEhUTUxGb3JtRWxlbWVudCog
RnJhbWVTZWxlY3Rpb246OmN1cnJlbnRGb3JtKCkgY29uc3QKIHsKICAgICAvLyBTdGFydCBsb29r
aW5nIGVpdGhlciBhdCB0aGUgYWN0aXZlIChmaXJzdCByZXNwb25kZXIpIG5vZGUsIG9yIHdoZXJl
IHRoZSBzZWxlY3Rpb24gaXMuCi0gICAgTm9kZSogc3RhcnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5mb2N1c2VkRWxlbWVudCgpOworICAgIEVsZW1lbnQqIHN0YXJ0ID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+Zm9jdXNlZEVsZW1lbnQoKTsKICAgICBpZiAoIXN0YXJ0KQotICAgICAgICBzdGFydCA9
IHRoaXMtPnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICAgICAgc3RhcnQgPSB0aGlzLT5z
dGFydCgpLmVsZW1lbnQoKTsKKyAgICBpZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIC8vIFRyeSB3YWxraW5nIHVwIHRoZSBub2RlIHRyZWUgdG8gZmluZCBhIGZvcm0g
ZWxlbWVudC4KLSAgICBOb2RlKiBub2RlOwotICAgIGZvciAobm9kZSA9IHN0YXJ0OyBub2RlOyBu
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVu
dChub2RlKSkKLSAgICAgICAgICAgIHJldHVybiB0b0hUTUxGb3JtRWxlbWVudChub2RlKTsKLSAg
ICAgICAgaWYgKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqPihub2RlKS0+Zm9ybSgpOwotICAgIH0KKyAgICBpZiAoYXV0
byBmb3JtID0gbGluZWFnZU9mVHlwZTxIVE1MRm9ybUVsZW1lbnQ+KCpzdGFydCkuZmlyc3QoKSkK
KyAgICAgICAgcmV0dXJuIGZvcm07CisgICAgaWYgKGF1dG8gZm9ybUNvbnRyb2wgPSBsaW5lYWdl
T2ZUeXBlPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCpzdGFydCkuZmlyc3QoKSkKKyAgICAgICAg
cmV0dXJuIGZvcm1Db250cm9sLT5mb3JtKCk7CiAKICAgICAvLyBUcnkgd2Fsa2luZyBmb3J3YXJk
IGluIHRoZSBub2RlIHRyZWUgdG8gZmluZCBhIGZvcm0gZWxlbWVudC4KICAgICByZXR1cm4gc2Nh
bkZvckZvcm0oc3RhcnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAkocmV2aXNpb24gMTU4NDk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
dHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRUcmF2
ZXJzYWwuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgpA
QCAtNDYyLDI1ICs0NjIsMzEgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVu
dEluZAogICAgICAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRl
eFdpdGhGb3JtQXR0cmlidXRlKCZhc3NvY2lhdGVkSFRNTEVsZW1lbnQsIG1fYXNzb2NpYXRlZEVs
ZW1lbnRzQWZ0ZXJJbmRleCwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpKTsKICAgICB9CiAK
KyAgICB1bnNpZ25lZCBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCA9IG1fYXNz
b2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKKyAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0
ZXJJbmRleDsKKwogICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMg
ZWxlbWVudCBpcyB0aGUgdmVyeSBsYXN0IHRoaW5nIGluCiAgICAgLy8gdGhlIGZvcm0ncyB0cmVl
IG9mIGNoaWxkcmVuOyB3ZSBkb24ndCB3YW50IHRvIHdhbGsgdGhlIGVudGlyZSB0cmVlIGluIHRo
YXQKICAgICAvLyBjb21tb24gY2FzZSB0aGF0IG9jY3VycyBkdXJpbmcgcGFyc2luZzsgaW5zdGVh
ZCB3ZSdsbCBqdXN0IHJldHVybiBhIHZhbHVlCiAgICAgLy8gdGhhdCBzYXlzICJhZGQgdGhpcyBm
b3JtIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkiLgotICAgIGlmIChFbGVtZW50VHJh
dmVyc2FsOjpuZXh0KCZhc3NvY2lhdGVkSFRNTEVsZW1lbnQsIHRoaXMpKSB7Ci0gICAgICAgIHVu
c2lnbmVkIGkgPSBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OwotICAgICAgICBmb3Ig
KEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZl
cnNhbDo6bmV4dChlbGVtZW50LCB0aGlzKSkgewotICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
JmFzc29jaWF0ZWRIVE1MRWxlbWVudCkgewotICAgICAgICAgICAgICAgICsrbV9hc3NvY2lhdGVk
RWxlbWVudHNBZnRlckluZGV4OwotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpICYm
ICFlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSB8fCB0b0hUTUxF
bGVtZW50KGVsZW1lbnQpLT5mb3JtKCkgIT0gdGhpcykKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfQorICAgIGF1dG8gZGVzY2VuZGFudHMgPSBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oKnRoaXMpOworICAgIGF1dG8gaXQgPSBkZXNj
ZW5kYW50cy5maW5kKGFzc29jaWF0ZWRIVE1MRWxlbWVudCk7CisgICAgYXV0byBlbmQgPSBkZXNj
ZW5kYW50cy5lbmQoKTsKKyAgICBpZiAoaXQgPT0gZW5kIHx8ICsraXQgPT0gZW5kKQorICAgICAg
ICByZXR1cm4gY3VycmVudEFzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CisKKyAgICB1bnNp
Z25lZCBpID0gbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKKyAgICBmb3IgKGF1dG8g
aXQgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgSFRN
TEVsZW1lbnQmIGVsZW1lbnQgPSAqaXQ7CisgICAgICAgIGlmICgmZWxlbWVudCA9PSAmYXNzb2Np
YXRlZEhUTUxFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIGlmICghZWxl
bWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0
VGFnKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZWxlbWVudC5mb3JtKCkg
IT0gdGhpcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICArK2k7CiAgICAgfQotICAg
IHJldHVybiBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgrKzsKKyAgICByZXR1cm4gY3Vy
cmVudEFzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpyZWdpc3RlckZvcm1FbGVtZW50KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZSkKQEAgLTcy
NywxMSArNzMzLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcgog
CiBIVE1MRm9ybUVsZW1lbnQqIEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0
b3IoY29uc3QgRWxlbWVudCYgc3RhcnRFbGVtZW50KQogewotICAgIGZvciAoRWxlbWVudCogZWxl
bWVudCA9IHN0YXJ0RWxlbWVudC5wYXJlbnRFbGVtZW50KCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50
KGVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQp
OwotICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxIVE1MRm9ybUVs
ZW1lbnQqPihhbmNlc3RvcnNPZlR5cGU8SFRNTEZvcm1FbGVtZW50PihzdGFydEVsZW1lbnQpLmZp
cnN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>
<flag name="review"
          id="238707"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>