<?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>204370</bug_id>
          
          <creation_ts>2019-11-19 12:50:09 -0800</creation_ts>
          <short_desc>ASSERTION FAILURE: useDownstream ? (result &gt; vp) : (result &lt; vp) in WebCore::nextSentenceBoundaryInDirection()</short_desc>
          <delta_ts>2020-01-15 19:07:46 -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>HTML Editing</component>
          <version>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1591651</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 12:50:09 -0800</bug_when>
    <thetext>The ASSERT(useDownstream ? (result &gt; vp) : (result &lt; vp)) in WebCore::nextSentenceBoundaryInDirection() is not correct because it does not account for detached positions: &lt;https://trac.webkit.org/browser/trunk/Source/WebCore/dom/Node.cpp?rev=252554#L1667&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591652</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-19 12:50:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/57332559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591653</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 12:50:39 -0800</bug_when>
    <thetext>&lt;https://trac.webkit.org/browser/trunk/Source/WebCore/dom/Node.cpp?rev=252554#L1674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591654</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 12:51:22 -0800</bug_when>
    <thetext>You can only compare positions whose anchors are connected (in a document) and are in the same tree scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591655</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 12:52:34 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #3)
&gt; You can only compare positions whose anchors are connected (in a document)
&gt; and are in the same tree scope

Otherwise, the result is non-deterministic by spec!
[[

static inline unsigned short compareDetachedElementsPosition(Node&amp; firstNode, Node&amp; secondNode)
{
    // If the 2 nodes are not in the same tree, return the result of adding DOCUMENT_POSITION_DISCONNECTED,
    // DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, and either DOCUMENT_POSITION_PRECEDING or
    // DOCUMENT_POSITION_FOLLOWING, with the constraint that this is to be consistent. Whether to return
    // DOCUMENT_POSITION_PRECEDING or DOCUMENT_POSITION_FOLLOWING is implemented by comparing cryptographic
    // hashes of Node pointers.
    // See step 3 in https://dom.spec.whatwg.org/#dom-node-comparedocumentposition
    SHA1::Digest firstHash = hashPointer(&amp;firstNode);
    SHA1::Digest secondHash = hashPointer(&amp;secondNode);

    unsigned short direction = memcmp(firstHash.data(), secondHash.data(), SHA1::hashSize) &gt; 0 ? Node::DOCUMENT_POSITION_PRECEDING : Node::DOCUMENT_POSITION_FOLLOWING;

    return Node::DOCUMENT_POSITION_DISCONNECTED | Node::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | direction;
}

]]

&lt;https://trac.webkit.org/browser/trunk/Source/WebCore/dom/Node.cpp?rev=252554#L1597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591665</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 13:20:40 -0800</bug_when>
    <thetext>I was so tempted to use WebCore::comparePositions() to fix this, but it&apos;s implementation does not look the same to the detached element position check in Node::compareDocumentPosition() though I didn&apos;t dive deep enough to verify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591666</commentid>
    <comment_count>6</comment_count>
      <attachid>383898</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 13:21:06 -0800</bug_when>
    <thetext>Created attachment 383898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591669</commentid>
    <comment_count>7</comment_count>
      <attachid>383898</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 13:22:23 -0800</bug_when>
    <thetext>Comment on attachment 383898
Patch

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

&gt; Source/WebCore/dom/Node.cpp:1613
&gt; +bool areNodesConnectedInSameDocument(const Node* a, const Node* b)

This is a misnomer. Not so much same document as same tree scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591673</commentid>
    <comment_count>8</comment_count>
      <attachid>383898</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 13:42:17 -0800</bug_when>
    <thetext>Comment on attachment 383898
Patch

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

&gt; Source/WebCore/editing/VisibleUnits.cpp:1780
&gt; +    ASSERT(areVisiblePositionsInSameDocument(result, vp) &amp;&amp; useDownstream ? (result &gt; vp) : (result &lt; vp));

This is wrong: only want to assert if areVisiblePositionsInSameDocument()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591674</commentid>
    <comment_count>9</comment_count>
      <attachid>383899</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 13:43:43 -0800</bug_when>
    <thetext>Created attachment 383899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591682</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 13:59:29 -0800</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591688</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-19 14:05:26 -0800</bug_when>
    <thetext>Committed r252647: &lt;https://trac.webkit.org/changeset/252647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592184</commentid>
    <comment_count>12</comment_count>
      <attachid>383899</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-11-20 15:45:42 -0800</bug_when>
    <thetext>Comment on attachment 383899
Patch

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

&gt; Source/WebCore/dom/Node.cpp:1617
&gt; +    // Note that we avoid comparing Attr nodes here, since they return false from isConnected() all the time (which seems like a bug).

I don’t think this comment belongs here. I’d move it back where it came from. The code that &quot;avoids&quot; Attr nodes is not here, it’s in compareDocumentPosition, and the name of the function doesn&apos;t hide that it calls isConnected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607317</commentid>
    <comment_count>13</comment_count>
      <attachid>383899</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-01-15 19:07:46 -0800</bug_when>
    <thetext>Comment on attachment 383899
Patch

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

&gt;&gt; Source/WebCore/dom/Node.cpp:1617
&gt;&gt; +    // Note that we avoid comparing Attr nodes here, since they return false from isConnected() all the time (which seems like a bug).
&gt; 
&gt; I don’t think this comment belongs here. I’d move it back where it came from. The code that &quot;avoids&quot; Attr nodes is not here, it’s in compareDocumentPosition, and the name of the function doesn&apos;t hide that it calls isConnected.

Yep, I made a goof here. I don&apos;t get what you&apos;re saying about the name of the function. But the name of this function is also bad and should be changed: it checks if the nodes have the same connectedness.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383898</attachid>
            <date>2019-11-19 13:21:06 -0800</date>
            <delta_ts>2019-11-19 13:43:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204370-20191119132105.patch</filename>
            <type>text/plain</type>
            <size>6769</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlMTcxMzdlYTNhMzYx
ZDhkOTBhNjI4MTc0MmZiZWY5ZTIwZDMzMS4uMGQyMmQ3YzMwZWNkMjUzZDYzODA4MWExYTU4MzFi
Y2E0ZDBjZjRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTExLTE5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTFVS
RTogdXNlRG93bnN0cmVhbSA/IChyZXN1bHQgPiB2cCkgOiAocmVzdWx0IDwgdnApIGluIFdlYkNv
cmU6Om5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJlY3Rpb24oKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzcwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NzMzMjU1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBPbmx5IHBvc2l0aW9ucyB3aG9zZSBhbmNob3Igbm9kZXMgYXJlIGluIGEgZG9jdW1l
bnQgYW5kIGluIHRoZSBzYW1lIHRyZWUgc2NvcGUgY2FuIGJlCisgICAgICAgIGNvbXBhcmVkIHVz
aW5nIHRoZSBvcGVyYXRvcjwgb3ZlcmxvYWQuIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyBub24t
ZGV0ZXJtaW5pc3RpYyBieQorICAgICAgICBzcGVjLiA8aHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNkb20tbm9kZS1jb21wYXJlZG9jdW1lbnRwb3NpdGlvbj4gKDEzIE5vdmVtYmVyIDIwMTkp
OgorCisgICAgICAgICAgICAgICAgNi4gSWYgbm9kZTEgb3Igbm9kZTIgaXMgbnVsbCwgb3Igbm9k
ZTHigJlzIHJvb3QgaXMgbm90IG5vZGUy4oCZcyByb290LCB0aGVuIHJldHVybiB0aGUgcmVzdWx0
IG9mIGFkZGluZyBET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQsIERPQ1VNRU5UX1BPU0lU
SU9OX0lNUExFTUVOVEFUSU9OX1NQRUNJRklDLCBhbmQgZWl0aGVyIERPQ1VNRU5UX1BPU0lUSU9O
X1BSRUNFRElORyBvciBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcsIHdpdGggdGhlIGNvbnN0
cmFpbnQgdGhhdCB0aGlzIGlzIHRvIGJlIGNvbnNpc3RlbnQsIHRvZ2V0aGVyLgorCisgICAgICAg
ICAgICAgICAgTk9URTogV2hldGhlciB0byByZXR1cm4gRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VE
SU5HIG9yIERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyBpcyB0eXBpY2FsbHkKKyAgICAgICAg
ICAgICAgICBpbXBsZW1lbnRlZCB2aWEgcG9pbnRlciBjb21wYXJpc29uLiBJbiBKYXZhU2NyaXB0
IGltcGxlbWVudGF0aW9ucyBhIGNhY2hlZCBNYXRoLnJhbmRvbSgpCisgICAgICAgICAgICAgICAg
dmFsdWUgY2FuIGJlIHVzZWQuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphcmVOb2Rlc0Nvbm5lY3RlZEluU2FtZURvY3VtZW50KTogQWRkZWQ7IGV4dHJhY3Rl
ZCBmcm9tIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCkuCisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpjb21wYXJlRG9jdW1lbnRQb3NpdGlvbik6IFdyaXRlIGluIHRlcm1zIG9mIGFyZU5vZGVzQ29u
bmVjdGVkSW5TYW1lRG9jdW1lbnQoKS4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAq
IGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZVZpc2li
bGVQb3NpdGlvbnNJblNhbWVEb2N1bWVudCk6IEFkZGVkLiBXcml0ZSBpbiB0ZXJtcyBvZiBhcmVO
b2Rlc0Nvbm5lY3RlZEluU2FtZURvY3VtZW50KCkuCisgICAgICAgICogZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3VuZGFyeUluRGlyZWN0aW9uKTogVXBkYXRlIGFzc2Vy
dC4gV2UgY2FuIG9ubHkgY29tcGFyZSBwb3NpdGlvbnMKKyAgICAgICAgaWYgYXJlVmlzaWJsZVBv
c2l0aW9uc0luU2FtZURvY3VtZW50KCkgcmV0dXJucyB0cnVlLgorCiAyMDE5LTA5LTEzICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5n
IFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2
Y2FkYzVjN2U4ZjYwZjJiYzBhZmZlNjcwZjM2NjZlNmI0Yjc2YzVkLi5lYTI1YWRmN2I3MmFhZTRh
MDY0ZjdkZDliZWY2ODM4ZGU0YWFjNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNjEwLDYgKzE2
MTAsMTQgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBjb21wYXJlRGV0YWNoZWRFbGVt
ZW50c1Bvc2l0aW9uKE5vZGUmIGZpcnN0Tm9kZSwgTm8KICAgICByZXR1cm4gTm9kZTo6RE9DVU1F
TlRfUE9TSVRJT05fRElTQ09OTkVDVEVEIHwgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fSU1QTEVN
RU5UQVRJT05fU1BFQ0lGSUMgfCBkaXJlY3Rpb247CiB9CiAKK2Jvb2wgYXJlTm9kZXNDb25uZWN0
ZWRJblNhbWVEb2N1bWVudChjb25zdCBOb2RlKiBhLCBjb25zdCBOb2RlKiBiKQoreworICAgIGlm
ICghYSB8fCAhYikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE5vdGUgdGhhdCB3ZSBh
dm9pZCBjb21wYXJpbmcgQXR0ciBub2RlcyBoZXJlLCBzaW5jZSB0aGV5IHJldHVybiBmYWxzZSBm
cm9tIGlzQ29ubmVjdGVkKCkgYWxsIHRoZSB0aW1lICh3aGljaCBzZWVtcyBsaWtlIGEgYnVnKS4K
KyAgICByZXR1cm4gYS0+aXNDb25uZWN0ZWQoKSA9PSBiLT5pc0Nvbm5lY3RlZCgpICYmICZhLT50
cmVlU2NvcGUoKSA9PSAmYi0+dHJlZVNjb3BlKCk7Cit9CisKIHVuc2lnbmVkIHNob3J0IE5vZGU6
OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUmIG90aGVyTm9kZSkKIHsKICAgICBpZiAoJm90
aGVyTm9kZSA9PSB0aGlzKQpAQCAtMTY1NCw5ICsxNjYyLDggQEAgdW5zaWduZWQgc2hvcnQgTm9k
ZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSYgb3RoZXJOb2RlKQogICAgIH0KIAogICAg
IC8vIElmIG9uZSBub2RlIGlzIGluIHRoZSBkb2N1bWVudCBhbmQgdGhlIG90aGVyIGlzIG5vdCwg
d2UgbXVzdCBiZSBkaXNjb25uZWN0ZWQuCi0gICAgLy8gSWYgdGhlIG5vZGVzIGhhdmUgZGlmZmVy
ZW50IG93bmluZyBkb2N1bWVudHMsIHRoZXkgbXVzdCBiZSBkaXNjb25uZWN0ZWQuICBOb3RlIHRo
YXQgd2UgYXZvaWQKLSAgICAvLyBjb21wYXJpbmcgQXR0ciBub2RlcyBoZXJlLCBzaW5jZSB0aGV5
IHJldHVybiBmYWxzZSBmcm9tIGlzQ29ubmVjdGVkKCkgYWxsIHRoZSB0aW1lICh3aGljaCBzZWVt
cyBsaWtlIGEgYnVnKS4KLSAgICBpZiAoc3RhcnQxLT5pc0Nvbm5lY3RlZCgpICE9IHN0YXJ0Mi0+
aXNDb25uZWN0ZWQoKSB8fCAmc3RhcnQxLT50cmVlU2NvcGUoKSAhPSAmc3RhcnQyLT50cmVlU2Nv
cGUoKSkKKyAgICAvLyBJZiB0aGUgbm9kZXMgaGF2ZSBkaWZmZXJlbnQgb3duaW5nIGRvY3VtZW50
cywgdGhleSBtdXN0IGJlIGRpc2Nvbm5lY3RlZC4KKyAgICBpZiAoIWFyZU5vZGVzQ29ubmVjdGVk
SW5TYW1lRG9jdW1lbnQoc3RhcnQxLCBzdGFydDIpKQogICAgICAgICByZXR1cm4gY29tcGFyZURl
dGFjaGVkRWxlbWVudHNQb3NpdGlvbigqdGhpcywgb3RoZXJOb2RlKTsKIAogICAgIC8vIFdlIG5l
ZWQgdG8gZmluZCBhIGNvbW1vbiBhbmNlc3RvciBjb250YWluZXIsIGFuZCB0aGVuIGNvbXBhcmUg
dGhlIGluZGljZXMgb2YgdGhlIHR3byBpbW1lZGlhdGUgY2hpbGRyZW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRl
eCAwNGFiYTEzZGY4OWUzZjBmNDZhMTgxNGFhM2U2YzBiYzA2MDE4NDhiLi42MDk0NzY2MjQwYmI0
MDcyMGYyNWE1ZjQ1OGRhMjg1ZDMyYzdiYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTc5MCw2ICs3OTAs
OCBAQCBpbmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUm
IG5ld1RyZWVTY29wZSkKICAgICAgICAgbW92ZVRyZWVUb05ld1Njb3BlKCp0aGlzLCAqbV90cmVl
U2NvcGUsIG5ld1RyZWVTY29wZSk7CiB9CiAKK2Jvb2wgYXJlTm9kZXNDb25uZWN0ZWRJblNhbWVE
b2N1bWVudChjb25zdCBOb2RlKiwgY29uc3QgTm9kZSopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggMmZjYjZlOGEwNThmZmVkMDkzZDEyYzIwODI5MGZi
NWQ5MDUwNDNlOC4uMjJlZDllMDQ4YzUzZmNiMDU2OWFkZDdjZDIxM2I2ZjM2YmYxYTIwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNzg4LDYgKzc4
OCwxMSBAQCBib29sIGlzTGFzdFZpc2libGVQb3NpdGlvbkluTm9kZShjb25zdCBWaXNpYmxlUG9z
aXRpb24gJnZpc2libGVQb3NpdGlvbiwgY29uc3QgTgogICAgIHJldHVybiBuZXh0LmlzTnVsbCgp
IHx8ICFuZXh0LmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50
T2Yobm9kZSk7CiB9CiAKK2Jvb2wgYXJlVmlzaWJsZVBvc2l0aW9uc0luU2FtZURvY3VtZW50KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKQoreworICAg
IHJldHVybiBhcmVOb2Rlc0Nvbm5lY3RlZEluU2FtZURvY3VtZW50KGEuZGVlcEVxdWl2YWxlbnQo
KS5hbmNob3JOb2RlKCksIGIuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCkpOworfQorCiBi
b29sIFZpc2libGVQb3NpdGlvbjo6ZXF1YWxzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3RoZXIp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWZmaW5pdHkgPT0gb3RoZXIubV9hZmZpbml0eSAmJiBt
X2RlZXBQb3NpdGlvbi5lcXVhbHMob3RoZXIubV9kZWVwUG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKaW5kZXggYmUzYjVmOTlkNTA2ZmFiOWZjNTk3MTli
NTk0YjRhMjI1YzhiNjAwMS4uYTZjMTllYmY2Y2E4YmNlMjlhOWI5ZjFhMmI4MGYyMzI3YTI3MThl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCkBAIC0xNjUsNiAr
MTY1LDggQEAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVu
dChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIGJvb2wgaXNGaXJzdFZpc2libGVQb3NpdGlvbklu
Tm9kZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBOb2RlKik7CiBib29sIGlzTGFzdFZp
c2libGVQb3NpdGlvbkluTm9kZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBOb2RlKik7
CiAKK2Jvb2wgYXJlVmlzaWJsZVBvc2l0aW9uc0luU2FtZURvY3VtZW50KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworCiBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgRUFmZmluaXR5KTsKIFdFQkNPUkVfRVhQT1JUIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4
IDk3YzYyMmJiMmNlNjU0NzFjYTBkZGI3NzhkYWFmYjYyYjg4MDAyODguLjRiYTEyZTgzMTNkYzBi
Y2ZkNGY0MzE1YmQ5NDRjMjMwZTkwYzRhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKQEAgLTE3NzYsNyArMTc3Niw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
bmV4dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZw
CiAgICAgaWYgKHJlc3VsdCA9PSB2cCkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OwogCi0gICAgQVNTRVJUKHVzZURvd25zdHJlYW0gPyAocmVzdWx0ID4gdnApIDogKHJlc3VsdCA8
IHZwKSk7CisgICAgLy8gUG9zaXRpb25zIGNhbiBvbmx5IGJlIGNvbXBhcmVkIGlmIHRoZXkgYXJl
IGluIHRoZSBzYW1lIGRvY3VtZW50LgorICAgIEFTU0VSVChhcmVWaXNpYmxlUG9zaXRpb25zSW5T
YW1lRG9jdW1lbnQocmVzdWx0LCB2cCkgJiYgdXNlRG93bnN0cmVhbSA/IChyZXN1bHQgPiB2cCkg
OiAocmVzdWx0IDwgdnApKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383899</attachid>
            <date>2019-11-19 13:43:43 -0800</date>
            <delta_ts>2019-11-19 13:55:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204370-20191119134342.patch</filename>
            <type>text/plain</type>
            <size>6789</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlMTcxMzdlYTNhMzYx
ZDhkOTBhNjI4MTc0MmZiZWY5ZTIwZDMzMS4uMmU0N2Q0YTRmNWMzZTI4MGM3MDg3ZmQ3ZDllN2U2
M2VkYjg4OWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTExLTE5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTFVS
RTogdXNlRG93bnN0cmVhbSA/IChyZXN1bHQgPiB2cCkgOiAocmVzdWx0IDwgdnApIGluIFdlYkNv
cmU6Om5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJlY3Rpb24oKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzcwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NzMzMjU1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBPbmx5IHBvc2l0aW9ucyB3aG9zZSBhbmNob3Igbm9kZXMgYXJlIGluIGEgZG9jdW1l
bnQgYW5kIGluIHRoZSBzYW1lIHRyZWUgc2NvcGUgY2FuIGJlCisgICAgICAgIGNvbXBhcmVkIHVz
aW5nIHRoZSBvcGVyYXRvcjwgb3ZlcmxvYWQuIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyBub24t
ZGV0ZXJtaW5pc3RpYyBieQorICAgICAgICBzcGVjLiA8aHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNkb20tbm9kZS1jb21wYXJlZG9jdW1lbnRwb3NpdGlvbj4gKDEzIE5vdmVtYmVyIDIwMTkp
OgorCisgICAgICAgICAgICAgICAgNi4gSWYgbm9kZTEgb3Igbm9kZTIgaXMgbnVsbCwgb3Igbm9k
ZTHigJlzIHJvb3QgaXMgbm90IG5vZGUy4oCZcyByb290LCB0aGVuIHJldHVybiB0aGUgcmVzdWx0
IG9mIGFkZGluZyBET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQsIERPQ1VNRU5UX1BPU0lU
SU9OX0lNUExFTUVOVEFUSU9OX1NQRUNJRklDLCBhbmQgZWl0aGVyIERPQ1VNRU5UX1BPU0lUSU9O
X1BSRUNFRElORyBvciBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcsIHdpdGggdGhlIGNvbnN0
cmFpbnQgdGhhdCB0aGlzIGlzIHRvIGJlIGNvbnNpc3RlbnQsIHRvZ2V0aGVyLgorCisgICAgICAg
ICAgICAgICAgTk9URTogV2hldGhlciB0byByZXR1cm4gRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VE
SU5HIG9yIERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyBpcyB0eXBpY2FsbHkKKyAgICAgICAg
ICAgICAgICBpbXBsZW1lbnRlZCB2aWEgcG9pbnRlciBjb21wYXJpc29uLiBJbiBKYXZhU2NyaXB0
IGltcGxlbWVudGF0aW9ucyBhIGNhY2hlZCBNYXRoLnJhbmRvbSgpCisgICAgICAgICAgICAgICAg
dmFsdWUgY2FuIGJlIHVzZWQuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphcmVOb2Rlc0Nvbm5lY3RlZEluU2FtZVRyZWVTY29wZSk6IEFkZGVkOyBleHRyYWN0
ZWQgZnJvbSBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbigpLgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24pOiBXcml0ZSBpbiB0ZXJtcyBvZiBhcmVOb2Rlc0Nv
bm5lY3RlZEluU2FtZVRyZWVTY29wZSgpLgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlVmlz
aWJsZVBvc2l0aW9uc0luU2FtZVRyZWVTY29wZSk6IEFkZGVkLiBXcml0ZSBpbiB0ZXJtcyBvZiBh
cmVOb2Rlc0Nvbm5lY3RlZEluU2FtZVRyZWVTY29wZSgpLgorICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbik6IFVwZGF0ZSBh
c3NlcnQuIFdlIGNhbiBvbmx5IGNvbXBhcmUgcG9zaXRpb25zCisgICAgICAgIGlmIGFyZVZpc2li
bGVQb3NpdGlvbnNJblNhbWVUcmVlU2NvcGUoKSByZXR1cm5zIHRydWUuCisKIDIwMTktMDktMTMg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYnVp
bGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBYY29kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDZjYWRjNWM3ZThmNjBmMmJjMGFmZmU2NzBmMzY2NmU2YjRiNzZjNWQuLmYxYjAxZTU5OTIz
MzIyNjg0M2EzMjU3ZjdlODYwM2NkZTgzZjYxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE2MTAs
NiArMTYxMCwxNCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEZXRhY2hl
ZEVsZW1lbnRzUG9zaXRpb24oTm9kZSYgZmlyc3ROb2RlLCBObwogICAgIHJldHVybiBOb2RlOjpE
T0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQgfCBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9J
TVBMRU1FTlRBVElPTl9TUEVDSUZJQyB8IGRpcmVjdGlvbjsKIH0KIAorYm9vbCBhcmVOb2Rlc0Nv
bm5lY3RlZEluU2FtZVRyZWVTY29wZShjb25zdCBOb2RlKiBhLCBjb25zdCBOb2RlKiBiKQorewor
ICAgIGlmICghYSB8fCAhYikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE5vdGUgdGhh
dCB3ZSBhdm9pZCBjb21wYXJpbmcgQXR0ciBub2RlcyBoZXJlLCBzaW5jZSB0aGV5IHJldHVybiBm
YWxzZSBmcm9tIGlzQ29ubmVjdGVkKCkgYWxsIHRoZSB0aW1lICh3aGljaCBzZWVtcyBsaWtlIGEg
YnVnKS4KKyAgICByZXR1cm4gYS0+aXNDb25uZWN0ZWQoKSA9PSBiLT5pc0Nvbm5lY3RlZCgpICYm
ICZhLT50cmVlU2NvcGUoKSA9PSAmYi0+dHJlZVNjb3BlKCk7Cit9CisKIHVuc2lnbmVkIHNob3J0
IE5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUmIG90aGVyTm9kZSkKIHsKICAgICBp
ZiAoJm90aGVyTm9kZSA9PSB0aGlzKQpAQCAtMTY1NCw5ICsxNjYyLDggQEAgdW5zaWduZWQgc2hv
cnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSYgb3RoZXJOb2RlKQogICAgIH0K
IAogICAgIC8vIElmIG9uZSBub2RlIGlzIGluIHRoZSBkb2N1bWVudCBhbmQgdGhlIG90aGVyIGlz
IG5vdCwgd2UgbXVzdCBiZSBkaXNjb25uZWN0ZWQuCi0gICAgLy8gSWYgdGhlIG5vZGVzIGhhdmUg
ZGlmZmVyZW50IG93bmluZyBkb2N1bWVudHMsIHRoZXkgbXVzdCBiZSBkaXNjb25uZWN0ZWQuICBO
b3RlIHRoYXQgd2UgYXZvaWQKLSAgICAvLyBjb21wYXJpbmcgQXR0ciBub2RlcyBoZXJlLCBzaW5j
ZSB0aGV5IHJldHVybiBmYWxzZSBmcm9tIGlzQ29ubmVjdGVkKCkgYWxsIHRoZSB0aW1lICh3aGlj
aCBzZWVtcyBsaWtlIGEgYnVnKS4KLSAgICBpZiAoc3RhcnQxLT5pc0Nvbm5lY3RlZCgpICE9IHN0
YXJ0Mi0+aXNDb25uZWN0ZWQoKSB8fCAmc3RhcnQxLT50cmVlU2NvcGUoKSAhPSAmc3RhcnQyLT50
cmVlU2NvcGUoKSkKKyAgICAvLyBJZiB0aGUgbm9kZXMgaGF2ZSBkaWZmZXJlbnQgb3duaW5nIGRv
Y3VtZW50cywgdGhleSBtdXN0IGJlIGRpc2Nvbm5lY3RlZC4KKyAgICBpZiAoIWFyZU5vZGVzQ29u
bmVjdGVkSW5TYW1lVHJlZVNjb3BlKHN0YXJ0MSwgc3RhcnQyKSkKICAgICAgICAgcmV0dXJuIGNv
bXBhcmVEZXRhY2hlZEVsZW1lbnRzUG9zaXRpb24oKnRoaXMsIG90aGVyTm9kZSk7CiAKICAgICAv
LyBXZSBuZWVkIHRvIGZpbmQgYSBjb21tb24gYW5jZXN0b3IgY29udGFpbmVyLCBhbmQgdGhlbiBj
b21wYXJlIHRoZSBpbmRpY2VzIG9mIHRoZSB0d28gaW1tZWRpYXRlIGNoaWxkcmVuLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggMDRhYmExM2RmODllM2YwZjQ2YTE4MTRhYTNlNmMwYmMwNjAxODQ4Yi4uN2M5MmQ1
Mjg3ZDlkZDg2YzNkOWNjNGI5M2IyOWY0YzFkNjY5YTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC03OTAs
NiArNzkwLDggQEAgaW5saW5lIHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoVHJl
ZVNjb3BlJiBuZXdUcmVlU2NvcGUpCiAgICAgICAgIG1vdmVUcmVlVG9OZXdTY29wZSgqdGhpcywg
Km1fdHJlZVNjb3BlLCBuZXdUcmVlU2NvcGUpOwogfQogCitib29sIGFyZU5vZGVzQ29ubmVjdGVk
SW5TYW1lVHJlZVNjb3BlKGNvbnN0IE5vZGUqLCBjb25zdCBOb2RlKik7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCAyZmNiNmU4YTA1OGZmZWQwOTNkMTJj
MjA4MjkwZmI1ZDkwNTA0M2U4Li40YzYwZTk3M2QyODcyYzU4NDdmM2IwNzUwZDZkZWVmZjAwOTMw
YzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC03
ODgsNiArNzg4LDExIEBAIGJvb2wgaXNMYXN0VmlzaWJsZVBvc2l0aW9uSW5Ob2RlKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmdmlzaWJsZVBvc2l0aW9uLCBjb25zdCBOCiAgICAgcmV0dXJuIG5leHQu
aXNOdWxsKCkgfHwgIW5leHQuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5pc0Rl
c2NlbmRhbnRPZihub2RlKTsKIH0KIAorYm9vbCBhcmVWaXNpYmxlUG9zaXRpb25zSW5TYW1lVHJl
ZVNjb3BlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBi
KQoreworICAgIHJldHVybiBhcmVOb2Rlc0Nvbm5lY3RlZEluU2FtZVRyZWVTY29wZShhLmRlZXBF
cXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLCBiLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgp
KTsKK30KKwogYm9vbCBWaXNpYmxlUG9zaXRpb246OmVxdWFscyhjb25zdCBWaXNpYmxlUG9zaXRp
b24mIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBtX2FmZmluaXR5ID09IG90aGVyLm1fYWZm
aW5pdHkgJiYgbV9kZWVwUG9zaXRpb24uZXF1YWxzKG90aGVyLm1fZGVlcFBvc2l0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCmluZGV4IGJlM2I1Zjk5ZDUwNmZh
YjlmYzU5NzE5YjU5NGI0YTIyNWM4YjYwMDEuLmQ3MDIwMWFjYmMyNTE1YjkwNWFlYTQ4YWJiN2Uw
OTcwM2UwNjAzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaApA
QCAtMTY1LDYgKzE2NSw4IEBAIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIGVuY2xvc2luZ0Jsb2Nr
Rmxvd0VsZW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBib29sIGlzRmlyc3RWaXNpYmxl
UG9zaXRpb25Jbk5vZGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgTm9kZSopOwogYm9v
bCBpc0xhc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29u
c3QgTm9kZSopOwogCitib29sIGFyZVZpc2libGVQb3NpdGlvbnNJblNhbWVUcmVlU2NvcGUoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisKIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBFQWZmaW5pdHkpOwogV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKaW5kZXggOTdjNjIyYmIyY2U2NTQ3MWNhMGRkYjc3OGRhYWZiNjJiODgwMDI4OC4uYjcz
ZDg4OWU1NDE2MDQ5ZWM2NWQxMjBiOTYyZDFjM2NmNzlhMThkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTc3Niw3ICsxNzc2LDggQEAgc3RhdGljIFZpc2li
bGVQb3NpdGlvbiBuZXh0U2VudGVuY2VCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdnAKICAgICBpZiAocmVzdWx0ID09IHZwKQogICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CiAKLSAgICBBU1NFUlQodXNlRG93bnN0cmVhbSA/IChyZXN1bHQgPiB2cCkg
OiAocmVzdWx0IDwgdnApKTsKKyAgICAvLyBQb3NpdGlvbnMgY2FuIG9ubHkgYmUgY29tcGFyZWQg
aWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgdHJlZSBzY29wZS4KKyAgICBBU1NFUlRfSU1QTElFUyhh
cmVWaXNpYmxlUG9zaXRpb25zSW5TYW1lVHJlZVNjb3BlKHJlc3VsdCwgdnApLCB1c2VEb3duc3Ry
ZWFtID8gKHJlc3VsdCA+IHZwKSA6IChyZXN1bHQgPCB2cCkpOwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0K
</data>
<flag name="review"
          id="399675"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>