<?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>204006</bug_id>
          
          <creation_ts>2019-11-08 09:40:21 -0800</creation_ts>
          <short_desc>Add WebKit Legacy SPI to retrieve editable elements in rect</short_desc>
          <delta_ts>2019-11-08 12:50:15 -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>WebKit Misc.</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>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1588678</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 09:40:21 -0800</bug_when>
    <thetext>Add WebKit Legacy SPI to retrieve editable elements in rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588679</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 09:40:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/57024093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588715</commentid>
    <comment_count>2</comment_count>
      <attachid>383142</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 10:36:30 -0800</bug_when>
    <thetext>Created attachment 383142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588741</commentid>
    <comment_count>3</comment_count>
      <attachid>383142</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-11-08 11:37:43 -0800</bug_when>
    <thetext>Comment on attachment 383142
Patch

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

&gt; Source/WebCore/page/Page.cpp:940
&gt; +            auto node = nodesToSearch.takeFirst();

Nit - auto*

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6696
&gt; +    auto contexts = m_page-&gt;editableElementsInRect(searchRect).map([this] (const auto&amp; element) {

Nit - I think we prefer just auto&amp; over const auto&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588748</commentid>
    <comment_count>4</comment_count>
      <attachid>383142</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 11:50:48 -0800</bug_when>
    <thetext>Comment on attachment 383142
Patch

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

Thanks for the review!

&gt;&gt; Source/WebCore/page/Page.cpp:940
&gt;&gt; +            auto node = nodesToSearch.takeFirst();
&gt; 
&gt; Nit - auto*

Ok

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6696
&gt;&gt; +    auto contexts = m_page-&gt;editableElementsInRect(searchRect).map([this] (const auto&amp; element) {
&gt; 
&gt; Nit - I think we prefer just auto&amp; over const auto&amp;

The issue with this is that the compiler will not enforce the const-ness. I cannot envision a case where this code should ever mutate element right now and I am annotating the ref so the compiler can enforce this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588760</commentid>
    <comment_count>5</comment_count>
      <attachid>383142</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 12:41:40 -0800</bug_when>
    <thetext>Comment on attachment 383142
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6695
&gt;      Vector&lt;WebCore::ElementContext&gt; textInputContexts;

This is unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588762</commentid>
    <comment_count>6</comment_count>
      <attachid>383142</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 12:42:17 -0800</bug_when>
    <thetext>Comment on attachment 383142
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6696
&gt;&gt;&gt; +    auto contexts = m_page-&gt;editableElementsInRect(searchRect).map([this] (const auto&amp; element) {
&gt;&gt; 
&gt;&gt; Nit - I think we prefer just auto&amp; over const auto&amp;
&gt; 
&gt; The issue with this is that the compiler will not enforce the const-ness. I cannot envision a case where this code should ever mutate element right now and I am annotating the ref so the compiler can enforce this.

this =&gt; &amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588763</commentid>
    <comment_count>7</comment_count>
      <attachid>383142</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 12:45:13 -0800</bug_when>
    <thetext>Comment on attachment 383142
Patch

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

&gt; Source/WebCore/page/Page.cpp:944
&gt; +            if (!is&lt;Element&gt;(*node) || !isEditableTextInputElement(downcast&lt;Element&gt;(*node))) {

is&lt;Element&gt;(*node) =&gt; is&lt;Element&gt;(node)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588764</commentid>
    <comment_count>8</comment_count>
      <attachid>383142</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 12:46:56 -0800</bug_when>
    <thetext>Comment on attachment 383142
Patch

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

&gt; Source/WebCore/page/Page.cpp:918
&gt; +static bool isEditableTextInputElement(Element&amp; element)

Element&amp; =&gt; const Element&amp;

&gt; Source/WebCore/page/Page.cpp:925
&gt; +

Will remove this empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588766</commentid>
    <comment_count>9</comment_count>
      <attachid>383153</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 12:48:11 -0800</bug_when>
    <thetext>Created attachment 383153
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588767</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-08 12:50:15 -0800</bug_when>
    <thetext>Committed r252254: &lt;https://trac.webkit.org/changeset/252254&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383142</attachid>
            <date>2019-11-08 10:36:30 -0800</date>
            <delta_ts>2019-11-08 12:48:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204006-20191108103630.patch</filename>
            <type>text/plain</type>
            <size>12584</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc3ZDEzNjg3ZDVjZDY1
MThhNGNhMTI3NDRlZTg5NjZiODc1YTZhMy4uMDAwYmQ2YjBmOWE4ZDJkZjZhYTU0NzBmMWNiMjE2
NzMwYWEzMzUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViS2l0IExlZ2Fj
eSBTUEkgdG8gcmV0cmlldmUgZWRpdGFibGUgZWxlbWVudHMgaW4gcmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MDA2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzAyNDA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHRyYWN0IGNvZGUgdG8gcmV0cmlldmUgdGhlIGVkaXRhYmxlIGVsZW1l
bnRzIGluc2lkZSBhIHNwZWNpZmllZCByZWN0IGZyb20gV2ViS2l0CisgICAgICAgIHRvIFdlYkNv
cmUgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGJ5IGJvdGggTW9kZXJuIFdlYktpdCBhbmQgTGVn
YWN5IFdlYktpdC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0VkaXRhYmxlVGV4dElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpl
ZGl0YWJsZUVsZW1lbnRzSW5SZWN0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwog
MjAxOS0xMS0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtDTWFrZV0gQnVpbGQgV2ViQ29yZSBhcyBhbiBPQkpFQ1QgbGlicmFyeSB1
bmxlc3MgQXBwbGUgaW50ZXJuYWwgYnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU2OGE1Yzk0NDVhMzVjYmZj
OWNjNzU2MDdhOGYzODQ0MTY1YmFiMmIuLmQ5ODhkYmFjMDAyMTgyYTg2MDhmODQ0ZGEwMWIzNGVi
NmU4NDBiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMTEtMDggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgTGVnYWN5IFNQ
SSB0byByZXRyaWV2ZSBlZGl0YWJsZSBlbGVtZW50cyBpbiByZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQwMDYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU3MDI0MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdyaXRlIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KCkgaW4gdGVy
bXMgb2YgUGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdCgpLgorICAgICAgICBBbHNvIG1ha2Ug
dXNlIG9mIEVsZW1lbnQ6OmNsaWVudFJlY3QoKSBpbnN0ZWFkIG9mIGVsZW1lbnRSZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCksCisgICAgICAgIHdoaWNoIGR1cGxpY2F0ZXMgd2hhdCB0aGUgZm9y
bWVyIGRvZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KTogV3JpdGUg
aW4gdGVybXMgb2YgUGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdCgpLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudCBjb25zdCk6IFVzZSBFbGVtZW50OjpjbGll
bnRSZWN0KCkgd2hpY2ggZG9lcyB3aGF0CisgICAgICAgIGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzKCkgZG9lcy4KKyAgICAgICAgKFdlYktpdDo6ZWxlbWVudFJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojppc0VkaXRhYmxlVGV4dElu
cHV0RWxlbWVudCk6IERlbGV0ZWQuCisKIDIwMTktMTEtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVsaW1pbmF0ZSBtYWNoIGxvb2t1cCB0byBjZnBy
ZWZzZCBvbiBwcm9jZXNzIHN0YXJ0dXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4
MjRiNDBmYmUyYTZlYmM1MzU3NDc0NTkyODE2NWUyNmYwYmM0MzllLi43MTc4OGU2OGUzYmEzNDZj
MzdhYmJjMmI2ZWI1Y2MzZTU1ZTExYWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTktMTEtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgTGVnYWN5IFNQSSB0byByZXRyaWV2ZSBlZGl0YWJs
ZSBlbGVtZW50cyBpbiByZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQwMDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MDI0MDkzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8g
cmV0cmlldmUgYWxsIHRoZSBlZGl0YWJsZSBlbGVtZW50cyBpbiBhIHJlY3QuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2VkaXRhYmxlRWxlbWVu
dHNJblJlY3Q6XSk6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoK
KwogMjAxOS0xMS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0Mzk0NykgRXBzb24gc29mdHdhcmUgdXBkYXRlciBm
YWlscyB0byBpbnN0YWxsIG5ldyB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzMzU1ZDNk
OTY3YWQzZDM4Y2MwMzIxODkwNDQ5ZGQyNzg0NWU5OGEyLi42YjkyMTg0MjRhMTJjMmRkNDc0YmU2
MmY5MTVmYWQ1Njc4OThiM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTYyLDYgKzYyLDggQEAK
ICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDbGllbnQuaCIKQEAgLTEyNCw2ICsxMjYsNyBAQAogI2luY2x1ZGUgIlZv
aWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5oIgogI2luY2x1
ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTkxMiw2ICs5MTUsNDYgQEAgdm9pZCBQYWdlOjp1
bm1hcmtBbGxUZXh0TWF0Y2hlcygpCiAgICAgfSB3aGlsZSAoZnJhbWUpOwogfQogCitzdGF0aWMg
Ym9vbCBpc0VkaXRhYmxlVGV4dElucHV0RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAg
IGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAg
aWYgKCFlbGVtZW50LmlzVGV4dEZpZWxkKCkgJiYgIWlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVs
ZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmlzSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmxlKCk7CisgICAgfQorCisgICAgcmV0dXJuIGVsZW1lbnQuaXNSb290RWRpdGFibGVF
bGVtZW50KCk7Cit9CisKK1ZlY3RvcjxSZWY8RWxlbWVudD4+IFBhZ2U6OmVkaXRhYmxlRWxlbWVu
dHNJblJlY3QoY29uc3QgRmxvYXRSZWN0JiBzZWFyY2hSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KSBjb25zdAoreworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlc3VsdDsKKyAgICBmb3IgKGF1
dG8qIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50
KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBEZXF1ZTxOb2RlKj4gbm9kZXNUb1NlYXJjaDsKKyAgICAgICAgbm9kZXNUb1NlYXJjaC5h
cHBlbmQoZG9jdW1lbnQpOworICAgICAgICB3aGlsZSAoIW5vZGVzVG9TZWFyY2guaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBhdXRvIG5vZGUgPSBub2Rlc1RvU2VhcmNoLnRha2VGaXJzdCgpOwor
CisgICAgICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0byBoYXZlIG5lc3RlZCB0ZXh0IGlucHV0
IGNvbnRleHRzIChlLmcuIDxpbnB1dCB0eXBlPSd0ZXh0Jz4gaW5zaWRlIGNvbnRlbnRlZGl0YWJs
ZSkgYnV0CisgICAgICAgICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UganVzdCB0YWtlIHRoZSBvdXRl
cm1vc3QgY29udGV4dCBhbmQgc2tpcCB0aGUgcmVzdC4KKyAgICAgICAgICAgIGlmICghaXM8RWxl
bWVudD4oKm5vZGUpIHx8ICFpc0VkaXRhYmxlVGV4dElucHV0RWxlbWVudChkb3duY2FzdDxFbGVt
ZW50Pigqbm9kZSkpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IG5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAg
ICAgICAgICAgICAgICAgIG5vZGVzVG9TZWFyY2guYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byYgZWxlbWVu
dCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKKyAgICAgICAgICAgIGlmIChzZWFyY2hSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzLmludGVyc2VjdHMoZWxlbWVudC5jbGllbnRSZWN0KCkpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgUGFnZTo6
c2VsZWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gZm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IGVhMmI3ZDJiYWZjZmFiYWRjZGYzOWE4ZGJiYTQ5OGM0MDAzZDVlZGEuLmI0ZjE0NGUyZjUyM2Qy
NjNmNTczZmY3NTZhODExZjY4YWNlMmY2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03MTcsNiArNzE3
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25maWd1cmVMb2dnaW5nQ2hhbm5lbChjb25zdCBT
dHJpbmcmLCBXVEZMb2dDaGFubmVsU3RhdGUsIFdURkxvZ0xldmVsKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxSZWY8RWxlbWVudD4+IGVkaXRhYmxlRWxlbWVudHNJblJlY3QoY29uc3Qg
RmxvYXRSZWN0JikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgc3RydWN0IE5hdmlnYXRpb24gewog
ICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGZmOGYyMDQxMzNjMDgxYWNiNGQ2ZWVlMjJi
NGNmOTE1Y2QzYWVkNzYuLjVkMzRiN2NhYjQ1Y2M3YTcyOGQxMGNhOTM3MTE1Y2Q5NzAwMTcyN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0x
NzgsNyArMTc4LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRBcmVh
RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CkBAIC02NjkxLDY5ICs2NjkwLDIwIEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmluZ0FuZFJlZm9jdXNpbmdFbGVtZW50
SWZOZWVkZWQoRWxlbWVuCiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotc3Rh
dGljIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgRnJhbWUmIGZyYW1lKQotewotICAgIGF1dG8qIHZpZXcgPSBmcmFt
ZS52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0
byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHJldHVybiB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXco
cmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwotfQotCi1zdGF0aWMgYm9vbCBp
c0VkaXRhYmxlVGV4dElucHV0RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQotewotICAgIGlmIChp
czxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgaWYgKCFl
bGVtZW50LmlzVGV4dEZpZWxkKCkgJiYgIWlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmlzSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmxlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVsZW1lbnQuaXNSb290RWRpdGFibGVFbGVtZW50
KCk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6
RmxvYXRSZWN0IHNlYXJjaFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gdGV4dElucHV0Q29udGV4dHM7Ci0KLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgICAgICBpZiAoIWRvY3VtZW50KQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgRGVxdWU8Tm9kZSo+IG5vZGVzVG9TZWFyY2g7Ci0g
ICAgICAgIG5vZGVzVG9TZWFyY2guYXBwZW5kKGRvY3VtZW50KTsKLSAgICAgICAgd2hpbGUgKCFu
b2Rlc1RvU2VhcmNoLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYXV0byBub2RlID0gbm9kZXNU
b1NlYXJjaC50YWtlRmlyc3QoKTsKLQotICAgICAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgdG8g
aGF2ZSBuZXN0ZWQgdGV4dCBpbnB1dCBjb250ZXh0cyAoZS5nLiA8aW5wdXQgdHlwZT0ndGV4dCc+
IGluc2lkZSBjb250ZW50ZWRpdGFibGUpIGJ1dAotICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNl
IHdlIGp1c3QgdGFrZSB0aGUgb3V0ZXJtb3N0IGNvbnRleHQgYW5kIHNraXAgdGhlIHJlc3QuCi0g
ICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSB8fCAhaXNFZGl0YWJsZVRleHRJbnB1
dEVsZW1lbnQoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpKSkgewotICAgICAgICAgICAgICAgIGZv
ciAoYXV0byogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgICAgICAgICBub2Rlc1RvU2VhcmNoLmFwcGVu
ZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7Ci0KLSAg
ICAgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3QgPSBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyhlbGVtZW50LCAqZnJhbWUpOwotICAgICAgICAgICAgaWYgKCFzZWFyY2hSZWN0Lmlu
dGVyc2VjdHMoZWxlbWVudFJlY3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250ZXh0OwotICAgICAgICAgICAgY29u
dGV4dC53ZWJQYWdlSWRlbnRpZmllciA9IG1faWRlbnRpZmllcjsKLSAgICAgICAgICAgIGNvbnRl
eHQuZG9jdW1lbnRJZGVudGlmaWVyID0gZG9jdW1lbnQtPmlkZW50aWZpZXIoKTsKLSAgICAgICAg
ICAgIGNvbnRleHQuZWxlbWVudElkZW50aWZpZXIgPSBkb2N1bWVudC0+aWRlbnRpZmllckZvckVs
ZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgICAgICBjb250ZXh0LmJvdW5kaW5nUmVjdCA9IGVsZW1l
bnRSZWN0OwotCi0gICAgICAgICAgICB0ZXh0SW5wdXRDb250ZXh0cy5hcHBlbmQoY29udGV4dCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcih0ZXh0SW5wdXRDb250
ZXh0cyk7CisgICAgYXV0byBjb250ZXh0cyA9IG1fcGFnZS0+ZWRpdGFibGVFbGVtZW50c0luUmVj
dChzZWFyY2hSZWN0KS5tYXAoW3RoaXNdIChjb25zdCBhdXRvJiBlbGVtZW50KSB7CisgICAgICAg
IGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC0+ZG9jdW1lbnQoKTsKKworICAgICAgICBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCBjb250ZXh0OworICAgICAgICBjb250ZXh0LndlYlBhZ2VJZGVudGlm
aWVyID0gbV9pZGVudGlmaWVyOworICAgICAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9
IGRvY3VtZW50LmlkZW50aWZpZXIoKTsKKyAgICAgICAgY29udGV4dC5lbGVtZW50SWRlbnRpZmll
ciA9IGRvY3VtZW50LmlkZW50aWZpZXJGb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICBjb250
ZXh0LmJvdW5kaW5nUmVjdCA9IGVsZW1lbnQtPmNsaWVudFJlY3QoKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQ7CisgICAgfSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dHMpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCYgdGV4dElucHV0Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTY3OTEsNyArNjc0MSw3IEBAIE9wdGlvbmFsPFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0PiBXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudChXZWJDb3Jl
OjpFbGVtZW50JiBlCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAotICAgIHJldHVybiBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCB7IGVsZW1lbnRSZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzKGVsZW1lbnQsICpmcmFtZSksIG1faWRlbnRpZmllciwgZG9jdW1l
bnQuaWRlbnRpZmllcigpLCBkb2N1bWVudC5pZGVudGlmaWVyRm9yRWxlbWVudChlbGVtZW50KSB9
OworICAgIHJldHVybiBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCB7IGVsZW1lbnQuY2xpZW50UmVj
dCgpLCBtX2lkZW50aWZpZXIsIGRvY3VtZW50LmlkZW50aWZpZXIoKSwgZG9jdW1lbnQuaWRlbnRp
ZmllckZvckVsZW1lbnQoZWxlbWVudCkgfTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdGFydFRleHRN
YW5pcHVsYXRpb25zKFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
RXhjbHVzaW9uUnVsZT4mJiBleGNsdXNpb25SdWxlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IGNkZmYwOTkxNGFiY2FlM2I4NDRlYTc2NjhkODE0NDRjZWMwMDczM2Qu
LjEzZWZjMjdkMGI5MGY0NzY4MDk2ZWYzMjBhYmVkMWRhYTNmMGUyNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEwMTMxLDYgKzEwMTMxLDcgQEAg
KyAodm9pZClfc2V0Rm9udFdoaXRlbGlzdDooTlNBcnJheSAqKXdoaXRlbGlzdAogQGVuZAogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZp
ZXdJT1NQREYpCiAKICsgKENsYXNzKV9nZXRQREZSZXByZXNlbnRhdGlvbkNsYXNzCkBAIC0xMDE1
OCw2ICsxMDE1OSwyNSBAQCArICh2b2lkKV9zZXRQREZWaWV3Q2xhc3M6KENsYXNzKXBkZlZpZXdD
bGFzcwogfQogCiBAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3SU9TQWRk
aXRpb25zKQorCistIChOU0FycmF5PERPTUVsZW1lbnQgKj4gKilfZWRpdGFibGVFbGVtZW50c0lu
UmVjdDooQ0dSZWN0KXJlY3QKK3sKKyAgICBhdXRvKiBwYWdlID0gY29yZShzZWxmKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBAW107CisgICAgYXV0byBjb3JlRWxlbWVudHMgPSBw
YWdlLT5lZGl0YWJsZUVsZW1lbnRzSW5SZWN0KHJlY3QpOworICAgIGlmIChjb3JlRWxlbWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQFtdOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvcmVFbGVtZW50cy5z
aXplKCldKTsKKyAgICBmb3IgKGF1dG8mIGNvcmVFbGVtZW50IDogY29yZUVsZW1lbnRzKQorICAg
ICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQoY29yZUVsZW1lbnQucHRyKCkpXTsKKyAgICByZXR1
cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7Cit9CisKK0BlbmQKKwogI2VuZGlmCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJWaWV3IChXZWJWaWV3RnVsbFNjcmVlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA5ODc0NjU1ZTJlNWU1ZTA2
M2Y5NjcxNWVhZDVmZDBhMGE4NjFkODcyLi43OWQwNDJiNjBlNjE5NTBmMDI1NGZiZDMxZDhlYTI2
Yjk1YmRjMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCkBAIC0xMDc1LDYgKzEwNzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBXZWJFZGdl
SW5zZXRzIHsKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKKwogQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3SU9TUERGKQogKyAoQ2xhc3MpX2dldFBERlJlcHJlc2VudGF0aW9uQ2xhc3M7
CiArICh2b2lkKV9zZXRQREZSZXByZXNlbnRhdGlvbkNsYXNzOihDbGFzcylwZGZSZXByZXNlbnRh
dGlvbkNsYXNzOwpAQCAtMTA4Miw2ICsxMDgzLDExIEBAIHR5cGVkZWYgc3RydWN0IFdlYkVkZ2VJ
bnNldHMgewogKyAoQ2xhc3MpX2dldFBERlZpZXdDbGFzczsKICsgKHZvaWQpX3NldFBERlZpZXdD
bGFzczooQ2xhc3MpcGRmVmlld0NsYXNzOwogQGVuZAorCitAaW50ZXJmYWNlIFdlYlZpZXcgKFdl
YlZpZXdJT1NBZGRpdGlvbnMpCistIChOU0FycmF5PERPTUVsZW1lbnQgKj4gKilfZWRpdGFibGVF
bGVtZW50c0luUmVjdDooQ0dSZWN0KXJlY3Q7CitAZW5kCisKICNlbmRpZgogCiBAaW50ZXJmYWNl
IE5TT2JqZWN0IChXZWJWaWV3RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383153</attachid>
            <date>2019-11-08 12:48:11 -0800</date>
            <delta_ts>2019-11-08 12:48:11 -0800</delta_ts>
            <desc>To Land</desc>
            <filename>bug-204006-20191108124810.patch</filename>
            <type>text/plain</type>
            <size>12586</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGYyY2E5YTM4NmZhZDYz
ZjM2NjdiYjYwZWUzMTQ4ZTJiYzNiYjM5Yy4uOTZkNTQ4M2Q3NWUyZTM3MGI3NmY4ODBkNzVjZWRk
YjUwYmNiOWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViS2l0IExlZ2Fj
eSBTUEkgdG8gcmV0cmlldmUgZWRpdGFibGUgZWxlbWVudHMgaW4gcmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MDA2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzAyNDA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWgu
CisKKyAgICAgICAgRXh0cmFjdCBjb2RlIHRvIHJldHJpZXZlIHRoZSBlZGl0YWJsZSBlbGVtZW50
cyBpbnNpZGUgYSBzcGVjaWZpZWQgcmVjdCBmcm9tIFdlYktpdAorICAgICAgICB0byBXZWJDb3Jl
IHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBieSBib3RoIE1vZGVybiBXZWJLaXQgYW5kIExlZ2Fj
eSBXZWJLaXQuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNFZGl0YWJsZVRleHRJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZWRp
dGFibGVFbGVtZW50c0luUmVjdCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisKIDIw
MTktMTEtMDggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViIEFuaW1hdGlvbnNdIFVzZSBhIGtleWZyYW1lIGVmZmVjdCBzdGFjayB0byByZXNvbHZlIGFu
aW1hdGlvbnMgb24gYW4gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNzVjYWY2ODE4N2ExMTMyZGNhYTQ2
OTBmOWMwNGMzZmUwNGVjOWZhLi5jOGFjMTVkODhkZTA0NjNhNTFiMDIxN2I1NjI3ZTdlZGE4ODVi
Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTExLTA4ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViS2l0IExlZ2FjeSBTUEkgdG8g
cmV0cmlldmUgZWRpdGFibGUgZWxlbWVudHMgaW4gcmVjdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MDA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NzAyNDA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAg
ICAgV3JpdGUgV2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoKSBpbiB0ZXJtcyBvZiBQ
YWdlOjplZGl0YWJsZUVsZW1lbnRzSW5SZWN0KCkuCisgICAgICAgIEFsc28gbWFrZSB1c2Ugb2Yg
RWxlbWVudDo6Y2xpZW50UmVjdCgpIGluc3RlYWQgb2YgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoKSwKKyAgICAgICAgd2hpY2ggZHVwbGljYXRlcyB3aGF0IHRoZSBmb3JtZXIgZG9l
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QpOiBXcml0ZSBpbiB0ZXJt
cyBvZiBQYWdlOjplZGl0YWJsZUVsZW1lbnRzSW5SZWN0KCkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNvbnRleHRGb3JFbGVtZW50IGNvbnN0KTogVXNlIEVsZW1lbnQ6OmNsaWVudFJlY3Qo
KSB3aGljaCBkb2VzIHdoYXQKKyAgICAgICAgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMoKSBkb2VzLgorICAgICAgICAoV2ViS2l0OjplbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmlzRWRpdGFibGVUZXh0SW5wdXRFbGVt
ZW50KTogRGVsZXRlZC4KKwogMjAxOS0xMS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gUmV0dXJuIE5vdEFsbG93ZWRFcnJvciBpbW1l
ZGlhdGVseSBmb3IgVUkgY2FuY2VsbGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDgyNGI0MGZiZTJhNmViYzUzNTc0NzQ1OTI4MTY1ZTI2ZjBiYzQzOWUuLjMwYTNlZjJmZTgw
MmUzMjkyMTNhNjc2OTNhMjM3ZTNmMTViOWFjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMS0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdlYktpdCBMZWdhY3kgU1BJIHRvIHJldHJpZXZlIGVk
aXRhYmxlIGVsZW1lbnRzIGluIHJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNDAwNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcwMjQwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIEFkZCBTUEkg
dG8gcmV0cmlldmUgYWxsIHRoZSBlZGl0YWJsZSBlbGVtZW50cyBpbiBhIHJlY3QuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2VkaXRhYmxlRWxl
bWVudHNJblJlY3Q6XSk6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aDoKKwogMjAxOS0xMS0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0Mzk0NykgRXBzb24gc29mdHdhcmUgdXBkYXRl
ciBmYWlscyB0byBpbnN0YWxsIG5ldyB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzODcw
MWRkYWMyYmYzZGQ1NTE2ZTlkZTRlMWQzMWU3ZjE2Mzg5Mjk4Li5iMTQ2Y2FjZTE1NGM5ZTg4Nzhi
ZTg4OTkyNDIxYTgyOGYwMmFkMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTYyLDYgKzYyLDgg
QEAKICNpbmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUZXh0QXJl
YUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKQEAgLTEyNCw2ICsxMjYsNyBAQAogI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5oIgogI2lu
Y2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTkxMiw2ICs5MTUsNDUgQEAgdm9pZCBQYWdl
Ojp1bm1hcmtBbGxUZXh0TWF0Y2hlcygpCiAgICAgfSB3aGlsZSAoZnJhbWUpOwogfQogCitzdGF0
aWMgYm9vbCBpc0VkaXRhYmxlVGV4dElucHV0RWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50
KQoreworICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkpIHsK
KyAgICAgICAgaWYgKCFlbGVtZW50LmlzVGV4dEZpZWxkKCkgJiYgIWlzPEhUTUxUZXh0QXJlYUVs
ZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmlzSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmxlKCk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50LmlzUm9vdEVk
aXRhYmxlRWxlbWVudCgpOworfQorCitWZWN0b3I8UmVmPEVsZW1lbnQ+PiBQYWdlOjplZGl0YWJs
ZUVsZW1lbnRzSW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgc2VhcmNoUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcykgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiByZXN1bHQ7CisgICAg
Zm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgRGVxdWU8Tm9kZSo+IG5vZGVzVG9TZWFyY2g7CisgICAgICAgIG5vZGVzVG9T
ZWFyY2guYXBwZW5kKGRvY3VtZW50KTsKKyAgICAgICAgd2hpbGUgKCFub2Rlc1RvU2VhcmNoLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgYXV0byogbm9kZSA9IG5vZGVzVG9TZWFyY2gudGFrZUZp
cnN0KCk7CisKKyAgICAgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgbmVzdGVkIHRl
eHQgaW5wdXQgY29udGV4dHMgKGUuZy4gPGlucHV0IHR5cGU9J3RleHQnPiBpbnNpZGUgY29udGVu
dGVkaXRhYmxlKSBidXQKKyAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBqdXN0IHRha2Ug
dGhlIG91dGVybW9zdCBjb250ZXh0IGFuZCBza2lwIHRoZSByZXN0LgorICAgICAgICAgICAgaWYg
KCFpczxFbGVtZW50Pihub2RlKSB8fCAhaXNFZGl0YWJsZVRleHRJbnB1dEVsZW1lbnQoZG93bmNh
c3Q8RWxlbWVudD4oKm5vZGUpKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2hpbGQg
PSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KQorICAgICAgICAgICAgICAgICAgICBub2Rlc1RvU2VhcmNoLmFwcGVuZChjaGlsZCk7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8m
IGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CisgICAgICAgICAgICBpZiAoc2Vh
cmNoUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcy5pbnRlcnNlY3RzKGVsZW1lbnQuY2xpZW50UmVj
dCgpKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGVsZW1lbnQpOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IFBhZ2U6OnNlbGVjdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAppbmRleCBlYTJiN2QyYmFmY2ZhYmFkY2RmMzlhOGRiYmE0OThjNDAwM2Q1ZWRhLi5iNGYxNDRl
MmY1MjNkMjYzZjU3M2ZmNzU2YTgxMWY2OGFjZTJmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzE3
LDYgKzcxNyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29uZmlndXJlTG9nZ2luZ0NoYW5uZWwo
Y29uc3QgU3RyaW5nJiwgV1RGTG9nQ2hhbm5lbFN0YXRlLCBXVEZMb2dMZXZlbCk7CiAKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBlZGl0YWJsZUVsZW1lbnRzSW5SZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0
aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmZjhmMjA0MTMzYzA4MWFjYjRk
NmVlZTIyYjRjZjkxNWNkM2FlZDc2Li44MjQ3NDgwNzg5NzU3MTg0NTBjY2ExMjllNTBmOTNkYzJk
ZjA2YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTc4LDcgKzE3OCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTFNlbGVjdEVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXN0b3J5Q29udHJvbGxlci5oPgpAQCAtNjY5MSw2OSArNjY5MCwxOSBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZUlucHV0Q29udGV4dEFmdGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5n
RWxlbWVudElmTmVlZGVkKEVsZW1lbgogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKLXN0YXRpYyBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEZyYW1lJiBmcmFtZSkKLXsKLSAgICBhdXRvKiB2aWV3
ID0gZnJhbWUudmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIHsgfTsKLQot
ICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gdmlldy0+Y29udGVudHNUb1Jv
b3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKLX0KLQotc3RhdGlj
IGJvb2wgaXNFZGl0YWJsZVRleHRJbnB1dEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAg
ICBpZiAoaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAg
IGlmICghZWxlbWVudC5pc1RleHRGaWVsZCgpICYmICFpczxIVE1MVGV4dEFyZWFFbGVtZW50Pihl
bGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KS5pc0lubmVyVGV4dEVsZW1l
bnRFZGl0YWJsZSgpOwotICAgIH0KLQotICAgIHJldHVybiBlbGVtZW50LmlzUm9vdEVkaXRhYmxl
RWxlbWVudCgpOwotfQotCiB2b2lkIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdl
YkNvcmU6OkZsb2F0UmVjdCBzZWFyY2hSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBWZWN0b3I8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHRleHRJbnB1dENvbnRleHRz
OwotCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKCFkb2N1bWVudCkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIERlcXVlPE5vZGUqPiBub2Rlc1RvU2Vh
cmNoOwotICAgICAgICBub2Rlc1RvU2VhcmNoLmFwcGVuZChkb2N1bWVudCk7Ci0gICAgICAgIHdo
aWxlICghbm9kZXNUb1NlYXJjaC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGF1dG8gbm9kZSA9
IG5vZGVzVG9TZWFyY2gudGFrZUZpcnN0KCk7Ci0KLSAgICAgICAgICAgIC8vIEl0IGlzIHBvc3Np
YmxlIHRvIGhhdmUgbmVzdGVkIHRleHQgaW5wdXQgY29udGV4dHMgKGUuZy4gPGlucHV0IHR5cGU9
J3RleHQnPiBpbnNpZGUgY29udGVudGVkaXRhYmxlKSBidXQKLSAgICAgICAgICAgIC8vIGluIHRo
aXMgY2FzZSB3ZSBqdXN0IHRha2UgdGhlIG91dGVybW9zdCBjb250ZXh0IGFuZCBza2lwIHRoZSBy
ZXN0LgotICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkgfHwgIWlzRWRpdGFibGVU
ZXh0SW5wdXRFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSkpIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8qIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgbm9kZXNUb1NlYXJj
aC5hcHBlbmQoY2hpbGQpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUp
OworICAgIGF1dG8gY29udGV4dHMgPSBtX3BhZ2UtPmVkaXRhYmxlRWxlbWVudHNJblJlY3Qoc2Vh
cmNoUmVjdCkubWFwKFsmXSAoY29uc3QgYXV0byYgZWxlbWVudCkgeworICAgICAgICBhdXRvJiBk
b2N1bWVudCA9IGVsZW1lbnQtPmRvY3VtZW50KCk7CiAKLSAgICAgICAgICAgIEludFJlY3QgZWxl
bWVudFJlY3QgPSBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyhlbGVtZW50LCAqZnJh
bWUpOwotICAgICAgICAgICAgaWYgKCFzZWFyY2hSZWN0LmludGVyc2VjdHMoZWxlbWVudFJlY3Qp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCBjb250ZXh0OwotICAgICAgICAgICAgY29udGV4dC53ZWJQYWdlSWRlbnRpZmll
ciA9IG1faWRlbnRpZmllcjsKLSAgICAgICAgICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVy
ID0gZG9jdW1lbnQtPmlkZW50aWZpZXIoKTsKLSAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudElk
ZW50aWZpZXIgPSBkb2N1bWVudC0+aWRlbnRpZmllckZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAg
ICAgICAgICBjb250ZXh0LmJvdW5kaW5nUmVjdCA9IGVsZW1lbnRSZWN0OwotCi0gICAgICAgICAg
ICB0ZXh0SW5wdXRDb250ZXh0cy5hcHBlbmQoY29udGV4dCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBjb21wbGV0aW9uSGFuZGxlcih0ZXh0SW5wdXRDb250ZXh0cyk7CisgICAgICAgIFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0IGNvbnRleHQ7CisgICAgICAgIGNvbnRleHQud2ViUGFnZUlkZW50
aWZpZXIgPSBtX2lkZW50aWZpZXI7CisgICAgICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVy
ID0gZG9jdW1lbnQuaWRlbnRpZmllcigpOworICAgICAgICBjb250ZXh0LmVsZW1lbnRJZGVudGlm
aWVyID0gZG9jdW1lbnQuaWRlbnRpZmllckZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIGNv
bnRleHQuYm91bmRpbmdSZWN0ID0gZWxlbWVudC0+Y2xpZW50UmVjdCgpOworICAgICAgICByZXR1
cm4gY29udGV4dDsKKyAgICB9KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0cyk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JiB0ZXh0SW5wdXRDb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjc5MSw3ICs2NzQwLDcgQEAgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IFdlYlBhZ2U6OmNvbnRleHRGb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQmIGUKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHsgZWxlbWVudFJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMoZWxlbWVudCwgKmZyYW1lKSwgbV9pZGVudGlmaWVyLCBkb2N1
bWVudC5pZGVudGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXJGb3JFbGVtZW50KGVsZW1lbnQp
IH07CisgICAgcmV0dXJuIFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IHsgZWxlbWVudC5jbGllbnRS
ZWN0KCksIG1faWRlbnRpZmllciwgZG9jdW1lbnQuaWRlbnRpZmllcigpLCBkb2N1bWVudC5pZGVu
dGlmaWVyRm9yRWxlbWVudChlbGVtZW50KSB9OwogfQogCiB2b2lkIFdlYlBhZ2U6OnN0YXJ0VGV4
dE1hbmlwdWxhdGlvbnMoVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpFeGNsdXNpb25SdWxlPiYmIGV4Y2x1c2lvblJ1bGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggY2RmZjA5OTE0YWJjYWUzYjg0NGVhNzY2OGQ4MTQ0NGNlYzAwNzMz
ZC4uMTNlZmMyN2QwYjkwZjQ3NjgwOTZlZjMyMGFiZWQxZGFhM2YwZTI0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTAxMzEsNiArMTAxMzEsNyBA
QCArICh2b2lkKV9zZXRGb250V2hpdGVsaXN0OihOU0FycmF5ICopd2hpdGVsaXN0CiBAZW5kCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2Vi
Vmlld0lPU1BERikKIAogKyAoQ2xhc3MpX2dldFBERlJlcHJlc2VudGF0aW9uQ2xhc3MKQEAgLTEw
MTU4LDYgKzEwMTU5LDI1IEBAICsgKHZvaWQpX3NldFBERlZpZXdDbGFzczooQ2xhc3MpcGRmVmll
d0NsYXNzCiB9CiAKIEBlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdJT1NB
ZGRpdGlvbnMpCisKKy0gKE5TQXJyYXk8RE9NRWxlbWVudCAqPiAqKV9lZGl0YWJsZUVsZW1lbnRz
SW5SZWN0OihDR1JlY3QpcmVjdAoreworICAgIGF1dG8qIHBhZ2UgPSBjb3JlKHNlbGYpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIEBbXTsKKyAgICBhdXRvIGNvcmVFbGVtZW50cyA9
IHBhZ2UtPmVkaXRhYmxlRWxlbWVudHNJblJlY3QocmVjdCk7CisgICAgaWYgKGNvcmVFbGVtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBAW107CisgICAgYXV0byByZXN1bHQgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29yZUVsZW1lbnRz
LnNpemUoKV0pOworICAgIGZvciAoYXV0byYgY29yZUVsZW1lbnQgOiBjb3JlRWxlbWVudHMpCisg
ICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjb3JlRWxlbWVudC5wdHIoKSldOworICAgIHJl
dHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKworQGVuZAorCiAjZW5kaWYKIAogQGltcGxl
bWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdGdWxsU2NyZWVuKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDk4NzQ2NTVlMmU1ZTVl
MDYzZjk2NzE1ZWFkNWZkMGEwYTg2MWQ4NzIuLjc5ZDA0MmI2MGU2MTk1MGYwMjU0ZmJkMzFkOGVh
MjZiOTViZGMzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKQEAgLTEwNzUsNiArMTA3NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdlYkVk
Z2VJbnNldHMgewogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQorCiBAaW50ZXJmYWNlIFdl
YlZpZXcgKFdlYlZpZXdJT1NQREYpCiArIChDbGFzcylfZ2V0UERGUmVwcmVzZW50YXRpb25DbGFz
czsKICsgKHZvaWQpX3NldFBERlJlcHJlc2VudGF0aW9uQ2xhc3M6KENsYXNzKXBkZlJlcHJlc2Vu
dGF0aW9uQ2xhc3M7CkBAIC0xMDgyLDYgKzEwODMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgV2ViRWRn
ZUluc2V0cyB7CiArIChDbGFzcylfZ2V0UERGVmlld0NsYXNzOwogKyAodm9pZClfc2V0UERGVmll
d0NsYXNzOihDbGFzcylwZGZWaWV3Q2xhc3M7CiBAZW5kCisKK0BpbnRlcmZhY2UgV2ViVmlldyAo
V2ViVmlld0lPU0FkZGl0aW9ucykKKy0gKE5TQXJyYXk8RE9NRWxlbWVudCAqPiAqKV9lZGl0YWJs
ZUVsZW1lbnRzSW5SZWN0OihDR1JlY3QpcmVjdDsKK0BlbmQKKwogI2VuZGlmCiAKIEBpbnRlcmZh
Y2UgTlNPYmplY3QgKFdlYlZpZXdGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>