<?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>177852</bug_id>
          
          <creation_ts>2017-10-03 18:30:21 -0700</creation_ts>
          <short_desc>Replace some stack raw pointers with RefPtrs within WebCore/dom</short_desc>
          <delta_ts>2022-08-30 15:25:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>244558</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356196</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-10-03 18:30:21 -0700</bug_when>
    <thetext>Replace some stack raw pointers with RefPtrs within WebCore/dom. This is an effort to reduce raw pointer usage in DOM code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356198</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-03 18:30:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/34804487&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356519</commentid>
    <comment_count>2</comment_count>
      <attachid>322692</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-10-04 11:09:49 -0700</bug_when>
    <thetext>Created attachment 322692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356520</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-04 11:12:29 -0700</bug_when>
    <thetext>Attachment 322692 did not pass style-queue:


ERROR: Source/WebCore/dom/RadioButtonGroups.cpp:77:  &apos;oldCheckedButton&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCheckedButton&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/dom/ContainerNodeAlgorithms.cpp:158:  &apos;next&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedNullptr&apos;.  [readability/naming/protected] [4]
Total errors found: 2 in 9 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>1356739</commentid>
    <comment_count>4</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-10-04 17:06:59 -0700</bug_when>
    <thetext>No performance regression has been identified with a local test with speedometer. Now try performance try-bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356824</commentid>
    <comment_count>5</comment_count>
      <attachid>322692</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 20:56:04 -0700</bug_when>
    <thetext>Comment on attachment 322692
Patch

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

&gt; Source/WebCore/dom/EventTarget.cpp:236
&gt; +    RefPtr&lt;EventTarget&gt; protectedThis(this); // Try to prevent this event target being removed by an event handler.

I don&apos;t think we should add this protectThis objects in this refactoring effort.
protectedThis is really an anti-pattern that only exists because we don&apos;t have caller which holds onto a Ref/RefPtr of this.

&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:172
&gt; -    Node* n = targetNode;
&gt; +    Node* n = targetNode.get();

Use RefPtr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357256</commentid>
    <comment_count>6</comment_count>
      <attachid>322692</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-10-05 14:37:26 -0700</bug_when>
    <thetext>Comment on attachment 322692
Patch

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

Thanks Ryosuke for r+ my patch. I will upload another patch to address all of the comments once I got the results from the performance try-bots.

&gt;&gt; Source/WebCore/dom/EventTarget.cpp:236
&gt;&gt; +    RefPtr&lt;EventTarget&gt; protectedThis(this); // Try to prevent this event target being removed by an event handler.
&gt; 
&gt; I don&apos;t think we should add this protectThis objects in this refactoring effort.
&gt; protectedThis is really an anti-pattern that only exists because we don&apos;t have caller which holds onto a Ref/RefPtr of this.

True, we should deal with the heap raw pointers/references after dealing with the stack ones.

&gt;&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:172
&gt;&gt; +    Node* n = targetNode.get();
&gt; 
&gt; Use RefPtr here.

Since this raw pointer doesn&apos;t fall into my target ones at this moment, I didn&apos;t replace it. I am fine with replacing it with RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357674</commentid>
    <comment_count>7</comment_count>
      <attachid>322692</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-10-06 11:14:40 -0700</bug_when>
    <thetext>Comment on attachment 322692
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/EventTarget.cpp:236
&gt;&gt;&gt; +    RefPtr&lt;EventTarget&gt; protectedThis(this); // Try to prevent this event target being removed by an event handler.
&gt;&gt; 
&gt;&gt; I don&apos;t think we should add this protectThis objects in this refactoring effort.
&gt;&gt; protectedThis is really an anti-pattern that only exists because we don&apos;t have caller which holds onto a Ref/RefPtr of this.
&gt; 
&gt; True, we should deal with the heap raw pointers/references after dealing with the stack ones.

Removed.

&gt;&gt;&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:172
&gt;&gt;&gt; +    Node* n = targetNode.get();
&gt;&gt; 
&gt;&gt; Use RefPtr here.
&gt; 
&gt; Since this raw pointer doesn&apos;t fall into my target ones at this moment, I didn&apos;t replace it. I am fine with replacing it with RefPtr.

Semantically, I didn&apos;t see the value of replacing this Node* n with RefPtr&lt;Node&gt;. Therefore, I didn&apos;t replace it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357676</commentid>
    <comment_count>8</comment_count>
      <attachid>323029</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-10-06 11:18:12 -0700</bug_when>
    <thetext>Created attachment 323029
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357678</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-06 11:20:11 -0700</bug_when>
    <thetext>Attachment 323029 did not pass style-queue:


ERROR: Source/WebCore/dom/RadioButtonGroups.cpp:77:  &apos;oldCheckedButton&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCheckedButton&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/dom/ContainerNodeAlgorithms.cpp:158:  &apos;next&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedNullptr&apos;.  [readability/naming/protected] [4]
Total errors found: 2 in 8 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>1357710</commentid>
    <comment_count>10</comment_count>
      <attachid>323029</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-06 13:10:29 -0700</bug_when>
    <thetext>Comment on attachment 323029
Patch for landing

Clearing flags on attachment: 323029

Committed r222993: &lt;http://trac.webkit.org/changeset/222993&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322692</attachid>
            <date>2017-10-04 11:09:49 -0700</date>
            <delta_ts>2017-10-04 20:56:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177852-20171004110949.patch</filename>
            <type>text/plain</type>
            <size>12910</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRiN2MxZjMyZGRkODhj
M2NiNTMyZWM3ODFkYTFlODcyYWY2NGYzYy4uZDQxZTgyMTQ3ZWRhZTVjYzNhMjMzMTM3YjM2NWUx
NmY4MTQ3M2Y5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE3LTEwLTAzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBzb21lIHN0
YWNrIHJhdyBwb2ludGVycyB3aXRoIFJlZlB0cnMgd2l0aGluIFdlYkNvcmUvZG9tCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc4NTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM0ODA0NDg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYW4gZWZmb3J0IHRvIHJlZHVjZSByYXcgcG9pbnRl
ciB1c2FnZSBpbiBET00gY29kZS4gSW4gdGhpcyBwYXRjaCwKKyAgICAgICAgc3RhY2sgcmF3IHBv
aW50ZXJzIHRoYXQgY291bGQgYmUgZnJlZWQgZHVyaW5nIHRoZWlyIGxpZmV0aW1lIGJlY2F1c2Ug
b2YKKyAgICAgICAgZXZlbnQgZGlzcGF0Y2hpbmcsIGxheW91dCB1cGRhdGluZyBhbmQgZXRjIGFy
ZSBzZWxlY3RlZC4gQWxsIHNlbGVjdGlvbnMgYXJlCisgICAgICAgIGJhc2luZyBvbiBjb2RlIHNw
ZWN1bGF0aW9uLgorCisgICAgICAgIE5vIGNoYW5nZXMgaW4gYmVoYXZpb3Vycy4KKworICAgICAg
ICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
ZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKToKKyAgICAgICAgRXNjYWxhdGUgdGhlIFJlZlB0
ciB0byB3aGVyZSBub2RlIGlzIGZpcnN0IGRlZmluZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRWaXN1YWxVcGRhdGVzQWxsb3dl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlTGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUpOgor
ICAgICAgICBQb3NzaWJsZSBsYXlvdXQgdXBkYXRlcyBkdXJpbmcgdGhlaXIgbGlmZXRpbWUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgIFBvc3Np
YmxlIGV2ZW50IGRpc3BhdGNoaW5nIGR1cmluZyBpdHMgbGlmZXRpbWUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQpOgorICAgICAgICBQb3NzaWJsZSBub2Rl
IHJlbW92YWwgZHVyaW5nIHRoZWlyIGxpZmV0aW1lLgorICAgICAgICAoV2ViQ29yZTo6Y29tbWFu
ZCk6CisgICAgICAgIFBvc3NpYmxlIGxheW91dCB1cGRhdGVzIGR1cmluZyBpdHMgbGlmZXRpbWUu
CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJz
KToKKyAgICAgICAgUG9zc2libGUgbGF5b3V0IHVwZGF0ZXMgZHVyaW5nIGl0cyBsaWZldGltZS4K
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZW1vdmVkRnJvbSk6CisgICAgICAgICBQb3NzaWJsZSBldmVudCBkaXNwYXRjaGluZyBkdXJpbmcg
aXRzIGxpZmV0aW1lLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFu
Z2VzKToKKyAgICAgICAgUG9zc2libGUgbGF5b3V0IHVwZGF0ZXMgZHVyaW5nIHRoZWlyIGxpZmV0
aW1lLgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgUG9zc2libGUgZXZlbnQg
ZGlzcGF0Y2hpbmcgZHVyaW5nIGl0cyBsaWZldGltZS4KKyAgICAgICAgKiBkb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1
dGVSZWxhdGl2ZVBvc2l0aW9uKToKKyAgICAgICAgUG9zc2libGUgbGF5b3V0IHVwZGF0ZXMgZHVy
aW5nIGl0cyBsaWZldGltZS4KKyAgICAgICAgKiBkb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6c2V0Q2hlY2tlZEJ1dHRvbik6Cisg
ICAgICAgIFBvc3NpYmxlIGxheW91dCB1cGRhdGVzIGR1cmluZyBpdHMgbGlmZXRpbWUuCisgICAg
ICAgICogZG9tL1Nsb3RBc3NpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50OjpkaWRDaGFuZ2VTbG90KToKKyAgICAgICAgUG9zc2libGUgbGF5b3V0IHVwZGF0ZXMg
ZHVyaW5nIGl0cyBsaWZldGltZS4KKwogMjAxNy0xMC0wMiAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3NpbmcgcG9zdC1yZXZpZXcgY29tbWVudHMgYWZ0
ZXIgcjIyMjYyMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHAKaW5kZXggYTlmNDA0MTY0YzA2YTJkMGVlZDgwNDhmMmZiMjliOWZlYjg5NGNmNy4uOTNj
NDQ4ODg1ZmJlZDg2MjI3YWM3ZmNiNDU3ZDhiZGVjNTM3ZDY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC0xNTUsMTQgKzE1NSwxNCBA
QCB2b2lkIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9p
bnQsIE5vZGUmIGNoaWxkKQogdm9pZCBhZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKE5vZGUq
JiBoZWFkLCBOb2RlKiYgdGFpbCwgQ29udGFpbmVyTm9kZSYgY29udGFpbmVyKQogewogICAgIC8v
IFdlIGhhdmUgdG8gdGVsbCBhbGwgY2hpbGRyZW4gdGhhdCB0aGVpciBwYXJlbnQgaGFzIGRpZWQu
Ci0gICAgTm9kZSogbmV4dCA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvKiBub2RlID0gY29udGFp
bmVyLmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5leHQpIHsKKyAgICBSZWZQdHI8Tm9kZT4g
bmV4dCA9IG51bGxwdHI7CisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnRhaW5lci5m
aXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBuZXh0KSB7CiAgICAgICAgIEFTU0VSVCghbm9kZS0+
bV9kZWxldGlvbkhhc0JlZ3VuKTsKIAogICAgICAgICBuZXh0ID0gbm9kZS0+bmV4dFNpYmxpbmco
KTsKICAgICAgICAgbm9kZS0+c2V0TmV4dFNpYmxpbmcobnVsbHB0cik7CiAgICAgICAgIG5vZGUt
PnNldFBhcmVudE5vZGUobnVsbHB0cik7Ci0gICAgICAgIGNvbnRhaW5lci5zZXRGaXJzdENoaWxk
KG5leHQpOworICAgICAgICBjb250YWluZXIuc2V0Rmlyc3RDaGlsZChuZXh0LmdldCgpKTsKICAg
ICAgICAgaWYgKG5leHQpCiAgICAgICAgICAgICBuZXh0LT5zZXRQcmV2aW91c1NpYmxpbmcobnVs
bHB0cik7CiAKQEAgLTE3MywxMyArMTczLDEyIEBAIHZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRp
b25RdWV1ZShOb2RlKiYgaGVhZCwgTm9kZSomIHRhaWwsIENvbnRhaW5lck5vZGUmIGNvbnRhCiAg
ICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVs
ZXRlZC4KICAgICAgICAgICAgIC8vIFJldXNlIHRoZSBuZXh0U2libGluZyBwb2ludGVyIGZvciB0
aGlzIHB1cnBvc2UuCiAgICAgICAgICAgICBpZiAodGFpbCkKLSAgICAgICAgICAgICAgICB0YWls
LT5zZXROZXh0U2libGluZyhub2RlKTsKKyAgICAgICAgICAgICAgICB0YWlsLT5zZXROZXh0U2li
bGluZyhub2RlLmdldCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBoZWFk
ID0gbm9kZTsKKyAgICAgICAgICAgICAgICBoZWFkID0gbm9kZS5nZXQoKTsKIAotICAgICAgICAg
ICAgdGFpbCA9IG5vZGU7CisgICAgICAgICAgICB0YWlsID0gbm9kZS5nZXQoKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIFJlZjxOb2RlPiBwcm90ZWN0KCpub2RlKTsgLy8gcmVtb3Zl
ZEZyb21Eb2N1bWVudCBtYXkgcmVtb3ZlIHJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIG5v
ZGUuCiAgICAgICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseShjb250YWluZXIu
ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNJblRyZWVTY29wZSgpKQogICAg
ICAgICAgICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoY29udGFpbmVyLCAqbm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlZjVmZjBkYzQwYWFhZmU5ZjAyZTJiN2QzZGE5YWJk
NGNjOWE0ZTllLi42MTg4ODcxZDViZTIyN2MwNjVmZGUwYjAwYjdlMjM1NjA0Y2JjMWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEyMzQsNyArMTIzNCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKGJvb2wgdmlzdWFsVXBkYXRlc0FsbG93ZWQpCiAgICAg
aWYgKCF2aXN1YWxVcGRhdGVzQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSB2aWV3KCk7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gZnJhbWVWaWV3
ID0gdmlldygpOwogICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBmcmFtZVZpZXcgJiYgcmVuZGVyVmll
dygpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKSB8fCByZW5kZXJWaWV3KCktPm5lZWRz
TGF5b3V0KCkpOwogICAgIGlmIChuZWVkc0xheW91dCkKICAgICAgICAgdXBkYXRlTGF5b3V0KCk7
CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQoKQogICAg
IEFTU0VSVChMYXlvdXREaXNhbGxvd2VkU2NvcGU6OmlzTGF5b3V0QWxsb3dlZCgpKTsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3
KCk7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gZnJhbWVWaWV3ID0gdmlldygpOwogICAgIGlmIChm
cmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5pc0luUmVuZGVyVHJlZUxheW91dCgpKSB7CiAgICAgICAg
IC8vIFZpZXcgbGF5b3V0IHNob3VsZCBub3QgYmUgcmUtZW50cmFudC4KICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xOTkyLDcgKzE5OTIsNyBAQCBib29sIERvY3VtZW50Ojp1cGRh
dGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUoRWxlbWVudCYgZWxlbWVudCwgRGltZW5zaW9u
c0NoZQogICAgIH0KICAgICAKICAgICAvLyBDaGVjayBmb3IgcmUtZW50cmFuY3kgYW5kIGFzc2Vy
dCAoc2FtZSBjb2RlIHRoYXQgaXMgaW4gdXBkYXRlTGF5b3V0KCkpLgotICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gdmlldygpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+IGZyYW1lVmlldyA9IHZp
ZXcoKTsKICAgICBpZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+aXNJblJlbmRlclRyZWVMYXlv
dXQoKSkgewogICAgICAgICAvLyBWaWV3IGxheW91dCBzaG91bGQgbm90IGJlIHJlLWVudHJhbnQu
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjcyMSw3ICsyNzIxLDcgQEAgdm9p
ZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgLy8gIC1XaGVuIGFueSBuZXcgSFRNTExp
bmtFbGVtZW50IGlzIGluc2VydGVkIGludG8gdGhlIGRvY3VtZW50CiAgICAgLy8gQnV0IHRob3Nl
IGFkZCBhIGR5bmFtaWMgY29tcG9uZW50IHRvIHRoZSBmYXZpY29uIHRoYXQgaGFzIFVJIAogICAg
IC8vIHJhbWlmaWNhdGlvbnMsIGFuZCB3ZSBuZWVkIHRvIGRlY2lkZSB3aGF0IGlzIHRoZSBSaWdo
dCBUaGluZyBUbyBEbyh0bSkKLSAgICBGcmFtZSogZiA9IGZyYW1lKCk7CisgICAgUmVmUHRyPEZy
YW1lPiBmID0gZnJhbWUoKTsKICAgICBpZiAoZikgewogICAgICAgICBpZiAoYXV0byogZG9jdW1l
bnRMb2FkZXIgPSBsb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zdGFydElj
b25Mb2FkaW5nKCk7CkBAIC00MDY2LDcgKzQwNjYsNyBAQCB2b2lkIERvY3VtZW50Ojpub2RlQ2hp
bGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lcikKICAgICAgICAgICAg
IGl0LT5ub2RlV2lsbEJlUmVtb3ZlZCgqbik7CiAgICAgfQogCi0gICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCkpIHsKKyAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHRoaXMt
PmZyYW1lKCkpIHsKICAgICAgICAgZm9yIChOb2RlKiBuID0gY29udGFpbmVyLmZpcnN0Q2hpbGQo
KTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS5ub2RlV2lsbEJlUmVtb3ZlZCgqbik7CiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0
aW9uKCkubm9kZVdpbGxCZVJlbW92ZWQoKm4pOwpAQCAtNDA5Nyw3ICs0MDk3LDcgQEAgdm9pZCBE
b2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSYgbm9kZSkKICAgICBmb3IgKGF1dG8qIHJh
bmdlIDogbV9yYW5nZXMpCiAgICAgICAgIHJhbmdlLT5ub2RlV2lsbEJlUmVtb3ZlZChub2RlKTsK
IAotICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CisgICAgaWYgKFJlZlB0
cjxGcmFtZT4gZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS5ub2RlV2lsbEJlUmVtb3ZlZChub2RlKTsKICAgICAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLm5vZGVXaWxsQmVSZW1vdmVkKG5vZGUpOwogICAgICAgICBmcmFtZS0+cGFnZSgpLT5kcmFn
Q2FyZXRDb250cm9sbGVyKCkubm9kZVdpbGxCZVJlbW92ZWQobm9kZSk7CkBAIC00OTgyLDcgKzQ5
ODIsNyBAQCBib29sIERvY3VtZW50OjpzaG91bGRDcmVhdGVSZW5kZXJlcnMoKQogCiBzdGF0aWMg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRlcmZhY2UgPSBmYWxzZSkKIHsKLSAgICBGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9j
dW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+ZG9jdW1lbnQoKSAhPSBk
b2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVkaXRvcjo6Q29tbWFuZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDkxNGM0NWJl
OTM0NzU1NTlmZTZmN2M1OTkzZThlNzBjMTVjZjA4YjkuLjRkNjc2MzNjZTBlN2E4NDY5OTc4ZTkz
NDMxNzc2NjI3MjljMDM1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAgVmVjdG9yPEZsb2F0UmVjdD4g
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW5kZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVu
dE1hcmsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBBU1NFUlQoIShtX21hcmtlcnMuaXNF
bXB0eSgpKSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LmZyYW1lKCk7CisgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fZG9jdW1lbnQuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJh
bWUtPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiNGY3NjQ5MDdiNTg0ODY5MzM4
MWY5ZjdhZmNhNDY1NzgxMzhmYjcwLi4yMjk5OGNiMGM3NWU1YjA1MGU1MTU1MmQ0YThlY2Q1M2U5
MmJiYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCB2b2lk
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogICAg
IGlmIChoYXNQZW5kaW5nUmVzb3VyY2VzKCkpCiAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZH
RXh0ZW5zaW9ucygpLnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyh0aGlzKTsKIAot
ICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBSZWZQdHI8RnJhbWU+
IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmIChmcmFtZSkKICAgICAgICAgZnJh
bWUtPmFuaW1hdGlvbigpLmNhbmNlbEFuaW1hdGlvbnMoKnRoaXMpOwogCkBAIC0xOTk4LDcgKzE5
OTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYg
cGFyZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVAogICAgIC8vIHxhZnRlckNoYW5nZXwgaXMg
MCBpbiB0aGUgcGFyc2VyIGNhc2UsIHNvIGl0IHdvcmtzIG91dCB0aGF0IHdlJ2xsIHNraXAgdGhp
cyBibG9jay4KICAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxl
cygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgewogICAgICAgICAvLyBGaW5kIG91ciBuZXcgZmly
c3QgY2hpbGQuCi0gICAgICAgIEVsZW1lbnQqIG5ld0ZpcnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2
ZXJzYWw6OmZpcnN0Q2hpbGQocGFyZW50KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0Zp
cnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQocGFyZW50KTsKICAgICAg
ICAgLy8gRmluZCB0aGUgZmlyc3QgZWxlbWVudCBub2RlIGZvbGxvd2luZyB8YWZ0ZXJDaGFuZ2V8
CiAKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgaW5zZXJ0L2FwcGVuZCBjYXNlLgpAQCAtMjAyMCw3
ICsyMDIwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1l
bnQmIHBhcmVudCwgU2libGluZ0NoZWNrVHlwZSBjaGVja1QKICAgICAvLyBJbiB0aGUgRE9NIGNh
c2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3Qg
MC4KICAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgJiYg
ZWxlbWVudEJlZm9yZUNoYW5nZSkgewogICAgICAgICAvLyBGaW5kIG91ciBuZXcgbGFzdCBjaGls
ZC4KLSAgICAgICAgRWxlbWVudCogbmV3TGFzdEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjps
YXN0Q2hpbGQocGFyZW50KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50
ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7CiAKICAgICAgICAgaWYgKG5l
d0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKICAgICAgICAgICAgIGF1dG8q
IHN0eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwCmluZGV4IDVhMzMwYTFkNDM3ZGM5ZWM2NTA0NTBmYjc3N2ZlZjM0NDg0
NjcyYjAuLjdkMzAxNDRhYjkxYzdmMTVhYTE3ODRiNmVkNDgyZWM2ZjM1OWNlNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjMzLDYgKzIzMyw3IEBAIGJvb2wgRXZlbnRUYXJn
ZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gZmlyaW5nRXZlbnRMaXN0ZW5lcnNTY29wZShkYXRh
LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzLCB0cnVlKTsKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+
IHByb3RlY3RlZFRoaXModGhpcyk7IC8vIFRyeSB0byBwcmV2ZW50IHRoaXMgZXZlbnQgdGFyZ2V0
IGJlaW5nIHJlbW92ZWQgYnkgYW4gZXZlbnQgaGFuZGxlci4KIAogICAgIGlmIChhdXRvKiBsaXN0
ZW5lcnNWZWN0b3IgPSBkYXRhLT5ldmVudExpc3RlbmVyTWFwLmZpbmQoZXZlbnQudHlwZSgpKSkg
ewogICAgICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQsICpsaXN0ZW5lcnNWZWN0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKaW5kZXggNjkxNWU5YzMwNzY5
N2QzOTBlM2MzYjhhYjc4OTMxMDhhYzJhMmY0YS4uNThjZjMwMDJjZTI2MzZmYzZjODhkMzNjMzlh
MGQ1YWMxMGQ0NDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3Bw
CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2ZWRUYXJn
ZXQoKQogCiB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigp
CiB7Ci0gICAgTm9kZSogdGFyZ2V0Tm9kZSA9IHRhcmdldCgpID8gdGFyZ2V0KCktPnRvTm9kZSgp
IDogbnVsbHB0cjsKKyAgICBSZWZQdHI8Tm9kZT4gdGFyZ2V0Tm9kZSA9IHRhcmdldCgpID8gdGFy
Z2V0KCktPnRvTm9kZSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXRhcmdldE5vZGUpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNv
bXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkKICAgICAvLyBGSVhNRTogZXZlbnQubGF5ZXJYIGFuZCBl
dmVudC5sYXllclkgYXJlIHBvb3JseSBkZWZpbmVkLAogICAgIC8vIGFuZCBwcm9iYWJseSBkb24n
dCBhbHdheXMgY29ycmVzcG9uZCB0byBSZW5kZXJMYXllciBvZmZzZXRzLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OAotICAgIE5vZGUqIG4gPSB0
YXJnZXROb2RlOworICAgIE5vZGUqIG4gPSB0YXJnZXROb2RlLmdldCgpOwogICAgIHdoaWxlIChu
ICYmICFuLT5yZW5kZXJlcigpKQogICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAppbmRleCA0ZDMzNzI3OWMwZWNiYzk1
MGRmNDllZWIxZTU0Mjc0MjczMGQ1OTdkLi5iMDZiMGRkN2Y0MzY2MmJmNjhiNmVmNDNhYmJhM2Uy
OGYxYzM2MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91
cHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAgVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBSYWRpb0J1dHRvbkdyb3Vw
OjptZW1iZXJzKCkgY29uc3QKIAogdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjpzZXRDaGVja2VkQnV0
dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKIHsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBv
bGRDaGVja2VkQnV0dG9uID0gbV9jaGVja2VkQnV0dG9uOworICAgIFJlZlB0cjxIVE1MSW5wdXRF
bGVtZW50PiBvbGRDaGVja2VkQnV0dG9uID0gbV9jaGVja2VkQnV0dG9uOwogICAgIGlmIChvbGRD
aGVja2VkQnV0dG9uID09IGJ1dHRvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCAyN2E2OTU1NGQzNDgzNmRhNTU3YjQ4ZWQzNWZiOWU3
MjhiODQ3NjcwLi4wN2IwYTNlYzIwMTQxZTNiOWIyNDc0YmVhYTU2NGEzYzc4NWFmNGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lk
IFNsb3RBc3NpZ25tZW50OjpkaWRDaGFuZ2VTbG90KGNvbnN0IEF0b21pY1N0cmluZyYgc2xvdEF0
dHJWYWx1ZSwgU2hhZG93Um9vdAogICAgIGl0LT52YWx1ZS0+YXNzaWduZWROb2Rlcy5jbGVhcigp
OwogICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNlOwogCi0gICAgSFRNTFNsb3RF
bGVtZW50KiBzbG90RWxlbWVudCA9IGZpbmRGaXJzdFNsb3RFbGVtZW50KCppdC0+dmFsdWUsIHNo
YWRvd1Jvb3QpOworICAgIFJlZlB0cjxIVE1MU2xvdEVsZW1lbnQ+IHNsb3RFbGVtZW50ID0gZmlu
ZEZpcnN0U2xvdEVsZW1lbnQoKml0LT52YWx1ZSwgc2hhZG93Um9vdCk7CiAgICAgaWYgKCFzbG90
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCg==
</data>
<flag name="review"
          id="342536"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323029</attachid>
            <date>2017-10-06 11:18:12 -0700</date>
            <delta_ts>2017-10-06 13:10:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177852-20171006111812.patch</filename>
            <type>text/plain</type>
            <size>12071</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRiN2MxZjMyZGRkODhj
M2NiNTMyZWM3ODFkYTFlODcyYWY2NGYzYy4uOTJhNDhjZDkwZDUyZThmNDk2OTFmMmJjZWY5NzQ5
NjYwMjRlNDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEwLTA2ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBzb21lIHN0
YWNrIHJhdyBwb2ludGVycyB3aXRoIFJlZlB0cnMgd2l0aGluIFdlYkNvcmUvZG9tCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc4NTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM0ODA0NDg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KKworICAgICAgICBUaGlzIGlzIGFuIGVmZm9ydCB0byByZWR1Y2UgcmF3IHBvaW50ZXIg
dXNhZ2UgaW4gRE9NIGNvZGUuIEluIHRoaXMgcGF0Y2gsCisgICAgICAgIHN0YWNrIHJhdyBwb2lu
dGVycyB0aGF0IGNvdWxkIGJlIGZyZWVkIGR1cmluZyB0aGVpciBsaWZldGltZSBiZWNhdXNlIG9m
CisgICAgICAgIGV2ZW50IGRpc3BhdGNoaW5nLCBsYXlvdXQgdXBkYXRpbmcgYW5kIGV0YyBhcmUg
c2VsZWN0ZWQuIEFsbCBzZWxlY3Rpb25zIGFyZQorICAgICAgICBiYXNpbmcgb24gY29kZSBzcGVj
dWxhdGlvbi4KKworICAgICAgICBObyBjaGFuZ2VzIGluIGJlaGF2aW91cnMuCisKKyAgICAgICAg
KiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRk
Q2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZSk6CisgICAgICAgIEVzY2FsYXRlIHRoZSBSZWZQdHIg
dG8gd2hlcmUgbm9kZSBpcyBmaXJzdCBkZWZpbmVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWZEaW1lbnNpb25zT3V0T2ZEYXRlKToKKyAg
ICAgICAgUG9zc2libGUgbGF5b3V0IHVwZGF0ZXMgZHVyaW5nIHRoZWlyIGxpZmV0aW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOgorICAgICAgICBQb3NzaWJs
ZSBldmVudCBkaXNwYXRjaGluZyBkdXJpbmcgaXRzIGxpZmV0aW1lLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6Om5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6Om5vZGVXaWxsQmVSZW1vdmVkKToKKyAgICAgICAgUG9zc2libGUgbm9kZSBy
ZW1vdmFsIGR1cmluZyB0aGVpciBsaWZldGltZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbW1hbmQp
OgorICAgICAgICBQb3NzaWJsZSBsYXlvdXQgdXBkYXRlcyBkdXJpbmcgaXRzIGxpZmV0aW1lLgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW5kZXJlZFJlY3RzRm9yTWFya2Vycyk6
CisgICAgICAgIFBvc3NpYmxlIGxheW91dCB1cGRhdGVzIGR1cmluZyBpdHMgbGlmZXRpbWUuCisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVt
b3ZlZEZyb20pOgorICAgICAgICAgUG9zc2libGUgZXZlbnQgZGlzcGF0Y2hpbmcgZHVyaW5nIGl0
cyBsaWZldGltZS4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdl
cyk6CisgICAgICAgIFBvc3NpYmxlIGxheW91dCB1cGRhdGVzIGR1cmluZyB0aGVpciBsaWZldGlt
ZS4KKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToKKyAgICAgICAg
UG9zc2libGUgbGF5b3V0IHVwZGF0ZXMgZHVyaW5nIGl0cyBsaWZldGltZS4KKyAgICAgICAgKiBk
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25H
cm91cDo6c2V0Q2hlY2tlZEJ1dHRvbik6CisgICAgICAgIFBvc3NpYmxlIGxheW91dCB1cGRhdGVz
IGR1cmluZyBpdHMgbGlmZXRpbWUuCisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpkaWRDaGFuZ2VTbG90KToKKyAgICAg
ICAgUG9zc2libGUgbGF5b3V0IHVwZGF0ZXMgZHVyaW5nIGl0cyBsaWZldGltZS4KKwogMjAxNy0x
MC0wMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3Np
bmcgcG9zdC1yZXZpZXcgY29tbWVudHMgYWZ0ZXIgcjIyMjYyMQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggYTlmNDA0MTY0YzA2YTJkMGVl
ZDgwNDhmMmZiMjliOWZlYjg5NGNmNy4uOTNjNDQ4ODg1ZmJlZDg2MjI3YWM3ZmNiNDU3ZDhiZGVj
NTM3ZDY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCkBAIC0xNTUsMTQgKzE1NSwxNCBAQCB2b2lkIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQo
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIE5vZGUmIGNoaWxkKQogdm9pZCBhZGRDaGls
ZE5vZGVzVG9EZWxldGlvblF1ZXVlKE5vZGUqJiBoZWFkLCBOb2RlKiYgdGFpbCwgQ29udGFpbmVy
Tm9kZSYgY29udGFpbmVyKQogewogICAgIC8vIFdlIGhhdmUgdG8gdGVsbCBhbGwgY2hpbGRyZW4g
dGhhdCB0aGVpciBwYXJlbnQgaGFzIGRpZWQuCi0gICAgTm9kZSogbmV4dCA9IG51bGxwdHI7Ci0g
ICAgZm9yIChhdXRvKiBub2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9
IG5leHQpIHsKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG51bGxwdHI7CisgICAgZm9yIChSZWZQ
dHI8Tm9kZT4gbm9kZSA9IGNvbnRhaW5lci5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBuZXh0
KSB7CiAgICAgICAgIEFTU0VSVCghbm9kZS0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKIAogICAgICAg
ICBuZXh0ID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgbm9kZS0+c2V0TmV4dFNpYmxp
bmcobnVsbHB0cik7CiAgICAgICAgIG5vZGUtPnNldFBhcmVudE5vZGUobnVsbHB0cik7Ci0gICAg
ICAgIGNvbnRhaW5lci5zZXRGaXJzdENoaWxkKG5leHQpOworICAgICAgICBjb250YWluZXIuc2V0
Rmlyc3RDaGlsZChuZXh0LmdldCgpKTsKICAgICAgICAgaWYgKG5leHQpCiAgICAgICAgICAgICBu
ZXh0LT5zZXRQcmV2aW91c1NpYmxpbmcobnVsbHB0cik7CiAKQEAgLTE3MywxMyArMTczLDEyIEBA
IHZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShOb2RlKiYgaGVhZCwgTm9kZSomIHRh
aWwsIENvbnRhaW5lck5vZGUmIGNvbnRhCiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8g
dGhlIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAgICAgICAgICAgIC8vIFJldXNlIHRo
ZSBuZXh0U2libGluZyBwb2ludGVyIGZvciB0aGlzIHB1cnBvc2UuCiAgICAgICAgICAgICBpZiAo
dGFpbCkKLSAgICAgICAgICAgICAgICB0YWlsLT5zZXROZXh0U2libGluZyhub2RlKTsKKyAgICAg
ICAgICAgICAgICB0YWlsLT5zZXROZXh0U2libGluZyhub2RlLmdldCgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBoZWFkID0gbm9kZTsKKyAgICAgICAgICAgICAgICBoZWFk
ID0gbm9kZS5nZXQoKTsKIAotICAgICAgICAgICAgdGFpbCA9IG5vZGU7CisgICAgICAgICAgICB0
YWlsID0gbm9kZS5nZXQoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZjxOb2Rl
PiBwcm90ZWN0KCpub2RlKTsgLy8gcmVtb3ZlZEZyb21Eb2N1bWVudCBtYXkgcmVtb3ZlIHJlbW92
ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIG5vZGUuCiAgICAgICAgICAgICBub2RlLT5zZXRUcmVl
U2NvcGVSZWN1cnNpdmVseShjb250YWluZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBpZiAo
bm9kZS0+aXNJblRyZWVTY29wZSgpKQogICAgICAgICAgICAgICAgIG5vdGlmeUNoaWxkTm9kZVJl
bW92ZWQoY29udGFpbmVyLCAqbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlZjVm
ZjBkYzQwYWFhZmU5ZjAyZTJiN2QzZGE5YWJkNGNjOWE0ZTllLi42MTg4ODcxZDViZTIyN2MwNjVm
ZGUwYjAwYjdlMjM1NjA0Y2JjMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEyMzQs
NyArMTIzNCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkKGJvb2wg
dmlzdWFsVXBkYXRlc0FsbG93ZWQpCiAgICAgaWYgKCF2aXN1YWxVcGRhdGVzQWxsb3dlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCk7CisgICAg
UmVmUHRyPEZyYW1lVmlldz4gZnJhbWVWaWV3ID0gdmlldygpOwogICAgIGJvb2wgbmVlZHNMYXlv
dXQgPSBmcmFtZVZpZXcgJiYgcmVuZGVyVmlldygpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRp
bmcoKSB8fCByZW5kZXJWaWV3KCktPm5lZWRzTGF5b3V0KCkpOwogICAgIGlmIChuZWVkc0xheW91
dCkKICAgICAgICAgdXBkYXRlTGF5b3V0KCk7CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIERv
Y3VtZW50Ojp1cGRhdGVMYXlvdXQoKQogICAgIEFTU0VSVChMYXlvdXREaXNhbGxvd2VkU2NvcGU6
OmlzTGF5b3V0QWxsb3dlZCgpKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCk7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gZnJh
bWVWaWV3ID0gdmlldygpOwogICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5pc0luUmVu
ZGVyVHJlZUxheW91dCgpKSB7CiAgICAgICAgIC8vIFZpZXcgbGF5b3V0IHNob3VsZCBub3QgYmUg
cmUtZW50cmFudC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTkyLDcgKzE5
OTIsNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUo
RWxlbWVudCYgZWxlbWVudCwgRGltZW5zaW9uc0NoZQogICAgIH0KICAgICAKICAgICAvLyBDaGVj
ayBmb3IgcmUtZW50cmFuY3kgYW5kIGFzc2VydCAoc2FtZSBjb2RlIHRoYXQgaXMgaW4gdXBkYXRl
TGF5b3V0KCkpLgotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygpOworICAgIFJlZlB0
cjxGcmFtZVZpZXc+IGZyYW1lVmlldyA9IHZpZXcoKTsKICAgICBpZiAoZnJhbWVWaWV3ICYmIGZy
YW1lVmlldy0+aXNJblJlbmRlclRyZWVMYXlvdXQoKSkgewogICAgICAgICAvLyBWaWV3IGxheW91
dCBzaG91bGQgbm90IGJlIHJlLWVudHJhbnQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjcyMSw3ICsyNzIxLDcgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAg
ICAgLy8gIC1XaGVuIGFueSBuZXcgSFRNTExpbmtFbGVtZW50IGlzIGluc2VydGVkIGludG8gdGhl
IGRvY3VtZW50CiAgICAgLy8gQnV0IHRob3NlIGFkZCBhIGR5bmFtaWMgY29tcG9uZW50IHRvIHRo
ZSBmYXZpY29uIHRoYXQgaGFzIFVJIAogICAgIC8vIHJhbWlmaWNhdGlvbnMsIGFuZCB3ZSBuZWVk
IHRvIGRlY2lkZSB3aGF0IGlzIHRoZSBSaWdodCBUaGluZyBUbyBEbyh0bSkKLSAgICBGcmFtZSog
ZiA9IGZyYW1lKCk7CisgICAgUmVmUHRyPEZyYW1lPiBmID0gZnJhbWUoKTsKICAgICBpZiAoZikg
ewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKSkKICAgICAgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5zdGFydEljb25Mb2FkaW5nKCk7CkBAIC00MDY2LDcgKzQwNjYs
NyBAQCB2b2lkIERvY3VtZW50Ojpub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5v
ZGUmIGNvbnRhaW5lcikKICAgICAgICAgICAgIGl0LT5ub2RlV2lsbEJlUmVtb3ZlZCgqbik7CiAg
ICAgfQogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKKyAgICBpZiAo
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKICAgICAgICAgZm9yIChOb2Rl
KiBuID0gY29udGFpbmVyLmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5ub2RlV2lsbEJlUmVtb3ZlZCgqbik7
CiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkubm9kZVdpbGxCZVJlbW92ZWQoKm4pOwpA
QCAtNDA5Nyw3ICs0MDk3LDcgQEAgdm9pZCBEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9k
ZSYgbm9kZSkKICAgICBmb3IgKGF1dG8qIHJhbmdlIDogbV9yYW5nZXMpCiAgICAgICAgIHJhbmdl
LT5ub2RlV2lsbEJlUmVtb3ZlZChub2RlKTsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlz
LT5mcmFtZSgpKSB7CisgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSB0aGlzLT5mcmFtZSgp
KSB7CiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5ub2RlV2lsbEJlUmVtb3ZlZChub2Rl
KTsKICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLm5vZGVXaWxsQmVSZW1vdmVkKG5vZGUpOwog
ICAgICAgICBmcmFtZS0+cGFnZSgpLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkubm9kZVdpbGxCZVJl
bW92ZWQobm9kZSk7CkBAIC00OTgyLDcgKzQ5ODIsNyBAQCBib29sIERvY3VtZW50OjpzaG91bGRD
cmVhdGVSZW5kZXJlcnMoKQogCiBzdGF0aWMgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIHVzZXJJbnRlcmZh
Y2UgPSBmYWxzZSkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSB8fCBmcmFtZS0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVkaXRv
cjo6Q29tbWFuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCmluZGV4IDkxNGM0NWJlOTM0NzU1NTlmZTZmN2M1OTkzZThlNzBjMTVjZjA4
YjkuLjRkNjc2MzNjZTBlN2E4NDY5OTc4ZTkzNDMxNzc2NjI3MjljMDM1NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0yNTUsNyAr
MjU1LDcgQEAgVmVjdG9yPEZsb2F0UmVjdD4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW5k
ZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVudE1hcmsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICBBU1NFUlQoIShtX21hcmtlcnMuaXNFbXB0eSgpKSk7CiAKLSAgICBGcmFtZSogZnJhbWUg
PSBtX2RvY3VtZW50LmZyYW1lKCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fZG9jdW1l
bnQuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBiNGY3NjQ5MDdiNTg0ODY5MzM4MWY5ZjdhZmNhNDY1NzgxMzhmYjcwLi4yMjk5OGNi
MGM3NWU1YjA1MGU1MTU1MmQ0YThlY2Q1M2U5MmJiYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0xNzY1LDcgKzE3NjUsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUmIGluc2VydGlvblBvaW50KQogICAgIGlmIChoYXNQZW5kaW5nUmVzb3VyY2VzKCkpCiAg
ICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZUVsZW1lbnRGcm9t
UGVuZGluZ1Jlc291cmNlcyh0aGlzKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCku
ZnJhbWUoKTsKKyAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwog
ICAgIGlmIChmcmFtZSkKICAgICAgICAgZnJhbWUtPmFuaW1hdGlvbigpLmNhbmNlbEFuaW1hdGlv
bnMoKnRoaXMpOwogCkBAIC0xOTk4LDcgKzE5OTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvclNp
YmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYgcGFyZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNr
VAogICAgIC8vIHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhc2UsIHNvIGl0IHdv
cmtzIG91dCB0aGF0IHdlJ2xsIHNraXAgdGhpcyBibG9jay4KICAgICBpZiAocGFyZW50LmNoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgewog
ICAgICAgICAvLyBGaW5kIG91ciBuZXcgZmlyc3QgY2hpbGQuCi0gICAgICAgIEVsZW1lbnQqIG5l
d0ZpcnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQocGFyZW50KTsKKyAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0ZpcnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6
OmZpcnN0Q2hpbGQocGFyZW50KTsKICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgZWxlbWVudCBu
b2RlIGZvbGxvd2luZyB8YWZ0ZXJDaGFuZ2V8CiAKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgaW5z
ZXJ0L2FwcGVuZCBjYXNlLgpAQCAtMjAyMCw3ICsyMDIwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tG
b3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQmIHBhcmVudCwgU2libGluZ0NoZWNrVHlwZSBj
aGVja1QKICAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhp
bmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KICAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewogICAgICAg
ICAvLyBGaW5kIG91ciBuZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgRWxlbWVudCogbmV3TGFzdEVs
ZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQocGFyZW50KTsKKyAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxk
KHBhcmVudCk7CiAKICAgICAgICAgaWYgKG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVD
aGFuZ2UpIHsKICAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+
cmVuZGVyU3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCmlu
ZGV4IDY5MTVlOWMzMDc2OTdkMzkwZTNjM2I4YWI3ODkzMTA4YWMyYTJmNGEuLjU4Y2YzMDAyY2Uy
NjM2ZmM2Yzg4ZDMzYzM5YTBkNWFjMTBkNDQzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
UmVsYXRlZEV2ZW50LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZl
bnQ6OnJlY2VpdmVkVGFyZ2V0KCkKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJl
bGF0aXZlUG9zaXRpb24oKQogewotICAgIE5vZGUqIHRhcmdldE5vZGUgPSB0YXJnZXQoKSA/IHRh
cmdldCgpLT50b05vZGUoKSA6IG51bGxwdHI7CisgICAgUmVmUHRyPE5vZGU+IHRhcmdldE5vZGUg
PSB0YXJnZXQoKSA/IHRhcmdldCgpLT50b05vZGUoKSA6IG51bGxwdHI7CiAgICAgaWYgKCF0YXJn
ZXROb2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpCiAgICAgLy8gRklYTUU6IGV2
ZW50LmxheWVyWCBhbmQgZXZlbnQubGF5ZXJZIGFyZSBwb29ybHkgZGVmaW5lZCwKICAgICAvLyBh
bmQgcHJvYmFibHkgZG9uJ3QgYWx3YXlzIGNvcnJlc3BvbmQgdG8gUmVuZGVyTGF5ZXIgb2Zmc2V0
cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjgK
LSAgICBOb2RlKiBuID0gdGFyZ2V0Tm9kZTsKKyAgICBOb2RlKiBuID0gdGFyZ2V0Tm9kZS5nZXQo
KTsKICAgICB3aGlsZSAobiAmJiAhbi0+cmVuZGVyZXIoKSkKICAgICAgICAgbiA9IG4tPnBhcmVu
dE5vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3Jv
dXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKaW5kZXgg
NGQzMzcyNzljMGVjYmM5NTBkZjQ5ZWViMWU1NDI3NDI3MzBkNTk3ZC4uYjA2YjBkZDdmNDM2NjJi
ZjY4YjZlZjQzYWJiYTNlMjhmMWMzNjExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0
b25Hcm91cHMuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4g
UmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycygpIGNvbnN0CiAKIHZvaWQgUmFkaW9CdXR0b25Hcm91
cDo6c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCiB7Ci0gICAgSFRN
TElucHV0RWxlbWVudCogb2xkQ2hlY2tlZEJ1dHRvbiA9IG1fY2hlY2tlZEJ1dHRvbjsKKyAgICBS
ZWZQdHI8SFRNTElucHV0RWxlbWVudD4gb2xkQ2hlY2tlZEJ1dHRvbiA9IG1fY2hlY2tlZEJ1dHRv
bjsKICAgICBpZiAob2xkQ2hlY2tlZEJ1dHRvbiA9PSBidXR0b24pCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggMjdhNjk1NTRkMzQ4MzZk
YTU1N2I0OGVkMzVmYjllNzI4Yjg0NzY3MC4uMDdiMGEzZWMyMDE0MWUzYjliMjQ3NGJlYWE1NjRh
M2M3ODVhZjRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0xMzcs
NyArMTM3LDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9t
aWNTdHJpbmcmIHNsb3RBdHRyVmFsdWUsIFNoYWRvd1Jvb3QKICAgICBpdC0+dmFsdWUtPmFzc2ln
bmVkTm9kZXMuY2xlYXIoKTsKICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsK
IAotICAgIEhUTUxTbG90RWxlbWVudCogc2xvdEVsZW1lbnQgPSBmaW5kRmlyc3RTbG90RWxlbWVu
dCgqaXQtPnZhbHVlLCBzaGFkb3dSb290KTsKKyAgICBSZWZQdHI8SFRNTFNsb3RFbGVtZW50PiBz
bG90RWxlbWVudCA9IGZpbmRGaXJzdFNsb3RFbGVtZW50KCppdC0+dmFsdWUsIHNoYWRvd1Jvb3Qp
OwogICAgIGlmICghc2xvdEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>